Search in sources :

Example 66 with Message

use of com.google.api.services.healthcare.v1.model.Message in project beam by apache.

the class HL7v2Message method toModel.

/**
 * To model message.
 *
 * @return the message
 */
public Message toModel() {
    Message out = new Message();
    out.setName(this.getName());
    out.setMessageType(this.getMessageType());
    out.setSendTime(this.getSendTime());
    out.setCreateTime(this.getCreateTime());
    out.setData(this.getData());
    out.setSendFacility(this.getSendFacility());
    if (this.schematizedData != null) {
        out.setSchematizedData(new SchematizedData().setData(this.schematizedData));
    }
    out.setLabels(this.labels);
    return out;
}
Also used : SchematizedData(com.google.api.services.healthcare.v1.model.SchematizedData) Message(com.google.api.services.healthcare.v1.model.Message)

Example 67 with Message

use of com.google.api.services.healthcare.v1.model.Message in project pentaho-kettle by pentaho.

the class HL7MLLPAcknowledge method execute.

public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    try {
        String serverName = environmentSubstitute(server);
        int portNumber = Integer.parseInt(environmentSubstitute(port));
        String variable = environmentSubstitute(variableName);
        MLLPSocketCacheEntry entry = MLLPSocketCache.getInstance().getServerSocketStreamSource(serverName, portNumber);
        MLLPTransport transport = entry.getTransport();
        // 
        synchronized (transport) {
            String message = getVariable(variable);
            // Parse the message and extract the acknowledge message.
            // 
            Parser parser = new GenericParser();
            ValidationContext validationContext = new NoValidation();
            parser.setValidationContext(validationContext);
            Message msg = parser.parse(message);
            Message ack = msg.generateACK();
            String ackMessage = ack.encode();
            String APPNAME = "PDI4";
            if (ack instanceof ca.uhn.hl7v2.model.v21.message.ACK) {
                ca.uhn.hl7v2.model.v21.message.ACK mod = (ca.uhn.hl7v2.model.v21.message.ACK) ack;
                mod.getMSH().getSENDINGAPPLICATION().setValue(APPNAME);
                mod.getMSH().getSENDINGFACILITY().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v22.message.ACK) {
                ca.uhn.hl7v2.model.v22.message.ACK mod = (ca.uhn.hl7v2.model.v22.message.ACK) ack;
                mod.getMSH().getSendingApplication().setValue(APPNAME);
                mod.getMSH().getSendingFacility().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v23.message.ACK) {
                ca.uhn.hl7v2.model.v23.message.ACK mod = (ca.uhn.hl7v2.model.v23.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v231.message.ACK) {
                ca.uhn.hl7v2.model.v231.message.ACK mod = (ca.uhn.hl7v2.model.v231.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v24.message.ACK) {
                ca.uhn.hl7v2.model.v24.message.ACK mod = (ca.uhn.hl7v2.model.v24.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v25.message.ACK) {
                ca.uhn.hl7v2.model.v25.message.ACK mod = (ca.uhn.hl7v2.model.v25.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v251.message.ACK) {
                ca.uhn.hl7v2.model.v251.message.ACK mod = (ca.uhn.hl7v2.model.v251.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v26.message.ACK) {
                ca.uhn.hl7v2.model.v26.message.ACK mod = (ca.uhn.hl7v2.model.v26.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else {
                logError("This job entry does not support the HL7 dialect used. Found ACK class: " + ack.getClass().getName());
            }
            Transportable transportable = new TransportableImpl(ackMessage);
            transport.doSend(transportable);
        }
        // All went well..
        // 
        result.setNrErrors(0);
        result.setResult(true);
    } catch (Exception e) {
        log.logError(BaseMessages.getString(PKG, "HL7MLLPInput.Exception.UnexpectedError"), e);
        result.setNrErrors(1);
        result.setResult(false);
    }
    return result;
}
Also used : Message(ca.uhn.hl7v2.model.Message) Result(org.pentaho.di.core.Result) MLLPSocketCacheEntry(org.pentaho.di.trans.steps.hl7input.common.MLLPSocketCacheEntry) Transportable(ca.uhn.hl7v2.protocol.Transportable) TransportableImpl(ca.uhn.hl7v2.protocol.impl.TransportableImpl) KettleException(org.pentaho.di.core.exception.KettleException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) KettleXMLException(org.pentaho.di.core.exception.KettleXMLException) Parser(ca.uhn.hl7v2.parser.Parser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) ValidationContext(ca.uhn.hl7v2.validation.ValidationContext) MLLPTransport(ca.uhn.hl7v2.protocol.impl.MLLPTransport) NoValidation(ca.uhn.hl7v2.validation.impl.NoValidation)

Example 68 with Message

use of com.google.api.services.healthcare.v1.model.Message in project pentaho-kettle by pentaho.

the class HL7Input method processRow.

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
    meta = (HL7InputMeta) smi;
    data = (HL7InputData) sdi;
    // get row, set busy!
    Object[] r = getRow();
    if (r == null) {
        // no more input to be expected...
        setOutputDone();
        return false;
    }
    if (first) {
        data.messageFieldIndex = getInputRowMeta().indexOfValue(meta.getMessageField());
        if (data.messageFieldIndex < 0) {
            throw new KettleException("Unable to find field [" + meta.getMessageField() + "] in the input fields.");
        }
        data.outputRowMeta = getInputRowMeta().clone();
        meta.getFields(data.outputRowMeta, getStepname(), null, null, this, repository, metaStore);
        data.parser = new GenericParser();
        data.parser.setValidationContext(new NoValidation());
    }
    String messageString = getInputRowMeta().getString(r, data.messageFieldIndex);
    try {
        Message message = data.parser.parse(messageString);
        List<HL7Value> values = HL7KettleParser.extractValues(message);
        for (HL7Value value : values) {
            Object[] output = RowDataUtil.createResizedCopy(r, data.outputRowMeta.size());
            int outputIndex = getInputRowMeta().size();
            output[outputIndex++] = value.getParentGroup();
            output[outputIndex++] = value.getGroupName();
            output[outputIndex++] = value.getVersion();
            output[outputIndex++] = value.getStructureName();
            output[outputIndex++] = value.getStructureNumber();
            output[outputIndex++] = value.getFieldName();
            output[outputIndex++] = value.getCoordinate();
            output[outputIndex++] = value.getDataType();
            output[outputIndex++] = value.getDescription();
            output[outputIndex++] = value.getValue();
            putRow(data.outputRowMeta, output);
        }
    } catch (Exception e) {
        throw new KettleException("Error parsing message", e);
    }
    if (checkFeedback(getLinesWritten())) {
        if (log.isBasic()) {
            logBasic(BaseMessages.getString(PKG, "HL7Input.Log.LineNumber") + getLinesWritten());
        }
    }
    return true;
}
Also used : KettleException(org.pentaho.di.core.exception.KettleException) Message(ca.uhn.hl7v2.model.Message) NoValidation(ca.uhn.hl7v2.validation.impl.NoValidation) HL7Value(org.pentaho.di.trans.steps.hl7input.common.HL7Value) KettleException(org.pentaho.di.core.exception.KettleException) GenericParser(ca.uhn.hl7v2.parser.GenericParser)

Example 69 with Message

use of com.google.api.services.healthcare.v1.model.Message in project pentaho-kettle by pentaho.

the class HL7MLLPInput method execute.

public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    try {
        String serverName = environmentSubstitute(server);
        int portNumber = Integer.parseInt(environmentSubstitute(port));
        String messageVariable = environmentSubstitute(messageVariableName);
        String messageTypeVariable = environmentSubstitute(messageTypeVariableName);
        String versionVariable = environmentSubstitute(versionVariableName);
        MLLPSocketCacheEntry entry = MLLPSocketCache.getInstance().getServerSocketStreamSource(serverName, portNumber);
        if (entry.getJobListener() != null) {
            parentJob.addJobListener(entry.getJobListener());
        }
        MLLPTransport transport = entry.getTransport();
        // 
        synchronized (transport) {
            Transportable transportable = transport.doReceive();
            String message = transportable.getMessage();
            logDetailed("Received message: " + message);
            parentJob.setVariable(messageVariable, message);
            // Parse the message and extract the control ID.
            // 
            Parser parser = new GenericParser();
            ValidationContext validationContext = new NoValidation();
            parser.setValidationContext(validationContext);
            Message msg = parser.parse(message);
            Structure structure = msg.get("MSH");
            String messageType = null;
            String version = msg.getVersion();
            if (structure instanceof ca.uhn.hl7v2.model.v21.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v21.segment.MSH) structure).getMESSAGETYPE().encode();
            } else if (structure instanceof ca.uhn.hl7v2.model.v22.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v22.segment.MSH) structure).getMessageType().encode();
            } else if (structure instanceof ca.uhn.hl7v2.model.v23.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v23.segment.MSH) structure).getMessageType().encode();
            } else if (structure instanceof ca.uhn.hl7v2.model.v231.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v231.segment.MSH) structure).getMessageType().getMessageStructure().getValue();
            } else if (structure instanceof ca.uhn.hl7v2.model.v24.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v24.segment.MSH) structure).getMessageType().getMessageStructure().getValue();
            } else if (structure instanceof ca.uhn.hl7v2.model.v25.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v25.segment.MSH) structure).getMessageType().getMessageStructure().getValue();
            } else if (structure instanceof ca.uhn.hl7v2.model.v251.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v251.segment.MSH) structure).getMessageType().getMessageStructure().getValue();
            } else if (structure instanceof ca.uhn.hl7v2.model.v26.segment.MSH) {
                messageType = ((ca.uhn.hl7v2.model.v26.segment.MSH) structure).getMessageType().getMessageStructure().getValue();
            } else {
                logError("This job entry does not support the HL7 dialect used. Found MSH class: " + structure.getClass().getName());
            }
            if (!Utils.isEmpty(messageTypeVariable)) {
                parentJob.setVariable(messageTypeVariable, messageType);
            }
            if (!Utils.isEmpty(versionVariable)) {
                parentJob.setVariable(versionVariable, version);
            }
        }
        // All went well..
        // 
        result.setNrErrors(0);
        result.setResult(true);
    } catch (Exception e) {
        log.logError(BaseMessages.getString(PKG, "HL7MLLPInput.Exception.UnexpectedError"), e);
        result.setNrErrors(1);
        result.setResult(false);
    }
    return result;
}
Also used : Message(ca.uhn.hl7v2.model.Message) Result(org.pentaho.di.core.Result) MLLPSocketCacheEntry(org.pentaho.di.trans.steps.hl7input.common.MLLPSocketCacheEntry) Structure(ca.uhn.hl7v2.model.Structure) Transportable(ca.uhn.hl7v2.protocol.Transportable) KettleException(org.pentaho.di.core.exception.KettleException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) KettleXMLException(org.pentaho.di.core.exception.KettleXMLException) Parser(ca.uhn.hl7v2.parser.Parser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) ValidationContext(ca.uhn.hl7v2.validation.ValidationContext) MLLPTransport(ca.uhn.hl7v2.protocol.impl.MLLPTransport) NoValidation(ca.uhn.hl7v2.validation.impl.NoValidation)

Example 70 with Message

use of com.google.api.services.healthcare.v1.model.Message in project streamsx.health by IBMStreams.

the class HapiMessageHandler method processMessage.

@Override
public Message processMessage(Message theMessage, Map<String, Object> arg1) throws ReceivingApplicationException, HL7Exception {
    server.messageArrived(theMessage);
    Message ack;
    try {
        // Always use the default parser to generate an ack
        // HAPI seems to get into trouble if the ADT_AXX superstructure
        // is used.  
        // Internally, when it tries to generate an ack message
        // the super structure setting in the model class factory causes the ADT_AXX message
        // to get created instead of the ACK getting created.  This is to override the model
        // class factory so that the proper class can be generated.
        theMessage.setParser(ackParser);
        ack = theMessage.generateACK();
        return ack;
    } catch (IOException e) {
        TRACE.log(TraceLevel.ERROR, "Unable to generate ack message", e);
    }
    return theMessage;
}
Also used : Message(ca.uhn.hl7v2.model.Message) IOException(java.io.IOException)

Aggregations

Message (ca.uhn.hl7v2.model.Message)114 Test (org.junit.Test)81 BaseContextSensitiveTest (org.openmrs.test.BaseContextSensitiveTest)60 ORU_R01 (ca.uhn.hl7v2.model.v25.message.ORU_R01)30 NK1 (ca.uhn.hl7v2.model.v25.segment.NK1)21 Patient (org.openmrs.Patient)21 MockEndpoint (org.apache.camel.component.mock.MockEndpoint)17 ORUR01Handler (org.openmrs.hl7.handler.ORUR01Handler)15 Person (org.openmrs.Person)14 ArrayList (java.util.ArrayList)13 HL7Exception (ca.uhn.hl7v2.HL7Exception)12 Concept (org.openmrs.Concept)12 Obs (org.openmrs.Obs)12 ObsService (org.openmrs.api.ObsService)11 QRD (ca.uhn.hl7v2.model.v24.segment.QRD)9 IOException (java.io.IOException)8 Encounter (org.openmrs.Encounter)8 RouteBuilder (org.apache.camel.builder.RouteBuilder)7 Structure (ca.uhn.hl7v2.model.Structure)5 CX (ca.uhn.hl7v2.model.v25.datatype.CX)5