def test_with_multiple_allergies(self): self.message_processor.process_message( read_message(MULTIPLE_ALLERGIES)) allergies = self.session.query(Allergy).all() self.assertTrue(len(allergies), 2) allergy = allergies[0] self.assertEqual("Feathers : ", allergy.allergy_description) self.assertEqual(datetime(2016, 3, 17, 12, 0), allergy.allergy_start_datetime) self.assertEqual(datetime(2016, 3, 17, 1, 42), allergy.diagnosis_datetime) self.assertEqual('Definite', allergy.certainty_description) self.assertIsNone(allergy.allergen_reference) self.assertEqual("Feathers : ", allergy.allergy_description) self.assertEqual('Non-Drug Allergy', allergy.allergy_type_description) self.assertEqual('CERT-1', allergy.certainty_id) self.assertEqual('Active', allergy.status_description) self.assertEqual(False, allergy.no_allergies) allergy_2 = allergies[1] self.assertEqual('ANGIOTENSIN-II RECEPTOR ANTAGONISTS', allergy_2.allergy_reference_name) self.assertEqual('Class Allergy', allergy_2.allergy_type_description) self.assertEqual('Active', allergy_2.status_description) self.assertEqual(False, allergy_2.no_allergies) self.assertEqual('Definite', allergy_2.certainty_description) self.assertEqual('4', allergy_2.allergy_type) self.assertEqual('7896c6a0-f69b-4a97-aa4a-13ca28812713', allergy_2.allergen_reference)
def test_with_allergies(self): allergy = self.get_allergy("97995111", issuing_source="uclh") self.session.add(allergy) self.message_processor.process_message(read_message(ALLERGY)) found_allergy = self.session.query(Allergy).one() self.assertEqual('1', found_allergy.allergy_type) self.assertEqual('Product Allergy', found_allergy.allergy_type_description) self.assertEqual('CERT-1', found_allergy.certainty_id) self.assertEqual('Definite', found_allergy.certainty_description) self.assertEqual('CO-CODAMOL (Generic Manuf)', found_allergy.allergy_reference_name) self.assertEqual('CO-CODAMOL (Generic Manuf) : ', found_allergy.allergy_description) self.assertEqual(u'UDM', found_allergy.allergen_reference_system) self.assertEqual('8f75c6d8-45b7-4b40-913f-8ca1f59b5350', found_allergy.allergen_reference) self.assertEqual(u'1', found_allergy.status_id) self.assertEqual(u'Active', found_allergy.status_description) self.assertEqual(datetime(2015, 11, 19, 9, 16), found_allergy.diagnosis_datetime) self.assertEqual(datetime(2015, 11, 19, 12, 00), found_allergy.allergy_start_datetime) gloss_ref = get_gloss_reference("97995111", session=self.session, issuing_source="uclh") self.assertEqual(gloss_ref, found_allergy.gloss_reference)
def test_patient_death(self): self.message_processor.process_message(read_message(PATIENT_DEATH)) patient = self.session.query(Patient).one() self.assertEqual("TESTING MEDCHART", patient.surname) self.assertEqual("MEDHCART FIRSTNAME", patient.first_name) self.assertEqual("MEDCHART JONES", patient.middle_name) self.assertEqual("MR", patient.title) self.assertEqual(date(2014, 11, 1), patient.date_of_death)
def test_patient_death(self): self.message_processor.process_message(read_message(PATIENT_DEATH)) patient = self.session.query(Patient).one() self.assertEqual("TESTING MEDCHART", patient.surname) self.assertEqual("MEDHCART FIRSTNAME", patient.first_name) self.assertEqual("MEDCHART JONES", patient.middle_name) self.assertEqual("MR", patient.title) self.assertEqual(date(2014, 11, 1), patient.date_of_death)
def test_patient_only_update_known_patients(self): self.session.query(Subscription).delete() self.message_processor.process_message(read_message(PATIENT_DEATH)) patient = self.session.query(Patient).one() self.assertEqual("Smith", patient.surname) self.assertEqual("Jane", patient.first_name) self.assertEqual(None, patient.middle_name) self.assertEqual("Ms", patient.title) self.assertEqual(date(1983, 12, 12), patient.date_of_birth)
def test_patient_only_update_known_patients(self): self.session.query(Subscription).delete() self.message_processor.process_message(read_message(PATIENT_DEATH)) patient = self.session.query(Patient).one() self.assertEqual("Smith", patient.surname) self.assertEqual("Jane", patient.first_name) self.assertEqual(None, patient.middle_name) self.assertEqual("Ms", patient.title) self.assertEqual(date(1983, 12, 12), patient.date_of_birth)
def test_with_wrong_message(self): class SomeMsg(HL7Message): segments = ( MSH, PV2, ) with self.assertRaises(KeyError): SomeMsg(read_message(FULL_BLOOD_COUNT))
def test_with_no_allergies(self): allergy = self.get_allergy("97995000", issuing_source="uclh") self.session.add(allergy) self.message_processor.process_message(read_message(NO_ALLERGY)) found_allergy = self.session.query(Allergy).one() self.assertTrue(found_allergy.no_allergies) gloss_ref = get_gloss_reference("97995000", session=self.session, issuing_source="uclh") self.assertEqual(gloss_ref, found_allergy.gloss_reference)
def test_with_no_allergies(self): allergy = self.get_allergy("97995000", issuing_source="uclh") self.session.add(allergy) self.message_processor.process_message(read_message(NO_ALLERGY)) found_allergy = self.session.query(Allergy).one() self.assertTrue(found_allergy.no_allergies) gloss_ref = get_gloss_reference( "97995000", session=self.session, issuing_source="uclh" ) self.assertEqual(gloss_ref, found_allergy.gloss_reference)
def test_patient_update(self): self.message_processor.process_message(read_message(PATIENT_UPDATE)) patient = self.session.query(Patient).one() self.assertEqual("TESTING MEDCHART", patient.surname) self.assertEqual("MEDHCART FIRSTNAME", patient.first_name) self.assertEqual("MEDCHART JONES", patient.middle_name) self.assertEqual("MR", patient.title) self.assertEqual("N2 9DU", patient.post_code) self.assertEqual("P816881", patient.gp_practice_code) self.assertEqual("British", patient.ethnicity) self.assertIsNone(patient.date_of_death)
def test_patient_update(self): self.message_processor.process_message(read_message(PATIENT_UPDATE)) patient = self.session.query(Patient).one() self.assertEqual("TESTING MEDCHART", patient.surname) self.assertEqual("MEDHCART FIRSTNAME", patient.first_name) self.assertEqual("MEDCHART JONES", patient.middle_name) self.assertEqual("MR", patient.title) self.assertEqual("N2 9DU", patient.post_code) self.assertEqual("P816881", patient.gp_practice_code) self.assertEqual("British", patient.ethnicity) self.assertIsNone(patient.date_of_death)
def test_complete_flow(self): old_hospital_id = "50028000" old_gloss_reference = get_or_create_identifier( hospital_number=old_hospital_id, session=self.session, issuing_source="uclh") message_processor = MessageProcessor() message_processor.process_message(read_message(PATIENT_MERGE)) session = self.session result = session.query(Merge).one() old_gloss_id = result.old_reference_id self.assertEqual(old_gloss_reference.id, old_gloss_id)
def post_to_mllp_client(port, original_amount): with MLLPClient(settings.HOST, port) as client: amount = original_amount/len(MESSAGES) count = 1 for i in xrange(amount): for raw_message in MESSAGES: message = read_message(copy.copy(raw_message)) message[2][3][0][0][0] = str(random.randint(0, 1000000000)) client.send_message(str(message)) print "sending {0} of {1} to {2}".format( count, original_amount, port ) count += 1
def test_complete_flow(self): old_hospital_id = "50028000" old_gloss_reference = get_or_create_identifier( hospital_number=old_hospital_id, session=self.session, issuing_source="uclh" ) message_processor = MessageProcessor() message_processor.process_message(read_message(PATIENT_MERGE)) session = self.session result = session.query(Merge).one() old_gloss_id = result.old_reference_id self.assertEqual(old_gloss_reference.id, old_gloss_id)
def test_flow(self): subscribe('50099878', "http://some_end_point/", self.session, "uclh") message_processor = MessageProcessor() message_processor.process_message(read_message(INPATIENT_ADMISSION)) gloss_reference = get_gloss_reference('50099878', self.session) self.assertTrue(gloss_reference is not None) admission = InpatientAdmission.get_from_gloss_reference( gloss_reference, self.session) self.assertEqual(datetime(2015, 11, 18, 17, 56), admission.datetime_of_admission) self.assertEqual("TEST NON ELECTIVE PATIENT", admission.admission_diagnosis) location = self.session.query(InpatientLocation).one() self.assertEqual(location.inpatient_admission, admission) self.assertEqual(location.ward_code, "BBNU") self.assertEqual(location.room_code, "BCOT") self.assertEqual(location.bed_code, "BCOT-02B") self.assertIsNone(location.datetime_of_transfer) self.assertTrue(self.mock_requests_post.called) expected = { "hospital_number": "50099878", "issuing_source": "uclh", "messages": { "inpatient_admission": [{ "room_code": "BCOT", "ward_code": "BBNU", "datetime_of_discharge": None, "admission_diagnosis": "TEST NON ELECTIVE PATIENT", "bed_code": "BCOT-02B", "external_identifier": "940358", "datetime_of_admission": "18/11/2015 17:56:00" }] } } found = json.loads(self.mock_requests_post.call_args[1]["json"]) self.assertEqual(expected, found) self.assertEqual(self.mock_requests_post.call_args[0][0], 'http://some_end_point/')
def test_flow(self): subscribe('50099878', "http://some_end_point/", self.session, "uclh") message_processor = MessageProcessor() message_processor.process_message(read_message(INPATIENT_ADMISSION)) gloss_reference = get_gloss_reference('50099878', self.session) self.assertTrue(gloss_reference is not None) admission = InpatientAdmission.get_from_gloss_reference( gloss_reference, self.session ) self.assertEqual( datetime(2015, 11, 18, 17, 56), admission.datetime_of_admission ) self.assertEqual( "TEST NON ELECTIVE PATIENT", admission.admission_diagnosis ) location = self.session.query(InpatientLocation).one() self.assertEqual(location.inpatient_admission, admission) self.assertEqual(location.ward_code, "BBNU") self.assertEqual(location.room_code, "BCOT") self.assertEqual(location.bed_code, "BCOT-02B") self.assertIsNone(location.datetime_of_transfer) self.assertTrue(self.mock_requests_post.called) expected = { "hospital_number": "50099878", "issuing_source": "uclh", "messages": { "inpatient_admission": [{ "room_code": "BCOT", "ward_code": "BBNU", "datetime_of_discharge": None, "admission_diagnosis": "TEST NON ELECTIVE PATIENT", "bed_code": "BCOT-02B", "external_identifier": "940358", "datetime_of_admission": "18/11/2015 17:56:00" }] } } found = json.loads(self.mock_requests_post.call_args[1]["json"]) self.assertEqual(expected, found) self.assertEqual( self.mock_requests_post.call_args[0][0], 'http://some_end_point/' )
def test_with_allergies(self): allergy = self.get_allergy("97995111", issuing_source="uclh") self.session.add(allergy) self.message_processor.process_message(read_message(ALLERGY)) found_allergy = self.session.query(Allergy).one() self.assertEqual('1', found_allergy.allergy_type) self.assertEqual('Product Allergy', found_allergy.allergy_type_description) self.assertEqual('CERT-1', found_allergy.certainty_id) self.assertEqual('Definite', found_allergy.certainty_description) self.assertEqual('CO-CODAMOL (Generic Manuf)', found_allergy.allergy_reference_name) self.assertEqual('CO-CODAMOL (Generic Manuf) : ', found_allergy.allergy_description) self.assertEqual(u'UDM', found_allergy.allergen_reference_system) self.assertEqual('8f75c6d8-45b7-4b40-913f-8ca1f59b5350', found_allergy.allergen_reference) self.assertEqual(u'1', found_allergy.status_id) self.assertEqual(u'Active', found_allergy.status_description) self.assertEqual(datetime(2015, 11, 19, 9, 16), found_allergy.diagnosis_datetime) self.assertEqual(datetime(2015, 11, 19, 12, 00), found_allergy.allergy_start_datetime) gloss_ref = get_gloss_reference( "97995111", session=self.session, issuing_source="uclh" ) self.assertEqual(gloss_ref, found_allergy.gloss_reference)
def test_with_multiple_allergies(self): self.message_processor.process_message(read_message(MULTIPLE_ALLERGIES)) allergies = self.session.query(Allergy).all() self.assertTrue(len(allergies), 2) allergy = allergies[0] self.assertEqual("Feathers : ", allergy.allergy_description) self.assertEqual( datetime(2016, 3, 17, 12, 0), allergy.allergy_start_datetime ) self.assertEqual( datetime(2016, 3, 17, 1, 42), allergy.diagnosis_datetime ) self.assertEqual('Definite', allergy.certainty_description) self.assertIsNone(allergy.allergen_reference) self.assertEqual("Feathers : ", allergy.allergy_description) self.assertEqual('Non-Drug Allergy', allergy.allergy_type_description) self.assertEqual('CERT-1', allergy.certainty_id) self.assertEqual('Active', allergy.status_description) self.assertEqual(False, allergy.no_allergies) allergy_2 = allergies[1] self.assertEqual( 'ANGIOTENSIN-II RECEPTOR ANTAGONISTS', allergy_2.allergy_reference_name ) self.assertEqual( 'Class Allergy', allergy_2.allergy_type_description ) self.assertEqual('Active', allergy_2.status_description) self.assertEqual(False, allergy_2.no_allergies) self.assertEqual('Definite', allergy_2.certainty_description) self.assertEqual('4', allergy_2.allergy_type) self.assertEqual( '7896c6a0-f69b-4a97-aa4a-13ca28812713', allergy_2.allergen_reference )
def setUp(self): self.message = read_message(INPATIENT_DISCHARGE) self.message_processor = MessageProcessor() super(TestInpatientDischarge, self).setUp()
def test_complex_message(self): message_processor = MessageProcessor() message_processor.process_message(read_message(COMPLEX_WINPATH_RESULT)) results = self.session.query(Result).all() self.assertEqual(2, len(results)) result_1 = results[0] expected_observations_1 = [ { u'comments': None, u'observation_value': u'8.00', u'reference_range': u'3.0-10.0', u'result_status': None, u'test_code': u'WCC', u'test_name': u'White cell count', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'3.20', u'reference_range': u'4.4-5.8', u'result_status': None, u'test_code': u'RCC', u'test_name': u'Red cell count', u'units': u'x10^12/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'87', u'reference_range': None, u'result_status': None, u'test_code': u'HBGL', u'test_name': u'Haemoglobin (g/L)', u'units': u'g/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'0.350', u'reference_range': u'0.37-0.50', u'result_status': None, u'test_code': u'HCTU', u'test_name': u'HCT', u'units': u'L/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'78.0', u'reference_range': u'80-99', u'result_status': None, u'test_code': u'MCVU', u'test_name': u'MCV', u'units': u'fL', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'28.0', u'reference_range': u'27.0-33.5', u'result_status': None, u'test_code': u'MCHU', u'test_name': u'MCH', u'units': u'pg', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'300', u'reference_range': None, u'result_status': None, u'test_code': u'MCGL', u'test_name': u'MCHC (g/L)', u'units': u'g/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'17.0', u'reference_range': u'11.5-15.0', u'result_status': None, u'test_code': u'RDWU', u'test_name': u'RDW', u'units': u'%', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'250', u'reference_range': u'150-400', u'result_status': None, u'test_code': u'PLT', u'test_name': u'Platelet count', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'10.0', u'reference_range': u'7-13', u'result_status': None, u'test_code': u'MPVU', u'test_name': u'MPV', u'units': u'fL', u'value_type': u'NM' } ] self.assertEqual( expected_observations_1, json.loads(result_1.observations) ) self.assertEqual('98U000057', result_1.lab_number) self.assertEqual( datetime(2014, 11, 12, 16, 0), result_1.observation_datetime ) self.assertEqual( datetime(2014, 11, 12, 16, 6), result_1.request_datetime ) self.assertEqual("FINAL", result_1.result_status) self.assertEqual("FBCY", result_1.profile_code) self.assertEqual("FULL BLOOD COUNT", result_1.profile_description) result_2 = results[1] expected_observations_2 = [ { u'comments': None, u'observation_value': u'55.0% 4.40', u'reference_range': u'2.0-7.5', u'result_status': None, u'test_code': u'NE', u'test_name': u'Neutrophils', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'25.0% 2.00', u'reference_range': u'1.2-3.65', u'result_status': None, u'test_code': u'LY', u'test_name': u'Lymphocytes', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'15.0% 1.20', u'reference_range': u'0.2-1.0', u'result_status': None, u'test_code': u'MO', u'test_name': u'Monocytes', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'3.0% 0.24', u'reference_range': u'0.0-0.4', u'result_status': None, u'test_code': u'EO', u'test_name': u'Eosinophils', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'2.0% 0.16', u'reference_range': u'0.0-0.1', u'result_status': None, u'test_code': u'BA', u'test_name': u'Basophils', u'units': u'x10^9/L', u'value_type': u'NM' } ] self.assertEqual( expected_observations_2, json.loads(result_2.observations) ) self.assertEqual('98U000057', result_2.lab_number) self.assertEqual( datetime(2014, 11, 12, 16, 0), result_2.observation_datetime ) self.assertEqual( datetime(2014, 11, 12, 16, 6), result_2.request_datetime ) self.assertEqual("FINAL", result_2.result_status) self.assertEqual("FBCZ", result_2.profile_code) self.assertEqual("DIFFERENTIAL", result_2.profile_description)
def test_message_with_notes(self, settings_mock): settings_mock.SEND_ALL_MESSAGES = "http:not_real" message_processor = MessageProcessor() message_processor.process_message(read_message(RESULTS_MESSAGE)) result = self.session.query(Result).one() expected_comments = " ".join([ "Units: mL/min/1.73sqm Multiply eGFR by 1.21 for people of", "African Caribbean origin. Interpret with regard to UK CKD", "guidelines: www.renal.org/CKDguide/ckd.html Use with caution", "for adjusting drug dosages - contact clinical pharmacist for", "advice." ]) expected_observations = [ { "result_status": "FINAL", "observation_value": "143", "comments": expected_comments, "test_code": "NA", "value_type": "NM", "test_name": "Sodium", "units": "mmol/L", "reference_range": "135-145" }, { "result_status": "FINAL", "observation_value": "3.9", "comments": None, "test_code": "K", "value_type": "NM", "test_name": "Potassium", "units": "mmol/L", "reference_range": "3.5-5.1" }, { "result_status": "FINAL", "observation_value": "3.9", "comments": None, "test_code": "UREA", "value_type": "NM", "test_name": "Urea", "units": "mmol/L", "reference_range": "1.7-8.3" }, { "result_status": "FINAL", "observation_value": "61", "comments": None, "test_code": "CREA", "value_type": "NM", "test_name": "Creatinine", "units": "umol/L", "reference_range": "49-92" }, { "result_status": "FINAL", "observation_value": ">90", "comments": None, "test_code": "GFR", "value_type": "NM", "test_name": "Estimated GFR", "units": ".", "reference_range": None } ] self.assertEqual( expected_observations, json.loads(result.observations) ) self.assertEqual( datetime(2014, 1, 17, 20, 45), result.request_datetime ) self.assertEqual( datetime(2014, 1, 17, 17, 0), result.observation_datetime ) self.assertEqual('ELU', result.profile_code) self.assertEqual('RENAL PROFILE', result.profile_description) self.assertEqual('FINAL', result.result_status) downstream = json.loads( self.mock_requests_post.call_args[1]["json"], ) downstream = downstream["messages"]["result"][0] self.assertEqual( downstream["observations"], expected_observations ) self.assertEqual('ELU', downstream["profile_code"]) self.assertEqual('RENAL PROFILE', downstream["profile_description"]) self.assertEqual('FINAL', downstream["result_status"])
def test_message_with_notes(self, settings_mock): settings_mock.SEND_ALL_MESSAGES = "http:not_real" message_processor = MessageProcessor() message_processor.process_message(read_message(RESULTS_MESSAGE)) result = self.session.query(Result).one() expected_comments = " ".join([ "Units: mL/min/1.73sqm Multiply eGFR by 1.21 for people of", "African Caribbean origin. Interpret with regard to UK CKD", "guidelines: www.renal.org/CKDguide/ckd.html Use with caution", "for adjusting drug dosages - contact clinical pharmacist for", "advice." ]) expected_observations = [{ "result_status": "FINAL", "observation_value": "143", "comments": expected_comments, "test_code": "NA", "value_type": "NM", "test_name": "Sodium", "units": "mmol/L", "reference_range": "135-145" }, { "result_status": "FINAL", "observation_value": "3.9", "comments": None, "test_code": "K", "value_type": "NM", "test_name": "Potassium", "units": "mmol/L", "reference_range": "3.5-5.1" }, { "result_status": "FINAL", "observation_value": "3.9", "comments": None, "test_code": "UREA", "value_type": "NM", "test_name": "Urea", "units": "mmol/L", "reference_range": "1.7-8.3" }, { "result_status": "FINAL", "observation_value": "61", "comments": None, "test_code": "CREA", "value_type": "NM", "test_name": "Creatinine", "units": "umol/L", "reference_range": "49-92" }, { "result_status": "FINAL", "observation_value": ">90", "comments": None, "test_code": "GFR", "value_type": "NM", "test_name": "Estimated GFR", "units": ".", "reference_range": None }] self.assertEqual(expected_observations, json.loads(result.observations)) self.assertEqual(datetime(2014, 1, 17, 20, 45), result.request_datetime) self.assertEqual(datetime(2014, 1, 17, 17, 0), result.observation_datetime) self.assertEqual('ELU', result.profile_code) self.assertEqual('RENAL PROFILE', result.profile_description) self.assertEqual('FINAL', result.result_status) downstream = json.loads(self.mock_requests_post.call_args[1]["json"], ) downstream = downstream["messages"]["result"][0] self.assertEqual(downstream["observations"], expected_observations) self.assertEqual('ELU', downstream["profile_code"]) self.assertEqual('RENAL PROFILE', downstream["profile_description"]) self.assertEqual('FINAL', downstream["result_status"])
def test_multi_levelled_message(self): hl7_msg = read_message(FULL_BLOOD_COUNT) msg = WinPathResults(hl7_msg) self.assertEqual(len(msg.results), 2)
def setUp(self): super(TestInpatientTransfer, self).setUp() self.message = read_message(INPATIENT_TRANSFER) self.message_processor = MessageProcessor()
def setUp(self): self.message = read_message(INPATIENT_SPELL_DELETE) self.message_processor = MessageProcessor() super(TestInpatientDeleteSpell, self).setUp()
def test_with_wrong_message(self): class SomeMsg(HL7Message): segments = (MSH, PV2,) with self.assertRaises(KeyError): SomeMsg(read_message(FULL_BLOOD_COUNT))
def test_no_notification(self): msg = read_message(ORDER_MESSAGE) message_processor = MessageProcessor() self.assertEqual(None, message_processor.process_message(msg))
def setUp(self): self.message = read_message(INPATIENT_DISCHARGE) self.message_processor = MessageProcessor() super(TestInpatientDischarge, self).setUp()
def setUp(self): self.message = read_message(INPATIENT_SPELL_DELETE) self.message_processor = MessageProcessor() super(TestInpatientDeleteSpell, self).setUp()
def setUp(self): self.message = read_message(INPATIENT_AMEND) self.message_processor = MessageProcessor() super(TestInpatientAmend, self).setUp()
def setUp(self): super(TestInpatientTransfer, self).setUp() self.message = read_message(INPATIENT_TRANSFER) self.message_processor = MessageProcessor()
def test_pathology_to_dict(self): msg = read_message(COMPLEX_WINPATH_RESULT) message_container = WinPathResults(msg).construct_container() result = message_container.to_dict() self.assertEqual(result, expected)
def test_complex_message(self): message_processor = MessageProcessor() message_processor.process_message(read_message(COMPLEX_WINPATH_RESULT)) results = self.session.query(Result).all() self.assertEqual(2, len(results)) result_1 = results[0] expected_observations_1 = [{ u'comments': None, u'observation_value': u'8.00', u'reference_range': u'3.0-10.0', u'result_status': None, u'test_code': u'WCC', u'test_name': u'White cell count', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'3.20', u'reference_range': u'4.4-5.8', u'result_status': None, u'test_code': u'RCC', u'test_name': u'Red cell count', u'units': u'x10^12/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'87', u'reference_range': None, u'result_status': None, u'test_code': u'HBGL', u'test_name': u'Haemoglobin (g/L)', u'units': u'g/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'0.350', u'reference_range': u'0.37-0.50', u'result_status': None, u'test_code': u'HCTU', u'test_name': u'HCT', u'units': u'L/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'78.0', u'reference_range': u'80-99', u'result_status': None, u'test_code': u'MCVU', u'test_name': u'MCV', u'units': u'fL', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'28.0', u'reference_range': u'27.0-33.5', u'result_status': None, u'test_code': u'MCHU', u'test_name': u'MCH', u'units': u'pg', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'300', u'reference_range': None, u'result_status': None, u'test_code': u'MCGL', u'test_name': u'MCHC (g/L)', u'units': u'g/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'17.0', u'reference_range': u'11.5-15.0', u'result_status': None, u'test_code': u'RDWU', u'test_name': u'RDW', u'units': u'%', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'250', u'reference_range': u'150-400', u'result_status': None, u'test_code': u'PLT', u'test_name': u'Platelet count', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'10.0', u'reference_range': u'7-13', u'result_status': None, u'test_code': u'MPVU', u'test_name': u'MPV', u'units': u'fL', u'value_type': u'NM' }] self.assertEqual(expected_observations_1, json.loads(result_1.observations)) self.assertEqual('98U000057', result_1.lab_number) self.assertEqual(datetime(2014, 11, 12, 16, 0), result_1.observation_datetime) self.assertEqual(datetime(2014, 11, 12, 16, 6), result_1.request_datetime) self.assertEqual("FINAL", result_1.result_status) self.assertEqual("FBCY", result_1.profile_code) self.assertEqual("FULL BLOOD COUNT", result_1.profile_description) result_2 = results[1] expected_observations_2 = [{ u'comments': None, u'observation_value': u'55.0% 4.40', u'reference_range': u'2.0-7.5', u'result_status': None, u'test_code': u'NE', u'test_name': u'Neutrophils', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'25.0% 2.00', u'reference_range': u'1.2-3.65', u'result_status': None, u'test_code': u'LY', u'test_name': u'Lymphocytes', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'15.0% 1.20', u'reference_range': u'0.2-1.0', u'result_status': None, u'test_code': u'MO', u'test_name': u'Monocytes', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'3.0% 0.24', u'reference_range': u'0.0-0.4', u'result_status': None, u'test_code': u'EO', u'test_name': u'Eosinophils', u'units': u'x10^9/L', u'value_type': u'NM' }, { u'comments': None, u'observation_value': u'2.0% 0.16', u'reference_range': u'0.0-0.1', u'result_status': None, u'test_code': u'BA', u'test_name': u'Basophils', u'units': u'x10^9/L', u'value_type': u'NM' }] self.assertEqual(expected_observations_2, json.loads(result_2.observations)) self.assertEqual('98U000057', result_2.lab_number) self.assertEqual(datetime(2014, 11, 12, 16, 0), result_2.observation_datetime) self.assertEqual(datetime(2014, 11, 12, 16, 6), result_2.request_datetime) self.assertEqual("FINAL", result_2.result_status) self.assertEqual("FBCZ", result_2.profile_code) self.assertEqual("DIFFERENTIAL", result_2.profile_description)
def setUp(self): self.message = read_message(INPATIENT_AMEND) self.message_processor = MessageProcessor() super(TestInpatientAmend, self).setUp()
def test_multi_levelled_message(self): hl7_msg = read_message(FULL_BLOOD_COUNT) msg = WinPathResults(hl7_msg) self.assertEqual(len(msg.results), 2)