「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > HLHealth レベル 7)

HLHealth レベル 7)

2024 年 11 月 2 日に公開
ブラウズ:652

HLHealth Level Seven)

HL7 はヘルス レベル 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 データはバイトのストリームとして送信されるため、複数のメッセージを連続ストリームで送信できます。これは混乱を引き起こす可能性があるため、各メッセージの開始点と終了点を明確に定義する必要があります。このために、Minimum Lower Layer Protocol (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: 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 形式でフォーマットします。ここでは 2 つのセグメントが生成されています: MSH (メッセージ ヘッダー)

リリースステートメント この記事は次の場所に転載されています: https://dev.to/fullsnacker/hl7-health-level-seven-1738?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3