*TODO 2025
*aufbereitungDoppeltes op Datum
*paarig verwenden
*opt/mmr vorbereiten für Wechsel
*Erste Leistungserbringung innerhalb von 6 Monaten, Warnung auf der ersten Seite vorhanden? Es sollte nach dem Anmelden eines LB auf die Zwangslieferung innerhalb der 6 Monate hingewiesen werden
*Dateigröße Zusatz-Dokumente
*Vendor in xml integrieren
*vendor befüllen
*Zaehle MMICD
*Neue Bereiche
*Lokalisation im Datensatz prüfen, gestrichen?
*Unterjährige wechselnde Zählung? Neue Meldung mit neuem Tag
*05er IK check aus QSFFx integrieren. Es geht um das Bundesland
*
*
*ko- Navigationsunterpunkte Info-Center sollten die Punkte des "Wizards" sein, Also Willkommen, Standortübersicht, Historie, Leistungsbereiche existiert ja unter "Verwaltung" Unterpunkte bei Info Center überhaupt benötigt? Eigentlich nur Willkommen interessant
*- J Tutorial, teilweise noch Qsffx
*- JM Texte anpassen:
*- Willkommen
*- FAQ 1-2 Sachen hab ich hinzugefügt
*- J FAQ: EInträge für Träger und Standortkontaktdaten
*- Im Content Bereich ist drauf zu achten, dass der Kopf einheitlich ist, Also 1. Zeile das Krankenhaus, z.B. "Diakonissenkrankenhaus Flensburg" und 2. Zeile eine Überschrift passend zur aktuelle Maske also z.B. "Leistungsbereiche"

*05er IK check aus QSFFx integrieren. Es geht um das Bundesland
*Historie für Berichte. Was hab ich letztes Jahr an Zahlen versendet usw.

- SG System für mmr-beta, Zertifikat, qs-transport - eine oder zwei? eine für gemeinsame VM QSFFx und MMR
- HM Testdatensatz erstellen (Herr Maaß), weitere Tests, AUfnahme und Regelbetrieb

*if (EnumTypes.Meldeart.Aufnahmephase.equals(report.getNachweisart())) {
ZeitBezugAufnahmePhase zeit = ZeitBezugAufnahmePhase.builder()
.jahr("2023") // aus Modul
.monat("1")
.build();
metaInfos = metaInfos.toBuilder().zeitbezugAP(zeit).build();
}
if (EnumTypes.Meldeart.Regelbetrieb.equals(report.getNachweisart())) {
metaInfos = metaInfos.toBuilder().zeitbezugRB(String.valueOf(2023)).build(); // Constants
}

- In Analyse Muss es eventuell eine Option geben die Prognose von Hand einzutragen? Scheint mir eine mögliche Option zu sein, da diese Zahlen auch noch schriftlich übermittelt werden können. Am besten dann unter Verwaltung -> Leistungsbereiche falls ein LB in Aufnahmephase Zahl Y eintragen?
Nein, erste Prognoseübermittlung nach Anmeldung 13 Monate nach Start der ersten Leistung. csv-Upload versenden.
- D Könnte man mehr Infos bzgl. JS-Zählung ausgeben? Fälle ignoriert weil? Allgemeine Infos, Fallzahlen insgesamt, Fallzahlen fallen unter Mindestmengen, erste Leistungserbringung usw.
- Assisstent? Start mit Träger- und Standort-Kontaktdaten, Leistungsbereiche auswählen, Datensatz importieren
- J Hilfe für Erstellung des Eingangsdatensatz: Basisdokument auf Projekte/IQTIG MM-RL/MMR_Import_Hilfe_ai.odt, Verbesserungen notwendig, Text nicht final, DIA / ICD, PROZ / OPS Text aus Dokument als eigene Seite in App hinzugefügt (erreichbar über Welcome)

*Zählung:
*Dateien löschen aktuell noch fehlerhaft, alle drei Dateien glöscht (Problem Entlassungsdatum). Alle löschen -> Neu importiert -> Kein entlassungsdatum
*DJ Wann wurde der Datensatz erstellt? Anzeige Zeitraum für Datensatz, vielleicht auch noch erste Fall allgemein? Wird das geloggt wäre cool wenn wir das in unsere Daten aufnehmen?
*D Frühster relevanter Fall / letzter rel Fall für die Datei anzeigen, ohne relevant. Einfach erster Fall der Datei letzter Fall, Mindestmenge oder nicht
*Ergebnis: Färben der Zahlen A/BX/Y bzgl. erreichter Menge?
*
*DJ Wechsel Aufnahmephase Regelbetrieb, Reset Zählung, Habe nur "Trotzdem auswerten"
JD Wenn Aufnahmephase zeige aktuellen benötigten Zeitraum der Daten an, Zahl x / y, von mir aus auch bei Regelbetrieb auch wenn er dort immer der gleiche ist. Verstehen nicht ganz was genau gemeint ist, habe aber jetzt die Information wann der erste relevante Fall war und wann der Letzte. Abgabezeitraum Regelbetrieb 01.07 bis 15.07 . Aufnahmephase 13. oder 15. Monat 01.-15. nach Startdatum
*
Aufnahmephase:
*Hinweis auf 50% Mindestmenge in ersten 12 Monaten? Eine Meldung mindestens in der ersten 6 Monaten?
*
*Was passiert bei erfolgreicher Prognosebestätigung (25. Monat), Hinweis auf Anpassung des Leistungsbereiches? sollte das nicht vom system gemacht werden
*E-Mail und Hinweis "bitte den Leistungsbereich zu ändern". Dafür müssen wir aber die Antwort parsen und auch dann geht es nicht immer ( Siehe Bescheid).
*
*Leistungsbereiche Übersicht:
*Anzeige nächster Übermittlungszeitraum
*J Willkommen: Anzeige der nächsten fälligen Übermittlungen? Hab eine Info-Callout auf die Willkomen-Seite gemacht das einen Monat vor 13. oder 25. Monat angezeigt wird. Mehr Info wenn nichts drin ist. Beispielsweise: Aktuelle Leistungsbereiche anzahl, LB in Aufnahme, LB in Regel usw
*Allgemein einfach die nächste fällige Meldung anzeigen egal wann.
*Details Report / Datensatz Anzeige erster Fall, letzter Fall {"Leistungsbereich":"MM_LTX","Zieldatensatz":{"countingList":{},"MODUL_RB":{"ZAHL_B":110,"AUFNAHMEPHASE":false,"ZAHL_A":0,"NICHT_ANGEBOTEN":false},"MODUL_AP":{"ZAHL_X":0,"ZAHL_Y":0},"dates":{"earliest":{"jahr":"2024","monat":"03","tag":"10"},"latest":{"jahr":"2024","monat":"03","tag":"10"}}}}
*
*Datenimport: Leerauswahl Aufnahmephase zu Select hinzufügen was soll da passieren? Nichts, soll nur nicht so mies aussehen ohne Werte AP disabled, wenns kein LB in AP gibt
*AVV ablehnen entfernen, FAQ dort könnte aber eventuell noch interessant seinn
*Werden in der XML nicht angebotene Leistunsgbereiche auch als Nicht angeboten exportiert oder werden dort ggfl. die eventuell errechneten Zahlen verwendet ( Fälle ohne Leistungsberechtigung) wenn in json nicht angeboten true ist wird nicht angeboten exportiert. Bisschen testen
*
*J:
*Hash der hochgeladenen, verschlüsselten Dateien speichern -> Erkennen ob es sich um die richtige Datei handelt
*
*Future ?:
*-- Lizenz läuft aus Warnung
*An wen? Standort, Träger, User?
E-Mail versenden wenn Aufnahmphase Bereiche in die kritische Phase der Übermittlung gehen (12. Monat?).
E-Mail wenn Prognoseantwort angekommen ist.
Warnung / E-Mail falls keine Leistung in den ersten 6 Monaten der Anmeldung einer Aufnahmephase erbracht wurde. Falls keine erbracht worden ist -> Ins Programm und Anmeldung zurückrufen.
*Falls doch :
*Wenn erste Leistung = aktueller Zeitraum im Programm -> "können Sie diese meldung ignorieren"
*Erste Leistung != aktueller Zeitraum -> Zeitraum neu setzen und dann diesen für Import und Leistungsbereich verwenden
*Standortübersicht?
*
*Wenn man von Benutzer aus Standorte wechselt sind die Standorte doppelt
*LB Status "Wird angemeldet" entfernen
*meldungen leere Tabelle vereinheitlichen, text weg, tabelle hin
*Standorthistorie : No data available in table
*J DokumentePapierformJANEIN wird in der XML nicht aktualisiert / hinterlegt
*J Datensatz-Übersicht->Datei hochladen : Standortwechseln, bleibt bei importieren nur der Assisstent sichtbar
*
*Wenn ich einen vorher nicht angebotenen Leistungsbereich anbiete(Regelbetrieb) wird kein Leistungsbereich in der Tabelle für die Validierung angezeigt. Wünschenswert wäre der betroffene Leistungsbereich wie in der XML
*J Details der Anmeldungen erhalten keine Informationen über die betroffenen Leistungsbereiche und in welcher Phase diese angemeldet wurden
*Nach Versand Anmeldung -> Aufnahmephase
*
*J Keine Warnung wenn Standort nicht befüllt. Neues KH -> Klick auf Träger anlegen. Träger angelegt, keine Arnung mehr aber Standort ist noch leer. Warnung kommt beim der plausibilitätsprüfung. diese wird aber auch nicht korrekt aktualisiert, nach dem Speichern des Standorts ist der Btton "xml erstellen" bis erneuter Reload inaktiv geblieben.
*
*M Anmelden Leistungsbereich Regelbetrieb: Zwei Bereiche, einmal Datum geändert. Ich schätze es liegt an der Validerung der Maske, Datum Regelbetrieb 2024. Es wird aber kein Fehler angezeigt Keine Reaktion beim speichern, kein js Fehler
*
*J Krankenhausträger : "No data available in table"
*Verfügbarkeit anderen Häusern freigeben??
*- JM Willkommen/InfoCenter erweitern: Hinweise/Warnings fehlende Verwaltungsangaben um Daten zu erfassen/exportieren -> also: fehlender Träger, fehlende Leistungsbereich angaben, usw.
*
*- J xml-Export: fake Daten ersetzen (wie z.B. Träger)
*§ 6 Erstmalige oder erneute Erbringung einer Leistung: Nach Ablauf dieser Frist(6 Monate nach Angabe beabsichtigten Leistungserbringung) übermittelt der Krankenhausträger den Landesverbänden der Krankenkassen und den Ersatzkassen entsprechend Satz 1 unverzüglich das Datum der ersten Leistungserbringung oder die Information, dass innerhalb der Frist keine Leistung erbracht wurde.
*1 Mit der ersten gemäß Absatz 2 Satz 4 erbrachten Leistung beginnt ein Zeitraum von zwölf Monaten,
*1Mit der ersten gemäß Absatz 2 Satz 4 erbrachten Leistung beginnt ein Zeitraum von zwölf Monaten, in dem das Krankenhaus zur Leistungserbringung berechtigt ist. 2Das Krankenhaus hat in diesen zwölf Monaten mindestens 50 Prozent der in den Monaten 13 bis 24 ab erstmaliger oder erneuter Leistungserbringung geltenden Mindestmenge zu erfüllen. 3Erstreckt sich der Zeitraum der Monate 13 bis 24 über zwei Kalenderjahre, in denen unterschiedliche Mindestmengen gelten, bemisst sich die in Summe mindestens zu 50 Prozent zu erfüllende Mindestmenge nach Satz 2 anteilig nach der Anzahl der Monate und der geltenden Mindestmengen in dem jeweiligen Kalenderjahr. 4Die Ermittlung der Leistungsmenge nach Satz 2 oder 3 beginnt zum 1. des Monats, in dem die betreffende Leistung das erste Mal erbracht wurde.
*Die Ermittlung der Leistungsmenge nach Satz 2 oder 3 beginnt zum 1. des Monats, in dem die betreffende Leistung das erste Mal erbracht wurde
*
*- SG Optimierung Erscheinungsbild mmr-beta
*- SG Verschlüsselung + Backup -> Pub-Key Service ist noch nicht implementiert (HM)
*- PD "CRUD" Datensatz
*- JM Details Datensatz: Leistungsbereiche + Zählung, backup files + download
*- PD Meldung kann aus Datensatz erstellt werden inkl. PDF-Upload
*
*Leistungsbereiche:
*Meldungen:
*PDF Upload
*
*Anzeige wann der Abgabezeitraumwäre, Zu Beginn über Startdatum Leistunsgbereich, nach Zählung Startdatum Leistungsbereich ggfl. ändern (1. des Monats der ersten OPS)
*Import der ambulanten Daten: Wie wird das bei uns gemacht, sollen die KH die Dateien zusammenführen? Bei ambulanten Fällen gilt neben dem AdminKriterium zusätzlich, dass das Startdatum von Zahl A gleich oder vor dem OP-Datum liegen muss. Wird das geprüft? es werden grundsätzlich nur ops gezählt mit ops datum >= startdatum zahl A
*J Historie: datatable Fehler
*
* J Shared/Projekte/IQTIG MM-RL/Testdateien/18Neo, 10000Random/ Mit diesen Dateien werden mir 18 Nierentranspla und ein neo angezeigt. Die Anzeige "Anzahl aller Fälle in den hochgeladenen Dateien" usw. zeigt mir aber 66 relevante Fälle an. Wie?
* Anzeige / Speicherung wann erster Fall des Datensatzes ist und wann letzter. Grober check ob es der richtige Datensatz war / ist
* Shared/Projekte/IQTIG MM-RL/Testdateien/772624000 22 Fälle in Zählung aber nur 18 werden den Leistungsbereichen zugeordnet Bei mir kam lokal 18 raus. Welche Leistungsbereiche sind bei dir angemenldet? Der eine, der die 18 Fälle hat. Hab die CSV's auch kopiert und modifiziert für andere Standorte(IK und Standortnummer) hatte immer 18 als ergebnis. Sollte gefixed sein bei mir Lokal funktionierts.
*
*
*JD Falls abweichende Startzeiträume bei den Bereichen vorliegen sollte nur ein Leistungsbereich importiert werden, dann kann auch der geforderte Zeitraum für den Leistungsbereich angezeigt werden. Alternativ: Immer Zeitraum frühstes Verfahren bis Ende letztes Verfahren. Dann geht theoretisch auch beides. Möglich wäre auch eine Selektierung des Leistungsbereiches nach der Zählung oder vor der Erstellung der Meldung aus dem Datensatz Wird beim zählen selektiert
*
(4) 1Erfüllt der Krankenhausstandort nachweislich die nach Absatz 3 Satz 2 oder 3 geforderte Leistungsmenge, besteht für den unmittelbar folgenden zwölfmonatigen Zeitraum (Monate 13 bis 24) die Berechtigung zur Leistungserbringung fort; andernfalls endet die Leistungsberechtigung. 2 Der Krankenhausträger muss zum 15. des auf den Zeitraum nach Satz 1 folgenden Monats eine Prognose gemäß § 4 Absatz 2 bis 4 und § 5 Absatz 2 und 3 für das restliche laufende Kalenderjahr abgeben und darlegen, dass die in der Anlage für das laufende Kalenderjahr festgelegte Mindestmenge aufgrund berechtigter mengenmäßiger Erwartungen voraussichtlich erreicht wird. 3Sofern die Leistung erstmalig oder erneut in den Monaten Juli bis Dezember erbracht wurde, muss der Krankenhausträger zum 15. des auf den Zeitraum nach Satz 1 folgenden Monats eine zusätzliche Prognose gemäß § 4 Absatz 2 bis 4 und § 5 Absatz 2 und 3 für das nächste Kalenderjahr abgeben und darlegen, dass die in der Anlage für das nächste Kalenderjahr festgelegte Mindestmenge aufgrund berechtigter mengenmäßiger Erwartungen voraussichtlich erreicht wird. 4Abweichend von § 4 Absatz 2 Nummer 1 und 2 wird den Prognosen gemäß Satz 2 und 3 der Zeitraum nach Satz 1 zugrunde gelegt.
*
*J Hinweis, dass die KH selbst verpflichtet sind die PDF vorher zu anonymisieren
*J Bis die standortkonatkdaten aktzeptiert werden muss teilweise öfters gespeichert / neu geladen werden
*Die folgende Leistungsbereiche haben den Status 'nicht angeboten' allerdings wurden trotzdem Fälle für diese Bereiche gezählt: Bitte überprüfen Sie die Angaben Ihrer Leistungsbereiche.
*Darunter werden alle Leistungsbereiche angezeigt. Ich habe bis auf Neo alle Bereiche in Regelbetrieb seit 2021
*Nicht angeboten -> Aktivieren -> Leistungsbereich anmelden. Wann wird die Phase bestimmt?
*J Anmelden Buttons für regelbetrieb und Aufnahmephase "Anmeldung", "Nicht mehr anbieten" , kein Edit.
*Warnung für "bearbeiten Sie ihre leistungsbereiche" analog zu Home-Ansicht wenn noch keine Bereiche angelegt worden sind Ist man an dem Punkt nicht schon zu spät? Das hätte ja vor dem Meldung erstellen, während/vor des Dataset uploads passieren müssen. Einfache leere Seite mit nicht deaktiviertem Button "Neue Meldung", ohne Funktion, sieht aber nach nichts aus...Button gibts nicht mehr, ich schaue. Okay Button ist weg, aber ich kann Datensätze importieren ohne Leistungsbereiche?
*
*StandortKontakt bearbeitet ohne Träger
* org.postgresql.util.PSQLException: FEHLER: Einfügen oder Aktualisieren in Tabelle »hospital« verletzt Fremdschlüssel-Constraint »hospital_operatorid_fkey«
* Detail: Schlüssel (operatorid)=(0) ist nicht in Tabelle »operator« vorhanden.
* at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
* at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
* at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
* at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
* at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
* at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:305)
* at administration.HospitalsFacade.saveHospitalData(HospitalsFacade.java:54)
* at administration.HospitalsBean.updateHospital(HospitalsBean.java:191)
* at administration.HospitalsBean.saveHospitalModal(HospitalsBean.java:291)
* at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
* at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
*
*Leistungsbereiche anmelden: Bis auf Neo alle angeboten Januar 2022
*Caused by: java.lang.NullPointerException
* at report.ReportFacade.createReport(ReportFacade.java:275)
* at report.ReportBean.lbAnmeldung(ReportBean.java:156)
* at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
* at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
* at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingM
*Leistungsbereiche : Standortwechseln keine Aktualisierung / alte Daten
*
*Meldungen:
*Neue Meldung Button sichtbar, active aber keine Funktionalität.
*
*Plausibilitätsprüfung:
*Abfrage für Standortkontaktdaten funktioniert soweit, aber ich konnte ohne Träger speichern. Danach wurde auch nach neuladen keine Warnung angezeigt das kein Träger selektiert ist. -> Xml Erstellen : ErrorLine number: 14, Column number: 27. cvc-complex-type.4: Attribute 'name' must appear on element 'TraegerKontaktdaten'.
*
*Dateiverwaltung für XXX
*Tooltips für Download
*Probleme mit mehrfachen Dateinamen, besser wäre speichern mit alias und name merken. -- Löschen einer Datei löscht alle Dateien im Modal!? Sollte behoben sein, sofern der Name nicht gleich ist, daran muss ich noch arbeiten
*Anzahl hochgeladene Dokumente in Tableheader reagiert nicht auf löschen von Dateien, aktuell über 10 Dokumente in einem Bereich, UPDATE? So wie ich den Satz verstehe, bekomme ich das nicht reproduziert. Denke es war das filelogId Problem
*


- J Hilfedateien ( Richtline und evtl. g-ba Part?) hinterlegen und Tutorial->support aktualisieren
- D Aufnahmephase: Allgemein Probleme, Bei der Zählung, XML Aufnahmephase nur Aufnahmephasebereiche Soll trotzdem alles gezählt werden? Hätte man einen aktuellen Stand seiner erbrachten Leistungen. Würde schon alles zählen aber ggfl. mit Warnung es wird nur in X-Phase Daten übernommen
*-> bei saveDataSet nur module speichern, die in aufnahmephase im json haben und 13. oder 25. Monat man könnte die Module die nicht die gleiche Phase haben die der Datensatz haben soll, beim Abspeichern einfach aus der Java-Liste aussortieren.
*oder
*-> return beim zählen, sodass json nur die LB in Aufnahmephase 13. oder 25. Monat enthält (checked beim zählen ob 13. oder 25. monat: util.js LeistBereichAufnahmephase(idLB))
- J Historie, muss man nur passende Events generieren, Die Details dann entsprechend an die MMR Rückantorten anpassen Bin mir unsicher ob es "erledigt" ist bräuchte Rückmeldung.
- JD Rückmeldungen bzgl. Aufnahmephase haben ein anderes AntwortFormat. So sieht ein json aus: {"LTX":{"DokumentePapierformJaNein":"false","Ergebnis":"bestätigt"},"NTX":{"DokumentePapierformJaNein":"true","Ergebnis":"siehe Bescheid"}}} muss getestet werden
- J Gibt es die üblichen §-21 Checks? Excel bearbeitet usw? bisher nur Standortnummer, müssen unbedingt rein, wir können die Dateien nie richtig sehen

- erste erbrachte Leistung nach Anmeldung innerhalb von 6 Monaten, wann 13. Monat bzw. Aufnahmephase Meldung, in Analyse
- J Historie: Versand Regelbetriebmeldung, Versand Aufnahmephasemeldung?, bessere Grammatik
- J Historie: Details zu dem gesendeten Datensatz / Modul
- MMR zählrn dupliziert die Leistunsgbereiche. Ebenso wenn man zurückgeht und neu importiert.
- Warnung "Die Dateien beinhalteten keine für den aktiven Standort verwertbare Daten. Bitte überprüfen Sie Ihre Dateien." Aber es geht trotzdem, so gewohlt aktuell? Wenn diese Fehlermeldung bei mir kommt kann ich nicht auf weiter drücken.
- Datensatz Detailansicht -> Aufnahmephase enthält nur Regelbetrieb daten
- Meldung erstellen aus Aufnahmephase -> Alle Leistunsgbereiche in XML, nicht nur welche sich in Aufnahmephase befinden

- DataSet: nach zählen Hinweis zu LBen, dass gezählt wurde, aber in der Tabelle keine Zahlen
- Stanortübersicht: Standorte werden doppelt angezeigt
*-> Kontaktinformationen required * in modal
- Modul: Dokumente hochladen sollte nur bei "regelbetrieb" möglich sein, nicht bei "aufnahmephase" und "nicht angeboten"
*-> Meldung Regelbetrieb muss Modul Regelbetrieb, Meldung Aufnahmephase muss Modul Aufnahmephase
- xml: alle lbs in xml obwohl mehrere in json "nicht angeboten"

- JM prepare.js: beim file handling standortnummer prüfen
- J Dateien für alle Bereiche zusammen maximal 10MB, nur PDF uploaden
- XML erstellen Objekt Standortkontaktdaten fehlen -> Check ob StandortKontaktdaten ausgefüllt sind bevor XML erstellt wird
- Zahlen AB XY in den Detailseiten anzeigen
- J verschlüsselt speichern : aktuell okay, aber im späteren Betrieb ist das Standard und Pflicht, keine Option!
- J Warnungen in Aufnahmephase bzgl. 50% der Mindestmenge erreicht oder nicht
- Knopf für versenden einblenden nach erfolgreicher XML Prüfung(versende Logik noch nicht für mmr angepasst soweit ich weiß)
- J Warnung falls Zahlen in nicht angebotenen Leistunsgbereichen nach dem Import gezählt wurden
- J Modal für Rückmelungen ( Protokolle ähnlich QSFFX)
*in Report_protocol würde ich euch die Phase hinpacken. (Aufnahmephase, Regelbetrieb)
- Flag für DokumentePapierformJaNein bei Meldung. Boolean, hier wird angegeben ob das KH zusätzlich zu den PDF noch Dokumente in Papierform an die Kassen übermittelt. Existiert schon wird pro Leistungsbereich im Report geregelt(selbes Modal in dem Dokumente hochgeladen werden), easy
- J eventuell wäre betroffene Bereiche bei den Meldungen eine schöne Info, ansonsten gibt es hier keine Einsicht zu dem Vorgang? Zumindest Link zu verknüpftem Dataset? Was ist mit den verknüpften Dokumenten?
- D Warum wird bei dem Datensatzimport zwischen Aufnahmephase und Regelbetrieb unterschieden? Idealerweise würden doch die passenden Datasets nach dem Import erzeugt. Grundsätzlich handelt es sich ja um die gleichen Zahlen? Man kann Anhand der csv-Dateien nicht entscheiden welche Art von Datensatz/Meldung man hochlädt, höchstens Anhand vom Import Datum, aber man könnte ja im Juli im 13. Monat eines LB sein.
*- Müsste ich aktuell also immer zweimal die gleichen Zahlen einlesen um meine Datensätze zu erzeugen? ( Falls ich auch Aufnahmephase betreibe) Aufnahmephase muss ja immer im 13. und 25. Monat des LB erzeugt werden, RB im Juli, es handelt sich also um Unterschiedliche Dateien/Zahlen. KK
*




- JM Portal-Seite mit Login-Möglichkeit für MMR, QSFFx inkl. SSO, Mittelfristig Gewünscht: Dort Verwaltung der keycloak-nutzer / Chat / Tickets / etc.(schon mit neuer Technologie?)

- PD Dadurch schon kleine Statistik-Möglichkeiten und Hinweise auf Erfüllung usw. aus den hochgeladenen Datensätzen

org.postgresql.util.PSQLException: FEHLER: Aktualisieren oder Löschen in Tabelle »dataset« verletzt Fremdschlüssel-Constraint »report_datasetid_fkey« von Tabelle »report«
Detail: Auf Schlüssel (datasetid)=(19) wird noch aus Tabelle »report« verwiesen.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:344)
at dataset.DataSetFacade.deleteDataSet(DataSetFacade.java:375)

Caused by: java.lang.NullPointerException
at xml.export.XMLGenerator.generateHeader(XMLGenerator.java:72)
at xml.export.XMLGenerator.generate(XMLGenerator.java:58)
at xml.export.ExportXML.export(ExportXML.java:138)
at report.ReportBean.exportXML(ReportBean.java:290)

DataSet:
- overview: ersteller Vor- + Nachname, aktuell username
- detail modal ebenfalls

Report:
- validate: in der Tabelle anzeigen wie viele Dateien hochgeladen wurden

Träger test:
*- beim edit werden die kh nicht gesetzt, edit direkt nach erstellen
*- edit datatable wird nicht initialisiert
*- Übersicht Tabelle: besser standortnummer statt ik, kh name?
*- Standort edit:🗸
*- Straße kein Pflichtfeld? aber Hausnummer?
*- add Träger: KH nicht vorausgewählt


Aufgaben:
J Bereich-Datei Erfassungmaske
J Standortkontaktdaten Erfassungsmaske
J Trägerkontaktdaten Erfassungsmaske, aus anderem Standort kopieren?
Libs aufräumenLibs aus der project.properties in einen neuen Ordner gelegt 'use_these'
JM keycloak client für MMR / Konfiguration von Client in keycloak und keycloak Test -> Nix war so richtig vorbereitet ...

BETA-Status
Erreichbar unter mmr-beta.promato.de/mmr/, VM ist qs-beta (ehem. qsffx-beta) 172.16.3.236
Rest-Service ist online unter /mmr-rest/

Auffälligkeiten:
- Allgemein
- promato QSM ersetzen durch promato QS
* - Verwaltung Seitenwechsel sehr langsam -> werden zu viele Daten geladen? Admin Problem oder allgemein? Ich teste als Admin!
* - CSS bei Navigationsleiste unübersichtlich, s.u.
*- Navigationsunterpunkte Info-Center sollten die Punkte des "Wizards" sein, Also Willkommen, Standortübersicht, Historie, Leistungsbereiche existiert ja unter "Verwaltung"
*- Ggf. unter Support Ticket und Chat integrieren ... oder in Portal auslagern, dann wäre das Handling auch aus den Anwendungen raus
*- JM Leistungsbereich sollte Punkt 1 sein in der Subnavigation bei Verwaltung Wird mit meinem nächsten Commit gepushed
*- JM Standortverwaltung Verfügbarkeit freigeben nicht bei MMR also die ganze Spalte weg, Und da soll es auch nicht (mehr) sein, da es keinen Sinn macht,
*- JM Standortverwaltung sollte bei "Standorte aus ausgewähltem Krankenhaus(Organisation) anzeigen" starten Das sollte der Standard sein der Button den Sie hier erwähnen ist nur für Admins(Org 3) - Dort auch ändern
*- Top Navigation inkonsistent, einmal kann man graue Punkte anklicken (InfoCenter), einmal nicht (Meldungen) das ist so gewollt, das man bei Meldungen eben den einzelnen Schritten folgen muss, ABER letztlich ist Willkommen/´Leistungsbereiche/Standorte/Historie eben kein Wizard Meldungen wird ja nochmal überarbeitet, s.u. Datensatz
*- JM Standortverwaltung: Paging bei Standortliste, Laden aller Standorte nur unter Verwaltung sinnvoll? es gibt ja immer nur eine Hand voll Standorte, Warum dauert das Laden der Standortliste in der Navigation weilweise so lange und unterschiedlich lange? Das könnte doch direkt geladen werden, bei vielen Masken geht es ja schnell in welcher Naviagtion? Bei den meisten Masken wird nicht geladen sondern die hospitalList aus adminBean geholt
*- Bei Verwaltung macht da der Kopf mit dem Namen des KH Sinn? Wenn die org verwaltet wird ...
- keycloak
* JM - gibt es Attribut MMR bei Benutzern? Wird dieses geprüft?
- JM Träger anlegen
* - keine Rückmeldung/Fehlermeldung bei falschen Angaben - z.B. Text bei IK oder Telefon o.ä., unklar was Pflichtfelder sind
* - man drückt Speichern und es passiert ... nichts
*- Was bedeuten genau mehrere Träger? OK, also ein Träger pro KH, ggf. sollte man die zugeordneten IK-Nummern (Standortnummern??) dann beim Träger in der Liste der Träger anzeigen?
*- Daten beim Laden des Trägers zum editieren NICHT geladen Passierte auf dem Beta durch defekte Datenbank sollte behoben sein.
*JM Was ist mit der Anzeige der IK-Nummern?
*- Klick auf "Mitarbeiter / Benutzer aus ausgewähltem Krankenhaus anzeigen" -> DataTables warning: table id=usermanagement - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3 if (!DataTable.isDataTable(selector)) hinzufügen
- JM Leistungsbereiche -> bessere Anzeige implementieren, wenn leer DIe Leistungsbereichtabelle sollte gar nicht leer sein können. Lokal passiert ein Fehler wegen zugriffs auf Access Datenbank AccDB unter /opt/mmr hinterlegt? Ja, ist besser mit accdb ... Aber da stand ja nix davon irgendwo in der "Doku", musste auch noch umbenannt werden
- Meldungen -> bessere Anzeige implementieren, wenn leer (erstmal nur bei Meldungen implementiert zum test)
*- Meldeart eher Dropdown oder Radio? nein wäre inkonsistent -> Dann muss eins vorausgewählt werden ist bisher auch nur ein dummy
*- Hochladen: Javascript -> FIXER Wert ... const startHandlingFiles = async (uploadedFiles, hospitalid) => {
* json = await getJson('http://localhost:8080/qsm-rest/webapi/mmr/v1/' + hospitalid)
*- Willkommens-Seite
*- wenn man auf die Willkommens-Seite navigiert, werden kurz Nummern eingeblendet, die dann wieder verschwinden
*- Im Content Bereich ist drauf zu achten, dass der Kopf einheitlich ist, Also 1. Zeile das Krankenhaus, z.B. "Diakonissenkrankenhaus Flensburg" und 2. Zeile eine Überschrift passend zur aktuelle Maske also z.B. "Leistungsbereiche"
- Mini-Navigation zum Einklappen?
- Navigation / Hover-Effekt: Immer noch inkonsistent, wenn auch schon besser. Z.B. Man ist in der Trägerverwaltung und mill dann im Support etwas anklicken, dann ist es gut, dass Träger grau hinterlegt ist unter dem aktiven Punkt Verwaltung, auch gut, dass Support blau
gehovert wird bei Mouse-Over, aber wenn man es dann anklickt wird es grau, das wäre die aktuelle Auswahl, aber es wurde ja gar nicht hin
navigiert sollte gefixed sein
- Leistungsbereiche verwalten: - wenn Auswahl per "Aktion"-Button, dann am besten Anzeige "X" Leistungsbereiche ausgewählt, sonst besser Checkboxen und unter der Tabelle erkennbar Aktionen die mit den Checkboxen zu tun haben
*


Stichpunkte Besprechung
- SG Verschlüsselung + Backup
- PD Trennung Datensätze + Meldungen, Meldung kann aus Datensatz erstellt werden inkl. PDF-Upload
- PD PDF hochladen
- SG System für mmr-beta, Zertifikat, qs-transport - eine oder zwei? eine für gemeinsame VM MMR+QSFFx
- SG Optimierung Erscheinungsbild mmr-beta
- HM Testdatensatz erstellen (Herr Maaß)
- ?(dachte hier an Hr Müller?) Portal-Seite mit Login-Möglichkeit für MMR, QSFFx inkl. SSO, Mittelfristig Gewünscht: Dort Verwaltung der keycloak-nutzer / Chat / Tickets / etc.
- PD Dadurch schon kleine Statistik-Möglichkeiten und Hinweise auf Erfüllung usw. aus den hochgeladenen Datensätzen s.o.

ERSTE GEDANKEN
- Fertigstellung zwischen 1.7.2024 und 15.7.2024
- JM keycloak-Anbindung / keycloak 24 User Profile
- ? JM Portal-Seite mit QBM, QSFFx, MMR verschieben auf neuen tech? s.o.
- extternes Java-Tool erforderlich (z.B. Portable-Stick) zur Vorverarbeitung Eingangsdatensatz, oder KÖNNEN die Browser das?
- QB-Login auf keycloak umstellen
- HM AV-Vertrag -> einer füe alles oder pro Anwendung / AUTH?
- JM keycloak-Profil-Seite um DSGVO-Elemente erweitern? z.B. Löschen etc.
- Kickoff-Termin
- PD Eingangsdatensatz mit public Key von KH verschlüsseln. Eventuell Tool für Download zum Entpacken und erneut einlesen bzw. für die Analyse durch KH. Alternativ Java Tool zum lokalen Entpacken (IQTIG/TPacker)
- ggf. doch alles im Browser und in mehreren Schritten
- PD neue entity "datensatz"
*- nach fileupload/counting datensatz erstellen
*- datensätze können dann verglichen werden
*- aus datensatz wird dann meldung erstellt, dabei option auf pdf upload

todo counting:
- ik, standortnummer check
- zaehle neo: nicht aufgenommen und aufnahmephase flags check


- SG mmr auf qsffx server legen? selbes payara, was ist mit rest? auf beta testen
- ?(dachte hier an Hr Müller?) app zur modulauswahl, links zu qsffx und mmr, bereits mit login?
- SG neue qs transport oder selbe db verwenden?























































GRUNDSÄTZLICHE DOMAIN OBJEKTE

Was sind die Objekte / Eigenschaften?

Standort -> das übliche
Benutzer -> keine besonderen/abweichenden Rechte
Meldungen -> Erstmeldung, reguläre Meldung, Abmeldung hat Antworten, diese können ggf. Rückfragen beinhalten
Leistungsbereiche -> 10 LB, individuell jeweils Beginn der Leistungen / Beginn der 24-Monats-Phase -> Eingabemöglichkeiten in einer Art Wizard? Letzter Schritt Übermittlung des anonymisierten Eingangsdatensatzes
Anzeige der ermittelten Mindestmengen und Grundlagen der Berechnung (Zeiträume, anteilige Mindestmenten bei mehreren Jahren mit untersch. Zählungen)
Übersicht Prognosedaten?
Hilfedateien: Aktueller Stand der G-BA-Regelung inkl. Liste der OPS, Kennzahlen der Leistungsbereiche
Neue Startseite ...


JAVASCRIPT - Upload, Preprocess, Crypt ...

Javascript-Crypto-API
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto
---- generateKey ----
RSA
let keyPair = await window.crypto.subtle.generateKey(
{
name: "RSA-OAEP",
modulusLength: 4096,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
},
true,
["encrypt", "decrypt"],
);

AES
let key = await window.crypto.subtle.generateKey(
{
name: "AES-GCM",
length: 256,
},
true,
["encrypt", "decrypt"],
);

----sign ----
function getMessageEncoding() {
const messageBox = document.querySelector(".rsassa-pkcs1 #message");
let message = messageBox.value;
let enc = new TextEncoder();
return enc.encode(message);
}

let encoded = getMessageEncoding();
let signature = await window.crypto.subtle.sign(
"RSASSA-PKCS1-v1_5",
privateKey,
encoded,
);

----digest----
const text =
"An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";

async function digestMessage(message) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hash = await crypto.subtle.digest("SHA-256", data);
return hash;
}

digestMessage(text).then((digestBuffer) =>
console.log(digestBuffer.byteLength),
);
----encrypt----
function getMessageEncoding() {
const messageBox = document.querySelector(".rsa-oaep #message");
let message = messageBox.value;
let enc = new TextEncoder();
return enc.encode(message);
}

function encryptMessage(publicKey) {
let encoded = getMessageEncoding();
return window.crypto.subtle.encrypt(
{
name: "RSA-OAEP",
},
publicKey,
encoded,
);
}



RSA-PSS

https://github.com/diafygi/webcrypto-examples
window.crypto.subtle.generateKey(
{
name: "RSA-PSS",
modulusLength: 2048, //can be 1024, 2048, or 4096
publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
hash: {name: "SHA-256"}, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512"
},
false, //whether the key is extractable (i.e. can be used in exportKey)
["sign", "verify"] //can be any combination of "sign" and "verify").then(function(key){
//returns a keypair object
console.log(key);
console.log(key.publicKey);
console.log(key.privateKey);}).catch(function(err){
console.error(err);});

Weitere Links:
https://crypto.stackexchange.com/questions/35530/where-and-how-to-store-private-keys-in-web-applications-for-private-messaging-wi
https://github.com/AdrianVillamayor/Wizard-JS
https://github.com/infotechinc/key-storage-in-browser/tree/master
https://github.com/mdn/dom-examples/tree/main/web-crypto
https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs
https://github.com/juhoen/hybrid-crypto-js
https://developer.mozilla.org/en-US/docs/Web/API/Streams_API
https://medium.com/geekculture/few-ways-to-generate-qr-code-using-javascript-54b6b5220c4f