Search in sources :

Example 1 with Observation

use of com.ibm.streamsx.health.hapi.model.Observation in project streamsx.health by IBMStreams.

the class ObxToSplMapper method messageToModel.

@SuppressWarnings("unchecked")
public <T> Iterable<T> messageToModel(Message message) {
    ArrayList<Observation> observations = new ArrayList<Observation>();
    if (message instanceof ORU_R01) {
        ORU_R01 oruMsg = (ORU_R01) message;
        String obxTs = "";
        String obxLocation = "";
        String sendingApp = "";
        String sendingFacility = "";
        try {
            MSH msh = oruMsg.getMSH();
            sendingApp = msh.getSendingApplication().encode();
            sendingFacility = msh.getSendingFacility().encode();
            List<ORU_R01_PATIENT_RESULT> patient_RESULTAll = ((ORU_R01) message).getPATIENT_RESULTAll();
            for (ORU_R01_PATIENT_RESULT result : patient_RESULTAll) {
                ORU_R01_ORDER_OBSERVATION order_OBSERVATION = result.getORDER_OBSERVATION();
                OBR obr = order_OBSERVATION.getOBR();
                DTM ts = obr.getObservationDateTime();
                obxTs = ts.getValue();
                ORU_R01_PATIENT patient = result.getPATIENT();
                ORU_R01_VISIT visit = patient.getVISIT();
                PL location = visit.getPV1().getAssignedPatientLocation();
                obxLocation = location.encode();
                List<ORU_R01_OBSERVATION> observationAll = order_OBSERVATION.getOBSERVATIONAll();
                for (ORU_R01_OBSERVATION oru_R01_OBSERVATION : observationAll) {
                    parseOBX(observations, obxTs, obxLocation, oru_R01_OBSERVATION.getOBX(), sendingApp, sendingFacility);
                }
            }
        } catch (HL7Exception e) {
            if (TRACE.isDebugEnabled())
                TRACE.log(TraceLevel.WARN, e);
        }
        try {
            OBR obr = (OBR) oruMsg.get("OBR");
            DTM ts = obr.getObservationDateTime();
            obxTs = ts.getValue();
            Structure tmp = oruMsg.get("PV1");
            if (tmp != null) {
                PV1 pv1 = (PV1) tmp;
                PL location = pv1.getAssignedPatientLocation();
                obxLocation = location.encode();
            }
            Structure[] structures = oruMsg.getAll("OBX");
            for (Structure structure : structures) {
                parseOBX(observations, obxTs, obxLocation, (OBX) structure, sendingApp, sendingFacility);
            }
        } catch (HL7Exception e) {
            if (TRACE.isDebugEnabled())
                TRACE.log(TraceLevel.WARN, e);
        }
    }
    return (Iterable<T>) observations;
}
Also used : ORU_R01_OBSERVATION(ca.uhn.hl7v2.model.v26.group.ORU_R01_OBSERVATION) MSH(ca.uhn.hl7v2.model.v26.segment.MSH) ORU_R01_PATIENT_RESULT(ca.uhn.hl7v2.model.v26.group.ORU_R01_PATIENT_RESULT) ORU_R01_VISIT(ca.uhn.hl7v2.model.v26.group.ORU_R01_VISIT) ArrayList(java.util.ArrayList) PV1(ca.uhn.hl7v2.model.v26.segment.PV1) ORU_R01_ORDER_OBSERVATION(ca.uhn.hl7v2.model.v26.group.ORU_R01_ORDER_OBSERVATION) ORU_R01_PATIENT(ca.uhn.hl7v2.model.v26.group.ORU_R01_PATIENT) ORU_R01(ca.uhn.hl7v2.model.v26.message.ORU_R01) Observation(com.ibm.streamsx.health.hapi.model.Observation) HL7Exception(ca.uhn.hl7v2.HL7Exception) DTM(ca.uhn.hl7v2.model.v26.datatype.DTM) PL(ca.uhn.hl7v2.model.v26.datatype.PL) Structure(ca.uhn.hl7v2.model.Structure) OBR(ca.uhn.hl7v2.model.v26.segment.OBR)

Example 2 with Observation

use of com.ibm.streamsx.health.hapi.model.Observation in project streamsx.health by IBMStreams.

the class ObxToSplMapper method parseOBX.

private void parseOBX(ArrayList<Observation> observations, String obxTs, String obxLocation, OBX obx, String sendingApp, String sendingFacility) throws HL7Exception {
    Observation observation = new Observation();
    observation.setTs(obxTs);
    observation.setLocation(obxLocation);
    String observationId = obx.getObservationIdentifier().getIdentifier().getValue();
    String unit = obx.getUnits().getIdentifier().getValue();
    observation.setObservationId(observationId);
    observation.setUnit(unit);
    observation.setSendingApp(sendingApp);
    observation.setSendingFacility(sendingFacility);
    Varies[] values = obx.getObservationValue();
    for (Varies value : values) {
        observation.setObservationValue(value.encode());
        observations.add(observation);
    }
}
Also used : Observation(com.ibm.streamsx.health.hapi.model.Observation) Varies(ca.uhn.hl7v2.model.Varies)

Example 3 with Observation

use of com.ibm.streamsx.health.hapi.model.Observation in project streamsx.health by IBMStreams.

the class OruR01Ingest method run.

@Override
public void run() {
    Topology topology = new Topology("OruR01Ingest");
    ObxToSplMapper mapper = new ObxToSplMapper();
    addDependencies(topology);
    TStream<Message> messages = topology.endlessSource(new HapiMessageSupplier(getPort()));
    // transform message to Observation object
    TStream<Observation> observationStream = messages.multiTransform(message -> {
        return mapper.messageToModel(message);
    });
    StreamSchema schema = Type.Factory.getStreamSchema(Observation.OBSERVATION_SCHEMA_SPL);
    @SuppressWarnings("serial") SPLStream splObservations = SPLStreams.convertStream(observationStream, new BiFunction<Observation, OutputTuple, OutputTuple>() {

        @Override
        public OutputTuple apply(Observation observation, OutputTuple outTuple) {
            return mapper.modelToSpl(observation, outTuple);
        }
    }, schema);
    splObservations.print();
    splObservations.publish(getTopic());
    try {
        StreamsContextFactory.getStreamsContext(StreamsContext.Type.DISTRIBUTED).submit(topology);
    } catch (Exception e) {
        TRACE.error("Unable to submit topology", e);
    }
}
Also used : Message(ca.uhn.hl7v2.model.Message) Topology(com.ibm.streamsx.topology.Topology) HapiMessageSupplier(com.ibm.streamsx.health.hapi.internal.HapiMessageSupplier) StreamSchema(com.ibm.streams.operator.StreamSchema) OutputTuple(com.ibm.streams.operator.OutputTuple) SPLStream(com.ibm.streamsx.topology.spl.SPLStream) ObxToSplMapper(com.ibm.streamsx.health.hapi.mapper.ObxToSplMapper) Observation(com.ibm.streamsx.health.hapi.model.Observation)

Aggregations

Observation (com.ibm.streamsx.health.hapi.model.Observation)3 HL7Exception (ca.uhn.hl7v2.HL7Exception)1 Message (ca.uhn.hl7v2.model.Message)1 Structure (ca.uhn.hl7v2.model.Structure)1 Varies (ca.uhn.hl7v2.model.Varies)1 DTM (ca.uhn.hl7v2.model.v26.datatype.DTM)1 PL (ca.uhn.hl7v2.model.v26.datatype.PL)1 ORU_R01_OBSERVATION (ca.uhn.hl7v2.model.v26.group.ORU_R01_OBSERVATION)1 ORU_R01_ORDER_OBSERVATION (ca.uhn.hl7v2.model.v26.group.ORU_R01_ORDER_OBSERVATION)1 ORU_R01_PATIENT (ca.uhn.hl7v2.model.v26.group.ORU_R01_PATIENT)1 ORU_R01_PATIENT_RESULT (ca.uhn.hl7v2.model.v26.group.ORU_R01_PATIENT_RESULT)1 ORU_R01_VISIT (ca.uhn.hl7v2.model.v26.group.ORU_R01_VISIT)1 ORU_R01 (ca.uhn.hl7v2.model.v26.message.ORU_R01)1 MSH (ca.uhn.hl7v2.model.v26.segment.MSH)1 OBR (ca.uhn.hl7v2.model.v26.segment.OBR)1 PV1 (ca.uhn.hl7v2.model.v26.segment.PV1)1 OutputTuple (com.ibm.streams.operator.OutputTuple)1 StreamSchema (com.ibm.streams.operator.StreamSchema)1 HapiMessageSupplier (com.ibm.streamsx.health.hapi.internal.HapiMessageSupplier)1 ObxToSplMapper (com.ibm.streamsx.health.hapi.mapper.ObxToSplMapper)1