Version 1.0 vom 05.07.2019Im Folgenden wird Version 1.0 vom 05.07.2019
Im Folgenden wird formal der Algorithmus zur Selektion von Austauschmeldungen für ein einzelnes Krebsregister beschrieben:
...
Sei R = {ri | ri ist Krebsregister i des RüD Verfahrens} die Menge aller am RüD-Verfahren teilnehmenden Krebsregister.
Sei Si = { s | s ist Meldeamt des Registers ri} die Menge aller Meldeämter im Einzugsgebiet eines einzelnen Registers ri.
Sei Ti = { q | q ist Meldestelle des Registers ri} die Menge aller Meldestellen im Einzugsgebiet eines einzelnen Registers ri, inklusive der Meldeämter (Ti ⊃ Si) und aller anderen Krebsregister des RüD Verfahrens (Ti ⊃ R).
Sei Pi = { pij | pij ist der Patient mit der ID j des Registers ri} die Menge aller Patienten eines Register ri.
Sei Mij = { mijk| mijk ist die Meldungen k des Patienten pij} die Menge aller Meldungen zum Patienten pij.
Sei GKZ = { gkz | gkz ist eine Gemeindekennziffer, oder null} die Menge aller Gemeindekennziffern in Deutschland, inklusive einem Wert null für unbekannte/nicht vorliegende GKZ.
Funktionen
Sei fGeeignet: Mij → {wahr, falsch}, eine Funktion, die für eine Meldung mijk ϵ Mij bestimmt ob sie für den Datenaustausch geeignet ist (siehe Umsetzungsleitfaden_für_den_Registerübergreifenden_Datenaustausch.docx -> 4. Für den Austausch geeignete Meldungen).
Sei fMelder: Mij → Ti eine Funktion, die für eine Meldung mijk ϵ Mij die Meldestelle bestimmt.
Sei fVonAnderemRegister: Mij → {wahr, falsch} eine Funktion, die für eine Meldung mijk ϵ Mij bestimmt, ob sie von einem anderen Register im Rahmen des RÜD empfangen wurde.
fVonAnderemRegister (mijk) = // Wenn Melder ein Register, aber nicht dieses Register
WENN fMelder(mijk) ϵ R ∧ fMelder(mijk) ≠ ri
DANN wahr
SONST falsch
Sei fIstMeldamt: Mij → {wahr, falsch}, eine Funktion, die für eine Meldung mijk ϵ Mij bestimmt ob es sich um eine Meldeamtsmeldung handelt.
Sei fGKZPatient: Mij → GKZ eine Funktion die für eine Meldung mijk ϵ Mij die Gemeindekennziffer des Patienten aus dem Element …>Patient>Patienten_Stammdaten/Kontrollnummern bestimmt Bei mehr als einer Wohnortsangabe wird der zum Zeitpunkt des Meldeanlasses gültige Wohnort gewählt, alternativ der erste angegebene Wohnort, wenn Gültigkeitszeitraum/Vitalstatusdatum nicht angegeben ist..
Sei fGKZPatientNeu: Mij → GKZ eine Funktion die für eine Meldung mijk ϵ Mij die Gemeindekennziffer des Patienten aus dem Element …>Meldeamt> Patienten_Stammdaten_Neu/Kontrollnummern_Neu bestimmt5.
Sei fZuständigReg: GKZ → R ∪ null eine Funktion, die für eine Gemeindekennziffer gkz ϵ GKZ das zuständige Krebsregister bestimmt. Die Funktion liefert null, wenn die übergebene GKZ null ist.
Sei fIstVollstZuWegzug: Mij → {wahr, falsch} eine Funktion, die für eine Meldung mijk ϵ Mij bestimmt ob es sich um eine vollständige (d.h. alter und neuer Wohnort sind bekannt) Zu-/Wegzugsmeldung über Einzugsgebietsgrenzen (aber innerhalb Deutschlands) handelt:
fIstVollstZuWegzug (mijk) = // Es handelt sich um eine vollständige Zu-/Wegzugsmeldung, wenn
f
IstMeldamt(mijk)
∧ // Es eine Meldeamtsmeldung ist
...
fIstMeldamt(mijk) ∧
...
UND
...
fGKZPatient(mijk) ≠ null ∧ fZuständigReg(fGKZPatientNeu(mijk)) ≠ null ∧ //
...
für neuen UND alten Wohnort eine Gemeindekennziffer vorliegt UND
fZuständigReg(fGKZPatient(mijk)) ≠ fZuständigReg(fGKZPatientNeu(mijk)) // verschiedene Register für die beiden GKZ zuständig sind.
Sei fWohnReg: Mij → R eine Funktion, die für eine Meldung mijk ϵ Mij das Wohnortregister bestimmt.
fWohnReg(mijk) =
WENN fIstMeldamt(mijk) // Handelt es sich um eine Meldeamtsmeldung?
DANN WENN f
VonAnderemRegister (mijk)
// Wenn ja, handelt es sich um eine Meldeamtsmeldung aus einem
...
DANN WENN fVonAnderemRegister (mijk)
...
anderen Register?
DANN fMelder(mijk) //
...
Wenn ja, ist dieses Register das Wohnortregister
SONST ri //Sonst ist das
...
eigene Register das Wohnortregister
SONST fZuständigReg(fGKZPatient(mijk)) // Sonst ist das für den Wohnort des Patienten zuständige Register das Wohnortregister
Sei fBehandlungReg: Mij → R eine Funktion, die für eine Meldung mijk ϵ Mij das Behandlungsortregister bestimmt.
fBehandlungReg (mijk) =
WENN fIstMeldamt(mijk) // Handelt es sich um eine Meldeamtsmeldung?
DANN WENN f
IstVollstZuWegzug (mijk)
// Wenn ja, handelt es sich um eine vollständige Umzugsmeldung innerhalb Deutschlands über Einzugsgebiete hinweg?
DANN WENN f
ZuständigReg(fGKZPatientNeu(mijk))
= r // Wenn ja, ist es ein Zuzug? (neuer Wohnsitz in diesem Register)
DANN
fZuständigReg(f
GKZPatient(mijk))
// Wenn ja, dann ist das für den alten Wohnort zuständige Register das Behandlungsortregister.
DANN SONST fZuständigReg(fGKZPatientGKZPatientNeu(mijk)) // Sonst (Wegzug) ist das für den neuen Wohnort zuständige Register das Behandlungsortregister.
SONST
fZuständigReg(fGKZPatientNeu(mijk))ri // Sonst (andere Meldeamtsmeldung) ist das eigene Register Behandlungsortregister.
SONST WENN fMelder(mijk) ϵ R \ ri
// Wenn nein, handelt es sich um eine Meldung die von einem anderen Register empfangen wurde?SONST WENN
DANN fMelder(mijk)
// Wenn ja, wurde die Meldung im anderen Register erstmals erfasst, ist damit Behandlungsortregister.
DANN fMelder(mijk)
SONST ri // Sonst wurde die Meldung in diesem Register erfasst und ist somit Behandlungsortregister.
...
SONST ri
Sei fAdressen: Pi → {A|A ⊆ R} eine Funktion, die für einen Patienten pij die Menge aller Register bestimmt, die in mindestens einer Meldung mijk des Patienten pji Wohn- oder Behandlungsortregister sind, aber ohne das Register ri selbst.
fAdressen(pij) = k=1n{ fWohnReg(mijk) ∪ fBehandlungReg (mijk) } \ ri
Sei fVersendet: Mij → {V|V ⊆ R} eine Funktion, welche die Menge alle Register bestimmt, an die die Meldung mijk ϵ Mij bereits versendet wurde.
...
1.Für jede Meldung mijk mit
fGeeignet(mijk) = wahr ∧ fBehandlungReg(mijk) = ri ∧ fWohnReg(mijk) ≠ ri ∧ fWohnortReg(mijk) ∉ fVersendet(mijk)
// Für jede geeignete Meldung bei der dieses Register Behandlungs- aber nicht Wohnortregister ist, und die Meldung noch nicht an das
// Wohnortregister verschickt wurde ...
Selektiere mijk für den Versand an fWohnReg(mijk).
// Versende die Meldung an das Wohnortregister
2. Für jede Meldung mijk mit:
fGeeignet(mijk) = wahr ∧ fWohnReg(mijk) = ri ∧ fAdressen(pij) ≠ ∅ ∧ fVersendet(mijk) ⊂ fAdressen(pij)
// Für jede geeignete Meldung bei der dieses Register Wohnortregister ist, und andere Register Daten zum Patienten beigetragen haben,
// und die Meldung noch nicht an alle diese Register verschickt wurde ...
Selektiere mijk für den Versand an alle r ϵ fAdressen(pji) \ fVersendet(mijk) \ fBehandlungReg(mijk).
// Schicke die Meldung an alle Register an die die Meldung noch nicht verschickt wurde, außer an das Register von dem die Meldung // eingegangen ist.
Ereignisbasierte Selektion von Austauschmeldungen
...