问题描述
我正在使用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);
}
请注意,上面代码中引发的异常与您所提到的相同。还要注意第一行; SplitString
在ComponentDelimiter
上完成。