"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > HLHealth 레벨 7)

HLHealth 레벨 7)

2024-11-02에 게시됨
검색:343

HLHealth Level Seven)

HL7은 Health Level 7이라고도 알려져 있으며 다양한 의료 시스템에서 전자 정보를 통합, 교환, 관리 및 검색하는 데 사용되는 메시징 및 임상 표준 표준입니다. 환자의 병원 입원과 같은 이벤트에 의해 촉발되는 트랜잭션을 기반으로 하는 프로토콜입니다. HL7은 공중 보건 분야의 정보 교환을 촉진합니다.

이는 사용되는 플랫폼 및 기술에 관계없이 의료 부문의 데이터 교환에 대해 널리 인정되는 국제 표준입니다.

HL7을 사용하는 이유는 무엇입니까?

의료 시스템은 일반적으로 다양한 프로그래밍 언어와 다양한 기능으로 개발된 다양한 애플리케이션을 사용합니다. 예를 들어, 병원에는 복잡한 맞춤형 시스템이 있는 경우가 많지만 일반의는 기성 진료 관리 소프트웨어를 사용하는 경우가 많습니다. 의료 연구 기관에서는 대학과 같은 대규모 네트워크의 일부인 소프트웨어를 사용할 수 있습니다. 많은 경우 이들 기관은 환자에 대한 데이터를 교환해야 합니다.

HL7의 목적은 의료 기관이 사용하는 시스템에 관계없이 승인된 사람이라면 누구나 액세스할 수 있는 일관된 데이터를 생성할 수 있도록 하는 것입니다. 의료 기관 간의 상호 운용성을 위해서는 서로 다른 시스템의 인터페이스가 HL7과 같은 공통 프로토콜을 사용해야 합니다.

HL7은 누가 사용하나요?

  • 병원
  • 의료영상센터
  • 의사들
  • 정부 진료소
  • 실험실
  • 레지던스
  • 약국 등

HL7 메시지 유형

  • ACK — 일반 승인
  • ADT — 환자 입원, 퇴원 및 이송
  • BAR — 결제 계정 생성/변경
  • DFT — 상세 금융 거래
  • MDM — 의료 문서 관리
  • MFN — 마스터 파일 알림
  • ORM — 주문(약국/치료)
  • ORU — 관찰 결과(원치 않는)
  • QRY — 쿼리, 원래 모드
  • RAS — 약국/치료 관리
  • RDE — 약국/치료 코드화된 주문
  • RGV — 약국/치료 관리
  • SIU — 원치 않는 일정 정보

가장 일반적인 ADT 메시지:

  • ADT-A01: 환자 입원.
  • ADT-A02: 환자 이송.
  • ADT-A03: 환자 퇴원.
  • ADT-A04: 환자 등록.
  • ADT-A05: 환자 사전 입원.
  • ADT-A08: 환자 정보를 업데이트합니다.
  • ADT-A11: 환자의 입원을 취소합니다.
  • ADT-A12: 환자 이송을 취소합니다.

HL7 메시지는 어떻게 전송되나요?

일반적으로 HL7 메시지는 병원 네트워크와 같은 로컬 네트워크를 통해 TCP/IP 프로토콜을 사용하여 전송됩니다. TCP/IP 데이터는 바이트 스트림으로 전송되므로 여러 메시지를 연속 스트림으로 보낼 수 있습니다. 이는 혼란을 야기할 수 있으므로 각 메시지의 시작점과 끝점을 명확하게 정의하는 것이 필요합니다. 이를 위해 각 메시지에 머리글과 바닥글을 추가하는 최소 하위 계층 프로토콜(MLP)이 사용됩니다.

최소 하위 계층 프로토콜(MLP)은 물리 계층이나 데이터 링크 계층 등 네트워크 스택의 하위 계층에서 작동하는 기본 프로토콜을 의미합니다. 각 메시지의 시작과 끝은 물론 다음 메시지의 시작도 올바르게 식별할 수 있도록 HL7 메시지를 머리글과 바닥글로 래핑하는 방법을 지정하여 네트워크 장치 간 통신에 필요한 기본 기능을 제공합니다.

HL7 메시지를 가져와 객체에 저장한 다음 해당 세부정보를 콘솔에 인쇄하는 Java 프로그램의 기본 예는 다음과 같습니다.

public class HL7Message {
    private String message;

    public HL7Message(String message) {
        this.message = message;
    }

    public String getMessageType() {
        return message.split("\\|")[8];
    }

    public String getPatientID() {
        return message.split("\\|")[3];
    }

    public String getPatientName() {
        return message.split("\\|")[5];
    }

    public void printDetails() {
        System.out.println("HL7 Message Details:");
        System.out.println("Message Type: "   getMessageType());
        System.out.println("Patient ID: "   getPatientID());
        System.out.println("Patient Name: "   getPatientName());
    }

    public static void main(String[] args) {
        String hl7Message = "MSH|^~\\&|HIS|RIH|EKG|EKG|202308120830||ADT^A01|MSG00001|P|2.5|"
                            "PID|1||123456||DOE^JOHN^A||19680219|M|||123 MAIN ST^^ANYTOWN^OH^12345|(555)555-1234|||M|NON|||123-45-6789";

        HL7Message message = new HL7Message(hl7Message);
        message.printDetails();
    }
}

설명:

HL7Message 클래스: 이 클래스는 HL7 메시지를 포함하며 메시지 유형, 환자 ID, 환자 이름과 같은 몇 가지 기본 세부정보를 추출하고 표시하는 메서드를 제공합니다.

getMessageType: 이 메소드는 HL7(필드 9)에서 메시지 유형을 추출합니다.

getPatientID: 이 메소드는 환자 ID(필드 4)를 추출합니다.

getPatientName: 이 메소드는 환자 이름(필드 6)을 추출합니다.

printDetails: 이 메소드는 HL7 메시지의 세부정보를 인쇄합니다.

main: 기본 메서드에서는 샘플 HL7 메시지를 정의하고, 메시지가 포함된 HL7Message 객체를 생성하고, 세부정보를 인쇄합니다.

이 프로그램은 기본이며 매우 간단한 HL7 메시지만 처리합니다. 요구 사항에 따라 HL7 메시지의 전체 구조를 처리하기 위해 고급 구현이 필요할 수 있습니다.

미리 채워진 HL7Message 객체에서 HL7 메시지를 생성하는 기본 Java 프로그램:

public class HL7Message {
    private String sendingApplication;
    private String sendingFacility;
    private String receivingApplication;
    private String receivingFacility;
    private String messageDateTime;
    private String messageType;
    private String messageControlID;
    private String processingID;
    private String versionID;
    private String patientID;
    private String patientLastName;
    private String patientFirstName;
    private String patientDOB;
    private String patientGender;
    private String patientAddress;
    private String patientPhoneNumber;
    private String patientSSN;

    // Constructor
    public HL7Message(String sendingApplication, String sendingFacility, String receivingApplication,
                      String receivingFacility, String messageDateTime, String messageType,
                      String messageControlID, String processingID, String versionID, String patientID,
                      String patientLastName, String patientFirstName, String patientDOB, String patientGender,
                      String patientAddress, String patientPhoneNumber, String patientSSN) {
        this.sendingApplication = sendingApplication;
        this.sendingFacility = sendingFacility;
        this.receivingApplication = receivingApplication;
        this.receivingFacility = receivingFacility;
        this.messageDateTime = messageDateTime;
        this.messageType = messageType;
        this.messageControlID = messageControlID;
        this.processingID = processingID;
        this.versionID = versionID;
        this.patientID = patientID;
        this.patientLastName = patientLastName;
        this.patientFirstName = patientFirstName;
        this.patientDOB = patientDOB;
        this.patientGender = patientGender;
        this.patientAddress = patientAddress;
        this.patientPhoneNumber = patientPhoneNumber;
        this.patientSSN = patientSSN;
    }

    // Método para generar el mensaje HL7
    public String generateHL7Message() {
        StringBuilder hl7Message = new StringBuilder();

        // MSH Segment
        hl7Message.append("MSH|^~\\&|")
                  .append(sendingApplication).append("|")
                  .append(sendingFacility).append("|")
                  .append(receivingApplication).append("|")
                  .append(receivingFacility).append("|")
                  .append(messageDateTime).append("||")
                  .append(messageType).append("|")
                  .append(messageControlID).append("|")
                  .append(processingID).append("|")
                  .append(versionID).append("\r");

        // PID Segment
        hl7Message.append("PID|1||")
                  .append(patientID).append("||")
                  .append(patientLastName).append("^")
                  .append(patientFirstName).append("||")
                  .append(patientDOB).append("|")
                  .append(patientGender).append("|||")
                  .append(patientAddress).append("|")
                  .append(patientPhoneNumber).append("|||||||")
                  .append(patientSSN).append("\r");

        return hl7Message.toString();
    }

    public static void main(String[] args) {
        // Llenar los datos del objeto HL7Message
        HL7Message message = new HL7Message(
            "HIS",               // sendingApplication
            "RIH",               // sendingFacility
            "EKG",               // receivingApplication
            "EKG",               // receivingFacility
            "202308120830",      // messageDateTime
            "ADT^A01",           // messageType
            "MSG00001",          // messageControlID
            "P",                 // processingID
            "2.5",               // versionID
            "123456",            // patientID
            "DOE",               // patientLastName
            "JOHN",              // patientFirstName
            "19680219",          // patientDOB
            "M",                 // patientGender
            "123 MAIN ST^^ANYTOWN^OH^12345", // patientAddress
            "(555)555-1234",     // patientPhoneNumber
            "123-45-6789"        // patientSSN
        );

        // Generar y mostrar el mensaje HL7
        String hl7Message = message.generateHL7Message();
        System.out.println("Generated HL7 Message:\n"   hl7Message);
    }
}

설명:

HL7Message 클래스: 이 클래스에는 전송 애플리케이션, 수신 애플리케이션 및 환자 세부정보에 대한 정보를 포함하여 간단한 HL7 메시지에 필요한 필드가 포함되어 있습니다.

generateHL7Message: 이 메서드는 제공된 필드를 사용하여 HL7 메시지를 구성하고 표준 HL7 형식으로 형식을 지정합니다. 여기서는 MSH(메시지 헤더)

라는 두 개의 세그먼트가 생성됩니다.
릴리스 선언문 이 글은 https://dev.to/fullsnacker/hl7-health-level-seven-1738?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3