@Transactional(propagation = Propagation.REQUIRED)
  public Patient savePatient(Patient patient) throws ParseException {
    UserDetailEntity patientEntity = userDetailMapper.patientToUserDetailEntity(patient);

    if (patientEntity.getId() != null) {
      patientEntity = userDetailRepository.save(patientEntity);
    } else {
      UserCredentialsEntity userCredentialsEntity = new UserCredentialsEntity();
      userCredentialsEntity.setRoleId(roleRepository.findByRole("PATIENT").getId());
      userCredentialsEntity = userCredentialsRepository.save(userCredentialsEntity);

      patientEntity.setId(userCredentialsEntity.getId());
      patientEntity = userDetailRepository.save(patientEntity);

      UserDetailEntity doctor =
          userDetailRepository.findOne(iamService.getAuthenticatedUser().getId());
      DoctorPatientMappingId doctorPatientMappingId =
          new DoctorPatientMappingId(doctor.getId(), patientEntity.getId());
      DoctorPatientMappingEntity doctorPatientMappingEntity =
          new DoctorPatientMappingEntity(doctorPatientMappingId);

      doctorPatientMappingRepository.save(doctorPatientMappingEntity);
    }
    return userDetailMapper.userDetailEntityToPatient(patientEntity);
  }
  public Patient getPatientDetails(Long patientId) {
    UserDetailEntity userDetailEntity = userDetailRepository.findOne(patientId);

    return userDetailMapper.userDetailEntityToPatient(userDetailEntity);
  }