如何使用 HL7-dotnetcore 处理 VARIES 数据类型?

How to deal with a VARIES datatype using HL7-dotnetcore?

我想创建一条 HL7 MDM 消息,目前必须支持 v2.3 和 v2.6。我想在 OBX 段中添加一个 Base64 文档。对于 2.6 版,我只需执行以下操作:

Segment obxSegment = new Segment("OBX", hl7Encoding);
mdmMessage.AddNewSegment(obxSegment);

// Sequence Id
obxSegment.AddNewField("1", 1);

// Value Type
obxSegment.AddNewField("ED", 2);

// Observation Value
obxSegment.AddNewField("theBase64Document", 5);

但我发现 2.3 版需要使用 VARIES 数据类型进行更复杂的设置。我发现了一些使用 nHapi 包的伪代码(不再主动维护)

OBX obx = mdm_message.GetOBX();
obx.SetIDOBX.Value = "1";
obx.ValueType.Value = "ED"; // Encapsulated Data
Varies obx_value = obx.GetObservationValue(0);
ED data = new ED(mdm_message);
data.SourceApplication.NamespaceID.Value = "ID";
data.DataSubtype.Value = type;
data.Encoding.Value = "Base64";
data.Data.Value = file;
obx_value.Data = data;

有人知道如何使用 HL7-dotnetcore 包处理此类 VARIES 数据类型吗?我如何为 OBX.5 位置创建这样的构造以发送具有旧消息版本的文档?

显然,HL7-dotnetcore 不支持这个。

AddNewField(Field field, int position = -1) method and the Fieldclass请参考github上的源代码。似乎没有在那里处理数据类型。

我从来没有使用过该工具包,但据我了解,该工具包不支持数据类型。 Toolkit 没有 nHapi 那么复杂和成熟。它很简单,也很简单。归根结底,HL7 消息是一个字符串。

考虑到这一点,您应该能够按照与其他版本相同的方式设置值,如下所示:

obxSegment.AddNewField("theBase64Document", 5);

这应该能正确解析消息。