Skip to content

Commit b9dd32d

Browse files
committed
HL7, support for v2.5
1 parent 76e85da commit b9dd32d

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

Diff for: orthanc_tools/hl7Lib/hl7_worklist_parser.py

+6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def __init__(self, specific_fields: dict = None, patient_name_components_count:
3737
#'ScheduledProcedureStepStartDateTime': 'OBR.F27.R1.C4',
3838
'_scheduledProcedureStepStartDateTime': 'OBR.F27.R1.C4',
3939
'__scheduledProcedureStepStartDateTime': 'OBR.F20', # By default, this is the segment used by assistovet it seems not to be in use in other cases
40+
'___scheduledProcedureStepStartDateTime': 'OBR.F36', # for HL7 v2.5
4041

4142
# --- PV1 segment
4243
'_ambulatoryStatus': 'PV1.F15',
@@ -123,6 +124,11 @@ def parse(self, hl7_message: str) -> typing.Dict:
123124
values['ScheduledProcedureStepStartDate'] = datetimeString[
124125
:8] # date is made of the 8 first chars of the string
125126
values['ScheduledProcedureStepStartTime'] = datetimeString[8:14]
127+
elif values.get('___scheduledProcedureStepStartDateTime') is not None: # HL7 2.5
128+
datetimeString = values.get('___scheduledProcedureStepStartDateTime')
129+
values['ScheduledProcedureStepStartDate'] = datetimeString[
130+
:8] # date is made of the 8 first chars of the string
131+
values['ScheduledProcedureStepStartTime'] = datetimeString[8:14]
126132

127133

128134

Diff for: orthanc_tools/hl7Lib/tests/test_hl7_worklist_parser.py

+27
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,33 @@ def test_message_from_avignon_with_accent(self):
4747

4848
self.assertEqual('ÉCHOGRAPHIE DE L\'ABDOMEN ET DU PETIT BASSIN (PELVIS)', values.get('RequestedProcedureDescription'))
4949

50+
new_message_from_avignon = (
51+
"\x0bMSH|^~\&|Institut Ste Catherine|Institut Ste Catherine|||20250130152802||ORM^O01^ORM_O01|20250130152802966|P|2.5|||AL||FR||FR\r"
52+
"PID|||202303295^^^icap84.org^PI~139061305567914^^^ASIP-SANTE-INS-NIR&1.2.250.1.213.1.4.8&ISO^INS||TEST^LUCIEN^^^^^D~TEST^LUCIEN^^^^^L||19491230|M|||8 IMPASSE VIVALDI ^^VILLE^^84999||0780808008^PRN^PH~0123456789^PRN^[email protected]^NET^Internet||||||||||13055\r"
53+
"ORC|NW|999001714293|1714293||SC|||||||DOYE^DOYER^MICHEL\r"
54+
"OBR||1714293|1714293|DPAC^Depose de PAC^LOCAL|||20250130163000|20250130173000||||||||DOE^DOYER^MICHEL^^^DR^RAD||1714293||||||DX||||||||^^^SGT||||20250130163000\r"
55+
"\x1c\x0d"
56+
)
57+
def test_new_message_from_avignon(self):
58+
worklist_parser = Hl7WorklistParser()
59+
values = worklist_parser.parse(self.new_message_from_avignon)
60+
61+
self.assertEqual('M', values.get('PatientSex'))
62+
self.assertEqual('19491230', values.get('PatientBirthDate'))
63+
self.assertEqual('202303295', values.get('PatientID'))
64+
self.assertEqual('TEST^LUCIEN^^^', values.get('PatientName'))
65+
self.assertEqual('icap84.org', values.get('IssuerOfPatientID'))
66+
self.assertEqual('999001714293', values.get('OrderPlacerIdentifierSequence'))
67+
self.assertEqual('1714293', values.get('OrderFillerIdentifierSequence'))
68+
self.assertEqual('1714293', values.get('AccessionNumber'))
69+
self.assertEqual('DX', values.get('Modality'))
70+
self.assertEqual('Depose de PAC', values.get('RequestedProcedureDescription'))
71+
self.assertEqual('20250130', values.get('ScheduledProcedureStepStartDate'))
72+
self.assertEqual('163000', values.get('ScheduledProcedureStepStartTime'))
73+
74+
75+
76+
5077

5178
message2 = (
5279
"\x0bMSH|^~\&|MPA|SYSTEMA|IMPAX|MDRADAMB|200802210826||ORM^O01|MSG242081|P|2.3|\r"

Diff for: release-notes.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
v 0.15.2
2+
========
3+
- `Hl7WorklistParser`: support for HL7 v2.5.
4+
15
v 0.15.1
26
========
37
- `OrthancTestDbPopulator`: `instances_count` is now applied to every generated series

Diff for: setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
# For a discussion on single-sourcing the version across setup.py and the
2929
# project code, see
3030
# https://packaging.python.org/guides/single-sourcing-package-version/
31-
version='0.15.1', # Required
31+
version='0.15.2', # Required
3232

3333
# This is a one-line description or tagline of what your project does. This
3434
# corresponds to the "Summary" metadata field:

0 commit comments

Comments
 (0)