【问题标题】:Parsing an HL7 without a priori messageType knowledge在没有先验 messageType 知识的情况下解析 HL7
【发布时间】:2012-01-23 22:31:07
【问题描述】:

在 NHapi 中,如果我们不知道消息类型 (MSH#9) 是什么,我们如何解析消息?

var parser = new NHapi.Base.Parser.PipeParser();

IMessage parsedMessage = parser.Parse(SampleMessage);

parsedMessage 在运行时是 NHapi.Base.Model.GenericMessage.V25,我似乎无法读取 MSH 标头以读取 MessageType 字段,然后将消息重新解析(?)为该消息类型。

我对缺少文档和示例感到沮丧。也许我离基地很远。我对 HL7 很陌生,但在尝试使用 NHapi 之前,我认为我对 HL7 规范的理解很好。

【问题讨论】:

    标签: c# hl7 nhapi


    【解决方案1】:

    parsedMessage.GetStructureName() 会给你消息类型和触发事件。 parser.Encode(parsedMessage) 将以竖线分隔的格式返回消息。

    以下代码展示了如何获取消息类型以及如何获取管道格式的原始消息。

    public static String ParseMessage(String message)
    {
        var parser = new NHapi.Base.Parser.PipeParser();
        var parsedMessage = parser.Parse(message);
    
        //Get the message type and trigger event
        var msgType = parsedMessage.GetStructureName();
    
        //Get the message in raw, pipe-delimited format
        var pipeDelimitedMessage = parser.Encode(parsedMessage);
    
        return pipeDelimitedMessage;
    }
    

    可以在hapi examples site 找到一些好的入门代码。

    【讨论】:

    • 嗨,迈克。感谢您的回复。当我使用parser.Parse(SampleMessage).GetStructureName(); 时,我只会得到“GenericMessage+V25”,即使我希望根据 SampleMessage 的内容看到与 ORMO01 相关的内容。
    • 您能否提供一个样本去识别信息(例如,一条没有真实患者数据的信息)?可能是入站消息有解析错误并且没有正确进入。另外,您的项目中是否引用了 NHapi.Model.V25 程序集?我注意到,如果我删除对 V25 程序集的引用,我会得到与你相同的消息类型。
    • 嗨,迈克 - 这是缺少的参考。我不明白模型是如何工作的——我有 2.51,但不是 2.5。我认为它们是向后兼容的。添加额外的模型 dll 使其工作。谢谢。
    • 理想情况下,新版本的 HL7 与旧消息相比是向后的。如果您想使用一个规范模型/版本,您可能需要考虑在将其发送到将所有消息版本更改为 2.5.1 的 nHapi 之前创建一个预处理器。这样,您可以更通用地处理。祝你好运。
    • @MikeStonis:您能否为 .NET 用户/测试人员提供“好的入门代码”。您在上面Hapi Examples site 提供的链接适用于 Java,而不适用于 C#.NET。
    猜你喜欢
    • 1970-01-01
    • 2020-04-19
    • 2011-08-23
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2020-03-03
    相关资源
    最近更新 更多