Создание комментариев XML с помощью оператора SQL FOR XML - PullRequest
4 голосов
/ 20 июля 2009

Справочная информация. Я создаю фрагменты намного большего XML-документа (документы HL7 CDA) с использованием SQL-запросов XML FOR. Следуя соглашению, мы должны включить комментарии раздела перед этим XML-узлом, чтобы при повторной сборке узлов в более крупный документ их было легче читать.

Вот пример ожидаемого результата:

<!-- 
********************************************************
  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>

Вот оператор SQL FOR XML, который я построил для визуализации вышеуказанного XML:

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

Хотя я могу вставить комментарии из управляющей функции, которая собирает эти фрагменты XML, в основной документ, наша цель состоит в том, чтобы сгенерировать комментарии вместе с выводом, чтобы избежать ошибок построения документа.

Я пробовал несколько вещей, но у меня возникают проблемы при создании комментариев с помощью инструкции SELECT. Я пробовал простую строку, но не смог получить синтаксис для разрывов строк. Есть предложения?

1 Ответ

11 голосов
/ 20 июля 2009

Пример:

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

производит:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...