Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Loading attribute from a specific section in XML file

Hi

I need to load the value of attribute "code" from the first "organizer" according to the attribute "name" as a reference;

For example:   load the value of attribute "code" from the section where attribute name="VC". ( I should get S006).

Here is the XML code:

<entry>

     <organizer classCode="BATTERY" moodCode="EVN">

               <code name="VC" codeSystem="2.16.840"/>

               <component>

                         <observation classCode="OBS" moodCode="EVN">

                              <value code="S006" />

                         </observation>

               </component>

     </organizer>

     <organizer classCode="BATTERY" moodCode="EVN">

               <code name="MB" codeSystem="2.16.840"/>

               <component>

                         <observation classCode="OBS" moodCode="EVN">

                              <value code="S003" />

                         </observation>

               </component>

     </organizer>

</entry>

Please help. Thanks.

1 Solution

Accepted Solutions
rbecher
Partner - Master III
Partner - Master III

Somthing like this:

[publicarEspirometries/ClinicalDocument/component/structuredBody/component/section/entry]:

LOAD

[typeCode],

    [observationMedia/ID],

    [observationMedia/classCode],

    [observationMedia/moodCode],

    [observationMedia/value],

    [observationMedia/value/mediaType],

    [observationMedia/value/representation],

    [observationMedia/templateId/extension],

    [observationMedia/templateId/root],

    [organizer/classCode],

    [organizer/moodCode],

    [organizer/statusCode/code],

    [organizer/code/code],

    [organizer/code/codeSystem],

    [organizer/code/displayName],

    [observation/classCode],

    [observation/moodCode],

    [observation/value/unit],

    [observation/value/xsi:type],

    [observation/value/value],

    [observation/value/code],

    [observation/value/codeSystem],

    [observation/value/codeSystemName],

    [observation/value/displayName],

    [observation/statusCode/code],

    [observation/code/code],

    [observation/code/codeSystem],

    [observation/code/displayName],

    [observation/templateId/extension],

    [observation/templateId/root],

    [%Key_section_8DE2BFA8AE16711D],

    [%Key_entry_531F1B1B7C50DD70]

FROM [lib://Daten/Section1.xml]

(XmlSimple, table is [publicarEspirometries/ClinicalDocument/component/structuredBody/component/section/entry])

Where Match([organizer/code/code], 'MMFVC', 'MMFVCMB');

[publicarEspirometries/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component]:

LOAD

[organizer/classCode],

    [organizer/moodCode],

    [organizer/statusCode/code],

    [sequenceNumber/value],

    [observation/classCode],

    [observation/moodCode],

    [observation/value/unit],

    [observation/value/value],

    [observation/value/xsi:type],

    [observation/value/code],

    [observation/value/displayName],

    [observation/value/codeSystem],

    [observation/value/digits],

    [observation/value/scale/unit],

    [observation/value/scale/value],

    [observation/value/origin/unit],

    [observation/value/origin/value],

    [observation/statusCode/code],

    [observation/code/code],

    [observation/code/codeSystem],

    [observation/code/displayName],

    [observation/templateId/extension],

    [observation/templateId/root],

    [%Key_entry_531F1B1B7C50DD70],

    [%Key_component_FF3ABE3584473A7D]

FROM [lib://Daten/Section1.xml]

(XmlSimple, table is [publicarEspirometries/ClinicalDocument/component/structuredBody/component/section/entry/organizer/component])

Where Exists([%Key_entry_531F1B1B7C50DD70]) AND [observation/code/code] = 'GQC';

- Ralf

Data & AI Engineer at Orionbelt.ai - a GenAI Semantic Layer Venture, Inventor of Astrato Engine

View solution in original post

20 Replies
rbecher
Partner - Master III
Partner - Master III

Hi Adnan,

this works like expected with the standard xml processing:

// Start of [section.xml] LOAD statements

organizer:

LOAD classCode,

    moodCode,

    [component/observation/classCode] as [observation/classCode],

    [component/observation/moodCode] as [observation/moodCode],

    [component/observation/value/code] as code,

    [code/name] as name,

    [code/codeSystem] as codeSystem

FROM (XmlSimple, Table is [entry/organizer]);

// End of [section.xml] LOAD statements

- Ralf

Data & AI Engineer at Orionbelt.ai - a GenAI Semantic Layer Venture, Inventor of Astrato Engine
rbecher
Partner - Master III
Partner - Master III

Or in Sense, just drag the xml file into the app and it will create a similar LOAD statement..

Data & AI Engineer at Orionbelt.ai - a GenAI Semantic Layer Venture, Inventor of Astrato Engine
Not applicable
Author

Thank you Ralf.

But what I really want to do is to load the "code" attribute only from the first organizer where name="VC", so I would get the value "S006" only. I don't know how to do this using script.

rbecher
Partner - Master III
Partner - Master III

You can add a WHERE clause:

[entry/organizer]:

LOAD

    [classCode],

    [moodCode],

    [component/observation/classCode],

    [component/observation/moodCode],

    [component/observation/value/code],

    [code/name],

    [code/codeSystem]

FROM [lib://Daten/section.xml]

(XmlSimple, table is [entry/organizer])

WHERE [code/name] = 'VC';

- Ralf

Data & AI Engineer at Orionbelt.ai - a GenAI Semantic Layer Venture, Inventor of Astrato Engine
johanlindell
Partner - Creator II
Partner - Creator II

Or if you want just the first occurance nomatter code you can add "First":

[entry/organizer]: 

First 1

LOAD  

    [classCode], 

    [moodCode], 

    [component/observation/classCode], 

    [component/observation/moodCode], 

    [component/observation/value/code], 

    [code/name], 

    [code/codeSystem] 

FROM [lib://Daten/section.xml] 

(XmlSimple, table is [entry/organizer])  ;

Not applicable
Author

Hi Ralf

When I added the where statement, the LOAD worked fine on the previous section. But when I applied the same on the original XML file, it loaded empty fields. The XML is well formed. There is only one thing that I doubt; in the original XML file, each organizer has several components as above in the section. It's as follows:

<entry>

     <organizer>

          <component>

          </component>

          <component>

          </component>

     </organizer>

     <organizer>

          <component>

          </component>

          <component>

          </component>

     </organizer>

</entry>

Could this be the issue?

Not applicable
Author

Thanks Johan

It worked. But I need to specify a load condition rather than choosing the first value.

rbecher
Partner - Master III
Partner - Master III

There should be all components loaded for this organizer. To check this can you post a real sample here?

Data & AI Engineer at Orionbelt.ai - a GenAI Semantic Layer Venture, Inventor of Astrato Engine
jonathandienst
Partner - Champion III
Partner - Champion III

Adapting Ralf's script, possibly this:

[entry/organizer]:

LOAD

    [classCode],

    [moodCode],

    [component/observation/classCode],

    [component/observation/moodCode],

    [component/observation/value/code],

    [code/name],

    [code/codeSystem]

FROM [lib://Daten/section.xml]

(XmlSimple, table is [entry/organizer])

WHERE [code/name] = 'VC' and Len(component) > 0;

or else use the actual fields:

WHERE [code/name] = 'VC' and Len( [component/observation/classCode]) > 0;

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein