From 3d1836f7a7eb50dd7dceb7cc2f62cb1e39615709 Mon Sep 17 00:00:00 2001 From: sergei kasianenko Date: Fri, 31 May 2024 09:25:40 +0800 Subject: [PATCH 1/4] MSH Headers --- ftp_orders/main.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ftp_orders/main.py b/ftp_orders/main.py index d99926e252..0865670bf1 100644 --- a/ftp_orders/main.py +++ b/ftp_orders/main.py @@ -11,6 +11,7 @@ from urllib.parse import urlparse import time +import hl7apy from django.db import transaction from hl7apy import VALIDATION_LEVEL, core from hl7apy.parser import parse_message @@ -172,7 +173,6 @@ def pull_order(self, file: str): if RegisteredOrders.objects.filter(file_name=file).exists(): self.error(f"Skipping file {file} because it already exists") return - hl7_result, hl7_content = self.read_file_as_hl7(file) if not hl7_content or not hl7_result: @@ -438,8 +438,8 @@ def pull_result(self, file: str): def push_order(self, direction: Napravleniya): hl7 = core.Message("ORM_O01", validation_level=VALIDATION_LEVEL.QUIET) - hl7.msh.msh_3 = "L2" - hl7.msh.msh_4 = "ORDER" + hl7.msh.msh_3 = direction.hospital.hl7_sender_application if direction.hospital.hl7_sender_application else "L2" + hl7.msh.msh_4 = direction.hospital.acronym_title if direction.hospital.acronym_title else "ORDER" hl7.msh.msh_5 = "qLIS" hl7.msh.msh_6 = "LukaLab" hl7.msh.msh_9 = "ORM^O01" @@ -454,7 +454,7 @@ def push_order(self, direction: Napravleniya): patient.pid.pid_7 = individual.birthday.strftime("%Y%m%d") patient.pid.pid_8 = individual.sex.upper() byte_email = direction.client.email.encode("utf-8") - field_13 = f"{direction.client.phone.replace(' ', '').replace('-', '')}~~~{base64.b64encode(byte_email).decode('UTF-8')}" + field_13 = f"{direction.client.phone.replace(' ', '').replace('-', '')}@@@{base64.b64encode(byte_email).decode('UTF-8')}" patient.pid.pid_13.value = field_13 patient.pid.pid_18 = f"^^Полис^^{data_indivdual['enp']}" patient.pid.pid_19 = data_indivdual["snils"] @@ -502,7 +502,7 @@ def push_order(self, direction: Napravleniya): obr.obr_34.value = "" content = hl7.value.replace("\r", "\n").replace("ORC|1\n", "") - content = content.replace("\R", "").replace("\\", "") + content = content.replace("R", "~").replace("\\", "") filename = f"form1c_orm_{direction.pk}_{created_at}.ord" self.log("Writing file", filename, "\n", content) From 949c39aa8e3e98485cb2854bd2a6eaefad5a5c8a Mon Sep 17 00:00:00 2001 From: sergei kasianenko Date: Fri, 31 May 2024 09:29:29 +0800 Subject: [PATCH 2/4] sender org --- ftp_orders/main.py | 2 +- hospitals/models.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ftp_orders/main.py b/ftp_orders/main.py index 0865670bf1..5e5727ee8b 100644 --- a/ftp_orders/main.py +++ b/ftp_orders/main.py @@ -439,7 +439,7 @@ def push_order(self, direction: Napravleniya): hl7 = core.Message("ORM_O01", validation_level=VALIDATION_LEVEL.QUIET) hl7.msh.msh_3 = direction.hospital.hl7_sender_application if direction.hospital.hl7_sender_application else "L2" - hl7.msh.msh_4 = direction.hospital.acronym_title if direction.hospital.acronym_title else "ORDER" + hl7.msh.msh_4 = direction.hospital.hl7_sender_org if direction.hospital.hl7_sender_org else "ORDER" hl7.msh.msh_5 = "qLIS" hl7.msh.msh_6 = "LukaLab" hl7.msh.msh_9 = "ORM^O01" diff --git a/hospitals/models.py b/hospitals/models.py index 626dbd18d5..d71f723171 100644 --- a/hospitals/models.py +++ b/hospitals/models.py @@ -52,6 +52,7 @@ class Hospitals(models.Model): max_length=256, blank=True, default=None, null=True, help_text='URL для FTP директории получения результатов (ftp://user:password@host.example.com/path)' ) hl7_sender_application = models.CharField(max_length=55, blank=True, default=None, null=True, help_text='HL7 приложение отправитель') + hl7_sender_org = models.CharField(max_length=55, blank=True, default=None, null=True, help_text='HL7 организация отправитель') hl7_receiver_appplication = models.CharField(max_length=55, blank=True, default=None, null=True, help_text='HL7 приложение получатель') hl7_rule_file = models.CharField(max_length=60, null=True, blank=True, default="default.json", help_text="Название ф-ла правил HL7") is_auto_transfer_hl7_file = models.BooleanField(default=False, blank=True, help_text='Автоматическая отправка файла в каталог', db_index=True) From 0ba4ec28808747e29409b3be3fd670de9d639af3 Mon Sep 17 00:00:00 2001 From: sergei kasianenko Date: Fri, 31 May 2024 09:30:38 +0800 Subject: [PATCH 3/4] fix --- ftp_orders/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ftp_orders/main.py b/ftp_orders/main.py index 5e5727ee8b..9475e672bb 100644 --- a/ftp_orders/main.py +++ b/ftp_orders/main.py @@ -11,7 +11,6 @@ from urllib.parse import urlparse import time -import hl7apy from django.db import transaction from hl7apy import VALIDATION_LEVEL, core from hl7apy.parser import parse_message From 612034487b801501dedae49c50b2756e6fe8b9bf Mon Sep 17 00:00:00 2001 From: sergei kasianenko Date: Fri, 31 May 2024 09:55:07 +0800 Subject: [PATCH 4/4] fix --- clients/models.py | 5 ++++- ftp_orders/main.py | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/clients/models.py b/clients/models.py index 1d0e094543..eb473a60b5 100644 --- a/clients/models.py +++ b/clients/models.py @@ -778,6 +778,7 @@ def import_from_simple_data(data: dict, owner, patient_id_company, email, phone) sex = data.get('sex', '').lower().strip() birthday = data.get('birthday', '').split(' ')[0] snils = data.get('snils', '').split(' ')[0] + enp = data.get('enp', '').split(' ')[0] i = None card = None @@ -835,7 +836,9 @@ def import_from_simple_data(data: dict, owner, patient_id_company, email, phone) if i: snils_type = DocumentType.objects.filter(title__startswith="СНИЛС").first() document_snils = i.add_or_update_doc(snils_type, '', snils) - card = Card.add_l2_card(individual=i, force=True, owner=owner, snils=document_snils) + enp_type = DocumentType.objects.filter(title__startswith="полис омс").first() + document_enp = i.add_or_update_doc(enp_type, '', enp) + card = Card.add_l2_card(individual=i, force=True, owner=owner, snils=document_snils, polis=document_enp) return card diff --git a/ftp_orders/main.py b/ftp_orders/main.py index 9475e672bb..85e8464230 100644 --- a/ftp_orders/main.py +++ b/ftp_orders/main.py @@ -211,7 +211,11 @@ def pull_order(self, file: str): snils = pid.PID_19.value snils = snils.replace("-", "").replace(" ", "") - + enp = "" + if len(pid.PID_18.value) > 1: + document_data = pid.PID_18.value.split("^") + if document_data[2] == "Полис": + enp = document_data[4] adds_data = pid.to_er7().split("|")[13].split("~") phone = adds_data[0] if adds_data[0] else "" @@ -244,6 +248,7 @@ def pull_order(self, file: str): "sex": sex, "birthday": birthday, "snils": snils, + "enp": enp, }, self.hospital, patient_id_company,