## Akteure und Interaktionen

- Akteure und Interaktionen

- Akteure
- Interaktionen
- Interaktion: Dokumentenbereitstellung
- Interaktion: Dokumentenabfrage und -Zugriff
- Interaktion: Update von Metadaten
- Interaktion: Erzeugen von Metadaten

## Akteure

### Dokumentenserver

Das bestätigungsrelevante System nimmt die Rolle des Dokumentenservers ein. Ein Dokumentenserver nimmt Dokumente von Clients zur Speicherung/Archivierung/Verwaltung entgegen und erlaubt Clients die Suche nach und den Abruf von Dokumenten. Dieses ISiK-Modul legt fest, welche Suchkriterien mindestens implementiert werden müssen und welche Kriterien darüber hinaus optional bereitgestellt werden können. Dokumentenserver müssen mindestens die Interaktion "Dokumentenabfrage" implementieren. Die Umsetzung der Dokumentenbereitstellung ist optional. Um Clients die Herstellung von Patienten- und Encounterkontext zu ermöglichen, müssen weiterhin die im Basismodul Stufe 2 festgelegten Interaktionen auf den Datenobjekten "Patient" und "Kontakt/Fall (Encounter)" implementiert werden.

Der Dokumentenserver nimmt im IHE-MHD-Kontext die Rollen Document Recipient und Document Responder ein und implementiert die IHE-MHD-Interaktionen

- Simplified Publish [ITI-105] (verpflichtend)
- Generate Metadata [ITI-106] (optional)
- Find Document References [ITI-67] (verpflichtend)
- Retrieve Document [ITI-68] (verpflichtend)

### (Webbasierter/Mobiler) Client

Clients können Dokumente von einem Dokumentenserver abfragen, um sie z.B. einem Anwender anzuzeigen. Dabei können sie die für die Server verpflichtend festgelegten Suchkriterien beliebig kombinieren. Clients sind nicht verpflichtet, alle von den Servern geforderten Suchkriterien zu unterstützen. Weiterhin können Clients neu erstellte, geänderte oder erweiterte Dokumente an einen Dokumentenserver übermitteln. Dabei müssen sie jedoch mindestens die in diesem Modul verpflichtend festgelegten Metadaten zu den Dokumenten bereitstellen. Sowohl die Implementierung der Interaktion "Dokumentenabfrage" als auch "Dokumentenbereitstellung" sind für Clients optional.

Der Client nimmt im IHE-MHD-Kontext die Rollen Document Source und Document Consumer ein und implementiert die IHE-MHD-Interaktionen

- Simplified Publish [ITI-105] (optional)
- Generate Metadata [ITI-106] (optional)
- Find Document References [ITI-67] (optional)
- Retrieve Document [ITI-68] (optional)

## Interaktionen

### Dokumentenabfrage und -Zugriff (bestätigungsrelevant)

UseCase: Ein (webbasierter/mobiler) Client möchte Dokumente anhand definierter Kriterien abfragen. Zur Dokumenten(-Metadaten)abfrage nutzt diese Spezifikation die SEARCH-Interaktionen auf der DocumentReference-Ressource gemäß der FHIR-Spezifikation. Dabei müssen ausgewählte Suchparameter von Dokumentenservern verpflichtend unterstützt werden. Die Selektion erfolgt anhand der Relevanz der Parameter für die identifizierten UseCases. Der Zugriff auf die von den DocumentReferences verlinkten Dokumente (z.B. im PDF-Format) erfolgt per READ-Interaktion auf der Binary-Ressource gemäß FHIR-Spezifikation.

### Dokumentenbereitstellung (bestätigungsrelevant)

UseCase: Ein (webbasierter/mobiler) Client möchte neu erstellte, geänderte oder erweiterte Dokumente an einen Dokumentenserver übermitteln. Der Server nimmt Dokument und Metadaten entgegen, persistiert diese und stellt die anschließend für die Dokumentabfrage und den -zugriff bereit.

### Update von Dokumentenmetadaten (optional)

UseCase: Ein Client möchte die Metadaten eines Dokumentes ändern, ohne den Inhalt des Dokumentes selbst zu beeinflussen oder eine neue Version des Dokumentes hochladen zu müssen. Dies ist nur für eine stark eingeschränkte Menge von Elementen möglich. Der Server stellt dafür eine Operation zur Verfügung, deren Parameter den änderbaren Elementen entsprechen.

### Erzeugen von Dokumentenmetadaten (optional)

UseCase: Ein Client möchte ein gem. ISiK Basismodul Stufe 2 erzeugtes, strukturiertes, FHIR-basiertes Dokument an einen Dokumentenserver übermitteln. Der Server stellt dazu eine Operation zur Verfügung, die aus den strukturierten Daten des Dokumentes die erforderlichen Metadaten extrahiert und dem Client eine entsprechend ausgefüllte `DocumentReference`-Ressource zurückgibt. Diese Operation kann von einem Dokumentenserver aber auch einem Drittsystem bereitgestellt werden.

## Interaktion: Dokumentenbereitstellung

### Herstellung von Patient- und Encounterkontext

Vor der Bereitstellung von Dokumenten muss ein Client einen Patienten- und Encounterkontext herstellen, damit das Dokument serverseitig anhand der Patient- und Encounter-Verlinkungen in der DocumentReference korrekt zugeordnet werden kann. Zur Herstellung des Kontextes sind folgende Verfahren möglich:

1. SMARTApp Launch: Wenn der Aufruf der App im Rahmen des SMART-Frameworks erfolgt, kennt der Client bereits beim Start den aktuellen Patienten- und ggf. den Encounterkontext. Dabei wählt ein Anwender im Primärsystem (Server) einen Patienten und Fall aus und startet in diesem Kontext die App. Referenzen auf Patient und Encounter werden im Zuge der Authorisierung vom Server an Client übermittelt. (Siehe Modul Sicherheit - Launch Context und Scopes).
2. Bekannte Fallnummer: Der Client kennt die (Abrechnungs-)Fallnummer (z.B. durch das Einscannen eines Barcodes, oder beim Mapping von V2 auf FHIR aus PV1.#19). Der Client sucht den Encounter anhand der Fallnummer (`[base]/Encounter?account:identifier=<Fallnummer>`). Da unter einer Abrechnungs-Fallnummer mehrere Encounter (Besuche) zusammengefasst werden können (z.B. vorstationär + stationär + nachstationär), sollte als zusätzliches Suchkriterium entweder ein Datum/Zeitraum oder eine Selektion auf `Encounter.status` verwendet werden. Wenn ein zutreffender Encounter gefunden wurde, kann der Patientenkontext aus der subject-Referenz des Encounters entnommen werden.
3. Arbeitsliste: Der Client ruft auf dem Server eine Arbeitsliste ab (z.B. Liste aller Encounter, die aktuell auf einer bestimmten Station/Ambulanz stattfinden, Liste aller ServiceRequests/Tasks, die durch den Client abgearbeitet werden müssen (aktuell noch nicht im Scope der ISiK-Spezifikationen!) und etabliert den Kontext, nachdem der Benutzer einen Eintrag der Liste ausgewählt hat.
4. Manuelle Auswahl. Nach dem Start des Clients verwendet der Benutzer eine Suchmaske, in der anhand von Patientennummer oder anderer demografischer Daten gesucht werden kann. Der Client verwendet die Patient-Interaktionen des ISiK-Basismoduls, um auf dem Server nach zutreffenden Patienten zu suchen. Der Anwender wählt den gesuchten Patienten aus der Liste der Suchtreffer aus. Im Anschluss listet der Client, mithílfe der Encounter-Interaktionen des ISiK-Basismoduls, die relevanten Besuche des ausgewählten Patienten auf. (Anm.: Welche Besuche als "relevant" erachtet werden, liegt im Ermessen des Clients. Es könnte z.B. anhand von `Encounter.period`, `Encounter.class` und/oder `Encounter.status` gefiltert werden). Der Anwender wählt den zutreffenden Encounter aus.

Hinweis | Gefahr fehlerhafter Zuordnung!
--- | ---
| Die manuelle Auswahl von Patienten- und Fallkontext durch einen Benutzer ist fehleranfällig. Clients müssen geeigente Vorkehrungen und Plausibilitätsprüfungen implementieren um Falschzuordnungen zu verhindern.

### Dokumentenübermittlung (IHE MHD ITI-105 (Simplified Publish))

Die Dokumentenübermittlung erfolgt mittels IHE MHD ITI-105 (Simplified Publish)

Die Übermittlung des Dokumentes vom Client an den Server erfolgt mittels einer CREATE-Interaktion auf dem Ressourcentyp DocumentReference. Das anzulegende Dokument wird im Body der Interaktion übermittelt.

Hinweis | Breaking Change!
--- | ---
| Die in dieser Version erfolgte Umstellung der Interaktion von der $submit-document-Operation auf eine REST-basierte CREATE-Interaktion ist nicht kompatibel zu den Festlegungen dieses Moduls in Stufe 2! Die Änderung dient dem Zweck der Harmonisierung mit der IHE-MHD-Interaktion ITI-105 (Simplified Publish), die zum Zeitpunkt des Releases von Stufe 2 noch nicht zur Verfügung stand.

#### Maßgebliche Änderungen gegenüber Stufe 2 für den Client

- Der Client muss das eigentliche Dokument (PDF, JPEG o.ä.) base64-codiert in `DocumentReference.content.attachment.data` einbetten und den Mime-Type des Dokumentes in `DocumentReference.content.attachment.dataType` adäquat setzen
- Die Übermittlung erfolgt mittels POST auf den Endpunkt `[base]/DocumentReference` anstatt wie bisher mittels POST auf den Endpunkt `[base]\DocumentReference\$submit-document`
- Die DocumentReference-Ressource mit den eingebetteten Binärdaten wird nun unmittelbar im Body der Interaktion gesendet. Die Notwendigkeit, DocumentReference und Binary in eine Parameters-Ressource zu wrappen, entfällt damit.
- Die Antwort des Servers erfolgt in Form einer DocumentReference-Ressource (im Erfolgsfall) bzw. einer OperationOutcome-Ressource im Fehlerfall anstelle wie bisher einer Parameters-Ressource.

#### Maßgebliche Änderungen gegenüber Stufe 2 für den Server

- Die DocumentReference-Ressource mit den eingebetteten Binärdaten wird nun unmittelbar im Body der Interaktion gesendet. Die Notwendigkeit, DocumentReference und Binary aus der Parameters-Ressource zu extrahieren, entfällt damit.
- Die Übermittlung erfolgt mittels POST auf den Endpunkt `[base]/DocumentReference` anstatt wie bisher mittels POST auf den Endpunkt `[base]\DocumentReference\$submit-document`
- Der Server MUSS das eingebettete Dokument aus der DocumentReference herauslösen, separat persistieren und in `DocumentReference.content.attachemnt.url` auf das separierte Dokument verweisen. Beim Abruf einer DocumentReference, bzw. bei der Suche nach DocumentReference-Ressourcen darf das Dokument niemals eingebettet an den Client zurückgegeben werden. Das Dokument muss über den Binary-Endpunkt der API abrufbar gemacht werden.
- Die Antwort des Servers erfolgt in Form einer DocumentReference-Ressource (im Erfolgsfall) bzw. einer OperationOutcome-Ressource im Fehlerfall anstelle wie bisher einer Parameters-Ressource.

### Hinweise und Anmerkungen zur Implementierung von ITI-105 (Simplified Publish) im Kontext von ISiK

Für die Implementierung der Interaktion "Dokumentenbereitstellung" gelten die in IHE MHD festgelegten Vereinbarungen zu ITI-105 gemäß der unten aufgelisteten Kapitel. Abweichungen bzw. zusätzliche Festlegungen im Kontext von ISiK sind im Folgenden zu den einzelnen Kapiteln vermerkt.

#### 2:3.105.4.1 Simplified Publish Request Message

##### 2:3.105.4.1.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.105.4.1.2 Message Semantics

- Die übermittelte Ressource muss nur gegen das Profil "ISiKDokumentenMetadaten" valide sein, nicht gegen die IHE-DocumentReference-Profile, da die Übermittlung des Elementes `DocumentReference.docStatus` im ISiK-Kontext erlaubt, im IHE-Kontext jedoch verboten ist.
- Für Clients ist es ausreichend, das Dokument mit Hilfe eines KDL-Codes in DocumentReference.type zu klassifizieren. Die entsprechenden XDS-Class- und -Type-Codes müssen vom Server bei der Verarbeitung ergänzt werden. DocumentReference.category kann bei der Dokumentenbereitstellung leer bleiben.

##### 2:3.105.4.1.2.1 DocumentReference Resources

- Die DocumentReference-Ressoucen müssen im ISiK-Kontext auf Basis des Profils "ISiKDokumentenMetadaten" und den dort vereinbarten Kardinalitäten bzw. MustSupport-Flags erstellt werden.
- Die Verwendung von Contained-Ressourcen ist im ISiK-Kontext nicht erlaubt

##### 2:3.105.4.1.2.2 Patient Identity

- Der Client MUSS eine der im Kapitel "Herstellung von Patient- und Enocunterkontext" beschriebenen Optionen verwenden, um den Patienten- und Encounter-Kontext zu etablieren.
- Logische Referenzen für Patient und Encounter sind im ISiK-Kontext nicht erlaubt
- `DocumentReference.sourcePatientInfo` wird im ISiK-Kontext nicht verwendet

##### 2:3.105.4.1.2.3 Replace, Transform, Signs, and Append Associations

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.105.4.1.3 Expected Actions

- Die Erzeugung einer SubmissionSet Ressource durch den Server ist im ISiK-Kontext nicht erforderlich.
- Der Server muss ggf. fehlende XDS-Class- und -Type-Codes anhand des übermittelten KDL-Codes ergänzen und in DocumentReference.type bzw. DocumentReference.class zurückliefern. Die XDS-Codes können über die im Rahmen der KDL-Spezifikation publizierten ConceptMaps aus dem KDL-Code ermittelt werden. Die XDS-Codes werden für den einrichtungsübergreifenden Dokumentenaustausch über IHE XDS, bzw. MHD oder für die Übermittlung der Dokumente an die ePA des Patienten benötigt.

##### 2:3.105.4.1.3.1 Grouping with Actors in other Document Sharing Profiles

Das Kapitel ist für den ISiK-Kontext nicht relevant.

#### 2:3.105.4.2 Simplified Publish Response Message

##### 2:3.105.4.2.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.105.4.2.2 Message Semantics

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.105.4.2.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

#### 2:3.105.4.3 CapabilityStatement Resource

Es gelten die Vereinbarungen gemäß CapabilityStatement

### 2:3.105.5 Security Considerations

Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe Modul ISiK-Sicherheit

### Beispiel

`POST [base]/DocumentReference`

    {
        "resourceType": "DocumentReference",
        "id": "dok-beispiel-client-with-binary-pdf-example-short",
        "meta": {
            "security":  [
                {
                    "code": "HTEST",
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason"
                }
            ],
            "profile":  [
                "https://gematik.de/fhir/isik/v3/Dokumentenaustausch/StructureDefinition/ISiKDokumentenMetadaten"
            ]
        },
        "masterIdentifier": {
            "system": "urn:ietf:rfc:3986",
            "value": "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46340"
        },
        "type": {
            "coding":  [
                {
                    "system": "http://dvmd.de/fhir/CodeSystem/kdl",
                    "code": "PT130102",
                    "display": "Molekularpathologiebefund"
                }
            ]
        },
        "status": "current",
        "description": "Molekularpathologiebefund vom 31.12.21",
        "subject": {
            "reference": "Patient/PatientinMusterfrau"
        },
        "securityLabel":  [
            {
                "coding":  [
                    {
                        "code": "N",
                        "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality"
                    }
                ]
            }
        ],
        "content":  [
            {
                "attachment": {
                    "contentType": "application/pdf",
                    "data": "JVBERi0xLjUNJeLjz9MNCjEw",
                    "language": "de",
                    "creation": "2020-12-31T23:50:50-05:00"
                },
                "format": {
                    "code": "urn:ihe:iti:xds:2017:mimeTypeSufficient",
                    "system": "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode",
                    "display": "mimeType Sufficient"
                }
            }
        ],
        "context": {
            "facilityType": {
                "coding":  [
                    {
                        "code": "KHS",
                        "system": "http://ihe-d.de/CodeSystems/PatientBezogenenGesundheitsversorgung",
                        "display": "Krankenhaus"
                    }
                ]
            },
            "practiceSetting": {
                "coding":  [
                    {
                        "code": "ALLG",
                        "system": "http://ihe-d.de/CodeSystems/AerztlicheFachrichtungen"
                    }
                ]
            },
            "encounter":  [
                {
                    "reference": "Encounter/BeispielBesuch"
                }
            ]
        }
    }

Hinweis: Die Binary-Ressourcen sind der Lesbarkeit halber verkürzt dargestellt!

## Dokumentenabfrage und -zugriff

### Dokumentenabfrage (IHE MHD ITI-67 (Find DocumentReferences))

Dokumente können anhand ihrer Metadaten gesucht werden. Im Rahmen der ISiK-Spezifikation müssen mindestens die im Kapitel Interaktionen mit `MUSS` gekennzeichneten Suchparameter unterstützt werden. Einzelnen Systemen steht es frei, darüber hinaus weitere FHIR-konforme Suchparameter zu implementieren.

Die Ergebnisse einer Suchanfrage werden in Form eines Bundles zurückgegeben:

Bundle | I |  | Bundle | There are no (further) constraints on this element Element Id
    Bundle
Short description Contains a collection of resources Definition A container for a collection of resources. Data Type Bundle Constraints bdl-7:FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) `(type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()` bdl-9:A document must have an identifier with a system and a value `type = 'document' implies (identifier.system.exists() and identifier.value.exists())` bdl-3:entry.request mandatory for batch/transaction/history, otherwise prohibited `entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))` bdl-4:entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited `entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))` bdl-12:A message must have a MessageHeader as the first resource `type = 'message' implies entry.first().resource.is(MessageHeader)` bdl-1:total only when a search or history `total.empty() or (type = 'searchset') or (type = 'history')` bdl-2:entry.search only when a search `entry.search.empty() or (type = 'searchset')` bdl-11:A document must have a Composition as the first resource `type = 'document' implies entry.first().resource.is(Composition)` bdl-10:A document must have a date `type = 'document' implies (timestamp.hasValue())` Mappings rim:Entity. Role, or Act v2:N/A rim:N/A cda:ClinicalDocument, if bundle.type = document
identifier | Σ | 0..1 | Identifier | There are no (further) constraints on this element Element Id
    Bundle.identifier
Short description Persistent identifier for the bundle Definition A persistent identifier for the bundle that won't change as a bundle is copied from server to server. Comments Persistent identity generally only matters for batches of type Document, Message, and Collection. It would not normally be populated for search and history results and servers ignore Bundle.identifier when processing batches and transactions. For Documents the .identifier SHALL be populated such that the .identifier is globally unique. Data Type Identifier Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a v2:CX / EI (occasionally, more often EI maps to a resource id or a URL) rim:II - The Identifier class is a little looser than the v3 type II because it allows URIs as well as registered OIDs or GUIDs. Also maps to Role[classCode=IDENT] servd:Identifier w5:FiveWs.identifier cda:ClinicalDocument.id
type | Σ | 1..1 | code Binding Fixed Value | Element Id
    Bundle.type
Short description document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Definition Indicates the purpose of this bundle - how it is intended to be used. Comments It's possible to use a bundle for other purposes (e.g. a document can be accepted as a transaction). This is primarily defined so that there can be specific rules for some of the bundle types. Data Type code Binding Indicates the purpose of a bundle - how it is intended to be used. BundleType (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Fixed Value
    searchset
Mappings rim:n/a w5:FiveWs.class
timestamp | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
    Bundle.timestamp
Short description When the bundle was assembled Definition The date/time that the bundle was assembled - i.e. when the resources were placed in the bundle. Comments For many bundles, the timestamp is equal to .meta.lastUpdated, because they are not stored (e.g. search results). When a bundle is placed in a persistent store, .meta.lastUpdated will be usually be changed by the server. When the bundle is a message, a middleware agent altering the message (even if not stored) SHOULD update .meta.lastUpdated. .timestamp is used to track the original time of the Bundle, and SHOULD be populated. Usage: document : the date the document was created. Note: the composition may predate the document, or be associated with multiple documents. The date of the composition - the authoring time - may be earlier than the document assembly time message : the date that the content of the message was assembled. This date is not changed by middleware engines unless they add additional data that changes the meaning of the time of the message history : the date that the history was assembled. This time would be used as the _since time to ask for subsequent updates searchset : the time that the search set was assembled. Note that different pages MAY have different timestamps but need not. Having different timestamps does not imply that subsequent pages will represent or include changes made since the initial query transaction | transaction-response | batch | batch-response | collection : no particular assigned meaning The timestamp value should be greater than the lastUpdated and other timestamps in the resources in the bundle, and it should be equal or earlier than the .meta.lastUpdated on the Bundle itself. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a w5:FiveWs.init cda:ClinicalDocument.effectiveTime
total | Σ I | 1..1 | unsignedInt | There are no (further) constraints on this element Element Id
    Bundle.total
Short description If search, the total number of matches Definition If a set of search matches, this is the total number of entries of type 'match' across all pages in the search. It does not include search.mode = 'include' or 'outcome' entries and it does not provide a count of the number of entries in the Bundle. Comments Only used if the bundle is a search result set. The total does not include resources such as OperationOutcome and included resources, only the total number of matching resources. Data Type unsignedInt Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
link | Σ | 0..* | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.link
Short description Links related to this Bundle Definition A series of links that provide context to this bundle. Comments Both Bundle.link and Bundle.entry.link are defined to support providing additional context when Bundles are used (e.g. HATEOAS). Bundle.entry.link corresponds to links found in the HTTP header if the resource in the entry was read directly. This specification defines some specific uses of Bundle.link for searching and paging, but no specific uses for Bundle.entry.link, and no defined function in a transaction - the meaning is implementation specific. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
relation | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
    Bundle.link.relation
Short description See http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1 Definition A name which details the functional use for this link - see http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.link.url
Short description Reference details for the link Definition The reference details for the link. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
entry | Σ I | 0..* | BackboneElement | Element Id
    Bundle.entry
Short description Entry in the bundle - will have a resource or information Definition An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only). Data Type BackboneElement Sliced: Unordered, Open, by resource(Profile) Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` bdl-8:fullUrl cannot be a version specific reference `fullUrl.contains('/_history/').not()` bdl-5:must be a resource unless there's a request or response `resource.exists() or request.exists() or response.exists()` Mappings rim:n/a
(All Slices) |  |  |  | There are no (further) constraints on this element
link | Σ | 0..* | see (link) | There are no (further) constraints on this element Element Id
    Bundle.entry.link
Short description Links related to this entry Definition A series of links that provide context to this entry.
fullUrl | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry.fullUrl
Short description URI for resource (Absolute URL server address or URI for UUID/OID) Definition The Absolute URL for the resource. The fullUrl SHALL NOT disagree with the id in the resource - i.e. if the fullUrl is not a urn:uuid, the URL shall be version-independent URL consistent with the Resource.id. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) Results from operations might involve resources that are not identified. Comments fullUrl might not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the fullURL might be a URN or an absolute URL that does not end with the logical id of the resource (Resource.id). However, but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then the 'id' portion of the fullUrl SHALL end with the Resource.id. Note that the fullUrl is not the same as the canonical URL - it's an absolute url for an endpoint serving the resource (these will happen to have the same value on the canonical server for the resource with the canonical URL). Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
resource | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
    Bundle.entry.resource
Short description A resource in the bundle Definition The Resource for the entry. The purpose/meaning of the resource is determined by the Bundle.type. Data Type Resource Mappings rim:Entity. Role, or Act
search | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry.search
Short description Search related information Definition Information about the search process that lead to the creation of this entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
mode | Σ | 0..1 | code Binding | There are no (further) constraints on this element Element Id
    Bundle.entry.search.mode
Short description match | include | outcome - why this is in the result set Definition Why this entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. Comments There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence. Data Type code Binding Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. SearchEntryMode (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
score | Σ | 0..1 | decimal | There are no (further) constraints on this element Element Id
    Bundle.entry.search.score
Short description Search ranking (between 0 and 1) Definition When searching, the server's search ranking score for the entry. Comments Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order. See Patient Match for the EMPI search which relates to this element. Data Type decimal Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
request | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry.request
Short description Additional execution information (transaction/batch/history) Definition Additional information about how this entry should be processed as part of a transaction or batch. For history, it shows how the entry was processed to create the version contained in the entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
method | Σ | 1..1 | code Binding | There are no (further) constraints on this element Element Id
    Bundle.entry.request.method
Short description GET | HEAD | POST | PUT | DELETE | PATCH Definition In a transaction or batch, this is the HTTP action to be executed for this entry. In a history bundle, this indicates the HTTP action that occurred. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type code Binding HTTP verbs (in the HTTP command line). See [HTTP rfc](https://tools.ietf.org/html/rfc7231) for details. HTTPVerb (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry.request.url
Short description URL for HTTP equivalent of this entry Definition The URL for this entry, relative to the root (the address to which the request is posted). Comments E.g. for a Patient Create, the method would be "POST" and the URL would be "Patient". For a Patient Update, the method would be PUT and the URL would be "Patient/[id]". Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifNoneMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry.request.ifNoneMatch
Short description For managing cache currency Definition If the ETag values match, return a 304 Not Modified status. See the API documentation for "Conditional Read". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifModifiedSince | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
    Bundle.entry.request.ifModifiedSince
Short description For managing cache currency Definition Only perform the operation if the last updated date matches. See the API documentation for "Conditional Read". Comments Note: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry.request.ifMatch
Short description For managing update contention Definition Only perform the operation if the Etag value matches. For more information, see the API section "Managing Resource Contention". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifNoneExist | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry.request.ifNoneExist
Short description For conditional creates Definition Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for "Conditional Create". This is just the query portion of the URL - what follows the "?" (not including the "?"). Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
response | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry.response
Short description Results of execution (transaction/batch/history) Definition Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
status | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry.response.status
Short description Status response code (text optional) Definition The status code returned by processing this entry. The status SHALL start with a 3 digit HTTP code (e.g. 404) and may contain the standard HTTP description associated with the status code. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
location | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry.response.location
Short description The location (if the operation returns a location) Definition The location header created by processing this operation, populated if the operation returns a location. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
etag | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry.response.etag
Short description The Etag for the resource (if relevant) Definition The Etag for the resource, if the operation for the entry produced a versioned resource (see Resource Metadata and Versioning and Managing Resource Contention). Comments Etags match the Resource.meta.versionId. The ETag has to match the version id in the header if a resource is included. Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
lastModified | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
    Bundle.entry.response.lastModified
Short description Server's date time modified Definition The date/time that the resource was modified on the server. Comments This has to match the same time in the meta header (meta.lastUpdated) if a resource is included. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
outcome | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
    Bundle.entry.response.outcome
Short description OperationOutcome with hints and warnings (for batch/transaction) Definition An OperationOutcome containing hints and warnings produced as part of processing this entry in a batch or transaction. Comments For a POST/PUT operation, this is the equivalent outcome that would be returned for prefer = operationoutcome - except that the resource is always returned whether or not the outcome is returned. This outcome is not used for error responses in batch/transaction, only for hints and warnings. In a batch operation, the error will be in Bundle.entry.response, and for transaction, there will be a single OperationOutcome instead of a bundle in the case of an error. Data Type Resource Mappings rim:Entity. Role, or Act
DocumentReference | Σ I | 0..* | BackboneElement | Element Id
    Bundle.entry:DocumentReference
Short description DocumentReference Definition An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only). Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` bdl-8:fullUrl cannot be a version specific reference `fullUrl.contains('/_history/').not()` bdl-5:must be a resource unless there's a request or response `resource.exists() or request.exists() or response.exists()` Mappings rim:n/a
link | Σ | 0..* | see (link) | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.link
Short description Links related to this entry Definition A series of links that provide context to this entry.
fullUrl | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.fullUrl
Short description URI for resource (Absolute URL server address or URI for UUID/OID) Definition The Absolute URL for the resource. The fullUrl SHALL NOT disagree with the id in the resource - i.e. if the fullUrl is not a urn:uuid, the URL shall be version-independent URL consistent with the Resource.id. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) Results from operations might involve resources that are not identified. Comments fullUrl might not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the fullURL might be a URN or an absolute URL that does not end with the logical id of the resource (Resource.id). However, but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then the 'id' portion of the fullUrl SHALL end with the Resource.id. Note that the fullUrl is not the same as the canonical URL - it's an absolute url for an endpoint serving the resource (these will happen to have the same value on the canonical server for the resource with the canonical URL). Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
resource | Σ I | 1..1 | Erforderliche Metadaten für Dokumentenaustausch in ISiK | Element Id
    Bundle.entry:DocumentReference.resource
Short description A reference to a document Definition A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text. Comments Usually, this is used for documents other than those defined by FHIR. Data Type Erforderliche Metadaten für Dokumentenaustausch in ISiK Constraints dom-2:If the resource is contained in another resource, it SHALL NOT contain nested Resources `contained.contained.empty()` dom-4:If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()` dom-3:If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()` dom-6:A resource should have narrative for robust management `text.`div`.exists()` dom-5:If a resource is contained in another resource, it SHALL NOT have a security label `contained.meta.security.empty()` Mappings rim:Entity. Role, or Act workflow:Event fhircomposition:when describing a Composition rim:Document[classCode="DOC" and moodCode="EVN"] cda:when describing a CDA
search | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.search
Short description Search related information Definition Information about the search process that lead to the creation of this entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
mode | Σ | 0..1 | code Binding | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.search.mode
Short description match | include | outcome - why this is in the result set Definition Why this entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. Comments There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence. Data Type code Binding Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. SearchEntryMode (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
score | Σ | 0..1 | decimal | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.search.score
Short description Search ranking (between 0 and 1) Definition When searching, the server's search ranking score for the entry. Comments Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order. See Patient Match for the EMPI search which relates to this element. Data Type decimal Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
request | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request
Short description Additional execution information (transaction/batch/history) Definition Additional information about how this entry should be processed as part of a transaction or batch. For history, it shows how the entry was processed to create the version contained in the entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
method | Σ | 1..1 | code Binding | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.method
Short description GET | HEAD | POST | PUT | DELETE | PATCH Definition In a transaction or batch, this is the HTTP action to be executed for this entry. In a history bundle, this indicates the HTTP action that occurred. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type code Binding HTTP verbs (in the HTTP command line). See [HTTP rfc](https://tools.ietf.org/html/rfc7231) for details. HTTPVerb (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.url
Short description URL for HTTP equivalent of this entry Definition The URL for this entry, relative to the root (the address to which the request is posted). Comments E.g. for a Patient Create, the method would be "POST" and the URL would be "Patient". For a Patient Update, the method would be PUT and the URL would be "Patient/[id]". Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifNoneMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.ifNoneMatch
Short description For managing cache currency Definition If the ETag values match, return a 304 Not Modified status. See the API documentation for "Conditional Read". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifModifiedSince | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.ifModifiedSince
Short description For managing cache currency Definition Only perform the operation if the last updated date matches. See the API documentation for "Conditional Read". Comments Note: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.ifMatch
Short description For managing update contention Definition Only perform the operation if the Etag value matches. For more information, see the API section "Managing Resource Contention". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
ifNoneExist | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.request.ifNoneExist
Short description For conditional creates Definition Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for "Conditional Create". This is just the query portion of the URL - what follows the "?" (not including the "?"). Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
response | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response
Short description Results of execution (transaction/batch/history) Definition Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
status | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response.status
Short description Status response code (text optional) Definition The status code returned by processing this entry. The status SHALL start with a 3 digit HTTP code (e.g. 404) and may contain the standard HTTP description associated with the status code. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
location | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response.location
Short description The location (if the operation returns a location) Definition The location header created by processing this operation, populated if the operation returns a location. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
etag | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response.etag
Short description The Etag for the resource (if relevant) Definition The Etag for the resource, if the operation for the entry produced a versioned resource (see Resource Metadata and Versioning and Managing Resource Contention). Comments Etags match the Resource.meta.versionId. The ETag has to match the version id in the header if a resource is included. Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
lastModified | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response.lastModified
Short description Server's date time modified Definition The date/time that the resource was modified on the server. Comments This has to match the same time in the meta header (meta.lastUpdated) if a resource is included. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
outcome | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
    Bundle.entry:DocumentReference.response.outcome
Short description OperationOutcome with hints and warnings (for batch/transaction) Definition An OperationOutcome containing hints and warnings produced as part of processing this entry in a batch or transaction. Comments For a POST/PUT operation, this is the equivalent outcome that would be returned for prefer = operationoutcome - except that the resource is always returned whether or not the outcome is returned. This outcome is not used for error responses in batch/transaction, only for hints and warnings. In a batch operation, the error will be in Bundle.entry.response, and for transaction, there will be a single OperationOutcome instead of a bundle in the case of an error. Data Type Resource Mappings rim:Entity. Role, or Act
signature | Σ | 0..1 | Signature | There are no (further) constraints on this element Element Id
    Bundle.signature
Short description Digital Signature Definition Digital Signature - base64 encoded. XML-DSig or a JWT. Requirements A Signature holds an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature may either be a cryptographic type (XML DigSig or a JWS), which is able to provide non-repudiation proof, or it may be a graphical image that represents a signature or a signature process. This element allows capturing signatures on documents, messages, transactions or even search responses, to support content-authentication, non-repudiation or other business cases. This is primarily relevant where the bundle may travel through multiple hops or via other mechanisms where HTTPS non-repudiation is insufficient. Comments The signature could be created by the "author" of the bundle or by the originating device. Requirements around inclusion of a signature, verification of signatures and treatment of signed/non-signed bundles is implementation-environment specific. Data Type Signature Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a rim:N/A

Suchergebnisse können zahlreich sein. Server MÜSSEN daher FHIR-konformes Paging unterstützen. Server KÖNNEN im SearchSet-Bundle auch Ressourcen vom Typ OperationOutcome mit Informationen über die Suchergebnisse zurückgeben. Diese müssen in `Bundle.entry.search.mode` mit dem Wert `outcome` gekennzeichnet sein. Die Issues im OperationOutcome dürfen nur dem Schweregrad `information` oder `warning` entsprechen. Issues vom Schweregrad `error` oder `fatal` sind unzulässig.

### Hinweise und Anmerkungen zur Implementierung von IHE MHD ITI-67 (Find DocumentReferences)

Für die Implementierung der Interaktion "Dokumentenabfrage" gelten die in IHE MHD festgelegten Vereinbarungen zu ITI-67 (Find DocumentReferences) gemäß der unten aufgelisteten Kapitel. Abweichungen bzw. zusätzliche Festlegungen im Kontext von ISiK sind im Folgenden zu den einzelnen Kapiteln vermerkt.

#### 2:3.67.4.1 Find Document References Request Message

##### 2:3.67.4.1.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.67.4.1.2 Message Semantics

Es gelten darüber hinaus die allgemeinen Festlegungen zu Suchparametern gemäß ISiK Basisprofil Stufe 2

##### 2:3.67.4.1.2.1 Query Search Parameters

Im Rahmen der ISiK-Spezifikation müssen mindestens die im Kapitel Interaktionen mit `MUSS` gekennzeichneten Suchparameter unterstützt werden. Einzelnen Systemen steht es frei, darüber hinaus weitere FHIR-konforme bzw in IHE MHD geforderte Suchparameter zu implementieren.

Die in IHE bestehende Verpflichtung für Clients, bei jeder Query mindestens einen der Parameter `patient` oder `patient.identifier` verwenden zu müssen, besteht im ISiK-Kontext nicht. Patientenübergreifende Suchanfragen sind zulässig.

##### 2:3.67.4.1.2.2 Populating Expected Response Format

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.67.4.1.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.67.4.1.3.1 XDS on FHIR Option

Die Implementierung der "XDS on FHIR"-Option ist im ISiK-Kontext nicht gefordert.

#### 2:3.67.4.2 Find Document References Response Message

##### 2:3.67.4.2.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.67.4.2.2 Message Semantics

- Suchergebnisse können zahlreich sein. Server MÜSSEN daher FHIR-konformes Paging unterstützen. Server KÖNNEN im * SearchSet-Bundle auch Ressourcen vom Typ OperationOutcome mit Informationen über die Suchergebnisse zurückgeben. Diese müssen in `Bundle.entry.search.mode` mit dem Wert `outcome` gekennzeichnet sein. Die Issues im OperationOutcome dürfen nur dem Schweregrad `information` oder `warning` entsprechen. Issues vom Schweregrad `error` oder `fatal` sind unzulässig.
- Das Ergebnis-Bundle der Suche muss konform sein zum Profil "ISiKDokumentenSuchergebnisse"

  Bundle | I |  | Bundle | There are no (further) constraints on this element Element Id
      Bundle
  Short description Contains a collection of resources Definition A container for a collection of resources. Data Type Bundle Constraints bdl-7:FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId (except in history bundles) `(type = 'history') or entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()` bdl-9:A document must have an identifier with a system and a value `type = 'document' implies (identifier.system.exists() and identifier.value.exists())` bdl-3:entry.request mandatory for batch/transaction/history, otherwise prohibited `entry.all(request.exists() = (%resource.type = 'batch' or %resource.type = 'transaction' or %resource.type = 'history'))` bdl-4:entry.response mandatory for batch-response/transaction-response/history, otherwise prohibited `entry.all(response.exists() = (%resource.type = 'batch-response' or %resource.type = 'transaction-response' or %resource.type = 'history'))` bdl-12:A message must have a MessageHeader as the first resource `type = 'message' implies entry.first().resource.is(MessageHeader)` bdl-1:total only when a search or history `total.empty() or (type = 'searchset') or (type = 'history')` bdl-2:entry.search only when a search `entry.search.empty() or (type = 'searchset')` bdl-11:A document must have a Composition as the first resource `type = 'document' implies entry.first().resource.is(Composition)` bdl-10:A document must have a date `type = 'document' implies (timestamp.hasValue())` Mappings rim:Entity. Role, or Act v2:N/A rim:N/A cda:ClinicalDocument, if bundle.type = document
  identifier | Σ | 0..1 | Identifier | There are no (further) constraints on this element Element Id
      Bundle.identifier
  Short description Persistent identifier for the bundle Definition A persistent identifier for the bundle that won't change as a bundle is copied from server to server. Comments Persistent identity generally only matters for batches of type Document, Message, and Collection. It would not normally be populated for search and history results and servers ignore Bundle.identifier when processing batches and transactions. For Documents the .identifier SHALL be populated such that the .identifier is globally unique. Data Type Identifier Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a v2:CX / EI (occasionally, more often EI maps to a resource id or a URL) rim:II - The Identifier class is a little looser than the v3 type II because it allows URIs as well as registered OIDs or GUIDs. Also maps to Role[classCode=IDENT] servd:Identifier w5:FiveWs.identifier cda:ClinicalDocument.id
  type | Σ | 1..1 | code Binding Fixed Value | Element Id
      Bundle.type
  Short description document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection Definition Indicates the purpose of this bundle - how it is intended to be used. Comments It's possible to use a bundle for other purposes (e.g. a document can be accepted as a transaction). This is primarily defined so that there can be specific rules for some of the bundle types. Data Type code Binding Indicates the purpose of a bundle - how it is intended to be used. BundleType (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Fixed Value
      searchset
  Mappings rim:n/a w5:FiveWs.class
  timestamp | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
      Bundle.timestamp
  Short description When the bundle was assembled Definition The date/time that the bundle was assembled - i.e. when the resources were placed in the bundle. Comments For many bundles, the timestamp is equal to .meta.lastUpdated, because they are not stored (e.g. search results). When a bundle is placed in a persistent store, .meta.lastUpdated will be usually be changed by the server. When the bundle is a message, a middleware agent altering the message (even if not stored) SHOULD update .meta.lastUpdated. .timestamp is used to track the original time of the Bundle, and SHOULD be populated. Usage: document : the date the document was created. Note: the composition may predate the document, or be associated with multiple documents. The date of the composition - the authoring time - may be earlier than the document assembly time message : the date that the content of the message was assembled. This date is not changed by middleware engines unless they add additional data that changes the meaning of the time of the message history : the date that the history was assembled. This time would be used as the _since time to ask for subsequent updates searchset : the time that the search set was assembled. Note that different pages MAY have different timestamps but need not. Having different timestamps does not imply that subsequent pages will represent or include changes made since the initial query transaction | transaction-response | batch | batch-response | collection : no particular assigned meaning The timestamp value should be greater than the lastUpdated and other timestamps in the resources in the bundle, and it should be equal or earlier than the .meta.lastUpdated on the Bundle itself. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a w5:FiveWs.init cda:ClinicalDocument.effectiveTime
  total | Σ I | 1..1 | unsignedInt | There are no (further) constraints on this element Element Id
      Bundle.total
  Short description If search, the total number of matches Definition If a set of search matches, this is the total number of entries of type 'match' across all pages in the search. It does not include search.mode = 'include' or 'outcome' entries and it does not provide a count of the number of entries in the Bundle. Comments Only used if the bundle is a search result set. The total does not include resources such as OperationOutcome and included resources, only the total number of matching resources. Data Type unsignedInt Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  link | Σ | 0..* | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.link
  Short description Links related to this Bundle Definition A series of links that provide context to this bundle. Comments Both Bundle.link and Bundle.entry.link are defined to support providing additional context when Bundles are used (e.g. HATEOAS). Bundle.entry.link corresponds to links found in the HTTP header if the resource in the entry was read directly. This specification defines some specific uses of Bundle.link for searching and paging, but no specific uses for Bundle.entry.link, and no defined function in a transaction - the meaning is implementation specific. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  relation | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
      Bundle.link.relation
  Short description See http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1 Definition A name which details the functional use for this link - see http://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.link.url
  Short description Reference details for the link Definition The reference details for the link. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  entry | Σ I | 0..* | BackboneElement | Element Id
      Bundle.entry
  Short description Entry in the bundle - will have a resource or information Definition An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only). Data Type BackboneElement Sliced: Unordered, Open, by resource(Profile) Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` bdl-8:fullUrl cannot be a version specific reference `fullUrl.contains('/_history/').not()` bdl-5:must be a resource unless there's a request or response `resource.exists() or request.exists() or response.exists()` Mappings rim:n/a
  (All Slices) |  |  |  | There are no (further) constraints on this element
  link | Σ | 0..* | see (link) | There are no (further) constraints on this element Element Id
      Bundle.entry.link
  Short description Links related to this entry Definition A series of links that provide context to this entry.
  fullUrl | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry.fullUrl
  Short description URI for resource (Absolute URL server address or URI for UUID/OID) Definition The Absolute URL for the resource. The fullUrl SHALL NOT disagree with the id in the resource - i.e. if the fullUrl is not a urn:uuid, the URL shall be version-independent URL consistent with the Resource.id. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) Results from operations might involve resources that are not identified. Comments fullUrl might not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the fullURL might be a URN or an absolute URL that does not end with the logical id of the resource (Resource.id). However, but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then the 'id' portion of the fullUrl SHALL end with the Resource.id. Note that the fullUrl is not the same as the canonical URL - it's an absolute url for an endpoint serving the resource (these will happen to have the same value on the canonical server for the resource with the canonical URL). Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  resource | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
      Bundle.entry.resource
  Short description A resource in the bundle Definition The Resource for the entry. The purpose/meaning of the resource is determined by the Bundle.type. Data Type Resource Mappings rim:Entity. Role, or Act
  search | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry.search
  Short description Search related information Definition Information about the search process that lead to the creation of this entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  mode | Σ | 0..1 | code Binding | There are no (further) constraints on this element Element Id
      Bundle.entry.search.mode
  Short description match | include | outcome - why this is in the result set Definition Why this entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. Comments There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence. Data Type code Binding Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. SearchEntryMode (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  score | Σ | 0..1 | decimal | There are no (further) constraints on this element Element Id
      Bundle.entry.search.score
  Short description Search ranking (between 0 and 1) Definition When searching, the server's search ranking score for the entry. Comments Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order. See Patient Match for the EMPI search which relates to this element. Data Type decimal Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  request | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry.request
  Short description Additional execution information (transaction/batch/history) Definition Additional information about how this entry should be processed as part of a transaction or batch. For history, it shows how the entry was processed to create the version contained in the entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  method | Σ | 1..1 | code Binding | There are no (further) constraints on this element Element Id
      Bundle.entry.request.method
  Short description GET | HEAD | POST | PUT | DELETE | PATCH Definition In a transaction or batch, this is the HTTP action to be executed for this entry. In a history bundle, this indicates the HTTP action that occurred. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type code Binding HTTP verbs (in the HTTP command line). See [HTTP rfc](https://tools.ietf.org/html/rfc7231) for details. HTTPVerb (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry.request.url
  Short description URL for HTTP equivalent of this entry Definition The URL for this entry, relative to the root (the address to which the request is posted). Comments E.g. for a Patient Create, the method would be "POST" and the URL would be "Patient". For a Patient Update, the method would be PUT and the URL would be "Patient/[id]". Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifNoneMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry.request.ifNoneMatch
  Short description For managing cache currency Definition If the ETag values match, return a 304 Not Modified status. See the API documentation for "Conditional Read". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifModifiedSince | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
      Bundle.entry.request.ifModifiedSince
  Short description For managing cache currency Definition Only perform the operation if the last updated date matches. See the API documentation for "Conditional Read". Comments Note: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry.request.ifMatch
  Short description For managing update contention Definition Only perform the operation if the Etag value matches. For more information, see the API section "Managing Resource Contention". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifNoneExist | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry.request.ifNoneExist
  Short description For conditional creates Definition Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for "Conditional Create". This is just the query portion of the URL - what follows the "?" (not including the "?"). Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  response | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry.response
  Short description Results of execution (transaction/batch/history) Definition Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  status | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry.response.status
  Short description Status response code (text optional) Definition The status code returned by processing this entry. The status SHALL start with a 3 digit HTTP code (e.g. 404) and may contain the standard HTTP description associated with the status code. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  location | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry.response.location
  Short description The location (if the operation returns a location) Definition The location header created by processing this operation, populated if the operation returns a location. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  etag | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry.response.etag
  Short description The Etag for the resource (if relevant) Definition The Etag for the resource, if the operation for the entry produced a versioned resource (see Resource Metadata and Versioning and Managing Resource Contention). Comments Etags match the Resource.meta.versionId. The ETag has to match the version id in the header if a resource is included. Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  lastModified | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
      Bundle.entry.response.lastModified
  Short description Server's date time modified Definition The date/time that the resource was modified on the server. Comments This has to match the same time in the meta header (meta.lastUpdated) if a resource is included. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  outcome | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
      Bundle.entry.response.outcome
  Short description OperationOutcome with hints and warnings (for batch/transaction) Definition An OperationOutcome containing hints and warnings produced as part of processing this entry in a batch or transaction. Comments For a POST/PUT operation, this is the equivalent outcome that would be returned for prefer = operationoutcome - except that the resource is always returned whether or not the outcome is returned. This outcome is not used for error responses in batch/transaction, only for hints and warnings. In a batch operation, the error will be in Bundle.entry.response, and for transaction, there will be a single OperationOutcome instead of a bundle in the case of an error. Data Type Resource Mappings rim:Entity. Role, or Act
  DocumentReference | Σ I | 0..* | BackboneElement | Element Id
      Bundle.entry:DocumentReference
  Short description DocumentReference Definition An entry in a bundle resource - will either contain a resource or information about a resource (transactions and history only). Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` bdl-8:fullUrl cannot be a version specific reference `fullUrl.contains('/_history/').not()` bdl-5:must be a resource unless there's a request or response `resource.exists() or request.exists() or response.exists()` Mappings rim:n/a
  link | Σ | 0..* | see (link) | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.link
  Short description Links related to this entry Definition A series of links that provide context to this entry.
  fullUrl | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.fullUrl
  Short description URI for resource (Absolute URL server address or URI for UUID/OID) Definition The Absolute URL for the resource. The fullUrl SHALL NOT disagree with the id in the resource - i.e. if the fullUrl is not a urn:uuid, the URL shall be version-independent URL consistent with the Resource.id. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) Results from operations might involve resources that are not identified. Comments fullUrl might not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the fullURL might be a URN or an absolute URL that does not end with the logical id of the resource (Resource.id). However, but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then the 'id' portion of the fullUrl SHALL end with the Resource.id. Note that the fullUrl is not the same as the canonical URL - it's an absolute url for an endpoint serving the resource (these will happen to have the same value on the canonical server for the resource with the canonical URL). Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  resource | Σ I | 1..1 | Erforderliche Metadaten für Dokumentenaustausch in ISiK | Element Id
      Bundle.entry:DocumentReference.resource
  Short description A reference to a document Definition A reference to a document of any kind for any purpose. Provides metadata about the document so that the document can be discovered and managed. The scope of a document is any seralized object with a mime-type, so includes formal patient centric documents (CDA), cliical notes, scanned paper, and non-patient specific documents like policy text. Comments Usually, this is used for documents other than those defined by FHIR. Data Type Erforderliche Metadaten für Dokumentenaustausch in ISiK Constraints dom-2:If the resource is contained in another resource, it SHALL NOT contain nested Resources `contained.contained.empty()` dom-4:If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()` dom-3:If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()` dom-6:A resource should have narrative for robust management `text.`div`.exists()` dom-5:If a resource is contained in another resource, it SHALL NOT have a security label `contained.meta.security.empty()` Mappings rim:Entity. Role, or Act workflow:Event fhircomposition:when describing a Composition rim:Document[classCode="DOC" and moodCode="EVN"] cda:when describing a CDA
  search | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.search
  Short description Search related information Definition Information about the search process that lead to the creation of this entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  mode | Σ | 0..1 | code Binding | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.search.mode
  Short description match | include | outcome - why this is in the result set Definition Why this entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. Comments There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence. Data Type code Binding Why an entry is in the result set - whether it's included as a match or because of an _include requirement, or to convey information or warning information about the search process. SearchEntryMode (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  score | Σ | 0..1 | decimal | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.search.score
  Short description Search ranking (between 0 and 1) Definition When searching, the server's search ranking score for the entry. Comments Servers are not required to return a ranking score. 1 is most relevant, and 0 is least relevant. Often, search results are sorted by score, but the client may specify a different sort order. See Patient Match for the EMPI search which relates to this element. Data Type decimal Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  request | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request
  Short description Additional execution information (transaction/batch/history) Definition Additional information about how this entry should be processed as part of a transaction or batch. For history, it shows how the entry was processed to create the version contained in the entry. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  method | Σ | 1..1 | code Binding | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.method
  Short description GET | HEAD | POST | PUT | DELETE | PATCH Definition In a transaction or batch, this is the HTTP action to be executed for this entry. In a history bundle, this indicates the HTTP action that occurred. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type code Binding HTTP verbs (in the HTTP command line). See [HTTP rfc](https://tools.ietf.org/html/rfc7231) for details. HTTPVerb (required)Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  url | Σ | 1..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.url
  Short description URL for HTTP equivalent of this entry Definition The URL for this entry, relative to the root (the address to which the request is posted). Comments E.g. for a Patient Create, the method would be "POST" and the URL would be "Patient". For a Patient Update, the method would be PUT and the URL would be "Patient/[id]". Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifNoneMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.ifNoneMatch
  Short description For managing cache currency Definition If the ETag values match, return a 304 Not Modified status. See the API documentation for "Conditional Read". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifModifiedSince | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.ifModifiedSince
  Short description For managing cache currency Definition Only perform the operation if the last updated date matches. See the API documentation for "Conditional Read". Comments Note: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifMatch | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.ifMatch
  Short description For managing update contention Definition Only perform the operation if the Etag value matches. For more information, see the API section "Managing Resource Contention". Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  ifNoneExist | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.request.ifNoneExist
  Short description For conditional creates Definition Instruct the server not to perform the create if a specified resource already exists. For further information, see the API documentation for "Conditional Create". This is just the query portion of the URL - what follows the "?" (not including the "?"). Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  response | Σ I | 0..1 | BackboneElement | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response
  Short description Results of execution (transaction/batch/history) Definition Indicates the results of processing the corresponding 'request' entry in the batch or transaction being responded to or what the results of an operation where when returning history. Data Type BackboneElement Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  status | Σ | 1..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response.status
  Short description Status response code (text optional) Definition The status code returned by processing this entry. The status SHALL start with a 3 digit HTTP code (e.g. 404) and may contain the standard HTTP description associated with the status code. Comments Note that FHIR strings SHALL NOT exceed 1MB in size Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  location | Σ | 0..1 | uri | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response.location
  Short description The location (if the operation returns a location) Definition The location header created by processing this operation, populated if the operation returns a location. Comments see http://en.wikipedia.org/wiki/Uniform_resource_identifier Data Type uri Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  etag | Σ | 0..1 | string | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response.etag
  Short description The Etag for the resource (if relevant) Definition The Etag for the resource, if the operation for the entry produced a versioned resource (see Resource Metadata and Versioning and Managing Resource Contention). Comments Etags match the Resource.meta.versionId. The ETag has to match the version id in the header if a resource is included. Data Type string Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  lastModified | Σ | 0..1 | instant | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response.lastModified
  Short description Server's date time modified Definition The date/time that the resource was modified on the server. Comments This has to match the same time in the meta header (meta.lastUpdated) if a resource is included. Data Type instant Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a
  outcome | Σ | 0..1 | Resource | There are no (further) constraints on this element Element Id
      Bundle.entry:DocumentReference.response.outcome
  Short description OperationOutcome with hints and warnings (for batch/transaction) Definition An OperationOutcome containing hints and warnings produced as part of processing this entry in a batch or transaction. Comments For a POST/PUT operation, this is the equivalent outcome that would be returned for prefer = operationoutcome - except that the resource is always returned whether or not the outcome is returned. This outcome is not used for error responses in batch/transaction, only for hints and warnings. In a batch operation, the error will be in Bundle.entry.response, and for transaction, there will be a single OperationOutcome instead of a bundle in the case of an error. Data Type Resource Mappings rim:Entity. Role, or Act
  signature | Σ | 0..1 | Signature | There are no (further) constraints on this element Element Id
      Bundle.signature
  Short description Digital Signature Definition Digital Signature - base64 encoded. XML-DSig or a JWT. Requirements A Signature holds an electronic representation of a signature and its supporting context in a FHIR accessible form. The signature may either be a cryptographic type (XML DigSig or a JWS), which is able to provide non-repudiation proof, or it may be a graphical image that represents a signature or a signature process. This element allows capturing signatures on documents, messages, transactions or even search responses, to support content-authentication, non-repudiation or other business cases. This is primarily relevant where the bundle may travel through multiple hops or via other mechanisms where HTTPS non-repudiation is insufficient. Comments The signature could be created by the "author" of the bundle or by the originating device. Requirements around inclusion of a signature, verification of signatures and treatment of signed/non-signed bundles is implementation-environment specific. Data Type Signature Constraints ele-1:All FHIR elements must have a @value or children `hasValue() or (children().count() > id.count())` Mappings rim:n/a rim:N/A

##### 2:3.67.4.2.2.1 DocumentReference Resource Contents

- Die DocumentReference-Ressoucen müssen im ISiK-Kontext auf Basis des Profils "ISiKDokumentenMetadaten" und den dort vereinbarten Kardinalitäten bzw. MustSupport-Flags erstellt werden.

##### 2:3.67.4.2.2.1.1 Document Location

Die Vereinbarungen gelten uneingeschränkt.

Alle weiteren Unterkapitel von 2:3.67.4.2.2.1 DocumentReference Resource Contents sind für den ISiK-Kontext nicht relevant.

#### 2:3.67.4.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

#### 2:3.67.4.4 CapabilityStatement Resource

Es gelten die Vereinbarungen gemäß CapabilityStatement

#### 2:3.67.5 Security Considerations

Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe Modul ISiK-Sicherheit

#### Beispiele

- Suche anhand von Patientenkontext (PID) und Dokumentendatum: `[base]/DocumentReference?patient.identifier=1234&creation=gt2021-10-06`
- Suche nach vorläufigen Endoskopiebefunden (anhand KDL-Dokumenttyp und `docStatus`): `[base]/DocumentReference?type=http://dvmd.de/fhir/CodeSystem/kdl|DG02010&doc-status=preliminary`
- Suche von Dokumenten anhand der Nummer des Abrechnungsfalles: `[base]/DocumentReference?encounter.account:identifier=56789`

### Dokumentenzugriff (IHE MHD ITI-68 (Retrieve Document))

Das den Metadaten zugeordnete Dokument kann jeweils unter `DocumentReference.content.attachment.url` vom Server abgerufen werden.

### Hinweise und Anmerkungen zur Implementierung von IHE MHD ITI-68 (Retrieve Document)

Für die Implementierung der Interaktion "Dokumentenzugriff" gelten die in IHE MHD festgelegten Vereinbarungen zu ITI-68 (Retrieve Document) gemäß der unten aufgelisteten Kapitel. Abweichungen bzw. zusätzliche Festlegungen im Kontext von ISiK sind im Folgenden zu den einzelnen Kapiteln vermerkt.

#### 2:3.68.4.1 Retrieve Document Request Message

##### 2:3.68.4.1.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.68.4.1.2 Message Semantics

Der einzige MIME-Type, den alle Dokumentenserver verpflichtend zurückgeben können MÜSSEN, ist der MIME Type, der dem `DocumentReference.content.attachment.contentType` entspricht.

Im ISiK-Kontext SOLLEN Dokumentenserver das Dokument darüber hinaus über einen Binary-Endpunkt bereitstellen können. Dieser verfügt über folgende Besonderheit:

- Wenn der Zugriff mit dem Accept-Header `application/fhir+xml` oder `application/fhir+json` erfolgt, müssen die Daten als Binary-Ressource im angeforderten Format zurückgegeben werden.
- Wenn der Zugriff mit einem anderen Accept-Header als `application/fhir+xml` oder `application/fhir+json` erfolgt, so soll das Dokument im angeforderten Format zurückgegeben werden, z.B. MUSS bei Zugriffen mit Accept-Header `application/pdf` das Dokument unmittelbar als PDF zurückgegeben werden, sofern dies dem Content-Type der Binary-Ressource entspricht.

##### 2:3.68.4.1.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

#### 2:3.68.4.2 Retrieve Document Response Message

Die Vereinbarungen dieses Kapitels und aller Unterkapitel gelten uneingeschränkt.

##### 2:3.68.4.2.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.68.4.2.2 Message Semantics

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.68.4.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.68.4.4 CapabilityStatement Resource

Es gelten die Vereinbarungen gemäß CapabilityStatement

#### 2:3.68.5 Security Considerations

Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe Modul ISiK-Sicherheit

## Interaktion: Update von Metadaten

### Herstellung von Dokumentenkontext

Der Client muss zunächst die URL der DocumentReference ermitteln, auf die das Update angewendet werden soll. Hierzu kann die Interaktion Dokumentenabfrage verwendet werden.

### Metadatenupdate

Das Update der Metadaten erfolgt mittels der `$update-metadata` Operation. Hinweis: Der zum Zeitpunkt der Erstellung dieser Spezifikation vorliegende IHE-MHD-Implementierungsleitfaden sieht kein Metadatenupdate vor. Hier müsste stets ein neues Dokument (`$submit-document` mit Referenz auf das zu ersetzende Dokument in `DocumentReference.relatesTo`) übermittelt werden.

Für den ISiK-Usecase als maßgeblich relevant und unkritisch in Bezug auf die Versionierung hat sich jedoch das Element `docStatus`erwiesen, welches im IHE-Kontext keine Berücksichtigung findet. Im einrichtungsinternen Dokumentenaustausch kommt es häufig vor, dass sich der Status eines Dokumentes ändert (z.b. vorläufig -> final), ohne dass dies Auswirkungen auf den Inhalt hat. Die Anlage eines neuen Dokumentes wäre in diesem Kontext nicht effizient.

Daher spezifiziert ISiK eine geeignete Operation, die das gezielte Ändern des Dokumentenstatus ermöglicht.

### OperationDefinition `$update-metadata`

### Invocations

    URL: [base]/DocumentReference/[id]/$update-metadata

### Parameters (In)

Name | Cardinality | Type | Binding | Documentation
docStatus | 1..1 | code | CompositionStatus (required) | new value for element `docStatus`

Expected behaviour:

- Servers SHALL update the DocumentReference.docStatus with the submitted values
- Servers SHALL ensure that DocumentReference.text reflects this change

### Beispiel

    [base]/DocumentReference/example/$update-metadata?docStatus=final

Hinweis | Work in Progress!
--- | ---
| Die hier vorliegende Definition der Operation dient als Vorschlag, der auf Basis von Implementierungserfahrungen weiterentwickelt werden soll. Kritik, Feedback und Verbesserungsvorschläge, insbesondere UseCases für das Update weiterer Metadaten-Elemente bitte im ISiK-Community-Chat diskutieren!

## Erzeugen von Metadaten (IHE MHD ITI-106 Generate Metadata)

Hinweis | Breaking Change!
--- | ---
| Die in dieser Version erfolgte Umstellung der Definition von $generate-metadata von der in ISiK Stufe 2 spezifizierten OperationDefinition auf die in IHE MHD ITI-106 spezifizierte Fassung ist nicht kompatibel zu den Festlegungen dieses Moduls in Stufe 2! Die Änderung dient dem Zweck der Harmonisierung mit der IHE-MHD-Interaktion ITI-106 (Generate Metadata), die zum Zeitpunkt des Releases von Stufe 2 noch nicht zur Verfügung stand.

### Hinweise und Anmerkungen zur Implementierung von IHE MHD ITI-106 (Generate Metadata)

Für die Implementierung der Interaktion "Erzeugen von Dokumentenmetadaten" gelten die in IHE MHD festgelegten Vereinbarungen zu ITI-106 (Generate Metadata) gemäß der unten aufgelisteten Kapitel. Abweichungen bzw. zusätzliche Festlegungen im Kontext von ISiK sind im Folgenden zu den einzelnen Kapiteln vermerkt.

#### 2:3.106.4.1 Generate Metadata Request Message

##### 2:3.106.4.1.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.106.4.1.2 Message Semantics

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.106.4.1.3 Expected Actions

Der Fokus für die Implementierung der Operation ISiK-Kontext sollte auf dem Persistieren und Erzeugen von Metadaten für ISiK-konforme Bundles gemäß Interaktion ISiK Modul Basis Stufe 2: Bericht aus Subsystem liegen. Für die Implementierung kann das unten angegeben ISiK-Spezifische Mapping Composition -> DocumentReference als Anhaltspunkt verwendet werden.

Die Unterstützung weiterer Input-Formate (z.B. CDA oder andere FHIR-Dokumente, wie MIOs, eRezept, eAU etc.) ist optional.

Alle weiteren Unterkapitel von 2:3.106.4.1.3 Expected Actions sind für den ISiK-Kontext nicht relevant.

#### 2:3.106.4.2 Generate Metadata Response Message

##### 2:3.106.4.2.1 Trigger Events

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.106.4.2.2 Message Semantics

Die Vereinbarungen gelten uneingeschränkt.

##### 2:3.106.4.2.3 Expected Actions

Die Vereinbarungen gelten uneingeschränkt.

#### 2:3.106.4.3 CapabilityStatement Resource

Es gelten die Vereinbarungen gemäß CapabilityStatement

#### 2:3.106.5 Security Considerations

Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe Modul ISiK-Sicherheit

### ISiK-Spezifisches Mapping Composition -> DocumentReference

Path | map | comment
--- | --- | ---
DocumentReference.masterIdentifier | Bundle.identifier |
DocumentReference.identifier | Composition.identifier |
DocumentReference.status | =current |
DocumentReference.docStatus | Composition.status |
DocumentReference.type.coding:KDL | Composition.type.coding[KDL] |
DocumentReference.type.coding:XDS | Composition.type.coding[XDS] | Kann mittels Lookup in den KDL->XDS ConceptMaps anhand des KDL-Type-Codes ermittelt werden
DocumentReference.category.coding:XDS | Composition.category.coding[XDS] | Kann mittels Lookup in den KDL->XDS ConceptMaps anhand des KDL-Type-Codes ermittelt werden
DocumentReference.subject | Lookup Composition.subject.resolve().identifier[PID] | Ermittlung des korrekten Patienten auf dem Server anhand des Identifiers (PID) und/oder weiterer Kriterien erforderlich
DocumentReference.author | Composition.author |
DocumentReference.relatesTo.code | Composition.relatesTo.code |
DocumentReference.relatesTo.target | Lookup Composition.relatesTo.targetReference.resolve().identifier | Ermittlung der zu ersetzenden DocumentReference anhand des identifiers der referenzierten Composition erforderlich
DocumentReference.description | Composition.title |
DocumentReference.content.attachment.contentType | `application/html` für den extrahierten Narrative, `application/fhir+xml` oder `application/fhir+json` für das Bundle |
DocumentReference.content.attachment.language | =de sofern keine abweichende Angabe in Composition.language |
DocumentReference.content.attachment.url | vom Server festgelegter Speicherort des Bundles/Narratives |
DocumentReference.content.attachment.creation | Composition.date |
DocumentReference.content.format | =urn:ihe:iti:xds:2017:mimeTypeSufficient |
DocumentReference.context.encounter | Lookup Composition.encounter.resolve().identifier | Ermittlung des korrekten Encounters auf dem Server anhand des Identifiers(Fallnummer) und/oder weiterer Kriterien erforderlich
DocumentReference.context.facilityType | =KHS, sofern nichts anderes bekannt |

## Abgrenzung zu ISiK Stufe 2 (Basis) bei der Kommunikation strukturierter Dokumente (FHIR-Document-Bundle)

### Interaktion ISiK Modul Basis Stufe 2: Bericht aus Subsystem

- UseCase: Client übermittelt diverse strukturierte Informationen in Form eines Dokumentes an einen Empfänger. Der Empfänger (oder ggf. dessen Benutzer) kann selbst entscheiden, welche Informationen übernommen und ggf. weiterverarbeitet werden können/sollen. Als Minimum muss die Narrative (die HTML-Repräsentation des gesamten Dokumentes) übernommen werden.
- HTTP-verb: POST auf [base]
- Content: Bundle vom Typ `document`
- erforderliches Verhalten: der Empfänger verarbeitet den Inhalt des Dokumentes (HTML + Ressourcen soweit möglich), das Original muss nicht zwingend persistiert werden. Es besteht kein zwingendes Erfordernis, dass das Dokument oder seine Inhalte über die API wieder bereitgestellt werden können.

### Interaktion ISiK Modul Dokumentenaustausch Stufe 2: Dokumentenbereitstellung

- UseCase: Client übermittelt ein strukturiertes Dokument zur inhaltsagnostischen, dauerhaften, ggf. rechtssicheren Archivierung
- HTTP-verb: POST auf [base]/DocumentReference
- Content: DocumentReference mit Base64-codiertem Bundle vom Typ `document` eingebettet in DocumentReference.content.attachment.data)
- erforderliches Verhalten: das Dokument sowie seine Metadaten werden persistiert und über die API mittels der Interaktionen "Dokumentenabfrage" und "Dokumentenzugriff" bereitgestellt.

### Typische Szenarien mit Koexistenz beider Interaktionen:

Der Empfänger eines Subsystem-Berichtes gem. Modul "Basis" möchte vor der Verarbeitung des Dokumenteninhalts das Original zur Archivierung an einen Dokumentenserver gem. Modul "Dokumentenaustausch" übermitteln und die Herkunft der extrahierten Daten aus dem Dokument nachvollziehbar machen.

Empfohlenes Vorgehen:

1. Erzeugen einer DocumentReference-Ressource (siehe dazu $generate-metadata)
2. Übermittlung der DocumentReference sowie des Base64-codierten Bundles gemäß Interaktion ISiK Modul Dokumentenaustausch Stufe 2
3. Extraktion der verarbeitbaren Ressourcen aus dem Bundle
4. Verlinkung zwischen den extrahierten Ressourcen und dem Original-Dokument mittels einer `Provenance`-Ressource.

Der Sender eines Subsystem-Berichtes gem. Modul "Basis" möchte parallel zur Übermittlung an z.B. ein KIS zur Weiterverarbeitung der Informationen das Dokument ebenfalls im Original archivieren lassen.

Empfohlenes Vorgehen:

1. Erzeugen einer DocumentReference-Ressource (siehe dazu $generate-metadata)
2. Übermittlung der DocumentReference sowie des Base64-codierten Bundles gemäß Interaktion ISiK Modul Dokumentenaustausch Stufe 2
3. Übermittlung des Dokumentes zur Verarbeitung gemäß Interaktion ISiK Modul Basis Stufe 2: Bericht aus Subsystem

Der Empfänger eines Dokumentes gem. Modul "Dokumentenaustausch" möchte neben der Archivierung des Dokumentes auch dessen Inhalte weiterverarbeiten.

Empfohlenes Vorgehen:

1. Entgegennahme und Persistierung des Original-Dokumentes gemäß Interaktion ISiK Modul Dokumentenaustausch Stufe 2
2. Extraktion des Bundles aus den eingebetten Binärdaten
3. Extraktion der verarbeitbaren Ressourcen aus dem Bundle
4. Verlinkung zwischen den extrahierten Ressourcen und dem Original-Dokument mittels einer `Provenance`-Ressource.