use of org.hl7.gravity.refimpl.sdohexchange.sdohmappings.System in project hl7v2-fhir-converter by LinuxForHealth.
the class Hl7IdentifierFHIRConversionTest method procedureIdentifierTest.
@Test
void procedureIdentifierTest() {
// with PR1 and PID segments used to create identifiers
String procedureMsg = "MSH|^~\\&|HL7Soup|Instance1|MCM||200911021022|Security|ADT^A01^ADT_A01|64322|P|2.6|123|456|ER|AL|USA|ASCII|en|2.6|56789^NID^UID|MCM|CDP|^4086::132:2A57:3C28^IPV6|^4086::132:2A57:3C25^IPV6|\n" + "PID|1||000054321^^^MRN|||||||||||||M|CAT|78654^^^ACME||||N\n" + "ROL|5897|UP|AD||20210322133821|20210322133822|10||Hospital|ST||||USA\n" + "PR1|1|ICD10|B45678|Fix break|20210322155008|A|75||V46|80|||32|1|D22|G45|1|G|P98|X|0|0\n";
Procedure procedure = ResourceUtils.getProcedure(ftv, procedureMsg);
// Expect 2 identifiers
assertThat(procedure.hasIdentifier()).isTrue();
assertThat(procedure.getIdentifier()).hasSize(2);
List<Identifier> identifiers = procedure.getIdentifier();
// Match the three id's to position; we can't depend on an order.
int posExtId = getIdentifierPositionByValue("P98", identifiers);
assertThat(posExtId).isNotSameAs(-1);
int posACME = getIdentifierPositionByValue("78654", identifiers);
assertThat(posACME).isNotSameAs(-1);
// Identifier 1: PR1.19
Identifier identifier = procedure.getIdentifier().get(posExtId);
String value = identifier.getValue();
String system = identifier.getSystem();
// PR1.19.1
assertThat(value).isEqualTo("P98");
assertThat(system).isEqualTo("urn:id:extID");
// Identifier 2: Visit number from PID-18
identifier = procedure.getIdentifier().get(posACME);
value = identifier.getValue();
system = identifier.getSystem();
// PID.18.1
assertThat(value).isEqualTo("78654");
// PID.18.4
assertThat(system).isEqualTo("urn:id:ACME");
CodeableConcept type = identifier.getType();
DatatypeUtils.checkCommonCodeableConceptAssertions(type, "VN", "Visit number", "http://terminology.hl7.org/CodeSystem/v2-0203", null);
// Test: MSH.7 and PV1.19
String procedureMSH = "MSH|^~\\&||Instance1|MCM||200911021022|Security|ADT^A01^ADT_A01|64322|P|2.6|123|456|ER|AL|USA|ASCII|en|2.6|56789^NID^UID|MCM|CDP|^4086::132:2A57:3C28^IPV6|^4086::132:2A57:3C25^IPV6|\n" + "PID|1||000054321^^^MRN|||||||||||||M|CAT|||||N\n" + "PV1||I|6N^1234^A^GENERAL HOSPITAL2|||||||SUR||||||||S|8846511|A|||||||||||||||||||SF|K||||20170215080000\n" + "ROL|5897|UP|AD||20210322133821|20210322133822|10||Hospital|ST||||USA\n" + "PR1|1|ICD10|B45678|Fix break|20210322155008|A|75||V46|80|||32|1|D22|G45|1|G||X|0|0\n";
procedure = ResourceUtils.getProcedure(ftv, procedureMSH);
// Expect 2 identifiers
assertThat(procedure.hasIdentifier()).isTrue();
assertThat(procedure.getIdentifier()).hasSize(2);
identifiers = procedure.getIdentifier();
// Match the three id's to position; we can't depend on an order.
posExtId = getIdentifierPositionByValue("200911021022", identifiers);
assertThat(posExtId).isNotSameAs(-1);
int posVN = getIdentifierPositionByValue("8846511", identifiers);
assertThat(posVN).isNotSameAs(-1);
// Identifier 1: PR1
identifier = procedure.getIdentifier().get(posExtId);
value = identifier.getValue();
system = identifier.getSystem();
// MSH.7
assertThat(value).isEqualTo("200911021022");
assertThat(system).isEqualTo("urn:id:extID");
// Identifier 2: Visit number from PV1-19
identifier = procedure.getIdentifier().get(posVN);
String valueOBR = identifier.getValue();
system = identifier.getSystem();
// PV1.19.1
assertThat(valueOBR).isEqualTo("8846511");
// No System PV1.19.2 DNE
assertThat(system).isNull();
type = identifier.getType();
DatatypeUtils.checkCommonCodeableConceptAssertions(type, "VN", "Visit number", "http://terminology.hl7.org/CodeSystem/v2-0203", null);
}
use of org.hl7.gravity.refimpl.sdohexchange.sdohmappings.System in project hl7v2-fhir-converter by LinuxForHealth.
the class Hl7IdentifierFHIRConversionTest method serviceRequestIdentifierTest5.
// NOTE: ORU_RO1 records do not create the ServiceRequest directly. They create a DiagnosticReport and it creates the ServiceRequest.
// This test makes sure the specification for ORU_RO1.DiagnosticReport is specifying PID and PV1 correctly in AdditionalSegments.
@Test
void serviceRequestIdentifierTest5() {
// Test 3:
// - MSH.7 as the visit number
// - filler from ORC
// - placer from ORC
String serviceRequest = "MSH|^~\\&|||||20180924152907|34001|ORU^R01^ORU_R01|213|T|2.6|||||||||||\n" + // PID.18 is empty so MSH.7 with be used as backup identifier visit number
"PID|||1234^^^^MR||DOE^JANE^|||F||||||||||||||||||||||\n" + // PV1.19 is empty so MSH.7 with be used as backup identifier visit number
"PV1|1|E|||||||||||||||||||||||||||||||||||||||||||\n" + // 1. ORC.3 is used as Filler because it has priority over OBR.3
"ORC|RE|222298|222299|ML18267-C00001^Beaker||||||||||||||||||||||||||||\n" + // 11. OBR.3 ignored as Filler
"OBR|1|||83036E^HEMOGLOBIN A1C^PACSEAP^^^^^^HEMOGLOBIN A1C|||||||||||||||||||||||||||||||||||||||||||\n";
ServiceRequest serviceReq = ResourceUtils.getServiceRequest(ftv, serviceRequest);
// Expect 3 identifiers
assertThat(serviceReq.hasIdentifier()).isTrue();
assertThat(serviceReq.getIdentifier()).hasSize(3);
// Expect 3 identifiers
assertThat(serviceReq.hasIdentifier()).isTrue();
assertThat(serviceReq.getIdentifier()).hasSize(3);
List<Identifier> identifiers = serviceReq.getIdentifier();
// Match the three id's to position; we can't depend on an order.
int posVN = getIdentifierPositionByValue("20180924152907", identifiers);
assertThat(posVN).isNotSameAs(-1);
int posFILLER = getIdentifierPositionByValue("222299", identifiers);
assertThat(posFILLER).isNotSameAs(-1);
int posPLACER = getIdentifierPositionByValue("222298", identifiers);
assertThat(posPLACER).isNotSameAs(-1);
// Identifier 1: visit number should be set by MSH.7
Identifier identifier = serviceReq.getIdentifier().get(posVN);
String value = identifier.getValue();
String system = identifier.getSystem();
// MSH.7
assertThat(value).isEqualTo("20180924152907");
assertThat(system).isNull();
CodeableConcept type = identifier.getType();
DatatypeUtils.checkCommonCodeableConceptAssertions(type, "VN", "Visit number", "http://terminology.hl7.org/CodeSystem/v2-0203", null);
// Identifier 2: filler
identifier = serviceReq.getIdentifier().get(posFILLER);
value = identifier.getValue();
system = identifier.getSystem();
// ORC.3
assertThat(value).isEqualTo("222299");
assertThat(system).isNull();
type = identifier.getType();
DatatypeUtils.checkCommonCodeableConceptAssertions(type, "FILL", "Filler Identifier", "http://terminology.hl7.org/CodeSystem/v2-0203", null);
// Identifier 3: placer
identifier = serviceReq.getIdentifier().get(posPLACER);
value = identifier.getValue();
system = identifier.getSystem();
// ORC.2
assertThat(value).isEqualTo("222298");
assertThat(system).isNull();
type = identifier.getType();
DatatypeUtils.checkCommonCodeableConceptAssertions(type, "PLAC", "Placer Identifier", "http://terminology.hl7.org/CodeSystem/v2-0203", null);
}
use of org.hl7.gravity.refimpl.sdohexchange.sdohmappings.System in project hl7v2-fhir-converter by LinuxForHealth.
the class Hl7PatientFHIRConversionTest method patientCommunicationLanguage.
@Test
void patientCommunicationLanguage() {
String patientSpeaksEnglishWithSystem = "MSH|^~\\&|MyEMR|DE-000001| |CAIRLO|20160701123030-0700||VXU^V04^VXU_V04|CA0001|P|2.6|||ER|AL|||||Z22^CDCPHINVS|DE-000001\r" + "PID|1||PA123456^^^MYEMR^MR||DOE^JOHN|||M|||||||ENG^English^HL70296|||||||||Y|2\r";
// NO coding system given in the CWE
String patientEnglishNoSystem = "MSH|^~\\&|MyEMR|DE-000001| |CAIRLO|20160701123030-0700||VXU^V04^VXU_V04|CA0001|P|2.6|||ER|AL|||||Z22^CDCPHINVS|DE-000001\r" + "PID|1||PA123456^^^MYEMR^MR||DOE^JANE|||M|||||||ENG^English|||||||||Y|2\r";
// NO coding system given in the CWE
String patientEnglishCodeOnly = "MSH|^~\\&|MyEMR|DE-000001| |CAIRLO|20160701123030-0700||VXU^V04^VXU_V04|CA0001|P|2.6|||ER|AL|||||Z22^CDCPHINVS|DE-000001\r" + "PID|1||PA123456^^^MYEMR^MR||DOE^JANE|||M|||||||ENG|||||||||Y|2\r";
Patient patientObjEnglish = PatientUtils.createPatientFromHl7Segment(ftv, patientSpeaksEnglishWithSystem);
assertThat(patientObjEnglish.hasCommunication()).isTrue();
assertThat(patientObjEnglish.getCommunication().get(0).getPreferred()).isTrue();
assertThat(patientObjEnglish.getCommunication()).hasSize(1);
Patient.PatientCommunicationComponent cc = patientObjEnglish.getCommunication().get(0);
assertThat(cc.getPreferred()).isTrue();
assertThat(cc.getLanguage().getText()).isEqualTo("English");
Coding code = cc.getLanguage().getCodingFirstRep();
assertThat(code.getCode()).isEqualTo("ENG");
assertThat(code.getSystem()).isEqualTo("urn:id:v2-0296");
assertThat(code.getDisplay()).isEqualTo("English");
Patient patientObjNoSystem = PatientUtils.createPatientFromHl7Segment(ftv, patientEnglishNoSystem);
assertThat(patientObjNoSystem.hasCommunication()).isTrue();
assertThat(patientObjNoSystem.getCommunication().get(0).getPreferred()).isTrue();
assertThat(patientObjNoSystem.getCommunication()).hasSize(1);
Patient.PatientCommunicationComponent ccNoCode = patientObjNoSystem.getCommunication().get(0);
assertThat(ccNoCode.getPreferred()).isTrue();
assertThat(ccNoCode.getLanguage().getText()).isEqualTo("English");
Coding codeNo = ccNoCode.getLanguage().getCodingFirstRep();
assertThat(codeNo.getCode()).isEqualTo("ENG");
assertThat(code.getDisplay()).isEqualTo("English");
assertThat(codeNo.hasDisplay()).isTrue();
Patient patientObjCodeOnly = PatientUtils.createPatientFromHl7Segment(ftv, patientEnglishCodeOnly);
assertThat(patientObjCodeOnly.hasCommunication()).isTrue();
assertThat(patientObjCodeOnly.getCommunication().get(0).getPreferred()).isTrue();
assertThat(patientObjCodeOnly.getCommunication()).hasSize(1);
Patient.PatientCommunicationComponent ccCodeOnly = patientObjCodeOnly.getCommunication().get(0);
assertThat(ccCodeOnly.getPreferred()).isTrue();
assertThat(ccCodeOnly.getLanguage().hasText()).isFalse();
Coding coding = ccCodeOnly.getLanguage().getCodingFirstRep();
assertThat(coding.getCode()).isEqualTo("ENG");
assertThat(coding.getSystem()).isNull();
assertThat(coding.getDisplay()).isNull();
}
use of org.hl7.gravity.refimpl.sdohexchange.sdohmappings.System in project hl7v2-fhir-converter by LinuxForHealth.
the class DatatypeUtils method checkCommonCodeableConceptVersionedAssertions.
// Common check for values of a codeable concept, including version. Null in any input indicates it should check False
// Assumes 1 coding and only checks the first one.
public static void checkCommonCodeableConceptVersionedAssertions(CodeableConcept cc, String code, String display, String system, String text, String version) {
if (text == null) {
assertThat(cc.hasText()).isFalse();
} else {
assertThat(cc.hasText()).isTrue();
assertThat(cc.getText()).isEqualTo(text);
}
if (code == null && display == null && system == null && version == null) {
assertThat(cc.hasCoding()).isFalse();
} else {
assertThat(cc.hasCoding()).isTrue();
assertThat(cc.getCoding().size()).isEqualTo(1);
Coding coding = cc.getCoding().get(0);
checkCommonCodingAssertions(coding, code, display, system, version);
}
}
use of org.hl7.gravity.refimpl.sdohexchange.sdohmappings.System in project hl7v2-fhir-converter by LinuxForHealth.
the class Hl7ObservationFHIRConversionTest method testObservationSN_valueQuantity_missing_comparator_result.
@Test
void testObservationSN_valueQuantity_missing_comparator_result() throws IOException {
String hl7message = baseMessage + "OBX|1|SN|1554-5^GLUCOSE||^182|mg/dl|70_105||||F";
List<BundleEntryComponent> e = ResourceUtils.createFHIRBundleFromHL7MessageReturnEntryList(ftv, hl7message);
List<Resource> obsResource = ResourceUtils.getResourceList(e, ResourceType.Observation);
assertThat(obsResource).hasSize(1);
Observation obs = (Observation) obsResource.get(0);
// Check valueQuantity
assertNotNull(obs.getValueQuantity());
Quantity q = obs.getValueQuantity();
// code only set if system exists
assertNull(q.getCode());
assertEquals("mg/dl", q.getUnit());
assertNull(q.getSystem());
assertEquals(182, q.getValue().floatValue());
// no comparator passed in
assertNull(q.getComparator());
// Check referenceRange
assertTrue(obs.hasReferenceRange());
assertThat(obs.getReferenceRange()).hasSize(1);
ObservationReferenceRangeComponent range = obs.getReferenceRangeFirstRep();
assertNotNull(range);
assertTrue(range.hasHigh());
assertTrue(range.hasLow());
Quantity high = range.getHigh();
// uses OBX.6.1 for units not text in string
assertEquals("mg/dl", high.getUnit());
assertEquals(105f, high.getValue().floatValue());
Quantity low = range.getLow();
// uses OBX.6.1 for units not text in string
assertEquals("mg/dl", low.getUnit());
assertEquals(70f, low.getValue().floatValue());
assertEquals("70_105", range.getText());
}
Aggregations