2011-12-19 159 views
4

在NHapi中,如果我们不知道它是什么messageType(MSH#9),我们如何解析消息?无先验地解析HL7 messageType知识

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

IMessage parsedMessage = parser.Parse(SampleMessage); 

parsedMessage是在运行时NHapi.Base.Model.GenericMessage.V25我似乎不能在MSH头读取读取消息类型字段,然后重新解析(?)的消息作为消息类型。

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

回答

8

parsedMessage.GetStructureName()会给你消息类型和触发事件。​​将以管道分隔的格式返回给您的消息。

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

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可以找到一些很好的起始码。

+0

嗨,迈克。感谢您的回应。当我使用'parser.Parse(SampleMessage).GetStructureName();'我只能得到“GenericMessage + V25”,即使我期望根据SampleMessage的内容查看与ORMO01相关的内容。 – 2011-12-20 14:14:17

+1

您能否提供样本未标识的消息(例如,没有真实患者数据的消息)?这可能是入站邮件具有解析错误,并且它没有正确进入。 另外,你有你的项目中引用NHapi.Model.V25程序集?我注意到,如果我删除对V25程序集的引用,我将得到与您具有相同的消息类型。 – 2011-12-20 15:32:39

+0

嗨迈克 - 这是缺少的参考。我不明白这些模型是如何工作的 - 我有2.51,但不是2.5。我认为他们是向后兼容的。添加额外的模型DLL使其工作。谢谢。 – 2011-12-20 17:14:49