2009-07-20 8 views
3

Hintergrund: Ich erzeuge Teile eines viel größeren XML-Dokuments (HL7 CDA-Dokumente) mit SQL FOR XML-Abfragen. Nach der Konvention müssen wir vor diesem XML-Knoten Abschnittskommentare einfügen, damit die Knoten beim erneuten Zusammenfügen in das größere Dokument einfacher zu lesen sind. HierGenerieren von XML-Kommentaren mit SQL FOR XML-Anweisung

ist eine Probe der erwarteten Ausgabe:

<!-- 
******************************************************** 
    Past Medical History section 
******************************************************** 
--> 

<component> 
    <section> 
     <code code="10153-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> 
     <title>Past Medical History</title> 
     <text> 
      <list> 
       <item>COPD - 1998</item> 
       <item>Dehydration - 2001</item> 
       <item>Myocardial infarction - 2003</item> 
      </list> 
     </text> 
    </section> 
</component> 

Hier ist die SQL FOR XML-Anweisung, die ich aufgebaut habe obige XML zu machen:

SELECT  '10153-2' AS [section/code/@code], '2.16.840.1.113883.6.1' AS [section/code/@codeSystem], 'LOINC' AS [section/code/@codeSystemName], 
         'Past Medical History' AS [section/title], 
      (SELECT  [Incident] + ' - ' + [IncidentYear] as "item" 
      FROM  [tblSummaryPastMedicalHistory] AS PMH 
      WHERE  ([PMH].[Incident] IS NOT NULL) AND ([PMH].[PatientUnitNumber] = [PatientEncounter].[PatientUnitNumber]) 
      FOR XML PATH('list'), TYPE 
      ) as "section/text" 
FROM   tblPatientEncounter AS PatientEncounter 
WHERE  (PatientEncounterNumber = 6) 
FOR XML PATH('component'), TYPE 

Während ich die Kommentare einfügen Von der Controlling-Funktion, die diese XML-Snippets in das Hauptdokument zusammenfügt, ist es unser Ziel, dass die Kommentare mit der Ausgabe generiert werden, um Dokumentkonstruktionsfehler zu vermeiden.

Ich habe ein paar Dinge ausprobiert, habe aber Probleme beim Erstellen der Kommentare mit der SELECT-Anweisung. Ich habe versucht, eine einfache Zeichenfolge, aber war nicht in der Lage, die Syntax für die Zeilenumbrüche zu bekommen. Irgendwelche Vorschläge?

Antwort

10

Beispiel:

SELECT [EmployeeKey] 
     ,[ParentEmployeeKey] 
     ,[FirstName] 
     ,[LastName] 
     ,[MiddleName] 
     ,[DepartmentName] AS "comment()" 
    FROM [AdventureWorksDW2008].[dbo].[DimEmployee] 
    FOR XML PATH('Employee'),ROOT('Employees') 

produziert:

<Employees> 
    <Employee> 
    <EmployeeKey>1</EmployeeKey> 
    <ParentEmployeeKey>18</ParentEmployeeKey> 
    <FirstName>Guy</FirstName> 
    <LastName>Gilbert</LastName> 
    <MiddleName>R</MiddleName> 
    <!--Production--> 
    </Employee> 
    <Employee> 
    <EmployeeKey>2</EmployeeKey> 
    <ParentEmployeeKey>7</ParentEmployeeKey> 
    <FirstName>Kevin</FirstName> 
    <LastName>Brown</LastName> 
    <MiddleName>F</MiddleName> 
    <!--Marketing--> 
    </Employee> 
</Employees> 
+0

Danke für die Hilfe! Ich musste tatsächlich jeden Leerraum einfügen, den ich eigentlich behalten wollte, wie zB Retouren, Tabs usw .; weil der Kommentar von Natur aus keine Tags erkennen wird usw. –