Skip to content

Commit

Permalink
Merge branch 'develop' into ch-emed-epr/emediplan
Browse files Browse the repository at this point in the history
  • Loading branch information
dvribeira committed Oct 3, 2024
2 parents 75b5457 + e0352c5 commit 03405a7
Show file tree
Hide file tree
Showing 8 changed files with 881 additions and 884 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,17 @@

import java.util.Date;
import java.util.List;

import lombok.Builder;
import lombok.Getter;
import lombok.NonNull;
import lombok.Singular;
import lombok.ToString;
import net.ihe.gazelle.hl7v3.prpain201304UV02.PRPAIN201304UV02Type;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Citizen;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Employee;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02LanguageCommunication;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Nation;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Person;
import org.hl7.fhir.r4.model.Address;
import org.hl7.fhir.r4.model.CodeableConcept;
import org.hl7.fhir.r4.model.ContactPoint;
Expand All @@ -28,18 +38,6 @@
import org.projecthusky.communication.utils.PixPdqV3Utils;
import org.projecthusky.fhir.structures.gen.FhirCommon;

import lombok.Builder;
import lombok.Getter;
import lombok.NonNull;
import lombok.Singular;
import lombok.ToString;
import net.ihe.gazelle.hl7v3.prpain201304UV02.PRPAIN201304UV02Type;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Citizen;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Employee;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02LanguageCommunication;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Nation;
import net.ihe.gazelle.hl7v3.prpamt201303UV02.PRPAMT201303UV02Person;

/**
* This class is designed to collect the parameters of the merge patient service call at high level and transform them
* into the request object, that is sent to the service.
Expand All @@ -51,14 +49,16 @@
@ToString
public class PixMergePatientFeed {

public static class PixMergePatientFeedBuilder {}

@NonNull
private Destination destination;
/** Use providingOrganization instead */
@Deprecated
private Organization scopingOrganization;
private Organization providerOrganization;
@NonNull
private String obsolatePatientID;
private String obsoletePatientID;
@NonNull
private String homeCommunityOID;
@NonNull
Expand All @@ -80,16 +80,15 @@ public class PixMergePatientFeed {
private List<CodeableConcept> languages;
@Singular
private List<ContactPoint> telecomContacts;

private CodeableConcept employeeOccupation;

public static class PixMergePatientFeedBuilder {}

public PixMergePatientRequest build() {
PixMergePatientRequest request = new PixMergePatientRequest(this.destination.getSenderApplicationOid(), null,
this.destination.getReceiverApplicationOid(), null);
PixMergePatientRequest request = new PixMergePatientRequest(destination.getSenderApplicationOid(), null,
destination.getReceiverApplicationOid(), null);
addIdentifiers(request);
addNonMedicalIdentifiers(request);
addObsolatePatientId(request);
addObsoletePatientId(request);
addPatientName(request);
addPatientBirthday(request);
addPatientGender(request);
Expand All @@ -105,63 +104,43 @@ public PixMergePatientRequest build() {
return request;
}

private void addObsolatePatientId(PixMergePatientRequest request) {
request.setObsoletePatientID(obsolatePatientID, homeCommunityOID, homeCommunityNamespace);
private void addAddresses(PixMergePatientRequest request) {
for (Address address : addresses) {
request.addPatientAddress(PixPdqV3Utils.createAd(address));
}
}

private void addEmployeeOccupation(PixMergePatientRequest request) {
PRPAIN201304UV02Type rootElement = request.getRootElement();
PRPAMT201303UV02Person patientPerson = rootElement.getControlActProcess().getSubject().get(0).getRegistrationEvent()
.getSubject1().getPatient().getPatientPerson();

if (this.employeeOccupation != null) {
if (employeeOccupation != null) {
var employee = new PRPAMT201303UV02Employee();
employee.setOccupationCode(PixPdqV3Utils.createCE(employeeOccupation.getText()));
patientPerson.getAsEmployee().add(employee);
}
}

private void addProviderOrganization(PixMergePatientRequest request) {
if (providerOrganization == null && scopingOrganization != null) {
providerOrganization = scopingOrganization;
}

if (providerOrganization != null) {
String organizationName = "";
String telecomValue = "NOTPROVIDED";

if (providerOrganization.getName() != null) {
organizationName = providerOrganization.getName();
}

if (providerOrganization.getTelecom() != null && !providerOrganization.getTelecom().isEmpty()) {
var contactPoint = providerOrganization.getTelecomFirstRep();
if (contactPoint != null) {
telecomValue = contactPoint.getValue();
private void addIdentifiers(PixMergePatientRequest request) {
for (Identifier identifier : identifiers) {
if ((identifier.getSystem().length() > 8)) {
final String oid = FhirCommon.removeUrnOidPrefix(identifier.getSystem());
if (homeCommunityOID != null && homeCommunityOID.equals(oid)) {
request.addPatientID(identifier.getValue(), homeCommunityOID, homeCommunityNamespace);
} else {
request.addPatientID(identifier.getValue(), oid, "");
}
}
request.setProviderOrganization(providerOrganization.getIdentifier(), organizationName, telecomValue);
}
}

private void addTelecomContacts(PixMergePatientRequest request) {
PRPAIN201304UV02Type rootElement = request.getRootElement();
PRPAMT201303UV02Person patientPerson = rootElement.getControlActProcess().getSubject().get(0).getRegistrationEvent()
.getSubject1().getPatient().getPatientPerson();

for (ContactPoint contactPoint : this.telecomContacts) {
patientPerson.getTelecom().add(V3PixSourceMessageHelper.createTEL(ConverterUtil.getTelecomValue(contactPoint),
ConverterUtil.getTelecomAddressUse(contactPoint)));
}

}

private void addLanguages(PixMergePatientRequest request) {
PRPAIN201304UV02Type rootElement = request.getRootElement();
PRPAMT201303UV02Person patientPerson = rootElement.getControlActProcess().getSubject().get(0).getRegistrationEvent()
.getSubject1().getPatient().getPatientPerson();

for (CodeableConcept language : this.languages) {
for (CodeableConcept language : languages) {

var communication = new PRPAMT201303UV02LanguageCommunication();
communication.setLanguageCode(
Expand All @@ -172,19 +151,13 @@ private void addLanguages(PixMergePatientRequest request) {
}

private void addMaritalStatus(PixMergePatientRequest request) {
if (this.maritalStatus != null) {
if (maritalStatus != null) {
request.setPatientMaritalStatus(maritalStatus.getCodingFirstRep().getCode());
}
}

private void addReligion(PixMergePatientRequest request) {
if (this.religion != null) {
request.setPatientReligiousAffiliation(religion.getText());
}
}

private void addNation(PixMergePatientRequest request) {
if (this.nation != null) {
if (nation != null) {
PRPAIN201304UV02Type rootElement = request.getRootElement();
PRPAMT201303UV02Person patientPerson = rootElement.getControlActProcess().getSubject().get(0)
.getRegistrationEvent()
Expand All @@ -199,62 +172,85 @@ private void addNation(PixMergePatientRequest request) {

}

private void addAddresses(PixMergePatientRequest request) {
for (Address address : this.addresses) {
request.addPatientAddress(PixPdqV3Utils.createAd(address));
private void addNonMedicalIdentifiers(PixMergePatientRequest request) {
for (Identifier identifier : nonMedicalIdentifiers) {
if ((identifier.getSystem().length() > 8)) {
final String oid = FhirCommon.removeUrnOidPrefix(identifier.getSystem());
request.addPatientOtherID(identifier.getValue(), oid);
}
}
}

private void addPatientsMothersMaidenName(PixMergePatientRequest request) {
if (this.mothersMaidenName != null) {
request.setPatientMothersMaidenName(mothersMaidenName.getFamily(), mothersMaidenName.getGivenAsSingleString(),
null,
mothersMaidenName.getPrefixAsSingleString(), mothersMaidenName.getSuffixAsSingleString());
private void addObsoletePatientId(PixMergePatientRequest request) {
request.setObsoletePatientID(obsoletePatientID, homeCommunityOID, homeCommunityNamespace);
}

private void addPatientBirthday(PixMergePatientRequest request) {
if (birthday != null) {
DateType birthdate = new DateType();
birthdate.setValue(birthday);
request.setPatientBirthTime(birthdate.getValueAsString().replace("-", ""));
}
}

private void addPatientGender(PixMergePatientRequest request) {
if (this.gender != null) {
if (gender != null) {
request.setPatientGender(ConverterUtil.convertAdministrativeGenderToSingleCharString(gender));
}
}

private void addPatientBirthday(PixMergePatientRequest request) {
if (this.birthday != null) {
DateType birthdate = new DateType();
birthdate.setValue(this.birthday);
request.setPatientBirthTime(birthdate.getValueAsString().replace("-", ""));
private void addPatientName(PixMergePatientRequest request) {
if (patientName != null) {
request.addPatientName(patientName.getFamily(), patientName.getGivenAsSingleString(), null,
patientName.getPrefixAsSingleString(), patientName.getSuffixAsSingleString());
}
}

private void addPatientName(PixMergePatientRequest request) {
if (this.patientName != null) {
request.addPatientName(this.patientName.getFamily(), this.patientName.getGivenAsSingleString(), null,
this.patientName.getPrefixAsSingleString(), this.patientName.getSuffixAsSingleString());
private void addPatientsMothersMaidenName(PixMergePatientRequest request) {
if (mothersMaidenName != null) {
request.setPatientMothersMaidenName(mothersMaidenName.getFamily(), mothersMaidenName.getGivenAsSingleString(),
null,
mothersMaidenName.getPrefixAsSingleString(), mothersMaidenName.getSuffixAsSingleString());
}
}

private void addNonMedicalIdentifiers(PixMergePatientRequest request) {
for (Identifier identifier : this.nonMedicalIdentifiers) {
if ((identifier.getSystem().length() > 8)) {
final String oid = FhirCommon.removeUrnOidPrefix(identifier.getSystem());
request.addPatientOtherID(identifier.getValue(), oid);
}
private void addProviderOrganization(PixMergePatientRequest request) {
if (providerOrganization == null && scopingOrganization != null) {
providerOrganization = scopingOrganization;
}

}
if (providerOrganization != null) {
String organizationName = "";
String telecomValue = "NOTPROVIDED";

private void addIdentifiers(PixMergePatientRequest request) {
for (Identifier identifier : this.identifiers) {
if ((identifier.getSystem().length() > 8)) {
final String oid = FhirCommon.removeUrnOidPrefix(identifier.getSystem());
if (this.homeCommunityOID != null && this.homeCommunityOID.equals(oid)) {
request.addPatientID(identifier.getValue(), this.homeCommunityOID, this.homeCommunityNamespace);
} else {
request.addPatientID(identifier.getValue(), oid, "");
if (providerOrganization.getName() != null) {
organizationName = providerOrganization.getName();
}

if (providerOrganization.getTelecom() != null && !providerOrganization.getTelecom().isEmpty()) {
var contactPoint = providerOrganization.getTelecomFirstRep();
if (contactPoint != null) {
telecomValue = contactPoint.getValue();
}
}
request.setProviderOrganization(providerOrganization.getIdentifier(), organizationName, telecomValue);
}
}

private void addReligion(PixMergePatientRequest request) {
if (religion != null) {
request.setPatientReligiousAffiliation(religion.getText());
}
}

private void addTelecomContacts(PixMergePatientRequest request) {
PRPAIN201304UV02Type rootElement = request.getRootElement();
PRPAMT201303UV02Person patientPerson = rootElement.getControlActProcess().getSubject().get(0).getRegistrationEvent()
.getSubject1().getPatient().getPatientPerson();

for (ContactPoint contactPoint : telecomContacts) {
patientPerson.getTelecom().add(V3PixSourceMessageHelper.createTEL(ConverterUtil.getTelecomValue(contactPoint),
ConverterUtil.getTelecomAddressUse(contactPoint)));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
public class XdsDocumentSetRequest {
@NonNull
private Destination destination;
@NonNull
/** may be null for testing environments like the EPD Playground */
private SecurityHeaderElement xuaToken;
@Singular
private List<DocumentRequest> documentRequests;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class XdsProvideAndRetrieveDocumentSetQuery {
private List<XdsDocumentWithMetadata> documentWithMetadata;
@NotNull
private SubmissionSetMetadata submissionSetMetadata;
@NotNull
/** may be null for testing environments like the EPD Playground */
private SecurityHeaderElement xuaToken;
@NotNull
private Destination destination;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public class XdsRegistryStoredFindDocumentsQuery {
private Destination destination;
@NonNull
private Identificator patientID;
@NonNull
/** may be null for testing environments like the EPD Playground */
private SecurityHeaderElement xuaToken;

@Singular("availabilityStatus")
Expand Down
Loading

0 comments on commit 03405a7

Please sign in to comment.