SQL stored procedure using FOR XML PATH having issues getting the right nesting of the XML layout

Viewed 17

I have tried many different iterations of this, using other answered questions on here and I am just not getting this right. This is my code:

CREATE PROCEDURE [dbo].[ImportHCCAssessment]
AS

DECLARE
@SecurityUserId uniqueidentifier = 'EBE4BD0F-DD05-4A6E-BFE8-BF5CAC0CF4C5',
@SecurityUserContextId uniqueidentifier = '42CACC5F-3DA7-45E5-A656-15A3570A444C',
@AssessmentTemplateId uniqueidentifier = 
    (
    SELECT AssessmentTemplateId 
    FROM MedCompass.dbo.AssessmentTemplate 
    WHERE TemplateName = 'Hierarchical Condition Category'
    AND ActiveFlag = 1
    )

---HCC Assessment Generate XML for Insert

;WITH HCC AS (
SELECT *
FROM MemberHCC
UNPIVOT
(HCCValue FOR HCCCode IN 
(       HCC001, HCC002, HCC006, HCC008, HCC009, HCC010, HCC011, HCC017, HCC018, HCC019, HCC021, HCC022, HCC023, HCC027, HCC028,
        HCC029, HCC033, HCC034, HCC035, HCC039, HCC040, HCC046, HCC047, HCC048, HCC051, HCC052, HCC054, HCC055, HCC056, HCC057,
        HCC058, HCC059, HCC060, HCC070, HCC071, HCC072, HCC073, HCC074, HCC075, HCC076, HCC077, HCC078, HCC079, HCC080, HCC082,
        HCC083, HCC084, HCC085, HCC086, HCC087, HCC088, HCC096, HCC099, HCC100, HCC103, HCC104, HCC106, HCC107, HCC108, HCC110,
        HCC111, HCC112, HCC114, HCC115, HCC122, HCC124, HCC134, HCC135, HCC136, HCC137, HCC138, HCC157, HCC158, HCC159, HCC161,
        HCC162, HCC166, HCC167, HCC169, HCC170, HCC173, HCC176, HCC186, HCC188, HCC189)
) AS unpvt
WHERE RecordTypeCode = 'J'
)
SELECT (
    SELECT GeneratedGuid AS "@id"
        , 'Question' AS "@language"
        , 'true' AS "@hasPrepopulated"
        , '0' AS "Score/@Column"
        , 'true' AS "Score/@IncInRollup"
        , '' AS "Score/@Method"
        , '' AS "Score/@ScoreName"
        , '0' AS "Score/@Value"
        , ap.AssessmentPageId AS "Page/@id"
        , 'Visible' AS "Page/@InitialState"
        , 'true' AS "Page/@IsEnabled"
        , 'false' AS "Page/@IsRequired"
        , '0' AS "Page/Score/@Column"
        , 'true' AS "Page/Score/@IncInRollup"
        , '' AS "Page/Score/@Method"
        , '' AS "Page/Score/@ScoreName"
        , '0' AS "Page/Score/@Value"
        , atb.AssessmentTabId AS "Page/Tab/@id"
        , 'Visible' AS "Page/Tab/@InitialState"
        , 'true' AS "Page/Tab/@IsEnabled"
        , 'false' AS "Page/Tab/@IsRequired"
        , '0' AS "Page/Tab/Score/@Column"
        , 'true' AS "Page/Tab/Score/@IncInRollup"
        , '' AS "Page/Tab/Score/@Method"
        , '' AS "Page/Tab/Score/@ScoreName"
        , '0' AS "Page/Tab/Score/@Value"
        , asec.AssessmentSectionId AS "Page/Tab/Section/@id"
        , 'Visible' AS "Page/Tab/Section/@InitialState"
        , 'true' AS "Page/Tab/Section/@IsEnabled"
        , 'false' AS "Page/Tab/Section/@IsRequired"
        , '1' AS "Page/Tab/Section/@Sequence"
        , 'false' AS "Page/Tab/Section/@Repeatable"
        , '1' AS "Page/Tab/Section/@RepeatedSequence"
        , '1' AS "Page/Tab/Section/@ActiveFlag"
        , '1' AS "Page/Tab/Section/@EditFlag"
        , '0' AS "Page/Tab/Section/Score/@Column"
        , 'true' AS "Page/Tab/Section/Score/@IncInRollup"
        , '' AS "Page/Tab/Section/Score/@Method"
        , '' AS "Page/Tab/Section/Score/@ScoreName"
        , '0' AS "Page/Tab/Section/Score/@Value"
        , aq.AssessmentQuestionId AS "Page/Tab/Section/Question/@id"
        , 'Visible' AS "Page/Tab/Section/Question/@InitialState"
        , 'true' AS "Page/Tab/Section/Question/@IsEnabled"
        , 'false' AS "Page/Tab/Section/Question/@IsRequired"
        , 'a3e1965c-d050-4709-a554-644564722c54' AS "Page/Tab/Section/Question/@Code"
        , 'false' AS "Page/Tab/Section/Question/@DisplayCode"
        , '0' AS "Page/Tab/Section/Question/Score/@Column"
        , 'true' AS "Page/Tab/Section/Question/Score/@IncInRollup"
        , '' AS "Page/Tab/Section/Question/Score/@Method"
        , '' AS "Page/Tab/Section/Question/Score/@ScoreName"
        , '0' AS "Page/Tab/Section/Question/Score/@Value"
        , aa.AssessmentAnswerId AS "Page/Tab/Section/Question/Answer/@id"
        , 'CheckBox' AS "Page/Tab/Section/Question/Answer/@Type"
        , 'Visible' AS "Page/Tab/Section/Question/Answer/@InitialState"
        , 'true' AS "Page/Tab/Section/Question/Answer/@IsEnabled"
        , 'false' AS "Page/Tab/Section/Question/Answer/@IsRequired"
        , 'false' AS "Page/Tab/Section/Question/Answer/@copy"
        , '1' AS "Page/Tab/Section/Question/Answer/@Sequence"
        , 'false' AS "Page/Tab/Section/Question/Answer/@IncInSummary"
        , '' AS "Page/Tab/Section/Question/Answer/@SummaryTitle"
        , 'false' AS "Page/Tab/Section/Question/Answer/@AlphaSorting"
        , 'b94ec9a9-77eb-41da-b62d-9f7d70b2f2d4' AS "Page/Tab/Section/Question/Answer/@Code"
        , 'false' AS "Page/Tab/Section/Question/Answer/@DisplayCode"
        , 'false' AS "Page/Tab/Section/Question/Answer/@DisplayAnswerName"
        , '' AS "Page/Tab/Section/Question/Answer/@Value"
        , '1' AS "Page/Tab/Section/Question/Answer/@QuestionSequence"
        , ( 
            SELECT ali.AssessmentListItemId AS "Page/Tab/Section/Question/Answer/ListItem/@ListItemId"
            , '0.00' AS "Page/Tab/Section/Question/Answer/ListItem/@Score1"
            , '0.00' AS "Page/Tab/Section/Question/Answer/ListItem/@Score2"
            , '0.00' AS "Page/Tab/Section/Question/Answer/ListItem/@Score3"
            , '' AS "Page/Tab/Section/Question/Answer/ListItem/@Score1ProgramTypeKey"
            , '' AS "Page/Tab/Section/Question/Answer/ListItem/@Score2ProgramTypeKey"       
            , '' AS  "Page/Tab/Section/Question/Answer/ListItem/@Score3ProgramTypeKey"
            , HCCValue AS  "Page/Tab/Section/Question/Answer/ListItem/@Selected"
            , '0' AS "Page/Tab/Section/Question/Answer/ListItem/@Sequence"
            , '' AS "Page/Tab/Section/Question/Answer/ListItem/@FullDescription"
            FROM  HCC hcc
                JOIN MedCompass.dbo.AssessmentListItem ali
                ON LEFT(ali.ListItem, 6) = hcc.HCCCode
                FOR XML PATH ('ListItem'), TYPE
            ) 
        FOR XML PATH ('Assmt')
        ) XMLfile   
        , hcc.MBI
    , GeneratedGuid
INTO #XMLTempHCC
FROM MemberHCC hcc
JOIN MedCompass.dbo.AssessmentTemplate atp
    ON 1 = 1
    AND atp.AssessmentTemplateId = @AssessmentTemplateId
JOIN MedCompass.dbo.AssessmentPage ap
    ON ap.AssessmentTemplateId = atp.AssessmentTemplateId
    AND atp.AssessmentTemplateId = @AssessmentTemplateId
JOIN MedCompass.dbo.AssessmentTab atb
    ON atb.AssessmentPageId = ap.AssessmentPageId
JOIN MedCompass.dbo.AssessmentSection asec
    ON asec.AssessmentTabId = atb.AssessmentTabId
JOIN MedCompass.dbo.AssessmentQuestion aq
    ON aq.AssessmentSectionId = asec.AssessmentSectionId
JOIN MedCompass.dbo.AssessmentAnswer aa
    ON aa.AssessmentQuestionId = aq.AssessmentQuestionId
JOIN MedCompass.dbo.AssessmentList al
    ON aa.AssessmentListId = al.AssessmentListId
LEFT JOIN (
    SELECT NEWID() AS GeneratedGuid
    ) AS GG
    ON 1 = 1    

This is the XML format I'm trying to get:

<Assmt id="e4b67b25-1724-4c5f-81da-a3bec923822c" language="Question" hasPrepopulated="true">
  <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
  <Page id="c8e3b0c2-d831-460e-b5e2-afa17c4d0035" InitialState="Visible" IsEnabled="true" IsRequired="false">
    <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
    <Tab id="33198335-567f-46fc-93c3-2cc6f2e5dd20" InitialState="Visible" IsEnabled="true" IsRequired="false">
      <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
      <Section id="207293ef-81e6-4d18-8b01-30f63ccf89cc" InitialState="Visible" IsEnabled="true" IsRequired="false" Sequence="1" Repeatable="false" RepeatedSequence="1" ActiveFlag="1" EditFlag="1">
        <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
        <Question id="a56fcb27-7e95-443a-8dd0-c6fb475297c7" InitialState="Visible" IsEnabled="true" IsRequired="false" Code="a3e1965c-d050-4709-a554-644564722c54" DisplayCode="false">
          <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
          <Answer id="55a96555-a420-47f0-b66c-4976f7989933" Type="CheckBox" InitialState="Visible" IsEnabled="true" IsRequired="false" copy="false" Sequence="1" IncInSummary="false" SummaryTitle="" AlphaSorting="false" Code="b94ec9a9-77eb-41da-b62d-9f7d70b2f2d4" DisplayCode="false" DisplayAnswerName="false" Value="" QuestionSequence="1">
            <ListItem ListItemId="a89b405a-3735-4d5d-b6cd-9c42e2c8b5fd" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="true" Sequence="0" ListItem="HCC001 - HIV/AIDS" FullDescription="" />
            <ListItem ListItemId="6cd22662-70bd-41db-ba8a-b8c29dbe6780" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="false" Sequence="0" ListItem="HCC002 - Septicemia, sepsis and systemic inflammatory" FullDescription="" />
            <ListItem ListItemId="7c5d131c-01ae-4785-8ec2-570cd8f0063d" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="false" Sequence="0" ListItem="HCC006 - Opportunistic infections" FullDescription="" />
            <ListItem ListItemId="75d6d621-25d8-4915-9cb0-f66ce433ecb1" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="true" Sequence="0" ListItem="HCC008 - Metastatic cancer and acute leukemia" FullDescription="" />
            <ListItem ListItemId="45de7cfb-33da-465a-871e-2acaabcc63eb" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="true" Sequence="0" ListItem="HCC009 - Lung and other severe cancers" FullDescription="" />
            <ListItem ListItemId="afd27cc0-36ae-4999-ab4d-5c3877cb12ff" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="false" Sequence="0" ListItem="HCC010 - Lymphoma and other cancers" FullDescription="" />
            <ListItem ListItemId="d30d214e-3f7a-4902-b687-fb95e5d5b81e" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="false" Sequence="0" ListItem="HCC011 - Colorectal, bladder and other cancers" FullDescription="" />
          </Answer>
        </Question>
      </Section>
    </Tab>
  </Page>
</Assmt>

This is what my above code is producing:

<Assmt id="B2A16DE0-EE05-48CD-95A4-586603BA2B74" language="Question" hasPrepopulated="true">
  <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
  <Page id="C8E3B0C2-D831-460E-B5E2-AFA17C4D0035" InitialState="Visible" IsEnabled="true" IsRequired="false">
    <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
    <Tab id="33198335-567F-46FC-93C3-2CC6F2E5DD20" InitialState="Visible" IsEnabled="true" IsRequired="false">
      <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
      <Section id="207293EF-81E6-4D18-8B01-30F63CCF89CC" InitialState="Visible" IsEnabled="true" IsRequired="false" Sequence="1" Repeatable="false" RepeatedSequence="1" ActiveFlag="1" EditFlag="1">
        <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
        <Question id="A56FCB27-7E95-443A-8DD0-C6FB475297C7" InitialState="Visible" IsEnabled="true" IsRequired="false" Code="a3e1965c-d050-4709-a554-644564722c54" DisplayCode="false">
          <Score Column="0" IncInRollup="true" Method="" ScoreName="" Value="0" />
          <Answer id="55A96555-A420-47F0-B66C-4976F7989933" Type="CheckBox" InitialState="Visible" IsEnabled="true" IsRequired="false" copy="false" Sequence="1" IncInSummary="false" SummaryTitle="" AlphaSorting="false" Code="b94ec9a9-77eb-41da-b62d-9f7d70b2f2d4" DisplayCode="false" DisplayAnswerName="false" Value="" QuestionSequence="1" />
        </Question>
      </Section>
    </Tab>
  </Page>
  <ListItem>
    <Page>
      <Tab>
        <Section>
          <Question>
            <Answer>
              <ListItem ListItemId="40ED3DBA-E5AE-45D5-ADA2-520D55DAC3E9" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="0" Sequence="0" FullDescription="" />
            </Answer>
          </Question>
        </Section>
      </Tab>
    </Page>
  </ListItem>
  <ListItem>
    <Page>
      <Tab>
        <Section>
          <Question>
            <Answer>
              <ListItem ListItemId="40ED3DBA-E5AE-45D5-ADA2-520D55DAC3E9" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="0" Sequence="0" FullDescription="" />
            </Answer>
          </Question>
        </Section>
      </Tab>
    </Page>
  </ListItem>
  <ListItem>
    <Page>
      <Tab>
        <Section>
          <Question>
            <Answer>
              <ListItem ListItemId="40ED3DBA-E5AE-45D5-ADA2-520D55DAC3E9" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="0" Sequence="0" FullDescription="" />
            </Answer>
          </Question>
        </Section>
      </Tab>
    </Page>
  </ListItem>
  <ListItem>
    <Page>
      <Tab>
        <Section>
          <Question>
            <Answer>
              <ListItem ListItemId="40ED3DBA-E5AE-45D5-ADA2-520D55DAC3E9" Score1="0.00" Score2="0.00" Score3="0.00" Score1ProgramTypeKey="" Score2ProgramTypeKey="" Score3ProgramTypeKey="" Selected="0" Sequence="0" FullDescription="" />
            </Answer>
          </Question>
        </Section>
      </Tab>
    </Page>
  </ListItem>
</Assmt>

I'm obviously "nesting" things wrong, I just can seem to figure out how to fix it. All of the ListItem elements are supposed to be a one-to-many relationship of records UNDER the Answer element. (Note: XML Samples are cut down to stay in the posting character limit, but there's enough to get the idea)

0 Answers
Related