def generarHL7_ORU_R01():
    print("Se ha pedido mandar un mensaje HL7 del tipo ORU_R01")
    hl7 = core.Message("ORU_R01")
    hl7.msh.msh_3 = input("FileType: (text or img)")
    hl7.msh.msh_4 = "SendingFac"
    hl7.msh.msh_5 = "ReceivingApp"
    hl7.msh.msh_6 = "ReceivingFac"
    hl7.msh.msh_9 = "ORU^R01^ORU_R01"
    hl7.msh.msh_10 = "168715"
    hl7.msh.msh_11 = "P"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.PID.pid_3 = "15"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.PID.pid_5 = "JOSE"

    ## OBR Segment -- Patient details
    patients_detail = "10000"
    if patients_detail == "":
        patients_detail = "10000"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.OBR.obr_4 = patients_detail

    if (hl7.msh.msh_3.value == "img"):
        with open(input("ENTER -> File name"), "rb") as image_file:
            mri = (base64.b64encode(image_file.read()))
            mri = StringIO(str(mri, 'utf-8')).getvalue()
    else:
        f = open(input("ENTER -> File name"), "r")
        mri = f.read()
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.OBX.obx_1 = "1"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.OBX.obx_2 = "ED"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.OBX.obx_3 = "OWL"
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.OBX.obx_5 = mri
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.OBX.obx_11 = "F"  # Observ Result Status -- "F" meaning 'Final result'
    hl7.validate()

    return (hl7)
Exemple #2
0
def zacniHL7():
    hl = core.Message("ORM_O01")
    hl.msh.msh_4 = nazivOrganizacije
    #hl.msh.msh_7 = "2019070210"
    hl.msh.msh_9 = "ORM^O01"
    hl.msh.msh_10 = "1562055281682557"
    hl.msh.msh_11 = "P"
    hl.msh.msh_12 = "12.5"
    return hl
def create_HL7_msg(request):

    # Create Message
    hl7 = core.Message("ORU_R01", validation_level=VALIDATION_LEVEL.STRICT)

    # Message Header
    hl7.msh.msh_3 = "ExamsClient"
    hl7.msh.msh_4 = "ExamsClient"
    hl7.msh.msh_5 = "RequestsServer"
    hl7.msh.msh_6 = "RequestsServer"
    hl7.msh.msh_9 = "ORU^R01^ORU_R01"
    hl7.msh.msh_10 = str(request[0])
    hl7.msh.msh_11 = "P"

    # PID
    hl7.add_group("ORU_R01_PATIENT_RESULT")
    hl7.ORU_R01_PATIENT_RESULT.add_group("ORU_R01_PATIENT")
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.pid.pid_3 = str(request[5])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.pid.pid_5 = str(request[6])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.pid.pid_18 = str(request[7])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.pid.pid_11 = str(request[8])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.pid.pid_13 = str(request[9])

    # ORC
    hl7.ORU_R01_PATIENT_RESULT.add_group("ORU_R01_ORDER_OBSERVATION")
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.orc.orc_10 = request[3].strftime(
        "%Y-%m-%d")
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.orc.orc_1 = str(
        request[1])

    # OBR
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.obr.obr_4 = str(
        request[4])

    # OBX
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.add_group(
        "ORU_R01_OBSERVATION")
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.obx.obx_5 = str(
        request[11])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.obx.obx_11 = str(
        request[2])
    hl7.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.obx.obx_3 = str(
        request[10])

    assert hl7.validate() is True
    # print(str(hl7.value))

    return hl7.value
Exemple #4
0
def create_HL7_msg(id):

    # Create Message
    hl7 = core.Message("ORM_O01", validation_level=VALIDATION_LEVEL.STRICT)

    # Message Header
    hl7.msh.msh_3 = "Requests"
    hl7.msh.msh_4 = "Requests"
    hl7.msh.msh_5 = "Exams"
    hl7.msh.msh_6 = "Exams"
    hl7.msh.msh_9 = "ORM^O01^ORM_O01"
    hl7.msh.msh_10 = str(id)
    hl7.msh.msh_11 = "P"

    # PID
    hl7.add_group("ORM_O01_PATIENT")
    hl7.ORM_O01_PATIENT.pid.pid_3 = randomString()
    hl7.ORM_O01_PATIENT.pid.pid_5 = randomString()
    hl7.ORM_O01_PATIENT.pid.pid_18 = randomString()
    hl7.ORM_O01_PATIENT.pid.pid_11 = randomString()
    hl7.ORM_O01_PATIENT.pid.pid_13 = randomString()
    # ORC
    hl7.ORM_O01_ORDER.orc.orc_1 = randomString()
    hl7.ORM_O01_ORDER.ORC.orc_10 = randomString()
    hl7.ORM_O01_ORDER.ORC.orc_2 = randomString()

    # OBX AND NTE
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.add_group("ORM_O01_OBSERVATION")
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.obx.obx_5 = randomString(
    )
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.obx.obx_17 = randomString(
    )
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.nte.nte_3 = randomString(
    )

    assert hl7.validate() is True

    return hl7.value
def create_HL7_msg(request):

    # Create Message
    hl7 = core.Message("ORM_O01", validation_level=VALIDATION_LEVEL.STRICT)

    # Message Header
    hl7.msh.msh_3 = "RequestClient"
    hl7.msh.msh_4 = "RequestClient"
    hl7.msh.msh_5 = "ExamsServer"
    hl7.msh.msh_6 = "ExamsServer"
    hl7.msh.msh_9 = "ORM^O01^ORM_O01"
    hl7.msh.msh_10 = str(request[0])
    hl7.msh.msh_11 = "P"

    # PID
    hl7.add_group("ORM_O01_PATIENT")
    hl7.ORM_O01_PATIENT.pid.pid_3 = str(request[5])
    hl7.ORM_O01_PATIENT.pid.pid_5 = str(request[6])
    hl7.ORM_O01_PATIENT.pid.pid_18 = str(request[7])
    hl7.ORM_O01_PATIENT.pid.pid_11 = str(request[8])
    hl7.ORM_O01_PATIENT.pid.pid_13 = str(request[9])

    # ORC
    hl7.ORM_O01_ORDER.orc.orc_1 = request[2]
    hl7.ORM_O01_ORDER.ORC.orc_10 = request[3].strftime("%Y-%m-%d")
    hl7.ORM_O01_ORDER.ORC.orc_2 = str(request[1])

    # OBX AND NTE
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.add_group("ORM_O01_OBSERVATION")
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.obx.obx_5 = str(
        request[11])
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.obx.obx_17 = str(
        request[4])
    hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_OBSERVATION.nte.nte_3 = str(
        request[10])
    assert hl7.validate() is True

    return hl7.value
# Michael Sarfati ([email protected]), June 21, 2015
# http://msarfati.wordpress.com
"""
This script constructs an HL7 ORM^O01 message of the following form:

MSH|^~\&|SendingApp|SendingFac|ReceivingApp|ReceivingFac|20150414173000||ORM^O01^ORM_O01|168715|P|2.5
PID|1|A-10001||B-10001|Doe^John
ORC|||||||||20150414120000
OBR|1|1|1100|||||||||||

"""

from hl7apy import core

hl7 = core.Message("ORM_O01")

hl7.msh.msh_3 = "SendingApp"
hl7.msh.msh_4 = "SendingFac"
hl7.msh.msh_5 = "ReceivingApp"
hl7.msh.msh_6 = "ReceivingFac"
hl7.msh.msh_9 = "ORM^O01^ORM_O01"
hl7.msh.msh_10 = "168715"
hl7.msh.msh_11 = "P"

# PID
hl7.add_group("ORM_O01_PATIENT")
hl7.ORM_O01_PATIENT.pid.pid_2 = "1"
hl7.ORM_O01_PATIENT.pid.pid_3 = "A-10001"
hl7.ORM_O01_PATIENT.pid.pid_5 = "B-10001"
hl7.ORM_O01_PATIENT.pid.pid_6 = "DOE^JOHN"
Exemple #7
0
# -*- coding: utf-8 -*-
"""
Created on Sat Jul 11 23:06:43 2020

@author: Saswati
"""

import hl7
from hl7apy.core import Message
from hl7apy import core

name = 'Saswati Pal'
dt = '2020-July-12 00:25:890'

# hl7 = core.Message("ORM_O01")
hl7 = core.Message("ORU_R01")

hl7.msh.msh_2 = "Converting Data"
hl7.msh.msh_5 = "ORU^O01"
hl7.msh.msh_9 = dt
hl7.msh.msh_10 = "168715"
hl7.msh.msh_11 = "P"

age = '67'
gender = 'M'

# PID - Patient Identification
hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.PID.pid_3 = age
hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.PID.pid_5 = gender
hl7.ORU_R01_PATIENT_RESULT.ORU_R01_PATIENT.PID.pid_6 = name
Exemple #8
0
                break
            else:
                message = msgBytes.decode('utf-8')
                messageParsed = parse_message(message)

                print(messageParsed.value.replace('\r','\n'))

                id = messageParsed.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.orc.orc_1.value
                worklist = messageParsed.msh.msh_10.value
                status = messageParsed.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.obx.obx_11.value
                report = messageParsed.ORU_R01_PATIENT_RESULT.ORU_R01_ORDER_OBSERVATION.ORU_R01_OBSERVATION.obx.obx_5.value

                print(str(status))
                update_db(id,status,report)
                    
                hl7 = core.Message("ACK", validation_level=VALIDATION_LEVEL.STRICT)
                hl7.msh.msh_3 = "RequestsServer"
                hl7.msh.msh_4 = "RequestsServer"
                hl7.msh.msh_5 = "ExamsClient"
                hl7.msh.msh_6 = "ExamsClient"
                hl7.msh.msh_10 = worklist
                hl7.msh.msh_9 = "ACK"
                hl7.msh.msh_11 = "P"
                hl7.msa.msa_2 = str(id)
                hl7.msa.msa_1 = "AA"

                c.send(hl7.value.encode('utf-8'))
        c.close()

except KeyboardInterrupt:
    serversocket.shutdown(socket.SHUT_RDWR)
Exemple #9
0
def pedidosclient(sc):
    print("PedidosClient")
    mensagems = []
    numMessage = randint(1, 2500)
    global numMensagens, mensagensMinuto
    for x in range(0, numMessage):
        # Create Message
        hl7 = core.Message("ORM_O01", validation_level=VALIDATION_LEVEL.STRICT)

        # Message Header
        hl7.msh.msh_3 = "PedidosClient"
        hl7.msh.msh_4 = "PedidosClient"
        hl7.msh.msh_5 = "ExamesServer"
        hl7.msh.msh_6 = "ExamesServer"
        hl7.msh.msh_9 = "ORM^O01^ORM_O01"
        hl7.msh.msh_10 = str(randint(1, 200))
        hl7.msh.msh_11 = "P"

        # PID
        # https://corepointhealth.com/resource-center/hl7-resources/hl7-pid-segment

        hl7.add_group("ORM_O01_PATIENT")
        hl7.ORM_O01_PATIENT.pid.pid_2 = str(randint(1, 2500))  # id
        hl7.ORM_O01_PATIENT.pid.pid_3 = str(randint(1, 2500))  # processo
        hl7.ORM_O01_PATIENT.pid.pid_5 = str("Benchmark")
        hl7.ORM_O01_PATIENT.pid.pid_11 = str("Computer")
        hl7.ORM_O01_PATIENT.pid.pid_13 = str("253123456")

        # PV1
        # Não vai ter conter info (mas é necessária para uma mensagem válida)
        # https://corepointhealth.com/resource-center/hl7-resources/hl7-pv1-patient-visit-information-segment

        hl7.ORM_O01_PATIENT.add_group("ORM_O01_PATIENT_VISIT")
        hl7.ORM_O01_PATIENT.ORM_O01_PATIENT_VISIT.add_segment("PV1")
        hl7.ORM_O01_PATIENT.ORM_O01_PATIENT_VISIT.PV1.pv1_1 = "1"
        hl7.ORM_O01_PATIENT.ORM_O01_PATIENT_VISIT.PV1.pv1_2 = "1"

        # ORC
        # https://corepointhealth.com/resource-center/hl7-resources/hl7-obr-segment
        hl7.ORM_O01_ORDER.orc.orc_1 = "SH"
        hl7.ORM_O01_ORDER.ORC.orc_2 = str(randint(1, 2500))  # idpedido
        hl7.ORM_O01_ORDER.ORC.orc_10 = "2017-10-10"

        # OBR
        # https://corepointhealth.com/resource-center/hl7-resources/hl7-obr-segment

        hl7.ORM_O01_ORDER.add_group("ORM_O01_ORDER_DETAIL")
        hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.add_segment(
            "ORM_O01_ORDER_CHOICE")
        hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_ORDER_CHOICE.add_segment(
            "OBR")
        hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_ORDER_CHOICE.OBR.obr_13 = "Observações"
        hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_ORDER_CHOICE.OBR.obr_12 = "Relatorio"
        hl7.ORM_O01_ORDER.ORM_O01_ORDER_DETAIL.ORM_O01_ORDER_CHOICE.OBR.obr_4 = str(
            randint(1, 2500))  # idepisodio

        mensagems.append(hl7.value)
        mensagensMinuto = mensagensMinuto + 1
        numMensagens = numMensagens + 1
        print("Message created")

    a = "$".join(mensagems)
    a += "$"
    s = socket.socket()
    host = socket.gethostname()
    port = 12345
    s.connect((host, port))
    s.send(a)
    s.close
    line = ""
    while not (line.endswith("$")):
        line += s.recv(1024)
    print(line[:-1])
    sch.enter(1, 1, pedidosclient, (sc, ))