procedure TForm1.btnDatosXMlClick(Sender: TObject);
var
xmlDocum: TXMLDocument;
startItemNode: IXMLNode;
ANodo, ANodoReceiver, ANodoSender, ANodocontrolActProcess: IXMLNode;
subNodoDataCenter, subNodoSubject, subNodoExamenes: IXMLNode;
begin
lvDatosGenerales.Clear;
lvDatosPactesAndExam.Clear;
xmlDocum:= TXMLDocument.Create(Self);
try
xmlDocum.XML.Text:= XMLStringToWideString(ConvertirCaracteresNoValidos(
StringReplace(mmo1.Lines.Text, '"utf-8"', '"iso-8859-1"',
[rfReplaceAll, rfIgnoreCase])));
xmlDocum.DOMVendor:= OpenXMLFactory;
xmlDocum.Active:= True;
//nodos en datos generales
//startItemNode:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:POOR_IN200901UV').ChildNodes.First;
ANodo:= startItemNode;
repeat
with lvDatosGenerales.Items.Add do
begin
Caption:= ANodo.ChildNodes['hl7:templateId'].Text;
SubItems.Add(ANodo.ChildNodes['extension'].Text);
SubItems.Add(ANodo.ChildNodes['assigningAuthorityName'].Text);
ANodo.ChildNodes['hl7:id'].Text;
SubItems.Add(ANodo.ChildNodes['root'].Text);
SubItems.Add(ANodo.ChildNodes['extension'].Text);
SubItems.Add(ANodo.ChildNodes['displayable'].Text);
ANodo.ChildNodes['hl7:creationTime'].Text;
SubItems.Add(ANodo.ChildNodes['value'].Text);
ANodo.ChildNodes['hl7:versionCode'].Text;
SubItems.Add(ANodo.ChildNodes['code'].Text);
ANodo.ChildNodes['hl7:interactionId'].Text;
SubItems.Add(ANodo.ChildNodes['root'].Text);
SubItems.Add(ANodo.ChildNodes['extension'].Text);
ANodo.ChildNodes['hl7:processingCode'].Text;
SubItems.Add(ANodo.ChildNodes['code'].Text);
ANodo.ChildNodes['hl7:processingModeCode'].Text;
SubItems.Add(ANodo.ChildNodes['code'].Text);
ANodo.ChildNodes['hl7:acceptAckCode'].Text;
SubItems.Add(ANodo.ChildNodes['code'].Text);
ANodo.ChildNodes['hl7:receiver'].Text;
SubItems.Add(ANodo.ChildNodes['typeCode'].Text);
ANodo.ChildNodes['hl7:receiver'].ChildNodes['hl7:device'].Text;
SubItems.Add(ANodo.ChildNodes['classCode'].Text);
SubItems.Add(ANodo.ChildNodes['determinerCode'].Text);
//continuamos extrayendo el xml
//nodo -> receiver <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:receiver').ChildNodes.FindNode('hl7:device');
ANodoReceiver:=ANodo;
repeat
with lvDatosGenerales.Items.Add do
begin
Caption:= ANodoReceiver.ChildNodes['hl7:id'].Text;
SubItems.Add(ANodoReceiver.ChildNodes['root'].Text);
SubItems.Add(ANodoReceiver.ChildNodes['extension'].Text);
ANodoReceiver.ChildNodes['hl7:softwareName'].Text;
SubItems.Add(ANodoReceiver.ChildNodes['displayName'].Text);
end;
until ANodoReceiver = nil;
ANodo.ChildNodes['hl7:sender'].Text;
SubItems.Add(ANodo.ChildNodes['typeCode'].Text);
ANodo.ChildNodes['hl7:sender'].ChildNodes['hl7:device'].Text;
SubItems.Add(ANodo.ChildNodes['classCode'].Text);
SubItems.Add(ANodo.ChildNodes['determinerCode'].Text);
//continuamos extrayendo el xml
//nodo -> sender <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:sender').ChildNodes.FindNode('hl7:device');
ANodoSender:=ANodo;
repeat
with lvDatosGenerales.Items.Add do
begin
Caption:= ANodoSender.ChildNodes['hl7:id'].Text;
SubItems.Add(ANodoSender.ChildNodes['root'].Text);
SubItems.Add(ANodoSender.ChildNodes['extension'].Text);
ANodoSender.ChildNodes['hl7:softwareName'].Text;
SubItems.Add(ANodoSender.ChildNodes['displayName'].Text);
end;
until ANodoSender = nil;
ANodo.ChildNodes['hl7:controlActProcess'].Text;
SubItems.Add(ANodo.ChildNodes['classCode'].Text);
SubItems.Add(ANodo.ChildNodes['moodCode'].Text);
//continuamos extrayendo el xml
//nodo -> controlActProcess <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:controlActProcess');
ANodocontrolActProcess:=ANodo;
repeat
with lvDatosGenerales.Items.Add do
begin
Caption:= ANodocontrolActProcess.ChildNodes['hl7:code'].Text;
SubItems.Add(ANodocontrolActProcess.ChildNodes['code'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['codeSystem'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['codeSystemName'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['displayName'].Text);
ANodocontrolActProcess.ChildNodes['hl7:languageCode'].Text;
SubItems.Add(ANodocontrolActProcess.ChildNodes['code'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['codeSystem'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['codeSystemName'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['displayName'].Text);
ANodocontrolActProcess.ChildNodes['hl7:dataEnterer'].Text;
SubItems.Add(ANodocontrolActProcess.ChildNodes['contextControlCode'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['typeCode'].Text);
//continuamos extrayendo el xml
//nodo -> controlActProcess - dataEnterer <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:controlActProcess').ChildNodes.FindNode('hl7:dataEntererdataEnterer');
subNodoDataCenter:=ANodo;
repeat
with lvDatosPactesAndExam.Items.Add do
begin
Caption:= subNodoDataCenter.ChildNodes['hl7:assignedPerson'].Text;
SubItems.Add(subNodoDataCenter.ChildNodes['hl7:id'].Text);
SubItems.Add(subNodoDataCenter.ChildNodes['hl7:assignedPerson'].Text);
SubItems.Add(subNodoDataCenter.ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:name'].Text);
SubItems.Add(subNodoDataCenter.ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:name'].ChildNodes['hl7:given'].Text);
SubItems.Add(subNodoDataCenter.ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:name'].ChildNodes['hl7:family'].Text);
end;
until subNodoDataCenter = nil;
ANodocontrolActProcess.ChildNodes['hl7:subject'].Text;
SubItems.Add(ANodocontrolActProcess.ChildNodes['typeCode'].Text);
SubItems.Add(ANodocontrolActProcess.ChildNodes['contextConductionInd'].Text);
ANodocontrolActProcess.ChildNodes['hl7:subject'].ChildNodes['hl7:observationRequest'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['moodCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['negationInd'].Text);
//continuamos extrayendo el xml
//nodo -> controlActProcess - subject <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:controlActProcess').ChildNodes.FindNode('hl7:subject').ChildNodes.FindNode('hl7:observationRequest');
subNodoSubject:=ANodo;
repeat
with lvDatosPactesAndExam.Items.Add do
begin
Caption:= subNodoSubject.ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoSubject.ChildNodes['root'].Text);
SubItems.Add(subNodoSubject.ChildNodes['extension'].Text);
subNodoSubject.ChildNodes['hl7:code'].Text;
SubItems.Add(subNodoSubject.ChildNodes['code'].Text);
SubItems.Add(subNodoSubject.ChildNodes['codeSystem'].Text);
SubItems.Add(subNodoSubject.ChildNodes['codeSystemName'].Text);
SubItems.Add(subNodoSubject.ChildNodes['displayName'].Text);
subNodoSubject.ChildNodes['hl7:text'].Text;
subNodoSubject.ChildNodes['hl7:statusCode'].Text;
SubItems.Add(subNodoSubject.ChildNodes['code'].Text);
subNodoSubject.ChildNodes['hl7:device'].Text;
SubItems.Add(subNodoSubject.ChildNodes['typeCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['contextControlCode'].Text);
subNodoSubject.ChildNodes['hl7:device'].ChildNodes['hl7:assignedDevice'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
subNodoSubject.ChildNodes['hl7:device'].ChildNodes['hl7:assignedDevice'].ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoSubject.ChildNodes['root'].Text);
SubItems.Add(subNodoSubject.ChildNodes['extension'].Text);
subNodoSubject.ChildNodes['hl7:device'].ChildNodes['hl7:assignedDevice'].ChildNodes['hl7:assignedDevice'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['determinerCode'].Text);
subNodoSubject.ChildNodes['hl7:device'].ChildNodes['hl7:assignedDevice'].ChildNodes['hl7:assignedDevice'].ChildNodes['hl7:manufacturerModelName'].Text;
SubItems.Add(subNodoSubject.ChildNodes['code'].Text);
SubItems.Add(subNodoSubject.ChildNodes['displayName'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].Text;
SubItems.Add(subNodoSubject.ChildNodes['typeCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['contextControlCode'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoSubject.ChildNodes['root'].Text);
SubItems.Add(subNodoSubject.ChildNodes['extension'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['determinerCode'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:id'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:name'].Text;
SubItems.Add(subNodoSubject.ChildNodes['hl7:given'].Text);
SubItems.Add(subNodoSubject.ChildNodes['hl7:family'].Text);
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:administrativeGenderCode'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:birthTime'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:direction'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:phone'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:celphone'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:city'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:zone'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:pregnant'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:client'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:clientName'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:clientNit'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:doctor'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:doctorName'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:doctorNit'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:email'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:bed'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:diagnosis'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:wight'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:size'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:affiliateType'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:userType'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:copayment'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:costCenter'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:costCenterName'].Text;
subNodoSubject.ChildNodes['hl7:recordTarget'].ChildNodes['hl7:patient'].ChildNodes['hl7:patientPerson'].ChildNodes['hl7:renalControl'].Text;
subNodoSubject.ChildNodes['hl7:author'].Text;
SubItems.Add(subNodoSubject.ChildNodes['typeCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['contextControlCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoSubject.ChildNodes['root'].Text);
SubItems.Add(subNodoSubject.ChildNodes['extension'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:telecom'].Text;
SubItems.Add(subNodoSubject.ChildNodes['value'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:assignedPerson'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['determinerCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:name'].Text;
SubItems.Add(subNodoSubject.ChildNodes['hl7:given'].Text);
SubItems.Add(subNodoSubject.ChildNodes['hl7:family'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:asLocatedEntity'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:asLocatedEntity'].ChildNodes['location'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['determinerCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:assignedPerson'].ChildNodes['hl7:asLocatedEntity'].ChildNodes['location'].ChildNodes['hl7:name'].Text;
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:representedOrganization'].Text;
SubItems.Add(subNodoSubject.ChildNodes['classCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['determinerCode'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:representedOrganization'].ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoSubject.ChildNodes['root'].Text);
SubItems.Add(subNodoSubject.ChildNodes['extension'].Text);
SubItems.Add(subNodoSubject.ChildNodes['assigningAuthorityName'].Text);
subNodoSubject.ChildNodes['hl7:author'].ChildNodes['hl7:assignedEntity'].ChildNodes['hl7:representedOrganization'].ChildNodes['hl7:name'].Text;
subNodoSubject.ChildNodes['hl7:component2'].Text;
SubItems.Add(subNodoSubject.ChildNodes['typeCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['contextControlCode'].Text);
SubItems.Add(subNodoSubject.ChildNodes['contextConductionInd'].Text);
end;
until subNodoSubject = nil;
//continuamos extrayendo el xml
//nodo -> controlActProcess - subject - component2 (son los examenes) <-
ANodo:= xmlDocum.DocumentElement.ChildNodes.FindNode('hl7:controlActProcess').ChildNodes.FindNode('hl7:subject').ChildNodes.FindNode('hl7:observationRequest').ChildNodes.FindNode('hl7:component2');
subNodoExamenes:=ANodo;
repeat
with lvExamenes.Items.Add do
begin
Caption:= subNodoExamenes.ChildNodes['hl7:sequenceNumber'].Text;
SubItems.Add(subNodoExamenes['value'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].Text;
SubItems.Add(subNodoExamenes.ChildNodes['classCode'].Text);
SubItems.Add(subNodoExamenes.ChildNodes['moodCode'].Text);
SubItems.Add(subNodoExamenes.ChildNodes['negationInd'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:id'].Text;
SubItems.Add(subNodoExamenes['root'].Text);
SubItems.Add(subNodoExamenes['extension'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:code'].Text;
SubItems.Add(subNodoExamenes['code'].Text);
SubItems.Add(subNodoExamenes['codeSystemName'].Text);
SubItems.Add(subNodoExamenes['displayName'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:numExam'].Text;
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:text'].Text;
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:statusCode'].Text;
SubItems.Add(subNodoExamenes['code'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:priorityCode'].Text;
SubItems.Add(subNodoExamenes['code'].Text);
SubItems.Add(subNodoExamenes['codeSystem'].Text);
SubItems.Add(subNodoExamenes['codeSystemName'].Text);
SubItems.Add(subNodoExamenes['displayName'].Text);
subNodoExamenes.ChildNodes['hl7:observationRequest'].ChildNodes['hl7:interpretationCode'].Text;
SubItems.Add(subNodoExamenes['nullFlavor'].Text);
end;
until subNodoExamenes = nil;
end;
until ANodocontrolActProcess = nil;
end;
ANodo:= ANodo.NextSibling;
until ANodo= nil;
finally
xmlDocum.Active:= False;
xmlDocum.Free;
end;
end;