Why does a DT succeed in test while failed in run time
Hi, guys,
I've written a DT for a partner which transfers a csv file into SDA3.
I', using record map to gather data from a folder storing csv files and using the DT to tranfer the records into sda3 entities.
The followings are the codes of that DT:
Class POC.DT.CSV2SDA3 Extends Ens.DataTransformDTL [ DependsOn = (User.PhysicalExam.Record, POC.SDA.Container) ]
{
Parameter IGNOREMISSINGSOURCE = 1;
Parameter REPORTERRORS = 1;
Parameter TREATEMPTYREPEATINGFIELDASNULL = 0;
XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]
{
<transform sourceClass='User.PhysicalExam.Record' targetClass='POC.SDA.Container' create='new' language='objectscript' >
<assign value='"AddOrUpdate"' property='target.Action' action='set' />
<assign value='"TRDY"' property='target.SendingFacility' action='set' />
<assign value='1' property='target.UpdateECRDemographics' action='set' />
<assign value='source.ExamNumber' property='target.Patient.PatientNumbers.(1).Number' action='set' />
<assign value='"TRDY"' property='target.Patient.PatientNumbers.(1).Organization.Code' action='set' />
<assign value='"同人大友"' property='target.Patient.PatientNumbers.(1).Organization.Description' action='set' />
<assign value='"MRN"' property='target.Patient.PatientNumbers.(1).NumberType' action='set' />
<assign value='source.CertNumber' property='target.Encounters.(1).EncounterNumber' action='set' />
<if condition='"男" = source.Gender' >
<true>
<assign value='"M"' property='target.Patient.Gender.Code' action='set' />
<assign value='"男"' property='target.Patient.Gender.Description' action='set' />
</true>
<false>
<assign value='"F"' property='target.Patient.Gender.Code' action='set' />
<assign value='"女"' property='target.Patient.Gender.Description' action='set' />
</false>
</if>
<assign value='source.DOB_" 00:00:00"' property='target.Patient.BirthTime' action='set' />
<assign value='source.Dept1' property='target.Patient.Organizations.(1).Organization.Description' action='set' />
<assign value='source.EmpNumber' property='target.Patient.Organizations.(1).Organization.EId' action='set' />
<assign value='source.BranchNumber' property='target.Patient.Organizations.(1).Organization.Extension' action='set' />
<assign value='source.ExamStTime_" 00:00:00"' property='target.Encounters.(1).FromTime' action='set' />
<assign value='source.CertNumber' property='target.Patient.MPIID' action='set' />
<assign value='source.MaritalStatus' property='target.Patient.MaritalStatus.Description' action='set' />
<assign value='source.MobileNumber' property='target.Patient.ContactInfo.MobilePhoneNumber' action='set' />
<assign value='source.ExamNumber' property='target.Patient.Name.PreferredName' action='set' />
<assign value='source.ExamNumber' property='target.Patient.Name.FamilyName' action='set' />
<assign value='source.ExamNumber' property='target.Patient.Name.GivenName' action='set' />
<assign value='source.CertNumber' property='target.PhysicalExams.(1).EncounterNumber' action='set' />
<assign value='source.ExamNumber_"Height"' property='target.PhysicalExams.(1).PhysExamCode.Code' action='set' />
<assign value='"身高"' property='target.PhysicalExams.(1).PhysExamCode.Description' action='set' />
<assign value='source.ExamStTime_" 00:00:00"' property='target.PhysicalExams.(1).PhysExamTime' action='set' />
<assign value='"身高"' property='target.PhysicalExams.(1).PhysExamObs' action='set' />
<assign value='"身高"' property='target.PhysicalExams.(1).PhysExamObs.Description' action='set' />
<assign value='source.Height' property='target.PhysicalExams.(1).PhysExamObsValue.Description' action='set' />
<assign value='"cm"' property='target.PhysicalExams.(1).PhysExamObsQualifier.Description' action='set' />
<assign value='source.CertNumber' property='target.PhysicalExams.(2).EncounterNumber' action='set' />
<assign value='source.ExamNumber_"Weight"' property='target.PhysicalExams.(2).PhysExamCode.Code' action='set' />
<assign value='"体重"' property='target.PhysicalExams.(2).PhysExamCode.Description' action='set' />
<assign value='source.ExamStTime_" 00:00:00"' property='target.PhysicalExams.(2).PhysExamTime' action='set' />
<assign value='"体重"' property='target.PhysicalExams.(2).PhysExamObs' action='set' />
<assign value='"体重"' property='target.PhysicalExams.(2).PhysExamObs.Description' action='set' />
<assign value='source.Weight' property='target.PhysicalExams.(2).PhysExamObsValue.Description' action='set' />
<assign value='"kg"' property='target.PhysicalExams.(2).PhysExamObsQualifier.Description' action='set' />
<assign value='source.CertNumber' property='target.LabOrders.(1).EncounterNumber' action='set' />
<assign value='source.CertNumber' property='target.LabOrders.(1).Result.EncounterNumber' action='set' />
<assign value='"尿常规"' property='target.LabOrders.(1).Result.ResultType' action='set' />
<assign value='source.CertNumber' property='target.LabOrders.(1).Result.ResultItems.(1).EncounterNumber' action='set' />
<assign value='"1"' property='target.LabOrders.(1).Result.ResultItems.(1).SubId' action='set' />
<assign value='"bingliguanxing"' property='target.LabOrders.(1).Result.ResultItems.(1).TestItemCode.Code' action='set' />
<assign value='"病理管型"' property='target.LabOrders.(1).Result.ResultItems.(1).TestItemCode.Description' action='set' />
<assign value='source.UBadguanxing' property='target.LabOrders.(1).Result.ResultItems.(1).ResultValue' action='set' />
<assign value='"个"' property='target.LabOrders.(1).Result.ResultItems.(1).ResultValueUnits' action='set' />
</transform>
}
}
POC.SDA.Container is a entity class inherited from HS.SDA3.Container, as below:
Class POC.SDA.Container Extends (%Persistent, %XML.Adaptor, HS.SDA3.Container)
{}
The I used test the DT in management portal, with the input:
<test>
<Record>
<ExamNumber>1805030190021</ExamNumber>
...
<UBadguanxing>0</UBadguanxing>
...
</Record>
</test>
The value of UBadguanxing will trigger the generation of labresult.
the result is as below:
<Container> <Patient> <MPIID>210304198510110216</MPIID> ..... <LabOrders> <LabOrder> <PlacerId>TRDY</PlacerId> <Result> <ResultType>尿常规</ResultType> <ResultItems> <LabResultItem> <TestItemCode> <Code>bingliguanxing</Code> <Description>病理管型</Description> </TestItemCode> <ResultValue>0</ResultValue> <SubId>1</SubId> <ResultValueUnits>个</ResultValueUnits> <EncounterNumber>210304198510110216</EncounterNumber> </LabResultItem> </ResultItems> <EncounterNumber>210304198510110216</EncounterNumber> </Result> <Specimens> <Specimen> <EncounterNumber>210304198510110216</EncounterNumber> <SpecimenType> <Code>Urine</Code> <Description>尿</Description> </SpecimenType> </Specimen> </Specimens> <EncounterNumber>210304198510110216</EncounterNumber> </LabOrder> </LabOrders> <Action>AddOrUpdate</Action> <UpdateECRDemographics>true</UpdateECRDemographics> <SendingFacility>TRDY</SendingFacility> </Container>
Please notice that the node LabOrder has content.
Then I used the production which reads a csv file into the record map and calling the dt , the same data was loaded into record map, but the output SDA file looks as below:
......
<LabOrders>
<LabOrder xsi:nil="true"></LabOrder>
</LabOrders>
......
LabOrder is Empty.
Any idea will be helpful. Thank you guys.