Search in sources :

Example 1 with MCCIMT000300UV01Acknowledgement

use of net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement in project MobileAccessGateway by i4mi.

the class Iti78ResponseConverter method translateToFhir.

public List<Patient> translateToFhir(byte[] input, Map<String, Object> parameters) {
    try {
        // FIX for xmlns:xmlns
        String content = new String(input);
        content = content.replace("xmlns:xmlns", "xmlns:xxxxx");
        List<Patient> response = new ArrayList<Patient>();
        PRPAIN201306UV02Type msg = HL7V3Transformer.unmarshallMessage(PRPAIN201306UV02Type.class, new ByteArrayInputStream(content.getBytes()));
        PRPAIN201306UV02MFMIMT700711UV01ControlActProcess controlAct = msg.getControlActProcess();
        List<MCCIMT000300UV01Acknowledgement> acks = msg.getAcknowledgement();
        String errtext = "";
        for (MCCIMT000300UV01Acknowledgement ack : acks) {
            for (MCCIMT000300UV01AcknowledgementDetail ackDetail : ack.getAcknowledgementDetail()) {
                if (ackDetail.getText() != null)
                    errtext += toText(ackDetail.getText());
            }
        }
        // OK NF AE
        String queryResponseCode = controlAct.getQueryAck().getQueryResponseCode().getCode();
        if ("NF".equals(queryResponseCode)) {
            throw new ResourceNotFoundException("sourceIdentifier Patient Identifier not found", error(IssueType.NOTFOUND, errtext.length() > 0 ? errtext : "sourceIdentifier Patient Identifier not found"));
        }
        if ("AE".equals(queryResponseCode)) {
            throw new InvalidRequestException("sourceIdentifier Assigning Authority not found", error(IssueType.INVALID, errtext.length() > 0 ? errtext : "sourceIdentifier Assigning Authority not found"));
        }
        List<PRPAIN201306UV02MFMIMT700711UV01Subject1> subjects = controlAct.getSubject();
        for (PRPAIN201306UV02MFMIMT700711UV01Subject1 subject : subjects) {
            PRPAIN201306UV02MFMIMT700711UV01RegistrationEvent registrationEvent = subject.getRegistrationEvent();
            PRPAIN201306UV02MFMIMT700711UV01Subject2 subject1 = registrationEvent.getSubject1();
            PRPAMT201310UV02Patient patient = subject1.getPatient();
            PRPAMT201310UV02Person patientPerson = patient.getPatientPerson();
            if (patient.getId().isEmpty())
                continue;
            Patient result = new Patient();
            boolean idadded = false;
            for (II patientId : patient.getId()) {
                result.addIdentifier().setSystem(getSystem(patientId.getRoot())).setValue(patientId.getExtension());
                if (!idadded) {
                    result.setId(patientRefCreator.createPatientId(patientId.getRoot(), patientId.getExtension()));
                    idadded = true;
                }
            }
            for (PRPAMT201310UV02OtherIDs otherIds : patient.getPatientPerson().getAsOtherIDs()) {
                for (II patientId : otherIds.getId()) {
                    result.addIdentifier().setSystem(getSystem(patientId.getRoot())).setValue(patientId.getExtension());
                }
            }
            CS statusCode = patient.getStatusCode();
            if (statusCode != null && "active".equals(statusCode.getCode()))
                result.setActive(true);
            for (PN name : patientPerson.getName()) {
                HumanName humanName = new HumanName();
                for (EnFamily family : name.getFamily()) {
                    if ("BR".equals(family.getQualifier())) {
                        humanName.setUse(NameUse.MAIDEN);
                    }
                    humanName.setFamily(val(family));
                }
                for (EnGiven given : name.getGiven()) {
                    withQualifier(given, humanName.addGivenElement());
                }
                for (EnPrefix prefix : name.getPrefix()) {
                    withQualifier(prefix, humanName.addPrefixElement());
                }
                for (EnSuffix suffix : name.getSuffix()) {
                    withQualifier(suffix, humanName.addSuffixElement());
                }
                if (name.getValidTime() != null)
                    humanName.setPeriod(transform(name.getValidTime()));
                result.addName(humanName);
            }
            CE gender = patientPerson.getAdministrativeGenderCode();
            if (gender != null) {
                switch(gender.getCode()) {
                    case "M":
                        result.setGender(AdministrativeGender.MALE);
                        break;
                    case "F":
                        result.setGender(AdministrativeGender.FEMALE);
                        break;
                    case "A":
                        result.setGender(AdministrativeGender.OTHER);
                        break;
                    case "U":
                        result.setGender(AdministrativeGender.UNKNOWN);
                        break;
                }
            }
            TS birthTime = patientPerson.getBirthTime();
            if (birthTime != null) {
                result.setBirthDateElement(transform(birthTime));
            }
            for (AD ad : patientPerson.getAddr()) {
                result.addAddress(transform(ad));
            }
            for (TEL tel : patientPerson.getTelecom()) {
                result.addTelecom(transform(tel));
            }
            for (PRPAMT201310UV02LanguageCommunication lang : patientPerson.getLanguageCommunication()) {
                CE langCode = lang.getLanguageCode();
                PatientCommunicationComponent pcc = new PatientCommunicationComponent();
                pcc.setLanguage(transform(langCode));
                BL preferred = lang.getPreferenceInd();
                if (preferred != null && preferred.getValue().booleanValue())
                    pcc.setPreferred(true);
                result.addCommunication(pcc);
            }
            TS deceasedTime = patientPerson.getDeceasedTime();
            if (deceasedTime != null)
                result.setDeceased(transform(deceasedTime));
            else {
                BL deceased = patientPerson.getDeceasedInd();
                if (deceased != null)
                    result.setDeceased(new BooleanType(deceased.getValue().booleanValue()));
            }
            INT multiBirthOrder = patientPerson.getMultipleBirthOrderNumber();
            if (multiBirthOrder != null) {
                result.setMultipleBirth(new IntegerType(multiBirthOrder.getValue()));
            } else {
                BL multipleBirth = patientPerson.getMultipleBirthInd();
                if (multipleBirth != null)
                    result.setMultipleBirth(new BooleanType(multipleBirth.getValue().booleanValue()));
            }
            CE maritalStatus = patientPerson.getMaritalStatusCode();
            result.setMaritalStatus(transform(maritalStatus));
            for (PRPAMT201310UV02PersonalRelationship relationShip : patientPerson.getPersonalRelationship()) {
                CE code = relationShip.getCode();
                if (code != null && "MTH".equals(code.getCode()) && "2.16.840.1.113883.12.63".equals(code.getCodeSystem())) {
                    COCTMT030007UVPerson holder = relationShip.getRelationshipHolder1();
                    if (holder != null && !holder.getName().isEmpty()) {
                        EN name = holder.getName().get(0);
                        if (!name.getFamily().isEmpty()) {
                            String familyName = val(name.getFamily());
                            result.addExtension("http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", new StringType(familyName));
                        }
                    }
                }
            }
            response.add(result);
        }
        return response;
    } catch (JAXBException e) {
        e.printStackTrace();
        throw new InvalidRequestException("failed parsing response");
    }
}
Also used : StringType(org.hl7.fhir.r4.model.StringType) ArrayList(java.util.ArrayList) PRPAIN201306UV02MFMIMT700711UV01Subject2(net.ihe.gazelle.hl7v3.prpain201306UV02.PRPAIN201306UV02MFMIMT700711UV01Subject2) PRPAIN201306UV02MFMIMT700711UV01Subject1(net.ihe.gazelle.hl7v3.prpain201306UV02.PRPAIN201306UV02MFMIMT700711UV01Subject1) BL(net.ihe.gazelle.hl7v3.datatypes.BL) MCCIMT000300UV01Acknowledgement(net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement) PRPAMT201310UV02Patient(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Patient) INT(net.ihe.gazelle.hl7v3.datatypes.INT) HumanName(org.hl7.fhir.r4.model.HumanName) COCTMT030007UVPerson(net.ihe.gazelle.hl7v3.coctmt030007UV.COCTMT030007UVPerson) PatientCommunicationComponent(org.hl7.fhir.r4.model.Patient.PatientCommunicationComponent) PRPAMT201310UV02OtherIDs(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02OtherIDs) EnFamily(net.ihe.gazelle.hl7v3.datatypes.EnFamily) PRPAMT201310UV02Person(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Person) InvalidRequestException(ca.uhn.fhir.rest.server.exceptions.InvalidRequestException) EnSuffix(net.ihe.gazelle.hl7v3.datatypes.EnSuffix) ResourceNotFoundException(ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException) PRPAIN201306UV02MFMIMT700711UV01RegistrationEvent(net.ihe.gazelle.hl7v3.prpain201306UV02.PRPAIN201306UV02MFMIMT700711UV01RegistrationEvent) PRPAIN201306UV02Type(net.ihe.gazelle.hl7v3.prpain201306UV02.PRPAIN201306UV02Type) II(net.ihe.gazelle.hl7v3.datatypes.II) PRPAIN201306UV02MFMIMT700711UV01ControlActProcess(net.ihe.gazelle.hl7v3.prpain201306UV02.PRPAIN201306UV02MFMIMT700711UV01ControlActProcess) CE(net.ihe.gazelle.hl7v3.datatypes.CE) EnPrefix(net.ihe.gazelle.hl7v3.datatypes.EnPrefix) AD(net.ihe.gazelle.hl7v3.datatypes.AD) JAXBException(javax.xml.bind.JAXBException) BooleanType(org.hl7.fhir.r4.model.BooleanType) Patient(org.hl7.fhir.r4.model.Patient) PRPAMT201310UV02Patient(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02Patient) EnGiven(net.ihe.gazelle.hl7v3.datatypes.EnGiven) EN(net.ihe.gazelle.hl7v3.datatypes.EN) CS(net.ihe.gazelle.hl7v3.datatypes.CS) IntegerType(org.hl7.fhir.r4.model.IntegerType) PRPAMT201310UV02PersonalRelationship(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02PersonalRelationship) ByteArrayInputStream(java.io.ByteArrayInputStream) TEL(net.ihe.gazelle.hl7v3.datatypes.TEL) MCCIMT000300UV01AcknowledgementDetail(net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01AcknowledgementDetail) PRPAMT201310UV02LanguageCommunication(net.ihe.gazelle.hl7v3.prpamt201310UV02.PRPAMT201310UV02LanguageCommunication) PN(net.ihe.gazelle.hl7v3.datatypes.PN) IVXBTS(net.ihe.gazelle.hl7v3.datatypes.IVXBTS) IVLTS(net.ihe.gazelle.hl7v3.datatypes.IVLTS) TS(net.ihe.gazelle.hl7v3.datatypes.TS)

Example 2 with MCCIMT000300UV01Acknowledgement

use of net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement in project MobileAccessGateway by i4mi.

the class Iti83ResponseConverter method translateToFhir.

public Parameters translateToFhir(byte[] input, Map<String, Object> parameters) {
    try {
        // FIX for xmlns:xmlns
        String content = new String(input);
        content = content.replace("xmlns:xmlns", "xmlns:xxxxx");
        PRPAIN201310UV02Type msg = HL7V3Transformer.unmarshallMessage(PRPAIN201310UV02Type.class, new ByteArrayInputStream(content.getBytes()));
        Parameters query = (Parameters) parameters.get(Utils.KEPT_BODY);
        List<Type> targetSystemList = (List<Type>) query.getParameters("targetSystem");
        Parameters response = new Parameters();
        PRPAIN201310UV02MFMIMT700711UV01ControlActProcess controlAct = msg.getControlActProcess();
        List<MCCIMT000300UV01Acknowledgement> acks = msg.getAcknowledgement();
        String errtext = "";
        for (MCCIMT000300UV01Acknowledgement ack : acks) {
            for (MCCIMT000300UV01AcknowledgementDetail ackDetail : ack.getAcknowledgementDetail()) {
                if (ackDetail.getText() != null)
                    errtext += toText(ackDetail.getText());
            }
        }
        // OK NF AE
        String queryResponseCode = controlAct.getQueryAck().getQueryResponseCode().getCode();
        if ("NF".equals(queryResponseCode)) {
            throw new ResourceNotFoundException("sourceIdentifier Patient Identifier not found", error(IssueType.NOTFOUND, errtext.length() > 0 ? errtext : "sourceIdentifier Patient Identifier not found"));
        }
        if ("AE".equals(queryResponseCode)) {
            throw new InvalidRequestException("sourceIdentifier Assigning Authority not found", error(IssueType.INVALID, errtext.length() > 0 ? errtext : "sourceIdentifier Assigning Authority not found"));
        }
        Set<String> acceptedTargetSystem = new HashSet<String>();
        Set<String> noDuplicates = new HashSet<String>();
        if (targetSystemList != null) {
            for (Type targetSystemType : targetSystemList) {
                UriType targetSystem = (UriType) targetSystemType;
                acceptedTargetSystem.add(targetSystem.getValue());
            }
        }
        List<PRPAIN201310UV02MFMIMT700711UV01Subject1> subjects = controlAct.getSubject();
        for (PRPAIN201310UV02MFMIMT700711UV01Subject1 subject : subjects) {
            boolean targetIdAdded = false;
            List<II> ids = new ArrayList<II>();
            ids.addAll(subject.getRegistrationEvent().getSubject1().getPatient().getId());
            for (var otherId : subject.getRegistrationEvent().getSubject1().getPatient().getPatientPerson().getAsOtherIDs()) {
                ids.addAll(otherId.getId());
            }
            for (II ii : ids) {
                String root = ii.getRoot();
                String extension = ii.getExtension();
                if (!noDuplicates.contains(root) && (acceptedTargetSystem.isEmpty() || acceptedTargetSystem.contains("urn:oid:" + root))) {
                    response.addParameter().setName("targetIdentifier").setValue((new Identifier()).setSystem("urn:oid:" + root).setValue(extension));
                    noDuplicates.add(root);
                }
                if (!targetIdAdded && root.equals(config.getOidMpiPid())) {
                    response.addParameter().setName("targetId").setValue(patientRefCreator.createPatientReference(root, extension));
                    targetIdAdded = true;
                }
            }
        }
        return response;
    } catch (JAXBException e) {
        e.printStackTrace();
        throw new InvalidRequestException("failed parsing response");
    }
}
Also used : PRPAIN201310UV02Type(net.ihe.gazelle.hl7v3.prpain201310UV02.PRPAIN201310UV02Type) PRPAIN201310UV02MFMIMT700711UV01Subject1(net.ihe.gazelle.hl7v3.prpain201310UV02.PRPAIN201310UV02MFMIMT700711UV01Subject1) ArrayList(java.util.ArrayList) MCCIMT000300UV01Acknowledgement(net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement) UriType(org.hl7.fhir.r4.model.UriType) Identifier(org.hl7.fhir.r4.model.Identifier) ArrayList(java.util.ArrayList) List(java.util.List) InvalidRequestException(ca.uhn.fhir.rest.server.exceptions.InvalidRequestException) ResourceNotFoundException(ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException) HashSet(java.util.HashSet) II(net.ihe.gazelle.hl7v3.datatypes.II) Parameters(org.hl7.fhir.r4.model.Parameters) JAXBException(javax.xml.bind.JAXBException) PRPAIN201310UV02MFMIMT700711UV01ControlActProcess(net.ihe.gazelle.hl7v3.prpain201310UV02.PRPAIN201310UV02MFMIMT700711UV01ControlActProcess) Type(org.hl7.fhir.r4.model.Type) IssueType(org.hl7.fhir.r4.model.OperationOutcome.IssueType) UriType(org.hl7.fhir.r4.model.UriType) PRPAIN201310UV02Type(net.ihe.gazelle.hl7v3.prpain201310UV02.PRPAIN201310UV02Type) ByteArrayInputStream(java.io.ByteArrayInputStream) MCCIMT000300UV01AcknowledgementDetail(net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01AcknowledgementDetail)

Example 3 with MCCIMT000300UV01Acknowledgement

use of net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement in project ipf by oehf.

the class PixV3QueryResponseTransformer method fromPrpa.

/**
 * Transforms a full PRPA response into the simplified model. Data loss can occur, as the simplified model is not
 * complete.
 *
 * @param response The full PRPA response to transform.
 * @return the simplified response or {@code null} if the input was {@code null}.
 */
public PixV3QueryResponse fromPrpa(final PRPAIN201310UV02Type response) {
    if (response == null) {
        return null;
    }
    final PixV3QueryResponse simpleResponse = new PixV3QueryResponse();
    simpleResponse.setMessageId(response.getId());
    simpleResponse.setSender(this.fromSender(response.getSender()));
    if (!response.getReceiver().isEmpty()) {
        simpleResponse.setReceiver(this.fromReceiver(response.getReceiver().get(0)));
    }
    simpleResponse.setCreationTime(Optional.ofNullable(response.getCreationTime()).map(TS::getValue).map(value -> {
        try {
            return HL7DTM.toZonedDateTime(value);
        } catch (final DataTypeException e) {
            return null;
        }
    }).orElse(null));
    if (!response.getAcknowledgement().isEmpty()) {
        final MCCIMT000300UV01Acknowledgement acknowledgement = response.getAcknowledgement().get(0);
        simpleResponse.setAcknowledgementTypeCode(acknowledgement.getTypeCode().getCode());
        if (acknowledgement.getTargetMessage() != null) {
            simpleResponse.setTargetMessageId(acknowledgement.getTargetMessage().getId());
        }
        simpleResponse.getAcknowledgementDetails().addAll(acknowledgement.getAcknowledgementDetail());
    }
    if (response.getControlActProcess() == null) {
        return simpleResponse;
    }
    final PRPAIN201310UV02MFMIMT700711UV01ControlActProcess controlActProcess = response.getControlActProcess();
    if (controlActProcess.getQueryByParameter() == null) {
        return simpleResponse;
    }
    final PRPAMT201307UV02QueryByParameter queryByParameter = controlActProcess.getQueryByParameter();
    simpleResponse.setQueryId(queryByParameter.getQueryId());
    if (queryByParameter.getParameterList() == null) {
        return simpleResponse;
    }
    final PRPAMT201307UV02ParameterList parameterList = queryByParameter.getParameterList();
    if (!parameterList.getPatientIdentifier().isEmpty()) {
        final List<II> patientIds = parameterList.getPatientIdentifier().get(0).getValue();
        if (!patientIds.isEmpty()) {
            simpleResponse.setQueryPatientId(patientIds.get(0));
        }
    }
    for (final PRPAMT201307UV02DataSource dataSource : parameterList.getDataSource()) {
        if (!dataSource.getValue().isEmpty()) {
            simpleResponse.getDataSourceOids().add(dataSource.getValue().get(0).getRoot());
        }
    }
    final MFMIMT700711UV01QueryAck queryAck = controlActProcess.getQueryAck();
    if (queryAck != null) {
        simpleResponse.setQueryResponseCode(queryAck.getQueryResponseCode().getCode());
    }
    if (controlActProcess.getSubject().isEmpty()) {
        return simpleResponse;
    }
    final PRPAIN201310UV02MFMIMT700711UV01RegistrationEvent registrationEvent = Optional.ofNullable(controlActProcess.getSubject().get(0).getRegistrationEvent()).orElse(null);
    if (registrationEvent == null) {
        return simpleResponse;
    }
    simpleResponse.setCustodianOid(Optional.ofNullable(registrationEvent.getCustodian()).map(MFMIMT700711UV01Custodian::getAssignedEntity).map(COCTMT090003UV01AssignedEntity::getId).map(list -> list.isEmpty() ? null : list.get(0)).map(II::getRoot).orElse(null));
    final PRPAMT201304UV02Patient patient = Optional.ofNullable(registrationEvent.getSubject1()).map(PRPAIN201310UV02MFMIMT700711UV01Subject2::getPatient).orElse(null);
    if (patient == null) {
        return simpleResponse;
    }
    simpleResponse.setProviderOrganization(Optional.ofNullable(patient.getProviderOrganization()).orElse(null));
    if (!patient.getId().isEmpty()) {
        simpleResponse.getPatientIds().addAll(patient.getId());
    }
    if (patient.getPatientPerson() != null) {
        if (!patient.getPatientPerson().getName().isEmpty()) {
            simpleResponse.setPersonName(patient.getPatientPerson().getName().get(0));
        }
        simpleResponse.getPersonIds().addAll(patient.getPatientPerson().getId());
        simpleResponse.getAsOtherIDs().addAll(patient.getPatientPerson().getAsOtherIDs());
    }
    return simpleResponse;
}
Also used : net.ihe.gazelle.hl7v3.datatypes(net.ihe.gazelle.hl7v3.datatypes) Device(org.openehealth.ipf.commons.ihe.hl7v3.core.metadata.Device) COCTMT090003UV01AssignedEntity(net.ihe.gazelle.hl7v3.coctmt090003UV01.COCTMT090003UV01AssignedEntity) net.ihe.gazelle.hl7v3.voc(net.ihe.gazelle.hl7v3.voc) PRPAMT201304UV02Patient(net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Patient) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter) net.ihe.gazelle.hl7v3.mccimt000300UV01(net.ihe.gazelle.hl7v3.mccimt000300UV01) HL7DTM(org.openehealth.ipf.commons.ihe.core.HL7DTM) PixV3QueryResponse(org.openehealth.ipf.commons.ihe.hl7v3.core.responses.PixV3QueryResponse) MFMIMT700711UV01Custodian(net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01Custodian) List(java.util.List) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) PRPAMT201307UV02PatientIdentifier(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier) net.ihe.gazelle.hl7v3.prpain201310UV02(net.ihe.gazelle.hl7v3.prpain201310UV02) PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) Optional(java.util.Optional) DataTypeException(ca.uhn.hl7v2.model.DataTypeException) MFMIMT700711UV01QueryAck(net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01QueryAck) PRPAMT201304UV02Person(net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Person) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) PixV3QueryResponse(org.openehealth.ipf.commons.ihe.hl7v3.core.responses.PixV3QueryResponse) PRPAMT201304UV02Patient(net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Patient) DataTypeException(ca.uhn.hl7v2.model.DataTypeException) PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) MFMIMT700711UV01QueryAck(net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01QueryAck) COCTMT090003UV01AssignedEntity(net.ihe.gazelle.hl7v3.coctmt090003UV01.COCTMT090003UV01AssignedEntity) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter)

Example 4 with MCCIMT000300UV01Acknowledgement

use of net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement in project ipf by oehf.

the class PixV3QueryResponseTransformer method toPrpa.

/**
 * Transforms a simplified response into the full PRPA model.
 *
 * @param simpleResponse The simplified response to transform.
 * @return the PRPA model response or {@code null} if the input was {@code null}.
 */
public PRPAIN201310UV02Type toPrpa(final PixV3QueryResponse simpleResponse) {
    if (simpleResponse == null) {
        return null;
    }
    // Prepare response with fixed values
    final PRPAIN201310UV02Type response = new PRPAIN201310UV02Type();
    response.setITSVersion("XML_1.0");
    response.setInteractionId(new II("2.16.840.1.113883.1.6", "PRPA_IN201310UV02"));
    response.setProcessingCode(new CS("P", null, null));
    response.setProcessingModeCode(new CS("T", null, null));
    response.setAcceptAckCode(new CS("NE", null, null));
    final MCCIMT000300UV01Acknowledgement acknowledgement = new MCCIMT000300UV01Acknowledgement();
    response.getAcknowledgement().add(acknowledgement);
    final PRPAIN201310UV02MFMIMT700711UV01ControlActProcess controlActProcess = new PRPAIN201310UV02MFMIMT700711UV01ControlActProcess();
    controlActProcess.setClassCode(ActClassControlAct.CACT);
    controlActProcess.setMoodCode(XActMoodIntentEvent.EVN);
    controlActProcess.setCode(new CD("PRPA_TE201310UV02", null, null));
    response.setControlActProcess(controlActProcess);
    final MFMIMT700711UV01QueryAck queryAck = new MFMIMT700711UV01QueryAck();
    controlActProcess.setQueryAck(queryAck);
    final PRPAMT201307UV02QueryByParameter queryByParameter = new PRPAMT201307UV02QueryByParameter();
    queryByParameter.setStatusCode(new CS("new", null, null));
    queryByParameter.setResponsePriorityCode(new CS("I", null, null));
    queryByParameter.setParameterList(new PRPAMT201307UV02ParameterList());
    controlActProcess.setQueryByParameter(queryByParameter);
    // Fill response with given data
    response.setCreationTime(new TS());
    response.getCreationTime().setValue(HL7DTM.toSimpleString(simpleResponse.getCreationTime()));
    response.setId(simpleResponse.getMessageId());
    response.setReceiver(List.of(toReceiver(simpleResponse.getReceiver())));
    response.setSender(toSender(simpleResponse.getSender()));
    queryByParameter.setQueryId(simpleResponse.getQueryId());
    final PRPAMT201307UV02PatientIdentifier patientIdentifier = new PRPAMT201307UV02PatientIdentifier();
    patientIdentifier.setValue(List.of(simpleResponse.getQueryPatientId()));
    patientIdentifier.setSemanticsText(new ST());
    patientIdentifier.getSemanticsText().mixed = List.of("Patient.id");
    queryByParameter.getParameterList().setPatientIdentifier(List.of(patientIdentifier));
    for (final String dataSourceOid : simpleResponse.getDataSourceOids()) {
        final PRPAMT201307UV02DataSource dataSource = new PRPAMT201307UV02DataSource();
        dataSource.setValue(List.of(new II(dataSourceOid, null)));
        dataSource.setSemanticsText(new ST());
        dataSource.getSemanticsText().mixed = List.of("DataSource.id");
        queryByParameter.getParameterList().getDataSource().add(dataSource);
    }
    acknowledgement.setTypeCode(new CS(simpleResponse.getAcknowledgementTypeCode(), null, null));
    acknowledgement.setTargetMessage(new MCCIMT000300UV01TargetMessage());
    acknowledgement.getTargetMessage().setId(simpleResponse.getTargetMessageId());
    acknowledgement.getAcknowledgementDetail().addAll(simpleResponse.getAcknowledgementDetails());
    queryAck.setQueryId(simpleResponse.getQueryId());
    queryAck.setQueryResponseCode(new CS(simpleResponse.getQueryResponseCode(), null, null));
    queryAck.setStatusCode(new CS("deliveredResponse", null, null));
    if (!"OK".equals(simpleResponse.getQueryResponseCode())) {
        // If the query response code is not OK, no RegistrationEvent shall be returned
        return response;
    }
    final PRPAIN201310UV02MFMIMT700711UV01Subject1 subject = new PRPAIN201310UV02MFMIMT700711UV01Subject1();
    subject.setTypeCode("SUBJ");
    controlActProcess.getSubject().add(subject);
    final PRPAIN201310UV02MFMIMT700711UV01RegistrationEvent registrationEvent = new PRPAIN201310UV02MFMIMT700711UV01RegistrationEvent();
    registrationEvent.setStatusCode(new CS("ACTIVE", null, null));
    registrationEvent.setClassCode(ActClass.REG);
    registrationEvent.setMoodCode(ActMood.EVN);
    subject.setRegistrationEvent(registrationEvent);
    final PRPAIN201310UV02MFMIMT700711UV01Subject2 subject1 = new PRPAIN201310UV02MFMIMT700711UV01Subject2();
    subject1.setTypeCode(ParticipationTargetSubject.SBJ);
    registrationEvent.setSubject1(subject1);
    final PRPAMT201304UV02Patient patient = new PRPAMT201304UV02Patient();
    patient.setClassCode("PAT");
    patient.setStatusCode(new CS("ACTIVE", null, null));
    patient.setId(simpleResponse.getPatientIds());
    patient.setProviderOrganization(simpleResponse.getProviderOrganization());
    subject1.setPatient(patient);
    final PRPAMT201304UV02Person person = new PRPAMT201304UV02Person();
    person.setClassCode(EntityClass.PSN);
    person.setDeterminerCode(EntityDeterminer.INSTANCE);
    if (simpleResponse.getPersonName() != null) {
        person.getName().add(simpleResponse.getPersonName());
    }
    person.getId().addAll(simpleResponse.getPersonIds());
    person.getAsOtherIDs().addAll(simpleResponse.getAsOtherIDs());
    patient.setPatientPerson(person);
    final MFMIMT700711UV01Custodian custodian = new MFMIMT700711UV01Custodian();
    custodian.setTypeCode(ParticipationType.CST);
    registrationEvent.setCustodian(custodian);
    final COCTMT090003UV01AssignedEntity assignedEntity = new COCTMT090003UV01AssignedEntity();
    assignedEntity.setClassCode(RoleClassAssignedEntity.ASSIGNED);
    assignedEntity.getId().add(new II(simpleResponse.getCustodianOid(), null));
    custodian.setAssignedEntity(assignedEntity);
    return response;
}
Also used : MFMIMT700711UV01Custodian(net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01Custodian) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) PRPAMT201304UV02Patient(net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Patient) PRPAMT201304UV02Person(net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Person) PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) MFMIMT700711UV01QueryAck(net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01QueryAck) COCTMT090003UV01AssignedEntity(net.ihe.gazelle.hl7v3.coctmt090003UV01.COCTMT090003UV01AssignedEntity) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter) PRPAMT201307UV02PatientIdentifier(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier)

Aggregations

InvalidRequestException (ca.uhn.fhir.rest.server.exceptions.InvalidRequestException)2 ResourceNotFoundException (ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException)2 ByteArrayInputStream (java.io.ByteArrayInputStream)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 JAXBException (javax.xml.bind.JAXBException)2 COCTMT090003UV01AssignedEntity (net.ihe.gazelle.hl7v3.coctmt090003UV01.COCTMT090003UV01AssignedEntity)2 II (net.ihe.gazelle.hl7v3.datatypes.II)2 MCCIMT000300UV01Acknowledgement (net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01Acknowledgement)2 MCCIMT000300UV01AcknowledgementDetail (net.ihe.gazelle.hl7v3.mccimt000300UV01.MCCIMT000300UV01AcknowledgementDetail)2 MFMIMT700711UV01Custodian (net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01Custodian)2 MFMIMT700711UV01QueryAck (net.ihe.gazelle.hl7v3.mfmimt700711UV01.MFMIMT700711UV01QueryAck)2 PRPAMT201304UV02Patient (net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Patient)2 PRPAMT201304UV02Person (net.ihe.gazelle.hl7v3.prpamt201304UV02.PRPAMT201304UV02Person)2 PRPAMT201307UV02DataSource (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource)2 PRPAMT201307UV02ParameterList (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList)2 PRPAMT201307UV02PatientIdentifier (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier)2 PRPAMT201307UV02QueryByParameter (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter)2 DataTypeException (ca.uhn.hl7v2.model.DataTypeException)1 HashSet (java.util.HashSet)1