use of se.inera.intyg.webcert.web.service.utkast.dto.CopyUtkastBuilderResponse 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.webcert.web.service.utkast.dto.CopyUtkastBuilderResponse in project webcert by sklintyg.
the class AbstractUtkastBuilder method populateCopyUtkastFromOrignalUtkast.
/*
* (non-Javadoc)
*
* @see
* se.inera.intyg.webcert.web.service.utkast.CopyUtkastBuilder#populateCopyUtkastFromOrignalUtkast(se.inera.intyg.
* webcert.web.service.utkast.dto.CreateNewDraftCopyRequest, se.inera.intyg.webcert.integration.pu.model.Person)
*/
@Override
@Transactional(value = "jpaTransactionManager", readOnly = true)
public CopyUtkastBuilderResponse populateCopyUtkastFromOrignalUtkast(T copyRequest, Person patientDetails, boolean addRelation, boolean coherentJournaling, boolean enforceEnhet) throws ModuleNotFoundException, ModuleException {
String orignalIntygsId = copyRequest.getOriginalIntygId();
Utkast orgUtkast = utkastRepository.findOne(orignalIntygsId);
ModuleApi orgModuleApi = moduleRegistry.getModuleApi(copyRequest.getOriginalIntygTyp());
Utlatande orgUtlatande;
try {
orgUtlatande = orgModuleApi.getUtlatandeFromJson(orgUtkast.getModel());
} catch (IOException e) {
throw new ModuleException("Could not convert original certificate to Utlatande", e);
}
// Perform enhets auth if coherent journaling is not active.
if (!coherentJournaling || enforceEnhet) {
verifyEnhetsAuth(orgUtkast.getVardgivarId(), orgUtkast.getEnhetsId(), true);
} else {
LogRequest logRequest = LogRequestFactory.createLogRequestFromUtkast(orgUtkast, coherentJournaling);
logService.logReadIntyg(logRequest);
}
CopyUtkastBuilderResponse builderResponse = new CopyUtkastBuilderResponse();
builderResponse.setOrginalEnhetsId(orgUtkast.getEnhetsId());
builderResponse.setOrginalEnhetsNamn(orgUtkast.getEnhetsNamn());
builderResponse.setOrginalVardgivarId(orgUtkast.getVardgivarId());
builderResponse.setOrginalVardgivarNamn(orgUtkast.getVardgivarNamn());
LOG.debug("Populating copy with details from Utkast '{}'", orignalIntygsId);
ModuleApi moduleApi = moduleRegistry.getModuleApi(copyRequest.getTyp());
// 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, copyRequest.getTyp(), addRelation, relation, draftCopyJson, utkastStatus);
if (patientDetails != null) {
populatePatientDetailsFromPerson(utkast, patientDetails);
} else {
populatePatientDetailsFromUtkast(utkast, orgUtkast);
}
replacePatientPersonnummerWithNew(utkast, copyRequest);
builderResponse.setUtkastCopy(utkast);
return builderResponse;
}
use of se.inera.intyg.webcert.web.service.utkast.dto.CopyUtkastBuilderResponse in project webcert by sklintyg.
the class CopyCompletionUtkastBuilderTest method testPopulateCompletionFromSignedIntyg.
@Test
public void testPopulateCompletionFromSignedIntyg() throws Exception {
IntygContentHolder ich = createIntygContentHolder();
when(mockIntygService.fetchIntygData(INTYG_ID, INTYG_TYPE, false)).thenReturn(ich);
CreateCompletionCopyRequest copyRequest = buildCompletionRequest();
copyRequest.setMeddelandeId("meddelandeId");
Person patientDetails = new Person(PATIENT_SSN, false, false, PATIENT_FNAME, PATIENT_MNAME, PATIENT_LNAME, "Postadr", "12345", "postort");
ValidateDraftResponse vdr = new ValidateDraftResponse(ValidationStatus.VALID, new ArrayList<>());
when(mockModuleApi.validateDraft(isNull())).thenReturn(vdr);
CopyUtkastBuilderResponse builderResponse = copyCompletionBuilder.populateCopyUtkastFromSignedIntyg(copyRequest, patientDetails, true, false, false);
assertNotNull(builderResponse.getUtkastCopy());
assertNotNull(builderResponse.getUtkastCopy().getModel());
assertEquals(INTYG_TYPE, builderResponse.getUtkastCopy().getIntygsTyp());
assertEquals(PATIENT_SSN, builderResponse.getUtkastCopy().getPatientPersonnummer());
assertEquals(PATIENT_FNAME, builderResponse.getUtkastCopy().getPatientFornamn());
assertEquals(PATIENT_MNAME, builderResponse.getUtkastCopy().getPatientMellannamn());
assertEquals(PATIENT_LNAME, builderResponse.getUtkastCopy().getPatientEfternamn());
assertEquals(INTYG_ID, builderResponse.getUtkastCopy().getRelationIntygsId());
ArgumentCaptor<CreateDraftCopyHolder> requestCaptor = ArgumentCaptor.forClass(CreateDraftCopyHolder.class);
verify(mockModuleApi).createCompletionFromTemplate(requestCaptor.capture(), any(), eq(KOMMENTAR));
// verify full name is set
assertNotNull(requestCaptor.getValue().getPatient().getFullstandigtNamn());
assertEquals(PATIENT_FNAME + " " + PATIENT_MNAME + " " + PATIENT_LNAME, requestCaptor.getValue().getPatient().getFullstandigtNamn());
}
use of se.inera.intyg.webcert.web.service.utkast.dto.CopyUtkastBuilderResponse in project webcert by sklintyg.
the class CopyUtkastServiceImplTest method testCreateRenewalWhenIntegratedAndSjfTrue.
@Test
public void testCreateRenewalWhenIntegratedAndSjfTrue() throws Exception {
final String reference = "ref";
WebCertUser user = new WebCertUser();
user.setOrigin(DJUPINTEGRATION.name());
user.setParameters(new IntegrationParameters(reference, "", "", "", "", "", "", "", "", true, false, false, true));
when(userService.getUser()).thenReturn(user);
when(mockUtkastRepository.exists(INTYG_ID)).thenReturn(Boolean.TRUE);
CopyUtkastBuilderResponse resp = createCopyUtkastBuilderResponse();
when(createRenewalCopyUtkastBuilder.populateCopyUtkastFromOrignalUtkast(any(CreateRenewalCopyRequest.class), isNull(), any(boolean.class), eq(true), eq(false))).thenReturn(resp);
CreateRenewalCopyRequest copyReq = buildRenewalRequest();
copyReq.setDjupintegrerad(true);
CreateRenewalCopyResponse renewalResponse = copyService.createRenewalCopy(copyReq);
assertNotNull(renewalResponse);
assertEquals(INTYG_COPY_ID, renewalResponse.getNewDraftIntygId());
assertEquals(INTYG_TYPE, renewalResponse.getNewDraftIntygType());
assertEquals(INTYG_ID, renewalResponse.getOriginalIntygId());
verify(createRenewalCopyUtkastBuilder).populateCopyUtkastFromOrignalUtkast(any(CreateRenewalCopyRequest.class), isNull(), any(boolean.class), eq(true), eq(false));
verify(mockUtkastRepository).save(any(Utkast.class));
verify(mockNotificationService).sendNotificationForDraftCreated(any(Utkast.class));
verify(userService).getUser();
verify(intygService).isRevoked(INTYG_ID, INTYG_TYPE, true);
verify(mockIntegreradeEnheterRegistry).addIfSameVardgivareButDifferentUnits(any(String.class), any(IntegreradEnhetEntry.class), anyString());
}
use of se.inera.intyg.webcert.web.service.utkast.dto.CopyUtkastBuilderResponse in project webcert by sklintyg.
the class CopyUtkastServiceImplTest method testCreateReplacementCopy.
@Test
public void testCreateReplacementCopy() throws Exception {
final String reference = "ref";
WebCertUser user = new WebCertUser();
user.setParameters(new IntegrationParameters(reference, "", "", "", "", "", "", "", "", false, false, false, true));
when(userService.getUser()).thenReturn(user);
when(mockUtkastRepository.exists(INTYG_ID)).thenReturn(Boolean.FALSE);
CopyUtkastBuilderResponse resp = createCopyUtkastBuilderResponse();
when(createReplacementUtkastBuilder.populateCopyUtkastFromSignedIntyg(any(CreateReplacementCopyRequest.class), any(Person.class), eq(true), any(boolean.class), eq(true))).thenReturn(resp);
CreateReplacementCopyRequest copyReq = buildReplacementCopyRequest();
CreateReplacementCopyResponse copyResp = copyService.createReplacementCopy(copyReq);
assertNotNull(copyResp);
assertEquals(INTYG_COPY_ID, copyResp.getNewDraftIntygId());
assertEquals(INTYG_TYPE, copyResp.getNewDraftIntygType());
verify(mockPUService).getPerson(PATIENT_SSN);
verify(createReplacementUtkastBuilder).populateCopyUtkastFromSignedIntyg(any(CreateReplacementCopyRequest.class), any(Person.class), any(boolean.class), any(boolean.class), eq(true));
verify(mockUtkastRepository).save(any(Utkast.class));
verify(referensService).saveReferens(eq(INTYG_COPY_ID), eq(reference));
verify(mockNotificationService).sendNotificationForDraftCreated(any(Utkast.class));
verify(logService).logCreateIntyg(any(LogRequest.class));
verify(intygService).isRevoked(INTYG_ID, INTYG_TYPE, false);
}
Aggregations