【问题标题】:Need to parse HL7 message需要解析HL7消息
【发布时间】:2012-12-12 14:10:58
【问题描述】:

我需要解析HL7消息,首先验证消息,然后解析。

 XMLParser xmlParser = new DefaultXMLParser();

 //encode message in XML 
 String hl7MessageInXML = null;
 try {
        hl7MessageInXML = xmlParser.encode(message);
 } catch (HL7Exception e) {
    e.printStackTrace();
 }

【问题讨论】:

  • 这适用于:MSH|^~\&|Meg|XYZHospC|SurOE|XYCtr|20060529090131-050||ADT^A01^ADT_A01|01052901|P|2.5 EVN||200605290901||| |200605290900 PID|||56782445^^^UAReg^PI||KLEINSAMPLE^BARRY^Q^JR||19620910|M||2-9^^HL70005^RA93^^XYZ|260 GOODWIN CREST DRIVE^^BIRMINGHAM^AL ^35 209^^M~尼克尔的泡菜^10000 W 100 大道^伯明翰^AL^35^^O |||||||0105I30001^^^99DEF^AN PV1||I|W^389^1^UABH^ ^^^3||||12345^摩根^REX^J^^^MD^0010^UAMC^L||678 90^GRAINGER^LUCY^X^^^MD^0010^UAMC^L|MED||| ||A0||13579^POTTER^SHER MAN^T^^^MD^0010^UAMC^L||||||||||||||||||||||||| 200605290900 OBX|1|NM|^体高||1.80|m^米^ISO+|||||F
  • 对你有好处,问题出在哪里?
  • 它不适用于其他 HL7 消息

标签: java hl7 hapi


【解决方案1】:

示例代码:

import ca.uhn.hl7v2.parser.*;
import ca.uhn.hl7v2.model.Message;
import ca.uhn.hl7v2.model.v24.message.ACK;

public class ParserDemo {

    public static void main(String args[]) {
        //for demo purposes, we just declare a literal message string 
        String ackMessageString 
            = "MSH|^~\\&|foo|foo||foo|200108151718||ACK^A01^ACK|1|D|2.4|\rMSA|AA\r";

        //instantiate a PipeParser, which handles the "traditional encoding" 
        PipeParser pipeParser = new PipeParser();

        try {
            //parse the message string into a Message object 
            Message message = pipeParser.parse(ackMessageString);

            //if it is an ACK message (as we know it is),  cast it to an 
            // ACK object so that it is easier to work with, and change a value            
            if (message instanceof ACK) {
                ACK ack = (ACK) message;
                ack.getMSH().getProcessingID().getProcessingMode().setValue("P");
            }

            //instantiate an XML parser 
            XMLParser xmlParser = new DefaultXMLParser();

            //encode message in XML 
            String ackMessageInXML = xmlParser.encode(message);

            //print XML-encoded message to standard out
            System.out.println(ackMessageInXML);
        } catch (Exception e) {
            e.printStackTrace();
        }       
    }
}

【讨论】:

  • 你能帮我解析一下吗
【解决方案2】:

尝试使用 HAPI Parser api (http://hl7api.sourceforge.net/)。在这里您可以找到一些关于解析 HL7 消息的示例:

http://ignaciosuay.com/how-to-use-hapi-terser-with-hl7/

http://ignaciosuay.com/how-to-set-repetitions-in-hl7-messages-using-hapi-terser/

希望对你有帮助

【讨论】:

  • 可以更简洁地从具有本地或国际自定义设置的字段中提取字符串,例如 HL7 v2.3 REF 消息的此段:PRD|PP|See T Tan^""^""^^"" |""^^^^""^新西兰||(08)569-7555||14134^NZMC
  • 是的,你可以!您可以在 HL7 消息中获取任何信息。在您的情况下,请尝试 terser.get("/PRD-" + component)。例如:terser.get("/PRD-1) == "PP"。如果您在访问此段时发现任何问题,请告诉我。
  • 谢谢。我正在尝试读取目录中的许多 HL7 文件并启动 terser。有没有办法确定它来自MSH段的文件的哪个版本(v2.3/v2.4)并启动适当的类模型并生成整个HL7文件的XML结构?
  • 嗨!通常此信息在 MSH-12 中,因此您可以像这样检索此信息:terser.get("/MSH-12")。我强烈建议您查看文档:hl7api.sourceforge.net/v23/apidocs/index.html 希望对您有所帮助。
  • 谢谢。我有一个我想解析的自定义 HL7。是否有任何示例简洁代码可以开始将其转换为 XML。我需要遵循哪些步骤?我检查了 HAPI 文档,对于 v2.3,API 中不存在此模型。 pastebin.com/BwCTQ1LR
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2017-10-10
  • 2012-09-04
相关资源
最近更新 更多