Search in sources :

Example 16 with HL7DataExtractor

use of io.github.linuxforhealth.hl7.parsing.HL7DataExtractor in project hl7v2-fhir-converter by LinuxForHealth.

the class JELXExpressionTest method test_with_variables.

@Test
void test_with_variables() throws IOException, DataTypeException {
    String message = "MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.3|\r" + "EVN|A01|20130617154644\r" + "PID|1|465 306 5961|000010016^^^MR~000010017^^^MR~000010018^^^MR|407623|Wood^Patrick^^^MR||19700101|female|||High Street^^Oxford^^Ox1 4DP~George St^^Oxford^^Ox1 5AP|||||||\r" + "NK1|1|Wood^John^^^MR|Father||999-9999\r" + "NK1|2|Jones^Georgie^^^MSS|MOTHER||999-9999\r" + "PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|||||||||";
    Message hl7message = getMessage(message);
    HL7DataExtractor hl7DTE = new HL7DataExtractor(hl7message);
    CX cx = new CX(hl7message);
    cx.getCx1_IDNumber().setValue(SOME_VALUE_1);
    cx.getCx2_IdentifierCheckDigit().setValue(SOME_VALUE_2);
    Map<String, EvaluationResult> context = new HashMap<>();
    context.put("CX", new SimpleEvaluationResult(cx));
    Map<String, String> var = new HashMap<>();
    var.put("var1", "String, CX.1");
    var.put("var2", "String, CX.2");
    var.put("var3", "String, CX.2");
    ExpressionAttributes attr = new ExpressionAttributes.Builder().withValueOf("String.join(\" \",  var1,var2, var3)").withVars(var).build();
    JEXLExpression exp = new JEXLExpression(attr);
    EvaluationResult value = exp.evaluate(new HL7MessageData(hl7DTE), ImmutableMap.copyOf(context), new EmptyEvaluationResult());
    assertThat((String) value.getValue()).isEqualTo(SOME_VALUE_1 + " " + SOME_VALUE_2 + " " + SOME_VALUE_2);
}
Also used : Message(ca.uhn.hl7v2.model.Message) HL7DataExtractor(io.github.linuxforhealth.hl7.parsing.HL7DataExtractor) HashMap(java.util.HashMap) EvaluationResult(io.github.linuxforhealth.api.EvaluationResult) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) EmptyEvaluationResult(io.github.linuxforhealth.core.expression.EmptyEvaluationResult) EmptyEvaluationResult(io.github.linuxforhealth.core.expression.EmptyEvaluationResult) CX(ca.uhn.hl7v2.model.v26.datatype.CX) HL7MessageData(io.github.linuxforhealth.hl7.message.HL7MessageData) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) Test(org.junit.jupiter.api.Test)

Example 17 with HL7DataExtractor

use of io.github.linuxforhealth.hl7.parsing.HL7DataExtractor in project hl7v2-fhir-converter by LinuxForHealth.

the class ResourceExpressionTest method test_organization_creation_with_missing_id_value.

@Test
void test_organization_creation_with_missing_id_value() throws IOException {
    String message = "MSH|^~\\&|MYEHR2.5|RI88140101|KIDSNET_IFL|RIHEALTH|20130531||VXU^V04^VXU_V04|20130531RI881401010105|P|2.5.1|||NE|AL||||||RI543763\r" + "PID|1||432155^^^^MR||Patient^Johnny^New^^^^L|Smith^Sally|20130414|M||2106-3^White^HL70005|123 Any St^^Somewhere^WI^54000^^M\r" + "NK1|1|Patient^Sally|MTH^mother^HL70063|123 Any St^^Somewhere^WI^54000^^M|^PRN^PH^^^608^5551212|||||||||||19820517||||eng^English^ISO639\r" + "ORC|RE||197027|||||||^Clerk^Myron||MD67895^Pediatric^MARY^^^^MD^^RIA|||||RI2050\r" + "RXA|0|1|20130531|20130531|48^HIB PRP-T^CVX|0.5|ML^^ISO+||00^new immunization record^NIP001|^Sticker^Nurse|^^^RI2050||||33k2a|20131210|^sanofi^MVX|||CP|A\r" + "RXR|C28161^IM^NCIT^IM^INTRAMUSCULAR^HL70162|RT^right thigh^HL70163\r" + "OBX|1|CE|64994-7^vaccine fund pgm elig cat^LN|1|V02^VFC eligible Medicaid/MedicaidManaged Care^HL70064||||||F|||20130531|||VXC40^per imm^CDCPHINVS\r" + "OBX|2|CE|30956-7^Vaccine Type^LN|2|48^HIB PRP-T^CVX||||||F|||20130531\r" + "OBX|3|TS|29768-9^VIS Publication Date^LN|2|19981216||||||F|||20130531\r" + "OBX|4|TS|59785-6^VIS Presentation Date^LN|2|20130531||||||F|||20130531\r" + "OBX|5|ST|48767-8^Annotation^LN|2|Some text from doctor||||||F|||20130531\r";
    Message hl7message = getMessage(message);
    HL7DataExtractor hl7DTE = new HL7DataExtractor(hl7message);
    Structure s = hl7DTE.getAllStructures("ORDER", 0, "RXA").getValue();
    ExpressionAttributes attr = new ExpressionAttributes.Builder().withSpecs("RXA.17").withValueOf("resource/Organization").withGenerateList(true).build();
    ResourceExpression exp = new ResourceExpression(attr);
    assertThat(exp.getData()).isNotNull();
    Map<String, EvaluationResult> context = new HashMap<>();
    EvaluationResult value = exp.evaluate(new HL7MessageData(hl7DTE), ImmutableMap.copyOf(context), new SimpleEvaluationResult(s));
    List<Map<String, Object>> result = (List<Map<String, Object>>) value.getValue();
    assertThat(result.get(0)).containsEntry("name", "sanofi");
    assertThat(result.get(0).get("identifier")).isNull();
    LOGGER.debug("result=" + result);
}
Also used : Message(ca.uhn.hl7v2.model.Message) HL7DataExtractor(io.github.linuxforhealth.hl7.parsing.HL7DataExtractor) HashMap(java.util.HashMap) EvaluationResult(io.github.linuxforhealth.api.EvaluationResult) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) HL7MessageData(io.github.linuxforhealth.hl7.message.HL7MessageData) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) List(java.util.List) Structure(ca.uhn.hl7v2.model.Structure) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Example 18 with HL7DataExtractor

use of io.github.linuxforhealth.hl7.parsing.HL7DataExtractor in project hl7v2-fhir-converter by LinuxForHealth.

the class ResourceExpressionTest method test_component_required_missing.

@Test
void test_component_required_missing() throws IOException {
    String message = "MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.3|\r" + "EVN|A01|20130617154644\r" + "PID|1|465 306 5961||407623|Wood^Patrick^^^MR||19700101|female|||High Street^^Oxford^^Ox1 4DP~George St^^Oxford^^Ox1 5AP|||||||\r" + "NK1|1|Wood^John^^^MR|Father||999-9999\r" + "NK1|2|Jones^Georgie^^^MSS|MOTHER||999-9999\r" + "PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|||||||||";
    Message hl7message = getMessage(message);
    HL7DataExtractor hl7DTE = new HL7DataExtractor(hl7message);
    Structure s = hl7DTE.getStructure("PID", 0).getValue();
    ExpressionAttributes attr = new ExpressionAttributes.Builder().withSpecs("PID.3").withValueOf("datatype/Identifier").build();
    ResourceExpression exp = new ResourceExpression(attr);
    assertThat(exp.getData()).isNotNull();
    Map<String, EvaluationResult> context = new HashMap<>();
    EvaluationResult value = exp.evaluate(new HL7MessageData(hl7DTE), ImmutableMap.copyOf(context), new SimpleEvaluationResult(s));
    assertThat(value).isNull();
}
Also used : Message(ca.uhn.hl7v2.model.Message) HL7DataExtractor(io.github.linuxforhealth.hl7.parsing.HL7DataExtractor) HashMap(java.util.HashMap) HL7MessageData(io.github.linuxforhealth.hl7.message.HL7MessageData) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) Structure(ca.uhn.hl7v2.model.Structure) EvaluationResult(io.github.linuxforhealth.api.EvaluationResult) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) Test(org.junit.jupiter.api.Test)

Example 19 with HL7DataExtractor

use of io.github.linuxforhealth.hl7.parsing.HL7DataExtractor in project hl7v2-fhir-converter by LinuxForHealth.

the class ResourceExpressionTest method testSegmentIdentifierObxCc.

@Test
void testSegmentIdentifierObxCc() throws IOException {
    String message = "MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.3|\r" + "EVN|A01|20130617154644\r" + "PID|1|465 306 5961|12345678^^^MR|407623|TestPatient^John^^MR||19700101|male||||||||||\r" + "PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|||||||||\r" + "OBX|1|TX|1234^some text^SCT||First line: ECHOCARDIOGRAPHIC REPORT||||||F||\r";
    Message hl7message = getMessage(message);
    HL7DataExtractor hl7DTE = new HL7DataExtractor(hl7message);
    Structure s = hl7DTE.getStructure("OBX", 0).getValue();
    ExpressionAttributes attr = new ExpressionAttributes.Builder().withSpecs("OBX.3").withValueOf("datatype/Identifier").withGenerateList(true).build();
    ResourceExpression exp = new ResourceExpression(attr);
    assertThat(exp.getData()).isNotNull();
    Map<String, EvaluationResult> context = new HashMap<>();
    EvaluationResult value = exp.evaluate(new HL7MessageData(hl7DTE), ImmutableMap.copyOf(context), new SimpleEvaluationResult(s));
    List<Map<String, Object>> result = (List<Map<String, Object>>) value.getValue();
    Map<String, Object> type = (Map<String, Object>) result.get(0).get("type");
    assertThat(type).containsEntry("text", "some text");
    assertThat(type.get("coding")).isNotNull();
    List<Object> list = (List) type.get("coding");
    SimpleCode scs = (SimpleCode) list.get(0);
    assertThat(scs.getCode()).isEqualTo("1234");
    assertThat(scs.getSystem()).isEqualTo("http://snomed.info/sct");
    assertThat(scs.getDisplay()).isEqualTo("some text");
}
Also used : Message(ca.uhn.hl7v2.model.Message) HL7DataExtractor(io.github.linuxforhealth.hl7.parsing.HL7DataExtractor) HashMap(java.util.HashMap) SimpleCode(io.github.linuxforhealth.core.terminology.SimpleCode) EvaluationResult(io.github.linuxforhealth.api.EvaluationResult) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) HL7MessageData(io.github.linuxforhealth.hl7.message.HL7MessageData) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) List(java.util.List) Structure(ca.uhn.hl7v2.model.Structure) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Example 20 with HL7DataExtractor

use of io.github.linuxforhealth.hl7.parsing.HL7DataExtractor in project hl7v2-fhir-converter by LinuxForHealth.

the class ResourceExpressionTest method testSegmentIdentifierObxCcKnownSystem.

@Test
void testSegmentIdentifierObxCcKnownSystem() throws IOException {
    String message = "MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.3|\r" + "EVN|A01|20130617154644\r" + "PID|1|465 306 5961|123456^^^MR|407623|TestPatient^John^^^MR||19700101|male||||||||||\r" + "PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|||||||||\r" + "OBX|1|TX|1234^some text^SCT||First line: ECHOCARDIOGRAPHIC REPORT||||||F||\r";
    Message hl7message = getMessage(message);
    HL7DataExtractor hl7DTE = new HL7DataExtractor(hl7message);
    Structure s = hl7DTE.getStructure("OBX", 0).getValue();
    ExpressionAttributes attr = new ExpressionAttributes.Builder().withSpecs("OBX.3").withValueOf("datatype/CodeableConcept").withGenerateList(true).build();
    ResourceExpression exp = new ResourceExpression(attr);
    assertThat(exp.getData()).isNotNull();
    Map<String, EvaluationResult> context = new HashMap<>();
    EvaluationResult value = exp.evaluate(new HL7MessageData(hl7DTE), ImmutableMap.copyOf(context), new SimpleEvaluationResult(s));
    List<Map<String, Object>> result = (List<Map<String, Object>>) value.getValue();
    assertThat(result.get(0)).containsEntry("text", "some text");
    assertThat(result.get(0).get("coding")).isNotNull();
    List<Object> list = (List) result.get(0).get("coding");
    SimpleCode scs = (SimpleCode) list.get(0);
    assertThat(scs.getCode()).isEqualTo("1234");
    assertThat(scs.getSystem()).isEqualTo("http://snomed.info/sct");
    assertThat(scs.getDisplay()).isEqualTo("some text");
}
Also used : Message(ca.uhn.hl7v2.model.Message) HL7DataExtractor(io.github.linuxforhealth.hl7.parsing.HL7DataExtractor) HashMap(java.util.HashMap) SimpleCode(io.github.linuxforhealth.core.terminology.SimpleCode) EvaluationResult(io.github.linuxforhealth.api.EvaluationResult) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) HL7MessageData(io.github.linuxforhealth.hl7.message.HL7MessageData) SimpleEvaluationResult(io.github.linuxforhealth.core.expression.SimpleEvaluationResult) List(java.util.List) Structure(ca.uhn.hl7v2.model.Structure) ImmutableMap(com.google.common.collect.ImmutableMap) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Aggregations

HL7DataExtractor (io.github.linuxforhealth.hl7.parsing.HL7DataExtractor)34 Message (ca.uhn.hl7v2.model.Message)33 Test (org.junit.jupiter.api.Test)33 HashMap (java.util.HashMap)20 EvaluationResult (io.github.linuxforhealth.api.EvaluationResult)19 SimpleEvaluationResult (io.github.linuxforhealth.core.expression.SimpleEvaluationResult)19 HL7MessageData (io.github.linuxforhealth.hl7.message.HL7MessageData)19 Structure (ca.uhn.hl7v2.model.Structure)18 SegmentGroup (io.github.linuxforhealth.hl7.message.util.SegmentGroup)14 ImmutableMap (com.google.common.collect.ImmutableMap)9 Map (java.util.Map)9 Segment (ca.uhn.hl7v2.model.Segment)7 Type (ca.uhn.hl7v2.model.Type)6 List (java.util.List)6 SimpleCode (io.github.linuxforhealth.core.terminology.SimpleCode)4 EmptyEvaluationResult (io.github.linuxforhealth.core.expression.EmptyEvaluationResult)2 HL7Exception (ca.uhn.hl7v2.HL7Exception)1 CX (ca.uhn.hl7v2.model.v26.datatype.CX)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1