def responder(m): # cria uma mensagem de resposta RSP_K11 response = Message("RSP_K11") response.MSH.MSH_9 = "RSP^K11^RSP_K11" response.MSA = "MSA|AA" response.MSA.MSA_2 = m.MSH.MSH_10 qak = Segment("QAK") qak.qak_1 = m.QPD.QPD_2 qak.qak_2 = "OK" qak.qak_3 = "Q22^Specimen Labeling Instructions^IHE_LABTF" qak.qak_4 = "1" response.add(qak) response.QPD = m.QPD response.PID.PID_1 = '1' response.PID.PID_5.PID_5_1 = 'CUNHA' response.PID.PID_5.PID_5_2 = 'JOSE' response.PID.PID_6 = "19800101" response.PID.PID_7 = "F" response.PID.PID_23 = "Brasil" spm = Segment("SPM") obr = Segment("OBR") spm.SPM_1 = '1' spm.SPM_2 = "12345" obr.OBR_4 = "ORDER^DESCRIPTION" response.add(spm) response.add(obr) return response.to_mllp()
def test_delete_group(self): m = Message('OML_O33', validation_level=VALIDATION_LEVEL.QUIET) g = Group ('OML_O33_PATIENT') m.add(g) self.assertEqual(m.oml_O33_patient.name, 'OML_O33_PATIENT' ) del m.oml_o33_patient self.assertFalse(g in m.children)
def test_add_segment_to_message_mix(self): a = Message('OML_O33', validation_level=VALIDATION_LEVEL.QUIET) msh = Segment('MSH', validation_level=VALIDATION_LEVEL.QUIET) pid = Segment('PID', validation_level=VALIDATION_LEVEL.QUIET) g = Group('OML_O33_PATIENT') g.add(pid) a.add(msh) a.add(g)
def reply(message): """ Parse the incoming message and return the ER7 encoded response :param message: incoming message :return: response encoded to ER7 - it can be a NAK or RSP_K11 message """ print "Received by LIP", repr(message) try: # parse the incoming message m = parse_message(message, find_groups=False) except: print 'parsing failed', repr(message) response = LIP.nak() else: print "Message type:", m.MSH.message_type.to_er7() print "Message content:", repr(m.to_er7()) if m.MSH.MSH_9.MSH_9_3.to_er7() == 'QBP_Q11': # create a new RSP_K11 message response = Message("RSP_K11") response.MSH.MSH_9 = "RSP^K11^RSP_K11" # add MSA segment response.MSA = "MSA|AA" response.MSA.MSA_2 = m.MSH.MSH_10 # create a QAK segment qak = Segment("QAK") qak.qak_1 = m.QPD.QPD_2 qak.qak_2 = "OK" qak.qak_3 = "Q22^Specimen Labeling Instructions^IHE_LABTF" qak.qak_4 = "1" # add the QAK segment to the RSP_K11 message response.add(qak) # copy the QPD segment from the incoming message response.QPD = m.QPD # create a PID segment response.PID.PID_1 = '1' response.PID.PID_5.PID_5_1 = 'PATIENT_SURNAME' response.PID.PID_5.PID_5_2 = 'PATIENT_NAME' response.PID.PID_6 = "19800101" response.PID.PID_7 = "F" # create a SPM segment spm = Segment("SPM") # create an OBR segment obr = Segment("OBR") spm.SPM_1 = '1' spm.SPM_2 = "12345" obr.OBR_4 = "ORDER^DESCRIPTION" # add spm and obr to the RSP_K11 response response.add(spm) response.add(obr) else: response = LIP.nak(m) return response.to_mllp() # encode to ER7
def reply(message): """ Parse the incoming message and return the ER7 encoded response :param message: incoming message :return: response encoded to ER7 - it can be a NAK or RSP_K11 message """ print("Received by LIP", repr(message)) try: # parse the incoming message m = parse_message(message, find_groups=False) except: print('parsing failed', repr(message)) response = LIP.nak() else: print("Message type:", m.MSH.message_type.to_er7()) print("Message content:", repr(m.to_er7())) if m.MSH.MSH_9.MSH_9_3.to_er7() == 'QBP_Q11': # create a new RSP_K11 message response = Message("RSP_K11") response.MSH.MSH_9 = "RSP^K11^RSP_K11" # add MSA segment response.MSA = "MSA|AA" response.MSA.MSA_2 = m.MSH.MSH_10 # create a QAK segment qak = Segment("QAK") qak.qak_1 = m.QPD.QPD_2 qak.qak_2 = "OK" qak.qak_3 = "Q22^Specimen Labeling Instructions^IHE_LABTF" qak.qak_4 = "1" # add the QAK segment to the RSP_K11 message response.add(qak) # copy the QPD segment from the incoming message response.QPD = m.QPD # create a PID segment response.PID.PID_1 = '1' response.PID.PID_5.PID_5_1 = 'PATIENT_SURNAME' response.PID.PID_5.PID_5_2 = 'PATIENT_NAME' response.PID.PID_6 = "19800101" response.PID.PID_7 = "F" # create a SPM segment spm = Segment("SPM") # create an OBR segment obr = Segment("OBR") spm.SPM_1 = '1' spm.SPM_2 = "12345" obr.OBR_4 = "ORDER^DESCRIPTION" # add spm and obr to the RSP_K11 response response.add(spm) response.add(obr) else: response = LIP.nak(m) return response.to_mllp() # encode to ER7
class HL7_Generator: def __init__(self): self.m = Message() def generate_MSH(self): """**********MSH Segment********** List of fields utilized in this segment : Sr. No. | Field Sequence Number | Field Name 1 | 17 | Country Code 2 | 19 | Principal Language Used""" # assign values to fields in MSH Segment self.m.msh.msh_17 = country_code self.m.msh.msh_19 = principal_lang def generate_EVN(self): """ **********EVN Segment********** List of fields utilized in this segment : Sr. No. | Field Sequence Number | Field Name 1 | 1 | Event Code 2 | 6 | Event Occured """ # assign values to fields in EVN Segment self.m.evn.evn_1 = event_code self.m.evn.evn_2 = self.m.msh.msh_7 self.m.evn.evn_6 = event_reason def generate_PID(self): """ **********PID Segment********** List of fields utilized in this segment : Sr. No. | Field Sequence Number | Field Name 1 | 5 | Name (Last Name, First Name, Middle Name) 2 | 6 | Mother's Maiden Name 3 | 7 | Date of Birth 4 | 8 | Sex 5 | 12 | Country Code 6 | 13 | Contact Numbers (Contact No. 1, Contact No. 2) 7 | 16 | Marital Status 8 | 17 | Religion """ # assign values to fields in PID Segment self.m.pid.pid_5.pid_5_1 = last_name self.m.pid.pid_5.pid_5_2 = first_name self.m.pid.pid_5.pid_5_3 = middle_name self.m.pid.pid_6 = mother_name self.m.pid.pid_7 = dob self.m.pid.pid_8 = sex self.m.pid.pid_12 = country_code self.m.pid.pid_13.pid_13_1 = contact_no_1 self.m.pid.pid_13.pid_13_2 = contact_no_2 self.m.pid.pid_16 = marital_status self.m.pid.pid_17 = religion def generate_OBX(self): """ **********OBX Segment********** Generate a separate OBX Segement for each of the following observations : Sr. No. | Field Sequence Number | Field Description 1 | 1 | Observation Sequence ID 2 | 3 | Observation Identifier (Observation Sequence ID, Observation Name) 3 | 5 | Observation Value 4 | 6 | Units 4 | 14 | Observation Timestamp """ # date_time = datetime.fromtimestamp(timestamp) # d = date_time.strftime("\'%Y-%m-%d %H:%M:%S\' UTC") for each in records: for i in range(len(obx_codes)): obx = Segment('OBX') obx.obx_1 = each['record_id'] obx.obx_3 = obx_codes[i] obx.obx_5 = str(each['obx_test'][i]) obx.obx_6 = obx_units[i] obx.obx_14 = each['timestamp'] self.m.add(obx) def generate_NK1(self): self.m.nk1.nk1_1 = kin_patient_id self.m.nk1.nk1_2.nk1_2_1 = kin_last_name self.m.nk1.nk1_2.nk1_2_2 = kin_first_name self.m.nk1.nk1_2.nk1_2_3 = kin_middle_name self.m.nk1.nk1_3 = relationship self.m.nk1.nk1_4 = kin_address self.m.nk1.nk1_5 = kin_phone_no self.m.nk1.nk1_6 = kin_biz_phone_no # self.m.nk1.nk1_10 = kin_job_title # self.m.nk1.nk1_13 = kin_organization self.m.nk1.nk1_14 = kin_marital_status self.m.nk1.nk1_15 = kin_sex self.m.nk1.nk1_16 = kin_dob self.m.nk1.nk1_19 = kin_citizenship self.m.nk1.nk1_20 = kin_primary_lang self.m.nk1.nk1_25 = kin_religion self.m.nk1.nk1_26 = kin_mother_name self.m.nk1.nk1_27 = country_code self.m.nk1.nk1_34 = kin_job_status self.m.nk1.nk1_37 = kin_aadhaar_no def generate_DG1(self): self.m.dg1.dg1_1 = case_id self.m.dg1.dg1_2 = 'ICD' self.m.dg1.dg1_3 = danger_code self.m.dg1.dg1_16 = practitioner_id def to_hl7(self): # f = open('er7.txt','w') self.generate_MSH() self.generate_EVN() self.generate_PID() self.generate_OBX() self.generate_NK1() self.generate_DG1() for child in self.m.children: # f.write(child.to_er7() + '\n') print(child.to_er7())
def test_add_known_segment_to_empty_message(self): a = Message('OML_O33') a.add(Segment('MSA'))
def test_add_not_allowed_segment_to_known_message(self): a = Message('OML_O33', validation_level=VALIDATION_LEVEL.STRICT) self.assertRaises(ChildNotValid, a.add, Segment('MSA')) b = Message('OML_O33') b.add(Segment('MSA'))
def test_add_empty_children_to_message(self): a = Message('OML_O33', validation_level=VALIDATION_LEVEL.STRICT) self.assertRaises(ChildNotValid, a.add, Group()) b = Message('OML_O33') b.add(Group())
def test_delete_segment(self): m = Message('OML_O33') pid = Segment('PID') m.add(pid) del m.pid self.assertFalse(pid in m.children)
def test_add_known_group_to_empty_message(self): a = Message('OML_O33') a.add(Group('OML_O33_PATIENT'))