use of se.inera.intyg.infra.integration.pu.model.PersonSvar in project webcert by sklintyg.
the class PatientDetailsResolverImpl method resolveTsPatient.
/*
* I: Namn, s-markering från PU-tjänst.
* I: Info om avliden från både PU-tjänst och journalsystem.
* I: Adress från journalsystem.
* F: PU-tjänsten (alla uppgifter).
*/
private Patient resolveTsPatient(Personnummer personnummer, WebCertUser user) {
PersonSvar personSvar = getPersonSvar(personnummer);
if (personSvar.getStatus() == PersonSvar.Status.FOUND) {
Patient patient = toPatientFromPersonSvar(personnummer, personSvar);
// Get address if djupintegration from params, fallback to PU for address if unavailable.
if (user.getOrigin().equals(UserOriginType.DJUPINTEGRATION.name())) {
IntegrationParameters parameters = user.getParameters();
// Loading utkast without uthoppslänk would fail during end-to-end tests, thus the line below
if (parameters == null) {
parameters = new IntegrationParameters(null, null, null, null, null, null, null, null, null, false, false, false, false);
}
// Update avliden with integrationparameters
patient.setAvliden(patient.isAvliden() || parameters.isPatientDeceased());
// All address fields needs to be present from integration parameters, otherwise use PU instead.
if (isNotNullOrEmpty(parameters.getPostadress()) && isNotNullOrEmpty(parameters.getPostnummer()) && isNotNullOrEmpty(parameters.getPostort())) {
patient.setPostadress(parameters.getPostadress());
patient.setPostnummer(parameters.getPostnummer());
patient.setPostort(parameters.getPostort());
} else {
patient.setPostadress(personSvar.getPerson().getPostadress());
patient.setPostnummer(personSvar.getPerson().getPostnummer());
patient.setPostort(personSvar.getPerson().getPostort());
}
}
return patient;
} else {
// No PU means only use integration parameters
if (user.getOrigin().equals(UserOriginType.DJUPINTEGRATION.name())) {
return toPatientFromParameters(personnummer, user.getParameters());
} else {
return null;
}
}
}
Aggregations