如何在C#.Net中将XML文件转换为HL7格式

时间:2017-10-24 16:23:26

标签: c# .net xml hl7 hl7-v3

我在将XML数据转换为HL7格式时遇到了问题。我正在使用C#.Net。我正在生成XML文件,但客户端现在期望HL7格式的数据。我已经尝试了很多并在谷歌搜索但没有太多信息可用

与以下文件相同。

 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<LifeCarePatientResult>
  <PatientSettings>
    <PatientSetting Name="Identity">
      <Value>11212</Value>
    </PatientSetting>
    <PatientSetting Name="FirstName">
      <Value></Value>
    </PatientSetting>
    <PatientSetting Name="LastName">
      <Value></Value>
    </PatientSetting>
  </PatientSettings>
  <Measurement Id="86351403-af11-4986-bb26-2d2efa77db8e">
    <DateTime>2017-10-24 16:00:09</DateTime>
    <NoValue>18</NoValue>
    <Mode>SixSecond</Mode>
    <Instrument>030700364</Instrument>
    <Firmware>1D1B1D03</Firmware>
    <LifeCarePanelVersion>1.1.0.32000</LifeCarePanelVersion>
    <Sensor>25691</Sensor>
    <SequenceNumber>620</SequenceNumber>
    <TemperatureWarning>false</TemperatureWarning>
    <HumidityWarning>false</HumidityWarning>
    <FailTotal>0</FailTotal>
    <FailAboveMax_A10>0</FailAboveMax_A10>
    <FailBelowMin_A11>0</FailBelowMin_A11>
    <FailTooLongCount_A12>0</FailTooLongCount_A12>
    <FailDuringAnalysisCount_A13>0</FailDuringAnalysisCount_A13>
    <FailOther>0</FailOther>
  </Measurement>
</LifeCarePatientResult>

1 个答案:

答案 0 :(得分:0)

正如评论和备选问题所指出的,100%.net方式是使用nhapi。但是对于你要看的努力量,你真的应该看一下HL7工具。它们相对便宜,可以为您节省大量时间。

以下是HL7 Soup中的操作方法。它允许你编写.net代码作为转换的一部分,但你会发现你可能不需要。

您需要的第一件事是HL7消息,它将成为您的目标。您的客户可能会提供此信息,但为了演示,这里是HL7 Soup Samples的简化版。

MSH|^~\&|HL7Soup|Instance1|HL7Soup|Instance2|20060922162830|L674-200609221628310220|ORU^R01|ORU000016168|P|2.5.1|||AL |AL PID||75675|1478895^4^M10^PA||XTEST^PATIENT^||19591123| F|||||||||||||||||||||| ORC|RE|F4334|51013174200601|||||^|||||||||||||||| OBR|1|F4334|51013174200601|80048^BASIC METABOLIC PANEL|||20060922152300||||||||^^^^^|023901^PACLAB| ||||||^|CH|F|^^|^^^20060922162659^^GHA||^|||^^^^^^ ^^^^|^^^^^^^^^^|^^^^^^^^^^|^^^^^^^^^^|||||||||| OBX|1|NM|84295^SODIUM^GH|1|145|mmol/L|||||F|||20060922152300|GH

了解此消息超出了此答案的范围,但如果您不确定,请参阅谷歌“HL7教程”,那里有一些有用的视频。 HL7 Soup在解释信息含义方面也非常出色。

现在您有源和目标消息,加载HL7 Soup,并创建一个新的接收器。

Create a new XML receiver

然后将接收器类型更改为“目录扫描器”

enter image description here

现在您只需将其配置为监视等待xml文件的目录。请注意,我已将您的xml文件作为入站模板。

enter image description here

好的,现在我们已经配置了xml的导入,我们需要配置出站HL7消息。我也将它输出为文件。

点击此处,向工作流程添加其他活动。

Add and new activity

现在将此活动更改为文件编写器。

Change Activity to file writer

现在我们需要配置File Writer活动来输出HL7文件。我将它设置为写一个名为c:\Temp\HL7File.HL7的文件,然后还要求它在写入后移动到另一个目录 - 移动它确保一个唯一的文件名。我还将HL7消息放在底部作为模板使用。

HL7 File Writer config

现在我们需要做的就是在XML和HL7消息之间创建一个映射。单击上图中的编辑变换器(黄色箭头)。

这是你得到的。表示源消息和目标消息的两棵树。

XML to HL7 Transformer

现在您需要做的就是将源项目一次拖动到相应的目标项目以创建映射。 此视频更详细地解释了它 - Transforming HL7 data,但最终您最终得到了源和目标消息之间的映射。

以下是作为示例映射的三个字段,但您可以为要映射的每个值执行此操作。 注意映射只是一个指向Source值的xpath语句和一个指向Destination的HL7路径。您可以手动编辑这些以使xpath完全符合消息所需的内容,例如按XML属性名称查找项目。

XML to HL7 mappings

完成所有映射后,只需保存工作流程并返回主HL7 Soup屏幕,然后开始运行工作流程。

enter image description here

现在,您放入目录的每个文件都将转换为HL7并放入新目录。