将多个OBX段添加到NHapi.Model.V25.Group.VXU_V04_ORDER时出错

时间:2014-05-01 17:37:23

标签: nhapi

我正在使用NHapi V2.5创建HL7 VXU V04类型消息。 以下是必需的消息结果(来自NIST网站:http://hl7v2-iz-testing.nist.gov/mu-immunization/

我遇到的问题是如何创建四个OBX段(“NHapi.Model.V25.Segment.OBX”)并将其添加到“NHapi.Model.V25.Group.VXU_V04_ORDER”?

下面是我的代码,第5行工作,它会创建多个ORDER,但如果我尝试做同样的操作来创建多个OBSERVATION(第8行),我会收到以下错误: “无法创建结构OBSERVATION的重复#1 - 此结构不重复”

根据HL7规格,观察重复结构,有人请帮忙吗?

非常感谢任何指针或任何建议。

NHapi.Model.V25.Message.VXU_V04 vxuMsg = new VXU_V04();
PipeParser parser = new PipeParser();
for (int i = 0; i < person.Immunizations.Count; i++)
{
NHapi.Model.V25.Group.VXU_V04_ORDER orc = (NHapi.Model.V25.Group.VXU_V04_ORDER)vxuMsg.GetStructure("ORDER", i);
      for (int j = 0; j < 2; j++)
      {
           NHapi.Model.V25.Group.VXU_V04_OBSERVATION observation = (NHapi.Model.V25.Group.VXU_V04_OBSERVATION)orc.GetStructure("OBSERVATION", j);
NHapi.Model.V25.Segment.OBX obx1 = (NHapi.Model.V25.Segment.OBX)obx.GetStructure("OBX");
       }
     NHapi.Model.V25.Segment.RXA im = orc.RXA;
     NHapi.Model.V25.Segment.ORC oc = orc.ORC;
     NHapi.Model.V25.Segment.RXR rxr = orc.RXR;
}

所需的讯息结果

   MSH|^~\&|Test EHR Application|X68||NIST Test Iz Reg|201207010822||VXU^V04^VXU_V04|NIST-IZ-001.00|P|2.5.1|||AL|ER
PID|1||D26376273^^^NIST MPI^MR||Snow^Madelynn^Ainsley^^^^L|Lam^Morgan|20070706|F||2076-8^Native Hawaiian or Other Pacific Islander^CDCREC|32 Prescott Street Ave^^Warwick^MA^02452^USA^L||^PRN^PH^^^657^5558563|||||||||2186-5^non Hispanic or Latino^CDCREC
PD1|||||||||||02^Reminder/Recall - any method^HL70215|||||A|20120701|20120701
NK1|1|Lam^Morgan^^^^^L|MTH^Mother^HL70063|32 Prescott Street Ave^^Warwick^MA^02452^USA^L|^PRN^PH^^^657^5558563
ORC|RE||IZ-783274^NDA|||||||I-23432^Burden^Donna^A^^^^^NIST-AA-1||57422^RADON^NICHOLAS^^^^^^NIST-AA-1^L
RXA|0|1|20120814||140^Influenza, seasonal, injectable, preservative free^CVX|0.5|mL^MilliLiter [SI Volume Units]^UCUM||00^New immunization record^NIP001|7832-1^Lemon^Mike^A^^^^^NIST-AA-1|^^^X68||||Z0860BB|20121104|CSL^CSL Behring^MVX|||CP|A
RXR|C28161^Intramuscular^NCIT|LD^Left Arm^HL70163
OBX|1|CE|64994-7^Vaccine funding program eligibility category^LN|1|V05^VFC eligible - Federally Qualified Health Center Patient (under-insured)^HL70064||||||F|||20120701|||VXC40^Eligibility captured at the immunization level^CDCPHINVS
OBX|2|CE|30956-7^vaccine type^LN|2|88^Influenza, unspecified formulation^CVX||||||F
OBX|3|TS|29768-9^Date vaccine information statement published^LN|2|20120702||||||F
OBX|4|TS|29769-7^Date vaccine information statement presented^LN|2|20120814||||||F

1 个答案:

答案 0 :(得分:0)

   Dim vxuMsg As NHapi.Model.V25.Message.VXU_V04 = New VXU_V04()
        Dim orc As NHapi.Model.V25.Group.VXU_V04_ORDER = DirectCast(vxuMsg.GetStructure("ORDER", 0), NHapi.Model.V25.Group.VXU_V04_ORDER)
Dim observation As NHapi.Model.V25.Group.VXU_V04_OBSERVATION = orc.GetOBSERVATION(0) 'DirectCast(orc.GetStructure("OBSERVATION", 0), NHapi.Model.V25.Group.VXU_V04_OBSERVATION)
        Dim orderobservation As VXU_V04_ORDER = vxuMsg.GetORDER(0)

        Dim obx1 As NHapi.Model.V25.Segment.OBX = DirectCast(observation.GetStructure("OBX"), NHapi.Model.V25.Segment.OBX)
        obx1 = orderobservation.GetOBSERVATION(0).OBX
        obx1.SetIDOBX.Value = "1"
        obx1.ValueType.Value = "CE"
        obx1.ObservationIdentifier.Identifier.Value = "64994-7"
        obx1.ObservationIdentifier.Text.Value = "Vaccine funding program eligibility category"
        obx1.ObservationIdentifier.NameOfCodingSystem.Value = "LN"
        obx1.ObservationSubID.Value = "1"
        Dim ce As New CE(oru01)
        ce.Identifier.Value = "V05"
        ce.Text.Value = "VFC eligible - Federally Qualified Health Center Patient(under-insured)"
        ce.NameOfCodingSystem.Value = "HL70064"
        obx1.GetObservationValue(0).Data = ce
        obx1.ObservationResultStatus.Value = "F"
        obx1.DateTimeOfTheObservation.Time.Value = "20120701"
        obx1.GetObservationMethod(0).Identifier.Value = "VXC40"
        obx1.GetObservationMethod(0).Text.Value = "Eligibility captured at the immunization level"
        obx1.GetObservationMethod(0).NameOfCodingSystem.Value = "CDCPHINVS"

    Dim obx2 As NHapi.Model.V25.Segment.OBX = obx1  
        obx2 = orderobservation.GetOBSERVATION(1).OBX
        obx2.SetIDOBX.Value = "2"
        obx2.ValueType.Value = "CE"
        obx2.ObservationIdentifier.Identifier.Value = "30956-7"
        obx2.ObservationIdentifier.Text.Value = "vaccine type"
        obx2.ObservationIdentifier.NameOfCodingSystem.Value = "LN"
        obx2.ObservationSubID.Value = "2"
        Dim ce2 As New CE(oru01)
        ce2.Identifier.Value = "88"
        ce2.Text.Value = "Influenza, unspecified formulation"
        ce2.NameOfCodingSystem.Value = "CVX"
        obx2.GetObservationValue(0).Data = ce2
        obx2.ObservationResultStatus.Value = "F"

   Dim obx3 As NHapi.Model.V25.Segment.OBX = obx1 'DirectCast(observation.GetStructure("OBX"), NHapi.Model.V251.Segment.OBX)
        obx3 = orderobservation.GetOBSERVATION(2).OBX
        obx3.SetIDOBX.Value = "3"
        obx3.ValueType.Value = "TS"
        obx3.ObservationIdentifier.Identifier.Value = "29768-9"
        obx3.ObservationIdentifier.Text.Value = "Date vaccine information statement published"
        obx3.ObservationIdentifier.NameOfCodingSystem.Value = "LN"
        obx3.ObservationSubID.Value = "2"
        Dim ts3 As New TS(oru01)
        ts3.Time.Value = "20120702"
        obx3.GetObservationValue(0).Data = ts3
        obx3.ObservationResultStatus.Value = "F"