<?xml version="1.0" encoding="UTF-8"?>
<!--
Template derived pattern
===========================================
ID: 1.2.40.0.34.11.5.3.1
Name: BI-RADS® Klassifikation
Description: 
-->
<pattern xmlns="http://purl.oclc.org/dsdl/schematron"
         id="template-1.2.40.0.34.11.5.3.1-2012-01-12T000000">
   <title>BI-RADS® Klassifikation</title>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]
Item: (KlassifikationBIRADS)
-->

   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']"
         id="tmp-r-cfa0f4ab-6603-4d56-a9ea-ff988d39fd4f">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="string(@classCode)=('OBS')">(KlassifikationBIRADS): Der Wert von @classCode MUSS 'OBS' sein.</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="string(@moodCode)=('EVN')">(KlassifikationBIRADS): Der Wert von @moodCode MUSS 'EVN' sein.</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:templateId[@root='1.2.40.0.34.11.5.3.1'])&gt;=1 ">(KlassifikationBIRADS): Element hl7:templateId[@root='1.2.40.0.34.11.5.3.1'] ist required [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:templateId[@root='1.2.40.0.34.11.5.3.1'])&lt;=1">(KlassifikationBIRADS): Element hl7:templateId[@root='1.2.40.0.34.11.5.3.1'] kommt zu häufig vor [max 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')])&gt;=1 and not(hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')]/@nullFlavor)">(KlassifikationBIRADS): Element hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')] ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')])&lt;=1">(KlassifikationBIRADS): Element hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')] kommt zu häufig vor [max 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:text)&gt;=1 and not(hl7:text/@nullFlavor)">(KlassifikationBIRADS): Element hl7:text ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:text)&lt;=1">(KlassifikationBIRADS): Element hl7:text kommt zu häufig vor [max 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:effectiveTime)&gt;=1 and not(hl7:effectiveTime/@nullFlavor)">(KlassifikationBIRADS): Element hl7:effectiveTime ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:effectiveTime)&lt;=1">(KlassifikationBIRADS): Element hl7:effectiveTime kommt zu häufig vor [max 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:statusCode[@code='completed'])&gt;=1 and not(hl7:statusCode[@code='completed']/@nullFlavor)">(KlassifikationBIRADS): Element hl7:statusCode[@code='completed'] ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:statusCode[@code='completed'])&lt;=1">(KlassifikationBIRADS): Element hl7:statusCode[@code='completed'] kommt zu häufig vor [max 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)])&gt;=1 and not(hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)]/@nullFlavor)">(KlassifikationBIRADS): Element hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)] ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)])&lt;=1">(KlassifikationBIRADS): Element hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)] kommt zu häufig vor [max 1x].</assert>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:templateId[@root='1.2.40.0.34.11.5.3.1']
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:templateId[@root='1.2.40.0.34.11.5.3.1']"
         id="tmp-r-2514765d-a33c-434c-a95e-df870e3b2d44">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='II' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:II" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="II"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="string(@root)=('1.2.40.0.34.11.5.3.1')">(KlassifikationBIRADS): Der Wert von @root MUSS '1.2.40.0.34.11.5.3.1' sein.</assert>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')]
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:code[(@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1')]"
         id="tmp-r-7b194df0-7451-43df-9356-5e0f07eba27f">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='CE' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:CE" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="CE"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="@nullFlavor or (@code='36625-2' and @codeSystem='2.16.840.1.113883.6.1' and @displayName='Breast Mammogram' and @codeSystemName='LOINC')">(KlassifikationBIRADS): Der Elementinhalt MUSS einer von 'code '36625-2' codeSystem '2.16.840.1.113883.6.1' displayName='Breast Mammogram' codeSystemName='LOINC'' sein.</assert>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:text
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:text"
         id="tmp-r-5cd6f7d8-b6c8-47d5-9656-79db018b9747">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='ED' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:ED" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="ED"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:reference)&gt;=1 and not(hl7:reference/@nullFlavor)">(KlassifikationBIRADS): Element hl7:reference ist mandatory [min 1x].</assert>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="count(hl7:reference)&lt;=1">(KlassifikationBIRADS): Element hl7:reference kommt zu häufig vor [max 1x].</assert>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:text/hl7:reference
Item: (KlassifikationBIRADS)
-->

   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:effectiveTime
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:effectiveTime"
         id="tmp-r-c6242a92-6624-43ca-b6a5-fe3e34ea374c">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='IVL_TS' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:IVL_TS" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="IVL_TS"/>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:statusCode[@code='completed']
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:statusCode[@code='completed']"
         id="tmp-r-67d5fbec-2c16-4384-83c3-d8d7d5728f2d">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='CS' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:CS" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="CS"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="@nullFlavor or (@code='completed')">(KlassifikationBIRADS): Der Elementinhalt MUSS einer von 'code 'completed'' sein.</assert>
   </rule>
   <!--
Template derived rules for ID: 1.2.40.0.34.11.5.3.1
Context: *[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)]
Item: (KlassifikationBIRADS)
-->

   <rule context="*[hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']]/hl7:observation[hl7:templateId/@root='1.2.40.0.34.11.5.3.1']/hl7:value[concat(@code,@codeSystem)=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/concept/concat(@code,@codeSystem) or (@nullFlavor=doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception/@code)]"
         id="tmp-r-6384ec18-af36-4666-b807-a8e6caa8697a">
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="(local-name-from-QName(resolve-QName(@xsi:type,.))='CD' and namespace-uri-from-QName(resolve-QName(@xsi:type,.))='urn:hl7-org:v3') or not(@xsi:type)">(KlassifikationBIRADS): Wenn eine @xsi:type Instruktion anwesend ist MUSS diese den Wert "{urn:hl7-org:v3}:CD" haben, gefunden "{<value-of select="namespace-uri-from-QName(resolve-QName(@xsi:type,.))"/>}:<value-of select="local-name-from-QName(resolve-QName(@xsi:type,.))"/>"</assert>
      <extends rule="CD"/>
      <let name="theCode" value="@code"/>
      <let name="theCodeSystem" value="@codeSystem"/>
      <let name="theCodeSystemVersion" value="@codeSystemVersion"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="@nullFlavor or exists(doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet[conceptList/concept[@code = $theCode][@codeSystem = $theCodeSystem][not(@codeSystemVersion) or @codeSystemVersion=$theCodeSystemVersion] or completeCodeSystem[@codeSystem=$theCodeSystem][not(@codeSystemVersion) or @codeSystemVersion=$theCodeSystemVersion]])">(KlassifikationBIRADS): Der Elementinhalt MUSS einer von 'ELGA_MammogramAssessment ELGA Mammogram Assessment (DYNAMIC)' sein.</assert>
      <let name="theNullFlavor" value="@nullFlavor"/>
      <let name="validNullFlavorsFound"
           value="exists(doc('include/voc-1.2.40.0.34.10.55-DYNAMIC.xml')/*/valueSet/conceptList/exception[@code = $theNullFlavor][@codeSystem = '2.16.840.1.113883.5.1008'])"/>
      <assert role="error"
              see="http://elga.art-decor.org/elga-html-20150713T115013/tmp-1.2.40.0.34.11.5.3.1-2012-01-12T000000.html"
              test="not(@nullFlavor) or $validNullFlavorsFound">(KlassifikationBIRADS): Der fehlende Wert '<value-of select="@nullFlavor"/>' für @code MUSS gewählt werden aus dem Set gültiger null flavors für dieses Attribut oder denen assoziiert mit Value Set ELGA_MammogramAssessment ELGA Mammogram Assessment (DYNAMIC).</assert>
   </rule>
</pattern>
