Search in sources :

Example 1 with PRPAIN201309UV02Type

use of net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type in project ipf by oehf.

the class PixV3QueryRequestTransformer method toPrpa.

/**
 * Transforms a simplified query into the full PRPA model.
 *
 * @param simpleQuery The simplified query to transform.
 * @return the PRPA model query or {@code null} if the input was {@code null}.
 */
public PRPAIN201309UV02Type toPrpa(final PixV3QueryRequest simpleQuery) {
    if (simpleQuery == null) {
        return null;
    }
    // Prepare query with fixed values
    final PRPAIN201309UV02Type query = new PRPAIN201309UV02Type();
    query.setITSVersion("XML_1.0");
    query.setInteractionId(new II("2.16.840.1.113883.1.6", "PRPA_IN201309UV02"));
    query.setProcessingCode(new CS("P", null, null));
    query.setProcessingModeCode(new CS("T", null, null));
    query.setAcceptAckCode(new CS("AL", null, null));
    final PRPAIN201309UV02QUQIMT021001UV01ControlActProcess controlActProcess = new PRPAIN201309UV02QUQIMT021001UV01ControlActProcess();
    controlActProcess.setClassCode(ActClassControlAct.CACT);
    controlActProcess.setMoodCode(XActMoodIntentEvent.EVN);
    controlActProcess.setCode(new CD("PRPA_TE201309UV02", null, null));
    query.setControlActProcess(controlActProcess);
    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 query with given data
    query.setCreationTime(new TS());
    query.getCreationTime().setValue(HL7DTM.toSimpleString(simpleQuery.getCreationTime()));
    query.setId(simpleQuery.getMessageId());
    query.setReceiver(List.of(this.toReceiver(simpleQuery.getReceiver())));
    query.setSender(this.toSender(simpleQuery.getSender()));
    queryByParameter.setQueryId(simpleQuery.getQueryId());
    final PRPAMT201307UV02PatientIdentifier patientIdentifier = new PRPAMT201307UV02PatientIdentifier();
    patientIdentifier.setValue(List.of(simpleQuery.getQueryPatientId()));
    patientIdentifier.setSemanticsText(new ST());
    patientIdentifier.getSemanticsText().mixed = List.of("Patient.id");
    queryByParameter.getParameterList().setPatientIdentifier(List.of(patientIdentifier));
    for (final String dataSourceOid : simpleQuery.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);
    }
    return query;
}
Also used : PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) PRPAIN201309UV02QUQIMT021001UV01ControlActProcess(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02QUQIMT021001UV01ControlActProcess) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter) PRPAIN201309UV02Type(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type) PRPAMT201307UV02PatientIdentifier(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier)

Example 2 with PRPAIN201309UV02Type

use of net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type in project MobileAccessGateway by i4mi.

the class Iti83RequestConverter method iti83ToIti45Converter.

public String iti83ToIti45Converter(Parameters parameters) throws JAXBException {
    List<Type> targetSystemList = (List<Type>) parameters.getParameters("targetSystem");
    Identifier sourceIdentifier = (Identifier) parameters.getParameter("sourceIdentifier");
    PRPAIN201309UV02Type resultMsg = new PRPAIN201309UV02Type();
    resultMsg.setITSVersion("XML_1.0");
    // String UUID.randomUUID().toString();
    resultMsg.setId(new II(config.getPixQueryOid(), uniqueId()));
    // Now
    resultMsg.setCreationTime(new TS(Timestamp.now().toHL7()));
    resultMsg.setProcessingCode(new CS("T", null, null));
    resultMsg.setProcessingModeCode(new CS("T", null, null));
    resultMsg.setInteractionId(new II("2.16.840.1.113883.1.18", "PRPA_IN201309UV02"));
    resultMsg.setAcceptAckCode(new CS("AL", null, null));
    MCCIMT000100UV01Receiver receiver = new MCCIMT000100UV01Receiver();
    resultMsg.addReceiver(receiver);
    receiver.setTypeCode(CommunicationFunctionType.RCV);
    MCCIMT000100UV01Device receiverDevice = new MCCIMT000100UV01Device();
    receiver.setDevice(receiverDevice);
    receiverDevice.setClassCode(EntityClassDevice.DEV);
    receiverDevice.setDeterminerCode(EntityDeterminer.INSTANCE);
    receiverDevice.setId(Collections.singletonList(new II(config.getPixReceiverOid(), null)));
    MCCIMT000100UV01Sender sender = new MCCIMT000100UV01Sender();
    resultMsg.setSender(sender);
    sender.setTypeCode(CommunicationFunctionType.SND);
    MCCIMT000100UV01Device senderDevice = new MCCIMT000100UV01Device();
    sender.setDevice(senderDevice);
    senderDevice.setClassCode(EntityClassDevice.DEV);
    senderDevice.setDeterminerCode(EntityDeterminer.INSTANCE);
    senderDevice.setId(Collections.singletonList(new II(config.getPixMySenderOid(), null)));
    PRPAIN201309UV02QUQIMT021001UV01ControlActProcess controlActProcess = new PRPAIN201309UV02QUQIMT021001UV01ControlActProcess();
    resultMsg.setControlActProcess(controlActProcess);
    controlActProcess.setClassCode(ActClassControlAct.CACT);
    controlActProcess.setMoodCode(XActMoodIntentEvent.EVN);
    controlActProcess.setCode(new CD("PRPA_TE201309UV02", "2.16.840.1.113883.1.18", null));
    PRPAMT201307UV02QueryByParameter queryByParameter = new PRPAMT201307UV02QueryByParameter();
    controlActProcess.setQueryByParameter(queryByParameter);
    queryByParameter.setQueryId(new II(config.getPixQueryOid(), uniqueId()));
    queryByParameter.setStatusCode(new CS("new", null, null));
    queryByParameter.setResponsePriorityCode(new CS("I", null, null));
    PRPAMT201307UV02ParameterList parameterList = new PRPAMT201307UV02ParameterList();
    queryByParameter.setParameterList(parameterList);
    PRPAMT201307UV02PatientIdentifier patientIdentifier = new PRPAMT201307UV02PatientIdentifier();
    parameterList.addPatientIdentifier(patientIdentifier);
    String system = getScheme(sourceIdentifier.getSystem());
    patientIdentifier.setValue(Collections.singletonList(new II(system, sourceIdentifier.getValue())));
    patientIdentifier.setSemanticsText(ST("Patient.id"));
    if (targetSystemList != null && (targetSystemList.size() > 0)) {
        for (Type targetSystemType : targetSystemList) {
            UriType targetSystem = (UriType) targetSystemType;
            String sourceSystem = getScheme(targetSystem.getValue());
            PRPAMT201307UV02DataSource dataSource = new PRPAMT201307UV02DataSource();
            parameterList.addDataSource(dataSource);
            dataSource.setValue(Collections.singletonList(new II(sourceSystem, null, null)));
            dataSource.setSemanticsText(ST("DataSource.id"));
        }
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    log.debug("PRE CONVERT");
    HL7V3Transformer.marshallMessage(PRPAIN201309UV02Type.class, out, resultMsg);
    log.debug("POST CONVERT");
    String outArray = new String(out.toByteArray());
    log.debug(outArray);
    return outArray;
}
Also used : II(net.ihe.gazelle.hl7v3.datatypes.II) CD(net.ihe.gazelle.hl7v3.datatypes.CD) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PRPAIN201309UV02Type(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type) MCCIMT000100UV01Sender(net.ihe.gazelle.hl7v3.mccimt000100UV01.MCCIMT000100UV01Sender) UriType(org.hl7.fhir.r4.model.UriType) CS(net.ihe.gazelle.hl7v3.datatypes.CS) Type(org.hl7.fhir.r4.model.Type) CommunicationFunctionType(net.ihe.gazelle.hl7v3.voc.CommunicationFunctionType) PRPAIN201309UV02Type(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type) UriType(org.hl7.fhir.r4.model.UriType) Identifier(org.hl7.fhir.r4.model.Identifier) PRPAMT201307UV02PatientIdentifier(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier) PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) PRPAIN201309UV02QUQIMT021001UV01ControlActProcess(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02QUQIMT021001UV01ControlActProcess) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) List(java.util.List) MCCIMT000100UV01Receiver(net.ihe.gazelle.hl7v3.mccimt000100UV01.MCCIMT000100UV01Receiver) PRPAMT201307UV02PatientIdentifier(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier) MCCIMT000100UV01Device(net.ihe.gazelle.hl7v3.mccimt000100UV01.MCCIMT000100UV01Device) TS(net.ihe.gazelle.hl7v3.datatypes.TS)

Example 3 with PRPAIN201309UV02Type

use of net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type in project ipf by oehf.

the class PixV3QueryRequestTransformerTest method testTransform.

@Test
public void testTransform() throws Exception {
    final PixV3QueryRequestTransformer transformer = new PixV3QueryRequestTransformer();
    final JAXBContext jaxbContext = JAXBContext.newInstance(PRPAIN201309UV02Type.class);
    final PixV3QueryRequest query = getSampleQuery();
    // Transform simple query to JAXB model
    final PRPAIN201309UV02Type prpain201309UV02Type = transformer.toPrpa(query);
    // Marshall JAXB model
    final Marshaller marshaller = jaxbContext.createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
    marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF8");
    final StringWriter stringWriter = new StringWriter();
    marshaller.marshal(prpain201309UV02Type, stringWriter);
    final String xml = stringWriter.toString();
    // Unmarshall JAXB model
    final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    final PRPAIN201309UV02Type parsedPrpain201309UV02Type = (PRPAIN201309UV02Type) unmarshaller.unmarshal(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)));
    // Transform JAXB model to simple query
    final PixV3QueryRequest parsedQuery = transformer.fromPrpa(parsedPrpain201309UV02Type);
    // The two simple queries should be equal
    assertIiEquals(query.getQueryPatientId(), parsedQuery.getQueryPatientId());
    assertEquals(query.getDataSourceOids(), parsedQuery.getDataSourceOids());
    assertIiEquals(query.getMessageId(), parsedQuery.getMessageId());
    assertIiEquals(query.getQueryId(), parsedQuery.getQueryId());
    assertDeviceEquals(query.getReceiver(), parsedQuery.getReceiver());
    assertDeviceEquals(query.getSender(), parsedQuery.getSender());
    assertEquals(HL7DTM.toSimpleString(query.getCreationTime()), HL7DTM.toSimpleString(parsedQuery.getCreationTime()));
}
Also used : PixV3QueryRequest(org.openehealth.ipf.commons.ihe.hl7v3.core.requests.PixV3QueryRequest) Marshaller(javax.xml.bind.Marshaller) StringWriter(java.io.StringWriter) ByteArrayInputStream(java.io.ByteArrayInputStream) JAXBContext(javax.xml.bind.JAXBContext) PRPAIN201309UV02Type(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type) Unmarshaller(javax.xml.bind.Unmarshaller) Test(org.junit.jupiter.api.Test)

Example 4 with PRPAIN201309UV02Type

use of net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type in project ipf by oehf.

the class PixV3QueryRequestTransformer method fromPrpa.

/**
 * Transforms a full PRPA query into the simplified model. Data loss can occur, as the simplified model is not
 * complete.
 *
 * @param query The full PRPA query to transform.
 * @return the simplified query or {@code null} if the input was {@code null}.
 */
public PixV3QueryRequest fromPrpa(final PRPAIN201309UV02Type query) {
    if (query == null) {
        return null;
    }
    final PixV3QueryRequest simpleQuery = new PixV3QueryRequest();
    simpleQuery.setMessageId(query.getId());
    simpleQuery.setSender(this.fromSender(query.getSender()));
    if (!query.getReceiver().isEmpty()) {
        simpleQuery.setReceiver(this.fromReceiver(query.getReceiver().get(0)));
    }
    simpleQuery.setCreationTime(Optional.ofNullable(query.getCreationTime()).map(TS::getValue).map(value -> {
        try {
            return HL7DTM.toZonedDateTime(value);
        } catch (final DataTypeException e) {
            return null;
        }
    }).orElse(null));
    if (query.getControlActProcess() == null) {
        return simpleQuery;
    }
    final PRPAIN201309UV02QUQIMT021001UV01ControlActProcess controlActProcess = query.getControlActProcess();
    if (controlActProcess.getQueryByParameter() == null) {
        return simpleQuery;
    }
    final PRPAMT201307UV02QueryByParameter queryByParameter = controlActProcess.getQueryByParameter();
    simpleQuery.setQueryId(queryByParameter.getQueryId());
    if (queryByParameter.getParameterList() == null) {
        return simpleQuery;
    }
    final PRPAMT201307UV02ParameterList parameterList = queryByParameter.getParameterList();
    if (!parameterList.getPatientIdentifier().isEmpty()) {
        final List<II> patientIds = parameterList.getPatientIdentifier().get(0).getValue();
        if (!patientIds.isEmpty()) {
            simpleQuery.setQueryPatientId(patientIds.get(0));
        }
    }
    for (final PRPAMT201307UV02DataSource dataSource : parameterList.getDataSource()) {
        if (!dataSource.getValue().isEmpty()) {
            simpleQuery.getDataSourceOids().add(dataSource.getValue().get(0).getRoot());
        }
    }
    return simpleQuery;
}
Also used : PixV3QueryRequest(org.openehealth.ipf.commons.ihe.hl7v3.core.requests.PixV3QueryRequest) DataTypeException(ca.uhn.hl7v2.model.DataTypeException) PRPAMT201307UV02DataSource(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource) PRPAMT201307UV02ParameterList(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList) PRPAIN201309UV02QUQIMT021001UV01ControlActProcess(net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02QUQIMT021001UV01ControlActProcess) PRPAMT201307UV02QueryByParameter(net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter)

Aggregations

PRPAIN201309UV02QUQIMT021001UV01ControlActProcess (net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02QUQIMT021001UV01ControlActProcess)3 PRPAIN201309UV02Type (net.ihe.gazelle.hl7v3.prpain201309UV02.PRPAIN201309UV02Type)3 PRPAMT201307UV02DataSource (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02DataSource)3 PRPAMT201307UV02ParameterList (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02ParameterList)3 PRPAMT201307UV02QueryByParameter (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02QueryByParameter)3 PRPAMT201307UV02PatientIdentifier (net.ihe.gazelle.hl7v3.prpamt201307UV02.PRPAMT201307UV02PatientIdentifier)2 PixV3QueryRequest (org.openehealth.ipf.commons.ihe.hl7v3.core.requests.PixV3QueryRequest)2 DataTypeException (ca.uhn.hl7v2.model.DataTypeException)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 StringWriter (java.io.StringWriter)1 List (java.util.List)1 JAXBContext (javax.xml.bind.JAXBContext)1 Marshaller (javax.xml.bind.Marshaller)1 Unmarshaller (javax.xml.bind.Unmarshaller)1 CD (net.ihe.gazelle.hl7v3.datatypes.CD)1 CS (net.ihe.gazelle.hl7v3.datatypes.CS)1 II (net.ihe.gazelle.hl7v3.datatypes.II)1 TS (net.ihe.gazelle.hl7v3.datatypes.TS)1 MCCIMT000100UV01Device (net.ihe.gazelle.hl7v3.mccimt000100UV01.MCCIMT000100UV01Device)1