def test_multiple_segments_parse(self): message = HL7Message(self.msg_string1) lines = self.msg_string1.splitlines() self.assertEqual(six.text_type(message.nk1[0]), lines[3]) self.assertEqual(six.text_type(message.nk1[1]), lines[4]) self.assertEqual(six.text_type(message.nk1[2]), lines[5])
def test_unknown_message_parse(self): message = HL7Message(self.msg_string1) # check parsing of unknown message self.assertEqual("45", six.text_type(message.lol[0])) self.assertEqual("blubber", six.text_type(message.lol[1][0][1])) self.assertEqual("blubber", six.text_type(message.lol[1][0][1])) self.assertEqual("hehe", six.text_type(message.lol[1][1][0])) self.assertEqual("dumdeldi", six.text_type(message.lol[2][0][1])) self.assertEqual("debbel", six.text_type(message.lol[2][1][1]))
def test_datetime(self): message = HL7Message(self.msg_string1) self.assertEqual(six.text_type(message.pid.datetime_of_birth), '19610615') delimiters = HL7Delimiters(*"|^~\&") old = "18710826" dt = HL7Datetime(old, delimiters) self.assertEqual(six.text_type(dt), old) time = "19610615132733.0065" dt = HL7Datetime(time, delimiters) self.assertEqual(six.text_type(dt), time)
def test_mrg_message_parse(self): message = HL7Message(self.msg_mrg) self.assertEqual( "A34", six.text_type(message.header.message_type.trigger_event)) mrg = message.mrg self.assertTrue(mrg.prior_patient_identifier_list) self.assertEqual(1, len(mrg.prior_patient_identifier_list)) self.assertTrue(mrg.prior_patient_identifier_list[0]) self.assertEqual( "3150123", six.text_type(mrg.prior_patient_identifier_list[0].id_number)) self.assertEqual("Q3150123", six.text_type(mrg.prior_alternate_patient_id))
def getData(self, fileName): with open(fileName) as hl7File: hl7File = hl7File.read() h = HL7Message(hl7File) mshDict = {} pidDict = {} obxList = h.obx obxDict = {} hl7Dict = {} for obxdata in range(len(obxList)): key = obxList[obxdata].observation_identifier[1] value = obxList[obxdata].observation_value[0] obxDict[str(key)] = str(value) # adding PID and MSH seperately as they do not change and are required as a valid hl7 message pidDict['MDC_ATTR_PT_NAME_GIVEN'] = str(h.pid.patient_name[0][1]) pidDict['MDC_ATTR_PT_NAME_FAMILY'] = str(h.pid.patient_name[0][0]) mshDict['SEND_DATE'] = str(h.msh[5]) mshDict['SENDING_FACILITY'] = str(h.msh[2]) mshDict['RECEIVING_FACILITY'] = str(h.msh[4]) self.hl7Dict = dict(**pidDict, **mshDict, **obxDict) return self.hl7Dict
def test_unsuccessful_query_status(self): message = HL7Message(self.insuccessful_query_result) self.assertEqual(six.text_type(message.msa.acknowledgement_code), "AE") self.assertEqual(six.text_type(message.msa.text_message), "2018")
def test_unicode_message(): """ unicode message can be cast to unicode and bytestring """ message = HL7Message("MSH|Dingdong the witch is dead\nFOO|Baababamm") str(message) six.text_type(message)
def test_message_parse(self): message = HL7Message(self.msg_string1) # the expected delimiters expected_delimiters = HL7Delimiters('|', '^', '~', '\\', '&') self.assertEqual(six.text_type(expected_delimiters), str(message.delimiters)) # check patient data self.assertEqual("ADAM", six.text_type(message.pid.patient_name[0].given_name)) self.assertEqual("ADAM", six.text_type(message.pid[4][0][1])) self.assertEqual( "EVERYMAN", six.text_type(message.pid.patient_name[0].family_name)) # unset fields should still exist as attributes self.assertTrue(message.pid.patient_name[0].prefix is None) self.assertTrue( message.pid.patient_name[0].name_representation_code is None) # check correct parsing of extended composite ID self.assertEqual(2, len(message.pid.patient_identifier_list)) self.assertEqual( "GOOD HEALTH HOSPITAL", six.text_type( message.pid.patient_identifier_list[0].assigning_facility)) self.assertEqual( "123456789", six.text_type(message.pid.patient_identifier_list[1].id_number)) # check correct parsing of extended adress self.assertEqual( "HOME STREET", six.text_type( message.pid.patient_address[0].street_address.street_name)) self.assertEqual("Greensboro", six.text_type(message.pid.patient_address[0].city)) self.assertEqual("Westeros", six.text_type(message.pid.patient_address[0].country)) # check correct parsing of coded with exception self.assertEqual("Caucasian", six.text_type(message.pid.race[0].text)) # check correct parsing of message type self.assertEqual( "A01", six.text_type(message.header.message_type.trigger_event)) self.assertEqual( "ADT", six.text_type(message.header.message_type.message_code)) # check correct parsing of processing type self.assertEqual( "P", six.text_type(message.header.processing_id.processing_id)) self.assertEqual( "default", six.text_type(message.header.processing_id.processing_mode)) # check correct parsing of version identifier self.assertEqual("2.7", six.text_type(message.header.version_id.version_id)) def invalid_attr(): message.foobar self.assertRaises(AttributeError, invalid_attr)
def test_simple_segments_parse(self): message = HL7Message(self.msg_string1) pid_seg = self.msg_string1.splitlines()[2] assert six.text_type(message.pid) == pid_seg
def test_address(self): message = HL7Message(self.msg_string1) self.assertEqual(six.text_type(message.pid.patient_address), '&HOME STREET&2^^Greensboro^NC^27401-1020^Westeros')