HL7-dotnetcore:为什么HL7消息验证失败,并显示错误“消息中未找到消息类型和触发事件值”?

问题描述

我正在使用HL7-dotnetcore package,这似乎非常不错。不幸的是,我在创建新的HL7消息时很挣扎。

我正尝试使用以下代码创建新的MDM_T02消息,如guide (docs)中所述:

Message mdmMessage = new Message();

mdmMessage.AddSegmentMSH(
    "sendingApplication","sendingFacility","receivingApplication","receivingFacility",string.Empty,"MDM_T02",$"Id{DateTime.Now.Ticks}","P","2.6");

但是,我收到以下异常消息:

无法通过错误验证消息-在消息中找不到消息类型和触发事件值

AddSegmentMSH方法期望将messageType作为参数。但是我不知道触发事件。我认为例外来自here。有人知道如何解决吗?

解决方法

问题是因为您以messageType的身份发送MDM_T02。这是无效值。 MDM是消息,T02是事件。那些应该由组件分隔符分隔;默认的CAPS(^)符号。请注意,您正在用下划线(_)符号隔开。

由于这个原因,工具箱无法验证您的消息类型。您应该将"MDM_T02"更改为"MDM^T02"

请参考github上的以下代码:

var MSH_9_comps = MessageHelper.SplitString(MSH_9,this.Encoding.ComponentDelimiter);

if (MSH_9_comps.Count >= 3)
{
    this.MessageStructure = MSH_9_comps[2];
}
else if (MSH_9_comps.Count > 0 && MSH_9_comps[0] != null && MSH_9_comps[0].Equals("ACK"))
{
    this.MessageStructure = "ACK";
}
else if (MSH_9_comps.Count == 2)
{
    this.MessageStructure = MSH_9_comps[0] + "_" + MSH_9_comps[1];
}
else
{
    throw new HL7Exception("Message Type & Trigger Event value not found in message",HL7Exception.UNSUPPORTED_MESSAGE_TYPE);
}

请注意,上面代码中引发的异常与您所提到的相同。还要注意第一行; SplitStringComponentDelimiter上完成。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...