FHIR Chat · Adresse Basisprofile · german (d-a-ch)

Stream: german (d-a-ch)

Topic: Adresse Basisprofile


view this post on Zulip dr Kai U. Heitmann (Jun 13 2017 at 09:34):

Warum sieht https://simplifier.net/BasisprofilDE/address-de-basis anders aus als https://simplifier.net/NictizDSTU2/nl-core-address? Ich verstehe nicht, warum in DE die extensions (Elemente) einen anderen Namen tragen als zB in NL. Sollten "extension (Hausnummer)" nicht auch als Elementnamen "housenumber" sein und auf die ISO 21090 ADXP Partikel verweisen?

view this post on Zulip Peter Scholz (Jun 13 2017 at 09:37):

Weil hier Building Number Suffix, unitId und additionalLocator nicht benötigt werden ?

view this post on Zulip Patrick Werner (Jun 13 2017 at 09:39):

Hausnummer und Strasse heißen anders verweisen aber auf die gleichen ADXP Extensions

view this post on Zulip Stefan Lang (Jun 13 2017 at 09:41):

Was Patrick sagt, plus, dass wir uns für die deutschen Profile dazu entschlossen haben, deutsche Bezeichner zu verwenden.

view this post on Zulip Simone Heckmann (Jun 13 2017 at 09:47):

Jap. Die Bezeichner tauchen auch in der Instanz nicht auf. In der Instanz einer Adresse würden Hausnummer in DE und NL gleich aussehen.

view this post on Zulip Simone Heckmann (Jun 13 2017 at 09:50):

Ups. Wir haben noch gar kein Beispiel für eine komplexe Addesse!

view this post on Zulip Simone Heckmann (Jun 13 2017 at 10:07):

Ich hab ein Tracker-Item erstellt: https://github.com/hl7germany/basisprofil-de/issues/14

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:06):

@Stefan Lang Ich habe Verständnis-Probleme mit https://github.com/hl7germany/basisprofil-de/issues/16
Warum müssen wir da Slicen? Unterscheidet sich die Struktur von Wohn-/und Postadressen im VSDM?

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:12):

Die Wohnadresse (formal: "Strassenadresse") hat Straße, Hausnummer und Anschriftenzusatz.
Die PostfachAdresse hat stattdessen das Postfach.

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:13):

Seite 79 in:
https://www.gematik.de/cms/media/dokumente/release_0_5_3/release_0_5_3_fachanwendungen/gematik_VSD_Facharchitektur_VSDM_2_5_0.pdf

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:15):

Beides ist im VSDM 0..1, d.h. um VSDM-konform constrainen zu können, braucht man die Slices

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:22):

Aus dem Bauch raus ist das wahrscheinlich mit 2 abgeleiteten Profilen (z.B. "address-de-vsdm-strassenadresse" und "address-de-vsdm-postfachadresse") am einfachsten möglich

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:25):

Dabei wäre strassenadresse vom Typ physical|both, postfachadresse wäre postal.
Und ggf. muss irgendwo noch eine Invariante stehen, die besagt, dass "wenn both existiert, darf kein postal existieren"

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:33):

Das können wir doch mit einer invariante abbilden: Wenn typ = physical, dann extension hausnummer, wenn typ = postal, dann extension postfach.
Oder nö?

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:34):

Wollen wir "Both" überhaupt zulassen? in VSDM gäbe es ja bei identischer post- und wohnadresse auch zwei instanzen der Adresse, oder?

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:35):

VSDM hat Strassen- und Postfachadresse. Wer kein Postfach hat, hat nur eine Adresse

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:35):

"both" dürfte für Pat-Adressen der Regelfall sein. Ich fände es kontra-intuitiv für Implementer, das komplett zu verbieten

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:37):

Im basisprofil sicherlich nicht, aber wir reden ja hier über das VSDM-Profil, dass (mehroderweniger) 1:1 den VSDM-Datensatz abbildet. Und wenn's dort zweimal drinsteht, dann halt auch in der FHIR-Resource....

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:38):

ad Invariante: war da nicht was, dass Datentypen keine Invarianten haben dürfen? Ich meine, genau diesen Punkt hätten wir in Madrid schon mal diskutiert ;)

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:39):

Wenn wir "both" im VSDM-Profil verbieten, muss der Implementer u.U. die Strassenadresse dann 2x vorhalten, weil both halt der gefühlte Standardwert ist

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:40):

Nö, die Invarianten zur Address.line haben wir auch im Address-Profil drin. Das geht.

view this post on Zulip Patrick Werner (Jun 16 2017 at 09:40):

@wer kein Postfach hat, hat nur eine Adresse: Man kann laut EGK xsd auch gar keine Adresse haben, weder Postfach noch Straßenadresse

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:41):

@Simone Heckmann Na dann gern auch per Invariante

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:43):

Einziger Nachteil beim nicht-Slicen: Wir könnten vermutl. nicht verhindern, dass jemand zweimal eine postal adresse verwendet, da wir kardinalität 0..2 auf Addresse brauchen. Aber ich glaube sogar das ginge notfalls mit einer invariante.

view this post on Zulip Simone Heckmann (Jun 16 2017 at 09:44):

DEN Preis wäre ich bereit zu zahlen :)

view this post on Zulip Patrick Werner (Jun 16 2017 at 09:46):

@Stefan Lang wieso sollte both der Standardwert sein?

view this post on Zulip Stefan Lang (Jun 16 2017 at 09:47):

@Simone Heckmann Einen Ausdruck, um 0..2 (physical|both 0..1 ; postal 0..1) zu constrainen, sollte man eigentlich bauen können.
Also erstmal d'accord

view this post on Zulip Patrick Werner (Jun 16 2017 at 09:47):

Ich vermute ja, dass in der freien Wildbahn die Postfachadresse noch nie benutzt wurde :smile:

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:00):

Ist mit irgendwie zu akademisch,
wenn es um den ausschliesslich um VSDM geht es um max 2 Adressen von denen beide auch ausschliesslich postal sein könnten. Warum also irgendwelche contrains ?

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:02):

@Peter Scholz laut VDSM Datensatz gibt es eine "Strassenadresse" 0..1 und eine "Postfachadresse" 0..1. Zweimal postal geht also nicht

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:02):

@Peter Scholz Du meinst, die VSDM-StrassenAdresse ist semantisch nicht gleichbedeutend mit einer physical address?

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:04):

@Patrick Werner postal ist nicht zwangsläufig ein Postfach, es gibt auch Adressen bei denen die Postanschrift != der physikalischen Adresse ist.
Denkt mal an Menschen die in Pflegeeinrichtungen wohnen. Bei denen können sich Postanschrift von physikalischer Adresse definitiv unterscheiden

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:05):

OK, d.h. die Annahme "Strassenadresse <=> physical|both, Postfachadresse <=> postal" ist falsch.

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:06):

ja

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:07):

Richtig, das einzige was wohlh sicher ist, ist die Tatsache das Postfach zwangsläufig immer postal sein muss.
Über die Strassenadresse kann man keine Annahmen treffen

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:07):

In dem Fall gibt es keinen Kandidaten für einen Slice-Discriminator, und es muss zwangsläufig über Invarianten laufen, soweit wir das im Profil vertiefen

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:08):

Muss man das unbedingt im Profil vertiefen ?

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:08):

Diese Frage wollte ich mit dem Nebensatz provozieren ;-)

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:09):

Und der VDSM kennt nur Straßen und Postfachadresse. Beim Beispiel mit dem Heimbewohner kann also nicht Postanschrift und physikalische Adresse unterschieden werden

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:10):

Hier mal eine grafische Repräsentation der VSDM Daten der EGK:
vsdm.png

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:10):

Jup, das ist Seite 79 aus der VSDM-Spez.

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:11):

oh, ich bin blind. Zumindest nutzt die Gematik das gleiche Tool wie ich :-)

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:12):

:D

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:12):

Je weiter man dort reindenkt, desto mehr technische Komplexität braucht es, um alles schon im Profil genau so abzubilden wie in VSDM.
Von daher würde es mir auch genügen, wenn wir im Profil die address auf 0..2 constrainen, evtl. die line noch 0..2 constrainen und alle relevanten Extensions drin haben.
Den Rest dann in den Implementation Guide packen

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:14):

Und wie weiter oben angesprochen einfach ein Profil für Straßenadresse und eines für Postfachadresse?

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:17):

Wie bekämen wir die ohne Slicing-Discriminator sauber ins patient-de-vsdm-Profil?

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:18):

Ich slice auf dem Profil der Adresse, oder denke ich gerade ganz verquer?

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:19):

Ist das Profil der Adresse Bestandteil der Ressourcen-Instanz?

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:22):

Die Instanz hat nur ein Meta-Element für die Ressource, aber nicht für jeden Datentyp.
D.h. die Adresse in der Instanz kann nicht behaupten "ich bin eine Strassenadresse".

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:22):

stimmt :-(

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:24):

Das ginge nur per Extension zur Definition des Typs, um dann darauf zu slicen.
Und das wäre mir dann ehrlich gesagt auch zu akademisch.

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:31):

Ah, es lohnt sich, auf Seite 79 unter dem Diagramm zu schauen:
"Anmerkung: Ein Versicherter kann entweder eine Straßenadresse und/oder eine Postfachadresse haben. Im Infomodell wurde dies so abgebildet, dass beide optional sind. Für die Implementierung MUSS mindestens eine der Adressen gefüllt sein"

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:31):

Also für patient-de-vsdm: address 1..2

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:33):

Bzw. eigentlich für ein "patient-de-vsdm-closed", denn ein offenes Profil, wie wir sie eigentlichen bevorzugen, sollten auch andere Adressen (z.B. frühere Adressen) erlauben.

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:35):

Das Profil VDSM soll einfach 1:1 die EGK abbilden oder? Damit fände ich closed prima. Wenn man alte Adressen halten will macht man das eher direkt mit dem BasisProfil-DE, oder?

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:36):

Die Gematik hätte ihr XSD auch schöner bauen können damit man die Anmerkung auf Seite 79 nicht braucht....

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:37):

Ein closed Profil macht es potentiell inkompatibel zur parallelen Verwendung mit anderen Profilen.
Zumindest würde ich bei einem closed-Profil dieser Tatsache durch die entsprechende Benennung darauf hindeuten.

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:37):

nee closed wäre dumm, denn jemand sollte doch wohl einen Patienten mit eGK Daten kommunizieren können und kompatibilität zum Profil angeben dürfen, aber durchaus über das profil hinausgehende Informationen übermitteln. Es soll doch nur aussagen, das die Ressource in bezug auf die EGK Daten profilkonform ist.

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:38):

Es soll hier doch nicht um eine Profil ausschliesslich für die eGK Daten gehen

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:38):

Ein offenes VSDM-Profil sagt dann im wesentlichen nur aus, dass die betreffenden Extensions auf must-support stehen

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:39):

@Peter Scholz du hast recht, man wird wohl keine EGK Karten aus einer übermittelten FHIR Ressource erstellen wollen. Also ist der Rückweg zum EGK Datensatz egal

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:40):

Die Ableitungs-Hierarchie wäre:
patient-de-basis => patient-de-vsdm => patient-de-vsdm-closed
Wobei patient-de-vsdm-closed eher eine Fingerübung wäre.

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:41):

oder akademische Ona.....

view this post on Zulip Patrick Werner (Jun 16 2017 at 10:46):

ja closed hat in der Praxis keine relevanz. (Außer die Gematik will das intern einsetzen in Richtung eGK Hersteller ;-) )

view this post on Zulip Peter Scholz (Jun 16 2017 at 10:47):

der war gut :rotfl:

view this post on Zulip Stefan Lang (Jun 16 2017 at 10:48):

Da würde ich dann mal ganz entspannt warten, bis die Gematik damit auf uns zukommt :joy:

view this post on Zulip Simone Heckmann (Jun 16 2017 at 12:57):

Einwurf aus der Realo-Ecke: Eine Invariante, die die Verwendung der Postfach-Extension in Verbindung mit dem Adresstyp "physical" verbietet macht eigentlich immer Sinn (also schon im Basis-Profil)

view this post on Zulip Peter Scholz (Jun 20 2017 at 07:22):

Postfach extension kann sogar den Addresstype auf postal constrainen, nur für die Strassenadresse kann man keine Aussage treffen

view this post on Zulip Mathias Aschhoff (Jun 25 2017 at 18:58):

Hey zusammen, interessiert verfolge ich Eure Diskussion. Ich würde nochmal an die 80 / 20 Regel erinnern, denn ich glaube, dass eine Privatperson nur selten ein Postfach hat - muss das so? Kann man nicht sagen eine Adresse muss angegeben sein und alles weitere optional?

view this post on Zulip Stefan Lang (Jun 26 2017 at 06:16):

Bei Profilen im Allgemeinen und natürlich auch den deutschen Basisprofilen geht es ja darum, bestimmte Use Cases abzubilden.
In Bezug auf die Basisprofile also, verbreitete Datenstrukturen, wie VSDM-/eGK, einheitlich in FHIR abzubilden.
Insofern gilt 80/20 bei der Profilierung also nur bedingt.
In Bezug auf Postfächer bei Patienten sieht die Gematik-Spezifikation das nun mal so vor, und dementsprecht muss das zugehörige Profil bzw. ggf. auch nur der Implementation Guide das berücksichtigen.

view this post on Zulip Stefan Lang (Jun 26 2017 at 06:18):

Insgesamt folgen die deutschen Basisprofile ja dem Grundprinzip, offen zu sein, d.h. sie beschreiben, wie X gemacht werden sollte, wenn man X braucht, aber schränken nicht ein, dass jemand zusätzlich oder alternativ auch Y machen kann.

view this post on Zulip Stefan Lang (Jun 26 2017 at 06:21):

Demzufolge muss für das VSDM-konforme Basisprofil beschrieben sein, wie eine VSDM-Straßen- und -Postfach-Adresse aussieht. Ob sie dann verwendet wird, ist Sache des Implementierers im konkreten Use Case.

view this post on Zulip Stefan Lang (Jun 26 2017 at 06:24):

Sollte irgendwann die Gematik oder sonst jemand auf die Idee kommen, die eGKs direkt mit FHIR-Ressourcen zu befüllen, wie oben scherzhaft erwähnt, gäbe es ein geschlossenes (oder, wie Simone letztens a.a.O. vorschlug: "strict") Profil, das dann nur noch diese Strukturen erlaubt.

view this post on Zulip Peter Scholz (Jun 26 2017 at 07:48):

@Mathias Aschhoff das eine Privatepersion nur selten ein Postfach stimmt eben auch nur eingeschränkt, es gibt durchaus bei unseren älteren Patienten die in einer Einrichtung der Altenpflege wohnen die Situation das die Postanschrift eben die Postfachadresse der Einrichtung ist.

Die 80/20 regel sagt übrigens auch nicht aus, das der Anteil der Nachrichten die das betrifft mehr als 20% betragen muss, sondern das der Use Case eines Elements einer Ressource für weniger als 80% der beteiligten Systeme von Interesse sei. Der Use Case die eGK Daten abzubilden ist aber sicherlich für mehr als 20% von Interesse. Da die eGK auf der anderen Seite die Postfachadresse als eigenes Feld abbildet, muss das zugehörige Profil das auch hergeben.

view this post on Zulip Mathias Aschhoff (Jun 26 2017 at 08:47):

Betrachtet man den Use-Case eGK Adr. kommunizieren einverstanden.
Allerdings gibt es für die Adr ja mehr use-cases als nur eGK einlesen, daher dachte ich es wäre vllt gut es offener zu gestalten.
Dein Vorschlag (2 Profile) @Stefan Lang könnte ich mir gut vorstellen, das wäre auch für Implementierer einfacher zu verstehen.

view this post on Zulip Stefan Lang (Jun 26 2017 at 09:23):

@Mathias Aschhoff Grundsätzlich ist es seitens TC FHIR so gedacht, dass es immer ein offenes Profil gibt. Ein "Strict"-Profil macht nur dann Sinn, wenn es auch eingesetzt würde, was wir für VSDM derzeit nicht sehen.

view this post on Zulip Stefan Lang (Jun 26 2017 at 09:26):

Das grundlegende Profilierungskonzept, dem wir folgen wollen, ist:
xxx-de-basis: stellt die 80% zur Verfügung, schränkt wenig bis nichts ein
xxx-de-usecase: leitet von xxx-de-basis ab, ergänzt ggf. die 20% für den spezifischen Use Case, schränkt ebenso wenig ein
xxx-de-usecase-strict: leitet von xxx-de-usecase ab und schränkt exakt auf die Elemente des Use Case ein

view this post on Zulip Stefan Lang (Jun 26 2017 at 09:28):

Das kommt dann auch in unserer "FHIR-Best Practice" im Wiki, die wir in Bonn angesprochen hatten.

view this post on Zulip Simone Heckmann (Jun 26 2017 at 15:52):

Hi,
wir erweitern ja auch den komplexen Datentyp Address, nicht speziell den Patienten. Der Datentyp kommt dann in allen Basisprofilen zum Einsatz, also auch bei Organization. Und da sind Postfächer schon deutlich verbreiteter, daher macht das m.M.n schon Sinn...

view this post on Zulip Mathias Aschhoff (Jun 27 2017 at 10:23):

@Stefan Lang @Simone Heckmann Danke fürs abholen! Sorry für die blöden Fragen aber ich versuch mich gerade in Eure Gedankenwelt zu begeben, um auch die anderen Profile mal durchzusehen.
Also könnte man https://www.hl7.org/fhir/extension-iso21090-adxp-postbox.html nutzen und die Adress.line slicen, wie schon mit Str. und Hausnummer gemacht. Dann müsste man Prüfen was Simone sagte type- physical darf nicht und use home oder so dann sicher auch nicht?
Das geht über xpath invarianten? Aber auch nur zur Validierung der Ressourcen oder?

view this post on Zulip Stefan Lang (Jun 27 2017 at 10:55):

Och, die Fragen finde ich ganz hilfreich, als Basis für unseren FHIR-Profilierungs-Best-Practice-Wiki-Eintrag (OT: schönes Wort :D)
Postfach im Prinzip genau wie Du schreibst, außer, dass use="home" durchaus erlaubt sein sollte - use dient ja z.B. der Unterscheidung privat vs. geschäftlich ("home", "work"), insofern ist eine "home"-Postfachadresse eben das private Postfach.

view this post on Zulip Stefan Lang (Jun 27 2017 at 11:03):

Die Invarianten werden über FHIRpath ausgedrückt. Das ist nicht ganz dasselbe wie XPath, aber der Grundansatz ist natürlich gleich.
Die Invarianten dienen, genau wie Profile insgesamt, zur Validierung von Ressourcen-Instanzen.
Wann man validiert und wie Client bzw. Server auf nicht-profilkonforme Ressourcen reagieren, ist der Implementierung überlassen.

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:06):

Ich hab den Datentyp jetzt mit der Postfach-Extension erweitert.
Die Constraints sind drin, hab mich aber noch nicht getraut, sie zu testen :P

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:11):

Zum Testen müsste auch erstmal ein Ressourcen-Profil upgedated werden, oder? Also patient-de-basis ... Ich mach das gerade mal

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:38):

Fehler im Gedanken - Datentyp-Profile werden ja auch im Snapshot nur referenziert...

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:40):

Hm, der hier sollte nicht valide sein: https://simplifier.net/LHITCSandbox/Patient-example342/~xml . Simplifier meint aber doch.

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:43):

Versteh ich nicht... was ist daran falsch:
line.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-postBox').empty() or line.exists()

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:43):

Das ist der gleiche Constraint wie bei Strasse und Hausnummer und da geht's doch auch...oder?

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:47):

Hm, haben wir die schon getestet? ;)

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:51):

Der hier validiert auch: https://simplifier.net/LHITCSandbox/Patient-example343/~xml
Sollte einen Fehler wg. add-4 werfen

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:51):

Ich habe die leise Vermutung, dass das eher ein Problem in Simplifier ist. Mal prüfen

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:52):

Ich hab gerade versucht unsere Profile an test.fhir.org zu verfüttern, aber der mag die nicht :(

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:55):

Ich bin mir aber sicher, dass ich auf Simplifier schon mal eine Fehlermeldung wegen eines verletzen Constraints im Address-Profil gesehen habe, ich weiß nur nicht mehr, wie mein Testfall aussah...

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:55):

Ah warte, oder war das beim Namen!?!?

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:56):

Ich hab gleich nen Testfall für add-2

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:56):

Kann aber beim Namen gewesen sein

view this post on Zulip Stefan Lang (Jun 28 2017 at 20:57):

Der add-2-invalid-Test validiert ebenfalls: https://simplifier.net/LHITCSandbox/Patient-example345/~xml

view this post on Zulip Simone Heckmann (Jun 28 2017 at 20:59):

Äh. Unser HumanName-Profil hat gar keine Constraints mehr!?

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:01):

Mal gucken, was Github dazu meint

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:02):

Ich bin mir ziemlich sicher, dass wir in Madrid kurz gejubelt haben, als der erste Constraint ansprach. Und das war HumanName ...

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:02):

Hmm...ok. Aber ich glaube der Constrint ist unabhängig davon nicht korrekt.
Das Line-Attribut existiert ja, auch wenn es leer ist weil da ja die Extension drin steckt!
Line.exists() funktioniert hier nicht

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:07):

Die HumanName-Constraints sind anscheinend nie im Github angekommen.
Aber: korrekt, exists() bringt nix.

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:07):

ich hab das jetzt in line.empty() geändert, aber die Beispiele validieren trotzdem immer noch

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:09):

Versuch mal exists(f:*[starts-with(local-name(.), 'value')])

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:11):

wobei das "starts-with"-Konstrukt wahrscheinlich oversized ist, das ist für value[x] gedacht. Sollte aber trotzdem funktionieren.

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:12):

also line='' tuts auch nicht

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:13):

es ist ja auch nicht line, sondern line@value

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:14):

[Ich hätte gern eine Session "FHIRpath für Dummies" in Amsterdam]:nerd_face:

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:14):

Müsste doch gleiche Syntax sein wie hier:
verificationStatus='entered-in-error' or clinicalStatus.exists())

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:15):

http://hl7.org/fhir/condition.html#invs

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:17):

aber wenn, dann line!=''

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:19):

Schau Dir mal den Standard-Ausdruck ext-1 an:
<key value="ext-1" />
<severity value="error" />
<human value="Must have either extensions or value[x], not both" />
<expression value="extension.exists() != value.exists()" />
<xpath value="exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])" />

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:24):

klar, muss ja negiert werden!
Aber ich habe jetzt sowohl line.empty().not() bei street name als auch line!=" bei postfach zum testen

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:25):

Ich gebs auf. die validieren ALLE grrrr

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:27):

Versuch doch mal:
extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-postBox').exists() or value.exists()

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:30):

wir haben doch aber gar keine attribut das "value" heißt!?

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:31):

Gnah! Wir haben ein XML-Attribut, aber kein XML-Element, das ein FHIR-Attribut ist :D

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:32):

Stimmt natürlich, das "value" aus ext-1 ist ein XML-Element

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:34):

Die ursprüngliche Version folgt dem Konsens der Experten:
https://chat.fhir.org/#narrow/stream/conformance/topic/Need.20.20help.20with.20invariant.20on.20extensions

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:35):

Vielleicht ist es auch ein cache-Problem, dass das Validation-Tool die Änderungen so schnell nicht mitbekommt....?

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:36):

Beim ersten fälschlichen "valid" hat er jedenfalls ziemlich lange gebraucht. Das sah nicht nach Caching aus.

view this post on Zulip Simone Heckmann (Jun 28 2017 at 21:44):

wie dem auch sei....ich mach Schluß für heute... vielleicht komme ich morgen drauf ...

view this post on Zulip Stefan Lang (Jun 28 2017 at 21:50):

Joah, Wachheit wäre gerade von Vorteil :D
Ich probiere morgen mal in Ruhe gegen den offiziellen Validator

view this post on Zulip Stefan Lang (Jun 29 2017 at 07:52):

Der offizielle Validator hält die invalid-examples add-2/add-3/add-4 auch alle für valide.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 08:36):

Ich hab das Profil mit line.hasValue() aktualisiert

view this post on Zulip Simone Heckmann (Jun 29 2017 at 08:38):

...jetzt hängt sich der Validator auf :cry:

view this post on Zulip Simone Heckmann (Jun 29 2017 at 08:39):

ah doch. Aber immer noch keine Fehlermeldung...

view this post on Zulip Stefan Lang (Jun 29 2017 at 11:52):

Ich hab gerade nochmal verschiedene Experimente gemacht: Constraint in der Hierarchie rauf und runter verschoben, Pfade in den Ausdruck ergänzt und wieder rausgenommen ... es validiert immer.
Und ich bin sicher, es ist am Ende ein ganz primitiver Bug. Wie immer.

view this post on Zulip Stefan Lang (Jun 29 2017 at 12:04):

Öhm, ich hatte gerade mal den Snapshot aus dem Profil rausgenommen und der Validator sagt mir:
"Differential contains path Address.line.extension which is not found in the base"

view this post on Zulip Stefan Lang (Jun 29 2017 at 12:04):

(deleted)

view this post on Zulip Stefan Lang (Jun 29 2017 at 12:17):

Mal abwarten, was an Antworten auf Simones Frage im conformance-Stream kommt.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:32):

Hmpf.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:32):

Man muss den Snapshot des Patient-Profils neu erzeugen.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:35):

Jetzt funktionieren alle constraints:
https://simplifier.net/LHITCSandbox/Patient-example345/~xml
https://simplifier.net/LHITCSandbox/Patient-example342/~xml
https://simplifier.net/LHITCSandbox/Patient-example343/~xml
Ich habe nebenbei noch die Constraints von der Extension-Ebene auf die Address-Ebene gelüpft.
Ich weiß aber nicht, ob das ursächlich war.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:48):

Übrigend habe ich eigenmächtig beschlossen, dass der Constraint auf Address.type bei Verwendung der Postfach-Extension nur eine Warnung und keinen Fehler ausgibt.
Ich finde, wenn die Address.line nicht gefüllt ist, dann ist das ein Programmier-Fehler, der jedem Entwickler sofort um die Ohren gehauen werden muss. Aber der falsche Address.type kann auf die fehlerhafte Eingabe eines Anwenders zurückzuführen sein. Ich denke nicht, dass FHIR diktieren sollte, ob und wie Benutzer-Eingaben zu validieren sind. Zumindest nicht, so lange wir uns auf einer UseCase-unabhängigen Ebene befinden.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:50):

Hach. Endlich kann ich wieder ruhig schlafen. Ich hasse lose Enden!

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:52):

Erkenntnis des Tages: Bei der Snapshot-Generierung werden referenzierte Profile in den Snapshot eingebettet. :grey_exclamation:

view this post on Zulip Simone Heckmann (Jun 29 2017 at 19:54):

Können wir den hier damit schließen, oder müssen wir da noch was slicen?
https://github.com/hl7germany/basisprofil-de/issues/16

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:20):

...hat noch jemand was zu constrainen? Ich bin gerade im Flow... :upside_down_face:

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:20):

Also doch das Patient-Profil neu generieren? Sehr seltsam, der Diff gestern hat 0 Unterschiede gezeigt ... sei's drum.
Diese Sache mit den Snapshots nervt allerdings ein wenig. Ich hoffe, dass Simplifier bald differentials selbstständig zu Snapshots für die Ansicht verarbeiten kann ...

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:21):

Die Constraints auf oberer Ebene finde ich OK, das passt.

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:23):

Zu Issue 16: hast Du mal die ganzen Beispiele reviewed, ob die noch alle passen (speziell, da type jetzt quasi bedeutungslos ist?

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:25):

Auf oberer Ebene gefällt mir auch besser. Dann hat man eine schöne Übersicht, welche Regeln für ein Attribut gelten. Einzige Krux: Die location-Angabe beim Validierungsfehler ist dadurch etwas ungenau:

Instance failed constraint add-3 "Wenn diese Extension verwendet wird, muss auch Address.line gefüllt werden"
Location: Patient.address[0]

Das lässt sich aber durch einen entsprechenden Fehlertext ausgleichen

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:26):

Ich denke, die Fehlertexte zu individualisieren, dürfte das kleinste Problem sein :D

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:27):

Unsere Patient-Examples validieren alle

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 20:27):

Sehr schön, freut mich, dass ihr das hinbekommen habt. Wie schauts eigentlich aus wenn mir was auffällt, in github in den issue tracker oder hier rein?

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:29):

Wenns dir an unseren Profilen auffällt -> github
Wenns dir an der FHIR-Spezifikation auffällt -> gforge

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:29):

Ich denke, offensichtliches kann gleich nach Github.
Inhaltliches oder prinzipielles (z.B. Dinge wie die OID vs. URL-Diskussion) sollte erst hier diskutiert werden

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:31):

Wobei z.B. neue Issues zu patient-de-vsdm momentan relativ sinnfrei wären, weil das Profil einfach noch nicht nachgezogen wurde und ohnehin noch einige Probleme hat.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:31):

Ich denke ein issue ist immer gut. Hier im Chat verliert man Themen gerne mal aus dem Blick. Das issue ist der reminder :)
Aber gerne zu jedem issue hier gleich auch einen Diskussions-Thread eröffnen, falls es noch keinen passenden gibt.

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:32):

Oder so, gute Idee.

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 20:32):

Alles klar! Ich werd eh erstmal nur gucken, dass ich euren geistigen Kartoffelsalat verstehe bevor ich mir überhaupt anmaße da etwas rein zu schreiben ;-)

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:33):

/me überlegt gerade, ob das Wort "Kartoffelsalat" positiv oder negativ belegt ist :joy:

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 20:33):

ist lecker, also natürlich positiv.

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 20:33):

Krautsalat mag ich nicht

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:39):

OK, bei Krautsalat sind wir damit nicht semantisch interoperabel ;)

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:40):

@Simone Heckmann Issue 16 würde ich noch offen lassen, weil für patient-de-vsdm das Adress-Slicing noch fehlt

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:42):

ok, ich war mir nicht mehr sicher, ob sich mit den constraints nicht schon die Notwendigkeit des Slicens erbrigt hatte..?

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:45):

Ah stimmt, wir wollten ja dort nicht mehr slicen ... (Du hast Recht, man sollte an Dingen dran bleiben ...)
Dann werfe ich jetzt mal einen neuen Constraint in Deinen Flow:

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:47):

add-5: wenn eine Adresse eine line mit streetName und/oder houseNumber hat, darf die Adresse keine line mit postBox haben und umgekehrt

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:50):

line.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-postBox').empty() or (line.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName').empty() and line.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').empty())

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:52):

Das wäre ein OR? wir brauchen ein XOR

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 20:53):

schließt or eine "und" verknüfung aus? Sodass nicht beides leer sein kann?

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:53):

nee or === logisches OR, or !== XOR

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:55):

Ach nee, Moment, das ist ja ein empty(). D.h. für TRUE muss mindestens eines leer sein. Also korrekt.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:55):

Nö. m.E. passt das so. Damit der Constraint keinen Error auswirft muss der Ausruck "true" ergeben.
Also Postfach gefüllt, Str/Hnr leer -> false or (true and true) -> true
Str/Hnr gefüllt, Postfach leer -> true (false and false) -> true

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:55):

Und wenn beide leer ist, ist es auch gut.
100% passend.

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:56):

hm, empty() oder exists() ?

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:57):

empty() dürfte true sein sowohl wenn die extension nicht vorhanden ist als auch wenn sie vorhanden aber leer ist.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:57):

Also in unserem Fall immer korrekt.

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:58):

Das Einbauen ins Profil überlasse ich Dir :)

view this post on Zulip Stefan Lang (Jun 29 2017 at 20:58):

Formal wäre ich für exists(). Eine leere Extension ist ja schon durch ele-1 abgedeckt

view this post on Zulip Simone Heckmann (Jun 29 2017 at 20:59):

müssten wir aber negieren. exists().not() ist irgendwie doof

view this post on Zulip Stefan Lang (Jun 29 2017 at 21:00):

Ei gut.
Ich werf's erstmal in issue 16 rein. Wenn mir gestern Abend eines gezeigt hat, dann wiedereinmal, dass ich nach 23:00 nicht versuchen sollte, zu denken oder zu coden :D

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 21:00):

Das ist wirklich ein 1ste Welt Problem. empty() ist doch top

view this post on Zulip Simone Heckmann (Jun 29 2017 at 21:01):

Das empty() kommt auch vom Meister: https://chat.fhir.org/#narrow/near/77892/stream/conformance/topic/Need.20.20help.20with.20invariant.20on.20extensions
Allerdings muss das nix heißen. Der zweite Teil des Ausdrucks war nämlich auch falsch :D

view this post on Zulip Mathias Aschhoff (Jun 29 2017 at 21:01):

hab mir nebenbei noch http://hl7.org/fhirpath/ - krasses Werkzeug. Weiterhin frohes schaffen! @Simone Heckmann bis morgen ;-)

view this post on Zulip Simone Heckmann (Jun 29 2017 at 21:01):

Gute Nacht! Bis morgen!

view this post on Zulip Stefan Lang (Jun 29 2017 at 21:02):

GN8 Mathias :)

view this post on Zulip Stefan Lang (Jun 29 2017 at 21:04):

@Simone Heckmann Man muss seine Meister immer mal hinterfragen :joy:

view this post on Zulip Stefan Lang (Jun 29 2017 at 21:31):

Zu Adresse fehlt uns noch eine Extension und Constraints, vgl. Kommentar in https://github.com/hl7germany/basisprofil-de/issues/7

view this post on Zulip Simone Heckmann (Jun 30 2017 at 04:29):

ähm... der Constraint für Postfach <> Str/HNr kann doch eigentlich als Warning ins Basisprofil, oder?
Im VSDM müsste dann nur die Severity erhöht werden (wenn das geht...)
Ah. Und so langsam dämmert mir auch warum die Profile der Datentypen im Snapshot eingebettet sind. Man kann im Profil der Resource ja auch die Datentypen weiter einschränken!!

view this post on Zulip Simone Heckmann (Jun 30 2017 at 04:58):

Adresszusatz sowie die weiteren Constraints sind drin...

view this post on Zulip Stefan Lang (Jun 30 2017 at 07:01):

Mit Warning bin ich erstmal glücklich.

view this post on Zulip Stefan Lang (Jul 11 2017 at 12:11):

Man kann im Profil der Resource ja auch die Datentypen weiter einschränken!!

@Simone Heckmann Hast Du gerade mal nen Tipp, wie das per Forge geht?

view this post on Zulip Stefan Lang (Jul 18 2017 at 13:44):

Zum Thema Address.country (https://github.com/hl7germany/basisprofil-de/issues/1):
=> https://chat.fhir.org/#narrow/stream/conformance/topic/ValueSet.20binding.20for.20string.20elements.3F

view this post on Zulip Stefan Lang (Jul 18 2017 at 17:03):

Und noch einen systematischen Bug im größeren Teil unserer Constraints gefunden + gefixt: https://github.com/hl7germany/basisprofil-de/issues/19
Zur allgemeinen Information: wenn ein Element mehrfach vorkommen kann, muss man die Constraint-Ausdrücke nochmal klammern, z.B. mittels all(). Beispiel:

line.all($this.extension('http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber').empty() or $this.hasValue())

view this post on Zulip Stefan Lang (Jul 18 2017 at 17:04):

Die HumanName.family Constraints waren nicht betroffen, da family = 0..1

view this post on Zulip Mino Nordmann (Feb 21 2022 at 22:09):

Hallo, ich habe ein Problem mit der Erstellung mit Poco einer Extension. Gibt es eine Möglichkeit, dies zu erreichen ohne Umwege? ich erstelle die Extension, kann diese aber nicht zu >Adress.line< adden. Vielen Dank
Mit freundlichen Grüßen
Michael Nordmann

<address>
<line value="Musterstraße 1">
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
<valueString value="1" />
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
<valueString value="Musterstraße" />
</extension>
</line>
<city value="Musterstadt" />
<postalCode value="77777" />
<country value="DE" />
</address>

view this post on Zulip Patrick Werner (Feb 22 2022 at 16:06):

Die eigentliche Frage wird leider nicht direkt klar.

view this post on Zulip Patrick Werner (Feb 22 2022 at 16:06):

Wie man diese Extensions nutzt kann man hier schön sehen:
https://simplifier.net/basisprofil-de-r4/patient-example-address

view this post on Zulip Patrick Werner (Feb 22 2022 at 16:07):

das obige Beispiel sieht erstmal korrekt aus.

view this post on Zulip Patrick Werner (Feb 22 2022 at 16:08):

Wie man das mittels der .net library baut findet man hier: https://docs.fire.ly/projects/Firely-NET-SDK/model/extensions.html?highlight=extension#extensions


Last updated: Apr 12 2022 at 19:14 UTC