2014-02-20 6 views
0

Я надеялся, что смогу помочь с этой последней частью несколько сложной проблемы, над которой я работаю.SQL to XML Output

Мы должны создать XML-файл из таблицы SQL, которую мы генерируем.

В основе ядра XML входят три элемента. Пациент PhoneAssessment F2FAssessment

Это работает, как я покажу в моем тестовом коде. Однако одна из проблем заключается в том, что если у кого-то есть F2FAssessment и PhoneAssessment, он будет генерировать несколько тегов.

Если вы все можете дать мне некоторое представление о том, как лучше всего исправить это, где будет только один тег пациента, содержащий все возможные теги PhoneAssessment и F2FAssessment, было бы весьма полезно.

Вот код SQL:

use tempdb; 
    declare @t table 
    (
     [people_id] [nvarchar](255) NULL, 
     [actual_date] [date] NULL, 
     [NPI] [int] NULL, 
     [FileCreationDate] [date] NULL, 
     [FileCreationTime] [time](7) NULL, 
     [ProviderPatientNo] [int] NULL, 
     [LastName] [nvarchar](255) NULL, 
     [FirstName] [nvarchar](255) NULL, 
     [SSN] [nvarchar](255) NULL, 
     [DOB] [date] NULL, 
     [Gender] [int] NULL, 
     [Race] [int] NULL, 
     [Ethnicity] [int] NULL, 
     [ProviderPhoneAssessmentId] [nvarchar](255) NULL, 
     [CallEndDate] [date] NULL, 
     [CallEndTime] [time](7) NULL, 
     [DispatchDate] [date] NULL, 
     [DispatchTime] [time](7) NULL, 
     [CallDisposition] [int] NULL, 
     [DispositionOther] [nvarchar](255) NULL, 
     [Notes] [nvarchar](255) NULL, 
     [ProviderF2FAssessmentId] [nvarchar](255) NULL, 
     [AssessmentDate] [date] NULL, 
     [ArrivalTime] [time](7) NULL, 
     [ResidentialStatus] [int] NULL, 
     [County] [int] NULL, 
     [EmploymentStatus] [int] NULL, 
     [MaritalStatus] [int] NULL, 
     [MilitaryStatus] [int] NULL, 
     [NumArrests30Days] [nvarchar](255) NULL, 
     [AttendedSchoolLast3Months] [int] NULL, 
     [EducationLevel] [int] NULL, 
     [PrimaryPayorSource] [int] NULL, 
     [SecondaryPayorSource] [int] NULL, 
     [AnnualHouseholdIncome] [int] NULL, 
     [NumberInHousehold] [int] NULL, 
     [CurrentServices] [int] NULL, 
     [MHTreatmentDeclaration] [int] NULL, 
     [MOTStatus] [int] NULL, 
     [DurablePOA] [int] NULL, 
     [AssessmentLocation] [nvarchar](255) NULL, 
     [TransportedByLE] [int] NULL, 
     [TelevideoAssessment] [int] NULL, 
     [CurrentDetoxSymptoms] [int] NULL, 
     [HistoryOfDetoxSymptoms] [int] NULL, 
     [PrimaryDSMDiagnosis] [nvarchar](255) NULL, 
     [SecondaryDSMDiagnosis] [nvarchar](255) NULL, 
     [CompletedByLastName] [nvarchar](255) NULL, 
     [CompletedByFirstName] [nvarchar](255) NULL, 
     [DateDispositionCompleted] [date] NULL, 
     [TimeDispositionCompleted] [time](7) NULL, 
     [RecommendedTransportMode] [int] NULL, 
     [DateTransportedToFacility] [date] NULL, 
     [TimeTransportedToFacility] [time](7) NULL, 
     [FollowupContacted] [nvarchar](255) NULL, 
     [FollowupReportedServiceHelpful] [nvarchar](255) NULL, 
     [ContactAttempts] [nvarchar](255) NULL, 
     [VoluntaryAdmissionRecommended] [nvarchar](255) NULL, 
     [AdmissionAssessmentViaTelehealth] [nvarchar](255) NULL, 
     [IsAdmitted] [nvarchar](255) NULL, 
     [FirstHospitalization] [nvarchar](255) NULL, 
     [PrimaryProblem] [nvarchar](255) NULL, 
     [IntellectualDisability] [int] NULL, 
     [MedicalInstability] [int] NULL, 
     [MedicationIssues] [int] NULL, 
     [PastTrauma] [int] NULL, 
     [SubstanceAbuse] [int] NULL, 
     [Drug] [int] NULL, 
     [DrugRoute] [int] NULL, 
     [DrugFrequency] [int] NULL, 
     [HospAlternative] [nvarchar](255) NULL, 
     [HospAltDisposition] [nvarchar](255) NULL, 
     [Hospitalization] [nvarchar](255) NULL, 
     [HospitalizationDisposition] [nvarchar](255) NULL, 
     [SCS_Stf_Recommend] [nvarchar](255) NULL 
    ) 
    insert INTO @t 
    ([people_id],[actual_date],[NPI],[FileCreationDate],[FileCreationTime],[ProviderPatientNo],[LastName],[FirstName],[SSN],[DOB],[Gender],[Race],[Ethnicity],[ProviderPhoneAssessmentId],[CallEndDate],[CallEndTime],[DispatchDate],[DispatchTime],[CallDisposition],[DispositionOther],[Notes],[ProviderF2FAssessmentId],[AssessmentDate],[ArrivalTime],[ResidentialStatus],[County],[EmploymentStatus],[MaritalStatus],[MilitaryStatus],[NumArrests30Days],[AttendedSchoolLast3Months],[EducationLevel],[PrimaryPayorSource],[SecondaryPayorSource],[AnnualHouseholdIncome],[NumberInHousehold],[CurrentServices],[MHTreatmentDeclaration],[MOTStatus],[DurablePOA],[AssessmentLocation],[TransportedByLE],[TelevideoAssessment],[CurrentDetoxSymptoms],[HistoryOfDetoxSymptoms],[PrimaryDSMDiagnosis],[SecondaryDSMDiagnosis],[CompletedByLastName],[CompletedByFirstName],[DateDispositionCompleted],[TimeDispositionCompleted],[RecommendedTransportMode],[DateTransportedToFacility],[TimeTransportedToFacility],[FollowupContacted],[FollowupReportedServiceHelpful],[ContactAttempts],[VoluntaryAdmissionRecommended],[AdmissionAssessmentViaTelehealth],[IsAdmitted],[FirstHospitalization],[PrimaryProblem],[IntellectualDisability],[MedicalInstability],[MedicationIssues],[PastTrauma],[SubstanceAbuse],[Drug],[DrugRoute],[DrugFrequency],[HospAlternative],[HospAltDisposition],[Hospitalization],[HospitalizationDisposition],[SCS_Stf_Recommend]) 
    VALUES 
    ('90F07844-746A-4347-82CA-39D4332B43F3','2013-09-25','1306875695','2014-02-12','15:19:37.0000000','108677','David','Joe','414555555','1999-01-23','2','1','2','59DC25C9-B659-42A3-B43D-26C741F9B929','2013-09-26','15:17:00.0000000',NULL,NULL,'1',NULL,NULL,NULL,NULL,NULL,NULL,'87',NULL,'6','4',NULL,NULL,NULL,'9','9',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'LastName','Alisha','2013-09-26','15:17:00.0000000',NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,'0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
    ('90F07844-746A-4347-82CA-39D4332B43F3','2013-09-25','1306875695','2014-02-12','15:19:37.0000000','108677','David','Joe','414555555','1999-01-23','2','1','2',NULL,'2013-09-25','18:45:00.0000000','2013-09-25','18:51:00.0000000','4',NULL,NULL,'35159D47-32B2-445C-A905-019E191FDDE2','2013-09-25','19:22:00.0000000','13','47','12','6','4',NULL,'3','23','8','9','0','4','8','3','3','3','4','0','0','0','0','V71.09 ','V71.09','Tweed','A','2013-09-25','21:10:51.0000000','3',NULL,NULL,'1','1',NULL,'0','0','0',NULL,'2','3','3','3','3','2',NULL,NULL,NULL,'8','4',NULL,NULL,NULL) 

    IF OBJECT_ID('tempdb.dbo.#Patient') IS NOT NULL drop table #Patient 
    IF OBJECT_ID('tempdb.dbo.#Drugs') IS NOT NULL drop table #Drugs 
    IF OBJECT_ID('tempdb.dbo.#Assessments') IS NOT NULL drop table #Assessments 
    IF OBJECT_ID('tempdb.dbo.#HospAlt') IS NOT NULL drop table #HospAlt 
    IF OBJECT_ID('tempdb.dbo.#HospDisp') IS NOT NULL drop table #HospDisp 
    IF OBJECT_ID('tempdb.dbo.#PatientDistinct') IS NOT NULL drop table #PatientDistinct 

    --Patient Distinct 
    select distinct 
    ProviderPatientNo 
    into #PatientDistinct 
    FROM @t 


    --Patients 
    select distinct 
    NPI, 
    FileCreationDate, 
    FileCreationTime, 
    ProviderPatientNo, 
    ProviderF2FAssessmentId, 
    ProviderPhoneAssessmentId, 
    people_id, LastName,FirstName, 
    SSN,[DOB],[Gender],[Race],[Ethnicity] 
    into #Patient 
    FROM @t 

    --Assessments 
    SELECT 
    CallEndDate, 
    CallEndTime, 
    DispatchDate, 
    DispatchTime, 
    CallDisposition, 
    DispositionOther, 
    Notes, 
    people_id, 
    ProviderPatientNo, 
    ProviderF2FAssessmentId, 
    ProviderPhoneAssessmentId, 
    AssessmentDate, 
    case when ArrivalTime is null then '07:00:00' else ArrivalTime end AS [ArrivalTime] , 
    ResidentialStatus AS [ResidentialStatus], 
    County AS [County], 
    EmploymentStatus AS [EmploymentStatus], 
    MaritalStatus AS [MaritalStatus], 
    MilitaryStatus AS [MilitaryStatus], 
    NumArrests30Days AS [NumArrests30Days], 
    AttendedSchoolLast3Months AS [AttendedSchoolLast3Months], 
    EducationLevel AS [EducationLevel], 
    PrimaryPayorSource AS [PrimaryPayorSource], 
    SecondaryPayorSource AS [SecondaryPayorSource], 
    AnnualHouseholdIncome AS [AnnualHouseholdIncome], 
    NumberInHousehold AS [NumberInHousehold], 
    CurrentServices AS [CurrentServices], 
    MHTreatmentDeclaration AS [MHTreatmentDeclaration], 
    MOTStatus AS [MOTStatus], 
    DurablePOA AS [DurablePOA], 
    AssessmentLocation AS [AssessmentLocation], 
    TransportedByLE AS [TransportedByLE], 
    TelevideoAssessment AS [TelevideoAssessment], 
    CurrentDetoxSymptoms AS [CurrentDetoxSymptoms], 
    HistoryOfDetoxSymptoms AS [HistoryOfDetoxSymptoms], 
    PrimaryDSMDiagnosis AS [PrimaryDSMDiagnosis], 
    SecondaryDSMDiagnosis AS [SecondaryDSMDiagnosis], 
    CompletedByLastName AS [CompletedByLastName], 
    CompletedByFirstName AS [CompletedByFirstName], 
    DateDispositionCompleted AS [DateDispositionCompleted], 
    TimeDispositionCompleted AS [TimeDispositionCompleted], 
    RecommendedTransportMode AS [RecommendedTransportMode], 
    DateTransportedToFacility AS [DateTransportedToFacility], 
    TimeTransportedToFacility AS [TimeTransportedToFacility], 
    FollowupContacted AS [FollowupContacted], 
    FollowupReportedServiceHelpful AS [FollowupReportedServiceHelpful], 
    ContactAttempts AS [ContactAttempts], 
    VoluntaryAdmissionRecommended AS [VoluntaryAdmissionRecommended], 
    AdmissionAssessmentViaTelehealth AS [AdmissionAssessmentViaTelehealth], 
    IsAdmitted AS [IsAdmitted], 
    FirstHospitalization AS [FirstHospitalization], 
    PrimaryProblem AS [PrimaryProblem], 
    IntellectualDisability AS [IntellectualDisability], 
    MedicalInstability AS [MedicalInstability], 
    MedicationIssues AS [MedicationIssues], 
    PastTrauma AS [PastTrauma], 
    SubstanceAbuse AS [SubstanceAbuse] 
    into #Assessments 
    FROM @t 

    --Drugs 
    select ProviderF2FAssessmentId, 
    Drug, 
    DrugRoute, 
    DrugFrequency 
    into #Drugs 
    from @t 
    where ProviderF2FAssessmentId is not null 

    --HospAlternative 
    select 
    ProviderF2FAssessmentId, 
    HospAlternative, 
    HospAltDisposition 
    into #HospAlt 
    from @t 
    where ProviderF2FAssessmentId is not null 

    --Hospitalization 
    select 
    ProviderF2FAssessmentId, 
    1 as Hospitalization, 
    10 as HospitalizationDisposition 
    into #HospDisp 
    from @t 
    where ProviderF2FAssessmentId is not null 



    /*Create XML*/ 
    declare @output XML 

    set @output = 
    --Provider Data 
    (
    SELECT 
    NPI as [NPI], 
    FileCreationDate as [FileCreationDate], 
    cast(FileCreationTime as time) FileCreationTime, 
    (
    --Patient Data 

    Select 
    Patient.ProviderPatientNo , 
    LastName as [LastName], 
    FirstName as [FirstName], 
    SSN as [SSN], 
    DOB as [DOB], 
    Gender as [Gender], 
    Race as [Race], 
    Ethnicity as [Ethnicity],  
      --Phone Assessment Data 
      /* 
      <ProviderPhoneAssessmentId>52854541</ProviderPhoneAssessmentId> 
      <CallEndDate>2006-05-04</CallEndDate> 
      <CallEndTime>01:01:01.001</CallEndTime> 
      <DispatchDate>2006-05-04</DispatchDate> 
      <DispatchTime>01:01:01.001</DispatchTime> 
      <CallDisposition>1</CallDisposition> 
      <DispositionOther>DispositionOther0</DispositionOther> 
      <Notes>Notes0</Notes> 
      */ 
      (
      Select 
      ProviderPhoneAssessmentId, 
      CallEndDate, 
      CallEndTime, 
      DispatchDate, 
      DispatchTime, 
      CallDisposition, 
      DispositionOther, 
      Notes 
      FROM #Assessments 
      WHERE ProviderPhoneAssessmentId is NOT NULL and ProviderPhoneAssessmentId = Patient.ProviderPhoneAssessmentId 
      FOR XML PATH(''), ELEMENTS, type) AS [PhoneAssessment/*], 
       --F2FAssessment 
       /* 
       <ProviderF2FAssessmentId>4343</ProviderF2FAssessmentId> 
       <AssessmentDate>2006-05-04</AssessmentDate> 
       <ArrivalTime>01:01:01.001</ArrivalTime> 
       <ResidentialStatus>1</ResidentialStatus> 
       <County>1</County> 
       <EmploymentStatus>1</EmploymentStatus> 
       <MaritalStatus>1</MaritalStatus> 
       <MilitaryStatus>1</MilitaryStatus> 
       <NumArrests30Days>50</NumArrests30Days> 
       <AttendedSchoolLast3Months>1</AttendedSchoolLast3Months> 
       <EducationLevel>1</EducationLevel> 
       <PrimaryPayorSource>1</PrimaryPayorSource> 
       <SecondaryPayorSource>1</SecondaryPayorSource> 
       <AnnualHouseholdIncome>0</AnnualHouseholdIncome> 
       <NumberInHousehold>128</NumberInHousehold> 
       <CurrentServices>1</CurrentServices> 
       <MHTreatmentDeclaration>1</MHTreatmentDeclaration> 
       <MOTStatus>1</MOTStatus> 
       <DurablePOA>1</DurablePOA> 
       <AssessmentLocation>1</AssessmentLocation> 
       <TransportedByLE>false</TransportedByLE> 
       <TelevideoAssessment>false</TelevideoAssessment> 
       <CurrentDetoxSymptoms>false</CurrentDetoxSymptoms> 
       <HistoryOfDetoxSymptoms>false</HistoryOfDetoxSymptoms> 
       <PrimaryDSMDiagnosis>PrimaryDS</PrimaryDSMDiagnosis> 
       <SecondaryDSMDiagnosis>Secondary</SecondaryDSMDiagnosis> 
       <CompletedByLastName>CompletedByLastName2</CompletedByLastName> 
       <CompletedByFirstName>CompletedByFirstName2</CompletedByFirstName> 
       <DateDispositionCompleted>2006-05-04</DateDispositionCompleted> 
       <TimeDispositionCompleted>01:01:01.001</TimeDispositionCompleted> 
       <RecommendedTransportMode>1</RecommendedTransportMode> 
       <DateTransportedToFacility>2006-05-04</DateTransportedToFacility> 
       <TimeTransportedToFacility>01:01:01.001</TimeTransportedToFacility> 
       <FollowupContacted>false</FollowupContacted> 
       <FollowupReportedServiceHelpful>false</FollowupReportedServiceHelpful> 
       <ContactAttempts>128</ContactAttempts> 
       <VoluntaryAdmissionRecommended>false</VoluntaryAdmissionRecommended> 
       <AdmissionAssessmentViaTelehealth>false</AdmissionAssessmentViaTelehealth> 
       <IsAdmitted>false</IsAdmitted><FirstHospitalization>1</FirstHospitalization> 
       <PrimaryProblem>1</PrimaryProblem><IntellectualDisability>1</IntellectualDisability> 
       <MedicalInstability>1</MedicalInstability> 
       <MedicationIssues>1</MedicationIssues> 
       <PastTrauma>1</PastTrauma> 
       <SubstanceAbuse>1</SubstanceAbuse> 
       */ 
       (SELECT 
       ProviderF2FAssessmentId as [F2FAssessment/ProviderF2FAssessmentId], 
       AssessmentDate as [F2FAssessment/AssessmentDate], 
       [ArrivalTime] as [F2FAssessment/ArrivalTime], 
       ResidentialStatus as [F2FAssessment/ResidentialStatus], 
       County as [F2FAssessment/County], 
       EmploymentStatus AS [F2FAssessment/EmploymentStatus], 
       MaritalStatus AS [F2FAssessment/MaritalStatus], 
       MilitaryStatus AS [F2FAssessment/MilitaryStatus], 
       NumArrests30Days AS [F2FAssessment/NumArrests30Days], 
       AttendedSchoolLast3Months AS [F2FAssessment/AttendedSchoolLast3Months], 
       EducationLevel AS [F2FAssessment/EducationLevel], 
       PrimaryPayorSource AS [F2FAssessment/PrimaryPayorSource], 
       SecondaryPayorSource AS [F2FAssessment/SecondaryPayorSource], 
       AnnualHouseholdIncome AS [F2FAssessment/AnnualHouseholdIncome], 
       NumberInHousehold AS [F2FAssessment/NumberInHousehold], 
       CurrentServices AS [F2FAssessment/CurrentServices], 
       MHTreatmentDeclaration AS [F2FAssessment/MHTreatmentDeclaration], 
       MOTStatus AS [F2FAssessment/MOTStatus], 
       DurablePOA AS [F2FAssessment/DurablePOA], 
       AssessmentLocation AS [F2FAssessment/AssessmentLocation], 
       TransportedByLE AS [F2FAssessment/TransportedByLE], 
       TelevideoAssessment AS [F2FAssessment/TelevideoAssessment], 
       CurrentDetoxSymptoms AS [F2FAssessment/CurrentDetoxSymptoms], 
       HistoryOfDetoxSymptoms AS [F2FAssessment/HistoryOfDetoxSymptoms], 
       PrimaryDSMDiagnosis AS [F2FAssessment/PrimaryDSMDiagnosis], 
       SecondaryDSMDiagnosis AS [F2FAssessment/SecondaryDSMDiagnosis], 
       CompletedByLastName AS [F2FAssessment/CompletedByLastName], 
       CompletedByFirstName AS [F2FAssessment/CompletedByFirstName], 
       DateDispositionCompleted AS [F2FAssessment/DateDispositionCompleted], 
       TimeDispositionCompleted AS [F2FAssessment/TimeDispositionCompleted], 
       RecommendedTransportMode AS [F2FAssessment/RecommendedTransportMode], 
       ISNULL(CAST(DateTransportedToFacility as varchar(30)),'xsi:nil="true"') AS [F2FAssessment/DateTransportedToFacility], 
       ISNULL(CAST(TimeTransportedToFacility as varchar(30)),'xsi:nil="true"')AS [F2FAssessment/TimeTransportedToFacility], 
       FollowupContacted AS [F2FAssessment/FollowupContacted], 
       FollowupReportedServiceHelpful AS [F2FAssessment/FollowupReportedServiceHelpful], 
       ContactAttempts AS [F2FAssessment/ContactAttempts], 
       VoluntaryAdmissionRecommended AS [F2FAssessment/VoluntaryAdmissionRecommended], 
       AdmissionAssessmentViaTelehealth AS [F2FAssessment/AdmissionAssessmentViaTelehealth], 
       IsAdmitted AS [F2FAssessment/IsAdmitted], 
       FirstHospitalization AS [F2FAssessment/FirstHospitalization], 
       PrimaryProblem AS [F2FAssessment/PrimaryProblem], 
       IntellectualDisability AS [F2FAssessment/IntellectualDisability], 
       MedicalInstability AS [F2FAssessment/MedicalInstability], 
       MedicationIssues AS [F2FAssessment/MedicationIssues], 
       PastTrauma AS [F2FAssessment/PastTrauma], 
       SubstanceAbuse AS [F2FAssessment/SubstanceAbuse] 
       , 
       ( 
         SELECT 
         ISNULL(Drug,'') as Drug, 
         DrugRoute, 
         DrugFrequency 
         From #Drugs drugs 
         Where drugs.Drug is NOT NULL and drugs.ProviderF2FAssessmentId = #Assessments.ProviderF2FAssessmentId 
         FOR XML PATH(''), type) AS [F2FAssessment/F2FDrug] 
        , 
        ( 
         SELECT 
         HospAlternative, 
         HospAltDisposition 
         From #HospAlt HospAlt 
         Where HospAlt.ProviderF2FAssessmentId = #Assessments.ProviderF2FAssessmentId 
         FOR XML PATH(''), type) AS [F2FAssessment/F2FHospAlternative] 
        , 
        ( 
         SELECT 
         Hospitalization, 
         HospitalizationDisposition 
         From #HospDisp HospDisp 
         Where HospDisp.ProviderF2FAssessmentId = #Assessments.ProviderF2FAssessmentId 
         FOR XML PATH(''), type) AS [F2FAssessment/F2FHospitalization] 
       FROM #Assessments    
       Where ProviderF2FAssessmentId IS NOT NULL and ProviderF2FAssessmentId = Patient.ProviderF2FAssessmentId 
       FOR XML PATH(''), ELEMENTS, type) AS [*] 

    FROM #Patient Patient 

    FOR XML PATH('Patient'), type 
    ) 
    from @t 
    group by NPI,FileCreationDate, FileCreationTime 
    for xml path('') 
    ) 

    ; with xmlnamespaces ('http://www.tn.gov/mental/Schemas/CrisisAssessment' AS "xsd", 'http://www.w3.org/2001/XMLSchema-instance' as "xsi") 
    select @output FOR XML PATH(''),TYPE, ROOT('Provider') 

Вот пример вывода XML, что я в настоящее время получаю:

<Provider xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
     <NPI>1306875695</NPI> 
     <FileCreationDate>2014-02-12</FileCreationDate> 
     <FileCreationTime>15:19:37</FileCreationTime> 
     <Patient> 
     <ProviderPatientNo>108677</ProviderPatientNo> 
     <LastName>David</LastName> 
     <FirstName>Joe</FirstName> 
     <SSN>414555555</SSN> 
     <DOB>1999-01-23</DOB> 
     <Gender>2</Gender> 
     <Race>1</Race> 
     <Ethnicity>2</Ethnicity> 
     <PhoneAssessment> 
      <ProviderPhoneAssessmentId>59DC25C9-B659-42A3-B43D-26C741F9B929</ProviderPhoneAssessmentId> 
      <CallEndDate>2013-09-26</CallEndDate> 
      <CallEndTime>15:17:00</CallEndTime> 
      <CallDisposition>1</CallDisposition> 
     </PhoneAssessment> 
     </Patient> 
     <Patient> 
     <ProviderPatientNo>108677</ProviderPatientNo> 
     <LastName>David</LastName> 
     <FirstName>Joe</FirstName> 
     <SSN>414555555</SSN> 
     <DOB>1999-01-23</DOB> 
     <Gender>2</Gender> 
     <Race>1</Race> 
     <Ethnicity>2</Ethnicity> 
     <F2FAssessment> 
      <ProviderF2FAssessmentId>35159D47-32B2-445C-A905-019E191FDDE2</ProviderF2FAssessmentId> 
      <AssessmentDate>2013-09-25</AssessmentDate> 
      <ArrivalTime>19:22:00</ArrivalTime> 
      <ResidentialStatus>13</ResidentialStatus> 
      <County>47</County> 
      <EmploymentStatus>12</EmploymentStatus> 
      <MaritalStatus>6</MaritalStatus> 
      <MilitaryStatus>4</MilitaryStatus> 
      <AttendedSchoolLast3Months>3</AttendedSchoolLast3Months> 
      <EducationLevel>23</EducationLevel> 
      <PrimaryPayorSource>8</PrimaryPayorSource> 
      <SecondaryPayorSource>9</SecondaryPayorSource> 
      <AnnualHouseholdIncome>0</AnnualHouseholdIncome> 
      <NumberInHousehold>4</NumberInHousehold> 
      <CurrentServices>8</CurrentServices> 
      <MHTreatmentDeclaration>3</MHTreatmentDeclaration> 
      <MOTStatus>3</MOTStatus> 
      <DurablePOA>3</DurablePOA> 
      <AssessmentLocation>4</AssessmentLocation> 
      <TransportedByLE>0</TransportedByLE> 
      <TelevideoAssessment>0</TelevideoAssessment> 
      <CurrentDetoxSymptoms>0</CurrentDetoxSymptoms> 
      <HistoryOfDetoxSymptoms>0</HistoryOfDetoxSymptoms> 
      <PrimaryDSMDiagnosis>V71.09 </PrimaryDSMDiagnosis> 
      <SecondaryDSMDiagnosis>V71.09</SecondaryDSMDiagnosis> 
      <CompletedByLastName>Tweed</CompletedByLastName> 
      <CompletedByFirstName>A</CompletedByFirstName> 
      <DateDispositionCompleted>2013-09-25</DateDispositionCompleted> 
      <TimeDispositionCompleted>21:10:51</TimeDispositionCompleted> 
      <RecommendedTransportMode>3</RecommendedTransportMode> 
      <DateTransportedToFacility>xsi:nil="true"</DateTransportedToFacility> 
      <TimeTransportedToFacility>xsi:nil="true"</TimeTransportedToFacility> 
      <FollowupContacted>1</FollowupContacted> 
      <FollowupReportedServiceHelpful>1</FollowupReportedServiceHelpful> 
      <VoluntaryAdmissionRecommended>0</VoluntaryAdmissionRecommended> 
      <AdmissionAssessmentViaTelehealth>0</AdmissionAssessmentViaTelehealth> 
      <IsAdmitted>0</IsAdmitted> 
      <PrimaryProblem>2</PrimaryProblem> 
      <IntellectualDisability>3</IntellectualDisability> 
      <MedicalInstability>3</MedicalInstability> 
      <MedicationIssues>3</MedicationIssues> 
      <PastTrauma>3</PastTrauma> 
      <SubstanceAbuse>2</SubstanceAbuse> 
      <F2FHospAlternative> 
      <HospAlternative>8</HospAlternative> 
      <HospAltDisposition>4</HospAltDisposition> 
      </F2FHospAlternative> 
      <F2FHospitalization> 
      <Hospitalization>1</Hospitalization> 
      <HospitalizationDisposition>10</HospitalizationDisposition> 
      </F2FHospitalization> 
     </F2FAssessment> 
     </Patient> 
    </Provider> 

Вот пример того, как мне это нужно смотреть:

<Provider xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
    <NPI>1306875695</NPI> 
    <FileCreationDate>2014-02-12</FileCreationDate> 
    <FileCreationTime>15:19:37</FileCreationTime> 
    <Patient> 
    <ProviderPatientNo>108677</ProviderPatientNo> 
    <LastName>David</LastName> 
    <FirstName>Joe</FirstName> 
    <SSN>414555555</SSN> 
    <DOB>1999-01-23</DOB> 
    <Gender>2</Gender> 
    <Race>1</Race> 
    <Ethnicity>2</Ethnicity> 
    <PhoneAssessment> 
     <ProviderPhoneAssessmentId>59DC25C9-B659-42A3-B43D-26C741F9B929</ProviderPhoneAssessmentId> 
     <CallEndDate>2013-09-26</CallEndDate> 
     <CallEndTime>15:17:00</CallEndTime> 
     <CallDisposition>1</CallDisposition> 
    </PhoneAssessment> 
    <F2FAssessment> 
     <ProviderF2FAssessmentId>35159D47-32B2-445C-A905-019E191FDDE2</ProviderF2FAssessmentId> 
     <AssessmentDate>2013-09-25</AssessmentDate> 
     <ArrivalTime>19:22:00</ArrivalTime> 
     <ResidentialStatus>13</ResidentialStatus> 
     <County>47</County> 
     <EmploymentStatus>12</EmploymentStatus> 
     <MaritalStatus>6</MaritalStatus> 
     <MilitaryStatus>4</MilitaryStatus> 
     <AttendedSchoolLast3Months>3</AttendedSchoolLast3Months> 
     <EducationLevel>23</EducationLevel> 
     <PrimaryPayorSource>8</PrimaryPayorSource> 
     <SecondaryPayorSource>9</SecondaryPayorSource> 
     <AnnualHouseholdIncome>0</AnnualHouseholdIncome> 
     <NumberInHousehold>4</NumberInHousehold> 
     <CurrentServices>8</CurrentServices> 
     <MHTreatmentDeclaration>3</MHTreatmentDeclaration> 
     <MOTStatus>3</MOTStatus> 
     <DurablePOA>3</DurablePOA> 
     <AssessmentLocation>4</AssessmentLocation> 
     <TransportedByLE>0</TransportedByLE> 
     <TelevideoAssessment>0</TelevideoAssessment> 
     <CurrentDetoxSymptoms>0</CurrentDetoxSymptoms> 
     <HistoryOfDetoxSymptoms>0</HistoryOfDetoxSymptoms> 
     <PrimaryDSMDiagnosis>V71.09 </PrimaryDSMDiagnosis> 
     <SecondaryDSMDiagnosis>V71.09</SecondaryDSMDiagnosis> 
     <CompletedByLastName>Tweed</CompletedByLastName> 
     <CompletedByFirstName>A</CompletedByFirstName> 
     <DateDispositionCompleted>2013-09-25</DateDispositionCompleted> 
     <TimeDispositionCompleted>21:10:51</TimeDispositionCompleted> 
     <RecommendedTransportMode>3</RecommendedTransportMode> 
     <DateTransportedToFacility>xsi:nil="true"</DateTransportedToFacility> 
     <TimeTransportedToFacility>xsi:nil="true"</TimeTransportedToFacility> 
     <FollowupContacted>1</FollowupContacted> 
     <FollowupReportedServiceHelpful>1</FollowupReportedServiceHelpful> 
     <VoluntaryAdmissionRecommended>0</VoluntaryAdmissionRecommended> 
     <AdmissionAssessmentViaTelehealth>0</AdmissionAssessmentViaTelehealth> 
     <IsAdmitted>0</IsAdmitted> 
     <PrimaryProblem>2</PrimaryProblem> 
     <IntellectualDisability>3</IntellectualDisability> 
     <MedicalInstability>3</MedicalInstability> 
     <MedicationIssues>3</MedicationIssues> 
     <PastTrauma>3</PastTrauma> 
     <SubstanceAbuse>2</SubstanceAbuse> 
     <F2FHospAlternative> 
     <HospAlternative>8</HospAlternative> 
     <HospAltDisposition>4</HospAltDisposition> 
     </F2FHospAlternative> 
     <F2FHospitalization> 
     <Hospitalization>1</Hospitalization> 
     <HospitalizationDisposition>10</HospitalizationDisposition> 
     </F2FHospitalization> 
    </F2FAssessment> 
    </Patient> 
</Provider> 

Любая помощь, которую вы можете оказать, была бы весьма признательна.

ответ

0

Это работает, как я покажу в своем тестовом коде. Однако одна из проблем заключается в том, что если у кого-то есть F2FAssessment и PhoneAssessment, он будет генерировать несколько тегов.

Это происходит потому, что вы вставляете запись человека 2 раза. первая вставка: данные Person + phoneAssesment данные второй вставки: данные Peson + F2FAssessment

Таблица т имеет 2 записей для человека с ЯЭУ: 1306875695

мое предложение изменить таблицу @t,

  1. Создать @ TEMP1 таблицу, то @ TEMP1 должен иметь только данные персоны + phoneAssesment
  2. Создать @ temp2 таблицу, то @ temp2 содержат только PersonID + F2FAssessment (PersonId выступают в качестве внешнего ключа)
  3. Вставьте данные в обе таблицы.
  4. Внутренние соединения Как таблица @ temp1, так и @ temp2 в виде таблицы @t. Используйте PersonId в качестве условия соединения.
  5. Теперь таблица @t будет иметь только 1 запись для НПИ: 1306875695

Попробуйте это предложение, Надеюсь, что это поможет.

+0

Это работало. Спасибо, что расчистили этот ментальный блок дороги для меня. – user1441145

+0

приветствуется, у вас хороший день sir – cyan

+0

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

0

Если вы хотите только один элемент пациента, сделать PhoneAssessment и F2F* заявления подзапросы:

WITH XMLNAMESPACES (DEFAULT 'http://www.tn.gov/mental/Schemas/CrisisAssessment') 
SELECT 
    [NPI], 
    [FileCreationDate], 
    [FileCreationTime], 
    (
     SELECT 
      ProviderPatientNo, 
      LastName, FirstName, 
      SSN, DOB, Gender, 
      Race, Ethnicity, 
      (
       SELECT 
        ProviderPhoneAssessmentId, CallEndDate, CallEndTime, CallDisposition 
       FROM @t pa 
       WHERE ProviderPhoneAssessmentId is not null 
        and pa.ProviderPatientNo = p.ProviderPatientNo 
       FOR XML PATH('PhoneAssesment'), TYPE, ELEMENTS XSINIL 
      ), 
      (
       SELECT 
        ProviderF2FAssessmentId, 
        AssessmentDate, ArrivalTime, ResidentialStatus, County, EmploymentStatus, 
        MaritalStatus, MilitaryStatus, AttendedSchoolLast3Months, EducationLevel, 
        PrimaryPayorSource, SecondaryPayorSource, AnnualHouseholdIncome, 
        NumberInHousehold, CurrentServices, MHTreatmentDeclaration, MOTStatus, 
        DurablePOA, AssessmentLocation, TransportedByLE, TelevideoAssessment, 
        CurrentDetoxSymptoms, HistoryOfDetoxSymptoms, PrimaryDSMDiagnosis, 
        SecondaryDSMDiagnosis, CompletedByLastName, CompletedByFirstName, 
        DateDispositionCompleted, TimeDispositionCompleted, RecommendedTransportMode, 
        DateTransportedToFacility, TimeTransportedToFacility, FollowupContacted, 
        FollowupReportedServiceHelpful, VoluntaryAdmissionRecommended, 
        AdmissionAssessmentViaTelehealth, IsAdmitted, PrimaryProblem, 
        IntellectualDisability, MedicalInstability, MedicationIssues, PastTrauma, 
        SubstanceAbuse, 
        HospAlternative as [F2FHospAlternative/HospAlternative], 
        HospAltDisposition as [F2FHospAlternative/HospAltDisposition], 
        Hospitalization as [F2FHospitalization/Hospitalization], 
        HospitalizationDisposition as [F2FHospitalization/HospitalizationDisposition] 
       FROM @t f2f 
       WHERE f2f.ProviderF2FAssessmentId is not null 
        and f2f.ProviderPatientNo = p.ProviderPatientNo 
       GROUP BY ProviderF2FAssessmentId, 
        AssessmentDate, ArrivalTime, ResidentialStatus, County, EmploymentStatus, 
        MaritalStatus, MilitaryStatus, AttendedSchoolLast3Months, EducationLevel, 
        PrimaryPayorSource, SecondaryPayorSource, AnnualHouseholdIncome, 
        NumberInHousehold, CurrentServices, MHTreatmentDeclaration, MOTStatus, 
        DurablePOA, AssessmentLocation, TransportedByLE, TelevideoAssessment, 
        CurrentDetoxSymptoms, HistoryOfDetoxSymptoms, PrimaryDSMDiagnosis, 
        SecondaryDSMDiagnosis, CompletedByLastName, CompletedByFirstName, 
        DateDispositionCompleted, TimeDispositionCompleted, RecommendedTransportMode, 
        DateTransportedToFacility, TimeTransportedToFacility, FollowupContacted, 
        FollowupReportedServiceHelpful, VoluntaryAdmissionRecommended, 
        AdmissionAssessmentViaTelehealth, IsAdmitted, PrimaryProblem, 
        IntellectualDisability, MedicalInstability, MedicationIssues, PastTrauma, 
        SubstanceAbuse, HospAlternative, HospAltDisposition, Hospitalization, 
        HospitalizationDisposition 
       FOR XML PATH('F2FAssessment'), TYPE, ELEMENTS XSINIL 
      ) 
     FROM @t p 
     GROUP BY ProviderPatientNo, LastName, FirstName, SSN, DOB, Gender, Race, Ethnicity 
     FOR XML PATH('Patient'), TYPE, ELEMENTS XSINIL 
    ) 
FROM (SELECT TOP(1) [NPI], [FileCreationDate], [FileCreationTime] FROM @t) as FileHeader 
FOR XML PATH('Provider'), ELEMENTS XSINIL 

Кроме того, я предполагаю, что вы хотите xsi:nil="true" быть атрибутом.Это достигается с помощью XSINIL option. Кроме того, вы ссылаетесь на пространство имен, но не используете его. Вы хотите сделать это по умолчанию (WITH XMLNAMESPACES (DEFAULT 'http://www.tn.gov/mental/Schemas/CrisisAssessment'))?

Производит:

<Provider xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
    <NPI>1306875695</NPI> 
    <FileCreationDate>2014-02-12</FileCreationDate> 
    <FileCreationTime>15:19:37</FileCreationTime> 
    <Patient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
    <ProviderPatientNo>108677</ProviderPatientNo> 
    <LastName>David</LastName> 
    <FirstName>Joe</FirstName> 
    <SSN>414555555</SSN> 
    <DOB>1999-01-23</DOB> 
    <Gender>2</Gender> 
    <Race>1</Race> 
    <Ethnicity>2</Ethnicity> 
    <PhoneAssesment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
     <ProviderPhoneAssessmentId>59DC25C9-B659-42A3-B43D-26C741F9B929</ProviderPhoneAssessmentId> 
     <CallEndDate>2013-09-26</CallEndDate> 
     <CallEndTime>15:17:00</CallEndTime> 
     <CallDisposition>1</CallDisposition> 
    </PhoneAssesment> 
    <F2FAssessment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.tn.gov/mental/Schemas/CrisisAssessment"> 
     <ProviderF2FAssessmentId>35159D47-32B2-445C-A905-019E191FDDE2</ProviderF2FAssessmentId> 
     <AssessmentDate>2013-09-25</AssessmentDate> 
     <ArrivalTime>19:22:00</ArrivalTime> 
     <ResidentialStatus>13</ResidentialStatus> 
     <County>47</County> 
     <EmploymentStatus>12</EmploymentStatus> 
     <MaritalStatus>6</MaritalStatus> 
     <MilitaryStatus>4</MilitaryStatus> 
     <AttendedSchoolLast3Months>3</AttendedSchoolLast3Months> 
     <EducationLevel>23</EducationLevel> 
     <PrimaryPayorSource>8</PrimaryPayorSource> 
     <SecondaryPayorSource>9</SecondaryPayorSource> 
     <AnnualHouseholdIncome>0</AnnualHouseholdIncome> 
     <NumberInHousehold>4</NumberInHousehold> 
     <CurrentServices>8</CurrentServices> 
     <MHTreatmentDeclaration>3</MHTreatmentDeclaration> 
     <MOTStatus>3</MOTStatus> 
     <DurablePOA>3</DurablePOA> 
     <AssessmentLocation>4</AssessmentLocation> 
     <TransportedByLE>0</TransportedByLE> 
     <TelevideoAssessment>0</TelevideoAssessment> 
     <CurrentDetoxSymptoms>0</CurrentDetoxSymptoms> 
     <HistoryOfDetoxSymptoms>0</HistoryOfDetoxSymptoms> 
     <PrimaryDSMDiagnosis>V71.09 </PrimaryDSMDiagnosis> 
     <SecondaryDSMDiagnosis>V71.09</SecondaryDSMDiagnosis> 
     <CompletedByLastName>Tweed</CompletedByLastName> 
     <CompletedByFirstName>A</CompletedByFirstName> 
     <DateDispositionCompleted>2013-09-25</DateDispositionCompleted> 
     <TimeDispositionCompleted>21:10:51</TimeDispositionCompleted> 
     <RecommendedTransportMode>3</RecommendedTransportMode> 
     <DateTransportedToFacility xsi:nil="true" /> 
     <TimeTransportedToFacility xsi:nil="true" /> 
     <FollowupContacted>1</FollowupContacted> 
     <FollowupReportedServiceHelpful>1</FollowupReportedServiceHelpful> 
     <VoluntaryAdmissionRecommended>0</VoluntaryAdmissionRecommended> 
     <AdmissionAssessmentViaTelehealth>0</AdmissionAssessmentViaTelehealth> 
     <IsAdmitted>0</IsAdmitted> 
     <PrimaryProblem>2</PrimaryProblem> 
     <IntellectualDisability>3</IntellectualDisability> 
     <MedicalInstability>3</MedicalInstability> 
     <MedicationIssues>3</MedicationIssues> 
     <PastTrauma>3</PastTrauma> 
     <SubstanceAbuse>2</SubstanceAbuse> 
     <F2FHospAlternative> 
     <HospAlternative>8</HospAlternative> 
     <HospAltDisposition>4</HospAltDisposition> 
     </F2FHospAlternative> 
     <F2FHospitalization> 
     <Hospitalization xsi:nil="true" /> 
     <HospitalizationDisposition xsi:nil="true" /> 
     </F2FHospitalization> 
    </F2FAssessment> 
    </Patient> 
</Provider> 
+0

Это действительно близко, но в нем отсутствуют элементы F2FDrug. – user1441145

+0

Кроме того, я не уверен, как правильно добавить тег провайдера, чтобы сделать его корневым. Если бы вы могли подробно остановиться на этом, это было бы очень полезно. – user1441145

+0

@ user1441145, я намерен продемонстрировать, как это сделать, а не делать это за вас. В приведенном примере включены подзапросы, вы можете добавить столько, сколько необходимо для создания элементов, которые вы ищете. – Mitch