-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/update searchparam req stufe 3 ptdata1094 #456
base: TC_3.0.6
Are you sure you want to change the base?
Feature/update searchparam req stufe 3 ptdata1094 #456
Conversation
## Allgemeine Hinweise zu Suchparametern | ||
Originäre ISiK Use Cases sind versorgungsorientiert und patientenorientiert. Dies resultiert darin, dass in der Profilierung der ISiK-Datenobjekte das Vorhandensein einer Referenz auf ISiKPatient (Patient) und ISiKKontaktGesundheitseinrichtung (Encounter) wo möglich gefordert wird. Entsprechend sind Abfragen durch Clients auf Basis von bekannten Informationen aus *einer* Patient- und/oder Encounter-Ressource zu begrenzen (Abfragen auf Patientenkohorten oder sonstige Forschungsabfragen sind nicht im Fokus von ISiK). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: "aus" einer Patient- und/oder Encounter-Ressource oder AUF eine Patient- und/oder Encounter-Ressource zu begrenzen?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comment: Gute Frage. "Aus" macht hier keinen Sinn. Die Formulierung ist allgemein unglücklich - es ging hier im Wesentliche darum klarzustellen, dass ISIK nicht primär den Use Case von Massenabfragen adressiert, sondern einzelne Patienten und einzelne Fälle.
FYI @simoneOnFhir - sollten wir ggf. auch noch in Stufe 4 überarbeiten.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hier ist aus m.E. korrekt. Ich kenn den Identifier "123452 aus der Patienten-Ressource und suche jetzt die Diagnosen dazu:
/Condition?patient.identifier=12345
@@ -24,13 +30,19 @@ Für die im Rahmen dieses Leitfadens relevanten Typen gelten folgende allgemeine | |||
|
|||
Die Präfixe `lt`,`le`,`gt`,`ge`,`eq` MÜSSEN für jeden Suchparameter vom Typ 'date/dateTime' unterstützt werden. | |||
|
|||
Begründung: Die Funktionalität datums-eingeschränkt suchen zu können ist essentiell. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick: dieser Satz liefert keinen Infromationsgehalt. Dafür aber der Hinweis unten, der m.M.n. als Begründung verwendet werden kann
```[base]/Patient?birthDate=ge2000-01-01``` <br> | ||
Suche nach allen Patienten mit einem Geburtsdatum 2000-01-01T00:00 oder später. | ||
```[base]/Encounter?date=eq2024-01-01&patient=Patient/Test``` <br> | ||
Suche nach allen Kontakten mit einem Datum am 2024-01-01T00:00 im Patientenkontext "Test". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue: "mit einem Datum am 2024-01-01T00:00" ist nicht korrekt. Die Uhrzeit spielt bei so einer Abfrage keine Rolle
```[base]/Patient?birthDate=eq2000-01-01``` <br> | ||
Suche nach allen Patienten mit einem Geburtsdatum von 2000-01-01T00:00 bis (aber nicht einschließlich) 2000-02-01T00:00 | ||
```[base]/Condition?recorded-date=eq2024-01-01&patient=Patient/Test``` <br> | ||
Suche nach allen Diagnosen mit einem Dokumentationsdatum von 2024-01-01T00:00 bis (aber nicht einschließlich) 2024-01-02T00:00 im Patientenkontext "Test". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion: sollte das Beispiel nicht eher die Verwendung von ge und le demonstrieren? Muss man ja m.M.n. sonst im Text nicht erklären, dass ein eq2024-01-01 das Datum 2024-01-02 NICHT einschließt...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ja, das Beispiel ist unglücklich gewählt, vor allem auch im Hinblick auf die Tatsache, dass
Condition?recorded-date=eq2024-01-01 gleichbedeutend ist mit der selben Query ohne jegliche Prefixes.
Vorschlag zur Verbesserung:
[base]/Condition?recorded-date=ge2024-01-01&recoded-date=lt2024-02-01&patient=Patient/Test
Suche nach allen Diagnosen mit einem Dokumentationsdatum Im Zeitraum Januar 2024 (von 2024-01-01T00:00 bis (aber nicht einschließlich) 2024-02-01T00:00 im Patientenkontext "Test".
**Beispiele**: | ||
Dies gilt beispielsweise für Encounter.account - also die Referenz zwischen ISiKKontaktGesundheitseinrichtung und ISiKAbrechnungsfall. Encounter MÜSSEN anhand der Fallnummer gesucht werden können, ohne dass Clients Zugriffsberechtigungen auf Accounts haben müssen, bzw. ohne dass Account zwingend implementiert/referenziert werden muss. Der Suchabruf erfolgt entsprechend dann nur über die logische Referenz. | ||
|
||
Begründung: Die Unterstützung dieser Suchparameter-Typen ist essentiell für Abfragen mit [Chaining](https://hl7.org/fhir/r4/search.html#chaining) und [Reverse Chaining](https://hl7.org/fhir/r4/search.html#has). Innerhalb der Spezifikation ist für jedes Datenobjekt spezifiziert weshalb eine solche Abfrage versorgungsrelevant ist. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue: m.M.n. hat der Suchparameter :identifier erstmals mit Chaining nichts zu tun - damit ist sogar kein Chaining möglich (cf. https://www.hl7.org/fhir/R4/search.html#reference) Der Modifier hat aus meiner SIcht eher den oben beschriebenen Zweck - also Suche nach Identifiern von assoziierten Ressourcen zu ermöglichen falls die assoziierten Ressourcen im System als eigenständige Entitäten nicht existieren
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@simoneOnFhir , @alexey-tschudnowsky hat recht. Zumindest di Begründung an dieser Stelle ist einfach falsch.
Muss auch in Stufe 4 nochmal geändert werden.
|
||
* ``Reverse Chaining`` | ||
|
||
- Beispiel für Reverse Chaining mit Referenz auf einen Patienten aus einem Observation-Kontext:GET [base]/Patient?_has:Observation:patient:code=1234-5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: fehlt hier eine geeignete Formattierung des Beispiels?
* ``Reverse Chaining`` | ||
|
||
- Beispiel für Reverse Chaining mit Referenz auf einen Patienten aus einem Observation-Kontext:GET [base]/Patient?_has:Observation:patient:code=1234-5 | ||
- Hinweis: Diese Form der Suchanfrage dient im Wesentlichen dem Auffinden von Patienten (z.B. unter angabe einer BEsondern Diagnose, beobachtung Prozedur etc.) oder Fallkontakten (z.B. zum Ermitteln des Kontextes einer Prozedur) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: besonderen
- Anwendungshinweise: Weitere Informationen zur Suche nach "_tag" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Including other resources in result"](https://www.hl7.org/fhir/R4/search.html#revinclude). | ||
- Alle Referenzen für die ein Chaining unterstützt wird MUSS auch der _include-Parameter implementiert werden. Alle unterstützten Include-Referenzen MÜSSEN im CapabilityStatement unter ```CapabilityStatement.rest.resource.searchRevInclude``` angegeben werden. Siehe {{pagelink:ImplementationGuide/markdown/CapabilityStatement.md}}. | ||
- Anwendungshinweise: Weitere Informationen zur Suche nach "_revinclude" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Including other resources in result"](https://www.hl7.org/fhir/R4/search.html#revinclude). | ||
- Alle Referenzen für die ein Chaining unterstützt wird MUSS auch der _revinclude-Parameter implementiert werden. Alle unterstützten Revinclude-Referenzen MÜSSEN im CapabilityStatement unter ```CapabilityStatement.rest.resource.searchRevInclude``` angegeben werden. Siehe {{pagelink:ImplementationGuide/markdown/CapabilityStatement.md}}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: "Alle Referenzen für die ein Chaining.." oder "Alle Referenzen für die ein Reverse Chaining..."?
|
||
Der [type] Modifier MUSS für alle spezifizierten Suchparameter vom Typ 'Reference' unterstützt werden. | ||
Der Modifier :identifier MUSS implementiert werden, wenn die entsprechende Reference eine 1..1-Kardinalität oder ein MS-Flag auf Reference.identifier hat. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: fehlende Formattierung vom :identifier --> :identifier
Der ```:iterate``` Modifier KANN unterstützt werden. | ||
Für Suchparameter namens 'patient' und 'encounter' MÜSSEN die Festlegungen für [Chaining](https://hl7.org/fhir/R4/search.html#chaining) verpflichtend implementiert werden. | ||
|
||
* ``Chaining`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick: Chaining und der nachfolgende Reverse Chanining sind keine Schlüsselwörter, die entsprechende Formattierung kann raus
|
||
Der ```:iterate``` Modifier KANN unterstützt werden. | ||
Für Suchparameter namens 'patient' und 'encounter' MÜSSEN die Festlegungen für [Chaining](https://hl7.org/fhir/R4/search.html#chaining) verpflichtend implementiert werden. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: welche Tiefe geben wir vor? denkbar wäre ja sonst auch Tiefe 2: Condition.encounter.patient
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: für Suchparameter subject (beim Encounter) muss somit kein Chaining implementiert werden, richtig? nur 'patient'?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comment: nein, mMn auch "subject" z.B. beim Encounter - FYI @simoneOnFhir
|
||
- Beispiele: ``GET [base]/Encounter?_include=Encounter:patient`` | ||
- Anwendungshinweise: Weitere Informationen zur Suche nach "_include" finden sich in der [FHIR-Basisspezifikation - Abschnitt "Including other resources in result"](https://www.hl7.org/fhir/R4/search.html#revinclude). | ||
- Für alle Referenzen, für die ein Chaining unterstützt wird, MUSS auch der _include-Parameter implementiert werden. Alle unterstützten Include-Referenzen MÜSSEN im CapabilityStatement unter ```CapabilityStatement.rest.resource.searchInclude``` angegeben werden. Siehe {{pagelink:ImplementationGuide/markdown/CapabilityStatement.md}}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thought: ich frage mich, wie viele Hersteller diese nicht triviale Funktionalität (include) umgesetzt haben...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI @simoneOnFhir
Contributor Pull Request
Description
analogous to #452
Motivation and Context
solves PTDATA-1094
How has this been tested?
Snippets or Screenshots (if necessary):
Types of changes
Checklist:
Reviewer / Quality Assurance Checklist
content review steps (based on Best Practice IG Germany)
formal intellectual review steps of Implementation Guide
no formal review needed
proofreading for orthography
there are no (critical) validation Errors in the CI pipeline
skim reading for correct rendering of IG (possibly using IG-grep of string String like "Could not render")
automated review steps:
For reviewers
You migh use this: https://conventionalcomments.org/