use of se.inera.intyg.common.support.model.common.internal.GrundData in project webcert by sklintyg.
the class AbstractUtkastBuilder method populateCopyUtkastFromSignedIntyg.
/*
* (non-Javadoc)
*
* @see
* se.inera.intyg.webcert.web.service.utkast.CopyUtkastBuilder#populateCopyUtkastFromSignedIntyg(se.inera.intyg.
* webcert.web.service.utkast.dto.CreateNewDraftCopyRequest, se.inera.intyg.webcert.integration.pu.model.Person)
*/
@Override
public CopyUtkastBuilderResponse populateCopyUtkastFromSignedIntyg(T copyRequest, Person patientDetails, boolean addRelation, boolean coherentJournaling, boolean enforceEnhet) throws ModuleNotFoundException, ModuleException {
String orignalIntygsId = copyRequest.getOriginalIntygId();
String originalIntygsTyp = copyRequest.getOriginalIntygTyp();
String intygsTyp = copyRequest.getTyp();
IntygContentHolder signedIntygHolder = intygService.fetchIntygData(orignalIntygsId, originalIntygsTyp, coherentJournaling);
ModuleApi orgModuleApi = moduleRegistry.getModuleApi(originalIntygsTyp);
Utlatande orgUtlatande;
try {
orgUtlatande = orgModuleApi.getUtlatandeFromJson(signedIntygHolder.getContents());
} catch (IOException e) {
throw new ModuleException("Could not convert orignal certificate to Utlatande", e);
}
GrundData grundData = signedIntygHolder.getUtlatande().getGrundData();
se.inera.intyg.common.support.model.common.internal.Vardenhet vardenhet = grundData.getSkapadAv().getVardenhet();
if (coherentJournaling && enforceEnhet) {
verifyEnhetsAuth(vardenhet.getVardgivare().getVardgivarid(), vardenhet.getEnhetsid(), true);
}
LOG.debug("Populating copy with details from signed Intyg '{}'", orignalIntygsId);
CopyUtkastBuilderResponse builderResponse = new CopyUtkastBuilderResponse();
builderResponse.setOrginalEnhetsId(vardenhet.getEnhetsid());
builderResponse.setOrginalEnhetsNamn(vardenhet.getEnhetsnamn());
builderResponse.setOrginalVardgivarId(vardenhet.getVardgivare().getVardgivarid());
builderResponse.setOrginalVardgivarNamn(vardenhet.getVardgivare().getVardgivarnamn());
ModuleApi moduleApi = moduleRegistry.getModuleApi(intygsTyp);
// Set relation to null if not applicable
Relation relation = createRelation(copyRequest);
String newDraftCopyId = intygsIdStrategy.createId();
String draftCopyJson = getInternalModel(orgUtlatande, moduleApi, copyRequest, patientDetails, relation, newDraftCopyId);
UtkastStatus utkastStatus = validateDraft(moduleApi, draftCopyJson);
Utkast utkast = buildUtkastCopy(copyRequest, newDraftCopyId, intygsTyp, addRelation, relation, draftCopyJson, utkastStatus);
if (patientDetails != null) {
populatePatientDetailsFromPerson(utkast, patientDetails);
} else {
se.inera.intyg.common.support.model.common.internal.Patient patient = signedIntygHolder.getUtlatande().getGrundData().getPatient();
populatePatientDetailsFromPatient(utkast, patient);
}
replacePatientPersonnummerWithNew(utkast, copyRequest);
builderResponse.setUtkastCopy(utkast);
return builderResponse;
}
use of se.inera.intyg.common.support.model.common.internal.GrundData in project webcert by sklintyg.
the class UtkastServiceImplTest method testSaveDoesNotUpdateOnEmptyFornamn.
@Test
public void testSaveDoesNotUpdateOnEmptyFornamn() throws Exception {
final String utkastFornamn = "fornamn";
final String utkastEfternamn = "efternamn";
ValidateDraftResponse validationResponse = new ValidateDraftResponse(ValidationStatus.VALID, Collections.emptyList());
WebCertUser user = createUser();
Utlatande utlatande = mock(Utlatande.class);
GrundData grunddata = new GrundData();
grunddata.setSkapadAv(new HoSPersonal());
grunddata.setPatient(buildPatient(PERSON_ID, null, "Tolvansson"));
when(utlatande.getGrundData()).thenReturn(grunddata);
utkast.setPatientFornamn(utkastFornamn);
utkast.setPatientEfternamn(utkastEfternamn);
// Make a spy out of the utkast so we can verify invocations on the setters with proper names further down.
utkast = spy(utkast);
when(mockUtkastRepository.findOne(INTYG_ID)).thenReturn(utkast);
when(moduleRegistry.getModuleApi(INTYG_TYPE)).thenReturn(mockModuleApi);
when(mockModuleApi.validateDraft(anyString())).thenReturn(validationResponse);
when(mockModuleApi.getUtlatandeFromJson(anyString())).thenReturn(utlatande);
when(mockUtkastRepository.save(utkast)).thenReturn(utkast);
when(userService.getUser()).thenReturn(user);
when(mockModuleApi.updateBeforeSave(anyString(), any(HoSPersonal.class))).thenReturn("{}");
draftService.saveDraft(INTYG_ID, UTKAST_VERSION, INTYG_JSON, false);
verify(mockUtkastRepository).save(any(Utkast.class));
verify(utkast, times(0)).setPatientFornamn(null);
verify(utkast, times(0)).setPatientEfternamn("Tolvansson");
verify(utkast).setPatientPersonnummer(any(Personnummer.class));
}
use of se.inera.intyg.common.support.model.common.internal.GrundData in project webcert by sklintyg.
the class UtkastServiceImplTest method testSaveDraftDraftFirstSave.
@Test
public void testSaveDraftDraftFirstSave() throws Exception {
ValidationMessage valMsg = new ValidationMessage("a.category", "a.field.somewhere", ValidationMessageType.OTHER, "This is soooo wrong!");
ValidateDraftResponse validationResponse = new ValidateDraftResponse(ValidationStatus.INVALID, Collections.singletonList(valMsg));
WebCertUser user = createUser();
Utlatande utlatande = mock(Utlatande.class);
GrundData grunddata = new GrundData();
grunddata.setSkapadAv(new HoSPersonal());
grunddata.setPatient(defaultPatient);
when(utlatande.getGrundData()).thenReturn(grunddata);
when(mockUtkastRepository.findOne(INTYG_ID)).thenReturn(utkast);
when(moduleRegistry.getModuleApi(INTYG_TYPE)).thenReturn(mockModuleApi);
when(mockModuleApi.validateDraft(anyString())).thenReturn(validationResponse);
when(mockModuleApi.getUtlatandeFromJson(anyString())).thenReturn(utlatande);
when(mockUtkastRepository.save(utkast)).thenReturn(utkast);
when(mockModuleApi.shouldNotify(any(String.class), any(String.class))).thenReturn(true);
when(userService.getUser()).thenReturn(user);
when(mockModuleApi.updateBeforeSave(anyString(), any(HoSPersonal.class))).thenReturn("{}");
SaveDraftResponse res = draftService.saveDraft(INTYG_ID, UTKAST_VERSION, INTYG_JSON, true);
verify(mockUtkastRepository).save(any(Utkast.class));
// Assert notification message
verify(notificationService).sendNotificationForDraftChanged(any(Utkast.class));
// Assert pdl log
verify(logService).logUpdateIntyg(any(LogRequest.class));
verify(mockMonitoringService).logUtkastEdited(INTYG_ID, INTYG_TYPE);
assertNotNull("An DraftValidation should be returned", res);
assertEquals("Validation should fail", UtkastStatus.DRAFT_INCOMPLETE, res.getStatus());
}
use of se.inera.intyg.common.support.model.common.internal.GrundData in project webcert by sklintyg.
the class PatientDetailsResolverTest method buildSosDoiUtlatande.
private Utlatande buildSosDoiUtlatande() {
GrundData grundData = new GrundData();
grundData.setPatient(buildPatient());
return DbUtlatande.builder().setGrundData(grundData).setId("abc-123").setTextVersion("1.0").build();
}
use of se.inera.intyg.common.support.model.common.internal.GrundData in project webcert by sklintyg.
the class UtkastServiceImplTest method testUpdatePatientOnDraftNoMedarbetaruppdragThrowsException.
@Test(expected = WebCertServiceException.class)
public void testUpdatePatientOnDraftNoMedarbetaruppdragThrowsException() throws Exception {
utkast.setEnhetsId("<unknownenhet>");
Patient newPatient = getUpdatedPatient();
UpdatePatientOnDraftRequest request = new UpdatePatientOnDraftRequest(newPatient.getPersonId(), utkast.getIntygsId(), utkast.getVersion());
WebCertUser user = createUser();
Utlatande utlatande = mock(Utlatande.class);
GrundData grunddata = new GrundData();
grunddata.setPatient(defaultPatient);
grunddata.setSkapadAv(new HoSPersonal());
// Make a spy out of the utkast so we can verify invocations on the setters with proper names further down.
utkast = spy(utkast);
when(mockUtkastRepository.findOne(INTYG_ID)).thenReturn(utkast);
when(userService.getUser()).thenReturn(user);
draftService.updatePatientOnDraft(request);
verifyNoMoreInteractions(mockUtkastRepository, notificationService);
}
Aggregations