<TestScript xmlns="http://hl7.org/fhir">
    <extension url="https://gematik.de/fhir/IsiK/StructureDefinition/testMandatory">
        <valueBoolean value="true" />
    </extension>
    <extension url="https://gematik.de/fhir/IsiK/StructureDefinition/testCategory">
        <valueCode value="read" />
    </extension>
    <extension url="https://gematik.de/fhir/IsiK/StructureDefinition/initial-state">
        <valueString value="## Vorbedingungen    * Der Endpunkt des zu testenden Systems muss in Titus hinterlegt sein. (Ggf. mit den erforderlichen Parametern zur Autorisierung)    * Die vom Testdatensatz referenzierten Ressourcen Patient und Encounter m&#252;ssen zuvor angelegt und getestet worden sein.    * Der Testdatensatz muss im zu testenden System gem&#228;&#223; der Vorgaben (manuell) erfasst worden sein.    * Die ID der korrespondierenden FHIR-Ressource zu diesem Testdatensatz muss in der Titus UI eingegeben worden sein.    ## Testdatensatz    Attribut|Wert|Bemerkung    --|--|--|    OPS-Code|5-470|OPS-Katalogversion 2021    Status | abgeschlossen/durchgef&#252;hrt |     Patientenbezug| Patient aus Testfall ISIK_Patient_Read_001|    Bezug zu Aufenthalt| Encounter aus Testfall ISIK_Encounter_Read_001|    Datum der Durchf&#252;hrung | frei w&#228;hlbar |    Datum der Erfassung | aktuelles Tagesdatum|" />
    </extension>
    <url value="http://test.gematik.de/TestScript/ISIK_Procedure_Read" />
    <name value="ISIK_Procedure_Read_001" />
    <title value="Lesen der Ressource Procedure" />
    <status value="active" />
    <description value="## Kurzbeschreibung    Das zu testende System MUSS die angelegte Ressource bei einem HTTP GET auf deren URL korrekt und vollst&#228;ndig zur&#252;ckgeben (READ)." />
    <profile id="base-profile">
        <reference value="http://hl7.org/fhir/StructureDefinition/Procedure" />
    </profile>
    <!--  Name der id kann immer gleich sein -->
    <profile id="isik-profile">
        <reference value="http://gematik.de/fhir/IsiK/StructureDefinition/ISiKProzedur" />
    </profile>
    <variable>
        <name value="procedure01-id" />
        <description value="ID des Testdatensatzes aus Testfall ISIK_Procedure_Read_001" />
        <sourceId value="procedure01" />
    </variable>
    <variable>
        <name value="patient01-id" />
        <description value="ID des Testdatensatzes aus Testfall ISIK_Patient_Read_001" />
        <sourceId value="patient01" />
    </variable>
    <variable>
        <name value="encounter01-id" />
        <description value="ID des Testdatensatzes aus Testfall ISIK_Encounter_Read_001" />
        <sourceId value="encounter01" />
    </variable>
    <!--  weitere Variablen, die keine IDs sind
	<variable>
		<description value = "NamingSystem der einrichtungsinternen Patienten-ID des Testdatensatzes aus Testfall ISIK_Patient_Read_001"/>
		<name value="patient01-identifier-system" />
		<sourceId value="patient01" />
	</variable>
	 -->
    <test>
        <name value="READ" />
        <!-- description value="Abrufen eines Patienten mittels READ." -->
        <action>
            <operation>
                <type>
                    <system value="http://terminology.hl7.org/CodeSystem/testscript-operation-codes" />
                    <code value="read" />
                </type>
                <!--  automatisch konfiguriert aus variablen -->
                <resource value="Procedure" />
                <accept value="application/fhir+xml" />
                <params value="/${procedure01-id}" />
            </operation>
        </action>
        <action>
            <assert>
                <!--  brauchen wir beides: Label und Description? -->
                <label value="StatusCode" />
                <description value="HTTP status code korrekt?" />
                <responseCode value="200" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Format" />
                <description value="Content-Header korrekt?" />
                <contentType value="application/fhir+xml" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Id" />
                <description value="Ressource gefunden?" />
                <expression value="id = ${procedure01-id})" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Validierung-Core" />
                <description value="Valide gegen die FHIR Spezifikation?" />
                <validateProfileId value="base-profile" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Validierung-Profil" />
                <description value="Valide gegen ISiK-Profil?" />
                <validateProfileId value="isik-profile" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="Status korrekt?" />
                <expression value="status = &#39;completed&#39;" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="Category korrekt?" />
                <expression value="ecategory.coding.exists(system = &#39;http://snomed.info/sct&#39; and code = &#39;387713003&#39;)" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="Code korrekt?" />
                <expression value="code.coding.exists(system = &#39;http://fhir.de/CodeSystem/bfarm/ops&#39; and code = &#39;5-470&#39; and version = &#39;2021&#39;)" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="Link auf Patient korrekt?" />
                <expression value="subject.reference = &#39;Patient/${patient01-id}&#39;" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="Link auf Encounter korrekt?" />
                <expression value="encounter.reference = &#39;Encounter/${encounter01-id}&#39;" />
                <warningOnly value="false" />
            </assert>
        </action>
        <action>
            <assert>
                <label value="Soll-Ist-Vergleich" />
                <description value="performedDateTime vorhanden?" />
                <expression value="performedDateTime.hasValue()" />
                <warningOnly value="false" />
            </assert>
        </action>
    </test>
</TestScript>