Wir haben einige Fälle analysiert und haben festgestellt, dass das Prüfmodul die fehlerhaften Scheine erkennt, kann aber die Fehlemeldungen nicht richtig abbilden, bzw. kann die Meldungen nicht immer kategorisieren und referenzieren.
Normal verarbeitete Fehlermeldung soll etwa so aussehen
meldungen = (
{
art = Fehler;
code = E220003;
kategorie = Validierung;
nachricht = "Die Leistung \"Zuschlag f\U00fcr die Behandlung chronisch kranker Patienten P3\" ist nur einmal pro Versicherter/Arzt/Quartal abrechenbar.";
referenzen = (
{
id = 1274;
referenzTyp = Patient;
},
{
id = "152447342008598530.0";
referenzTyp = Leistung;
}
);
uebermittlungsStatus = KeineAngabe;
}
}
Die nicht verarbeitete Meldung im besten Fall sieht so aus (man kann zumindest erkennen woran das Problem liegt)
Meldungen = (
{
Art = Fehler;
Code = X000100;
Kategorie = KeineAngabe;
Nachricht = "Es ist ein interner Fehler aufgetreten: map[Dokumentationen[0].Diagnosen[2].DiagnoseCode:[The DiagnoseCode field is required.]]";
UebermittlungsStatus = KeineAngabe;
}
);
Um im schlimmsten Fall
Meldungen = (
{
Art = Fehler;
Code = X000100;
Kategorie = KeineAngabe;
Nachricht = "Es ist ein interner Fehler aufgetreten.";
UebermittlungsStatus = KeineAngabe;
}
);
obwohl in der HPM Log die Referenzierung zur Diagnose erkennbar ist.
Das Fehlverhalten werden wir alsbald bei HÄVG HPM Team melden.
Die bisher bekannten Fehler.
- Diagnose ohne ICD Code (soll eigentlich auf keinen Schein dokumentiert werden, kann vermutlich durch die Datenkonvertierung vorkommen)
Mit folgendem Skript kann man die Scheine mit der Diagnose ohne ICD-Code finden
drop table if exists tempHZVScheinTable;
create temporary table tempHZVScheinTable as
select A.ident as HZVScheinID,
A.betriebsstaette_ident as BetriebsstaetteID,
A.quartal,
A.jahr,
A.sortierdatum as erstellt_am,
P.ident as PatientID,
P.vorname,
P.nachname,
D.name as Vertrag,
D.code as VertragCode,
BS.name AS Betriebsstaette
from ( select *
from HZVschein
where
-- hier kann Quartal und Jahr angepasst werden
( quartal = 1 and jahr = 2024 )
and visible = true
and abgerechnet = false
and ignoriertfuerabrechnung = false
) A
left join hzvdetails B on (A.hzvdetails_ident = B.ident and ((B.statusFAVDirektaktivierung != 4 AND B.statusFAVDirektaktivierung != 5) or B.statusFAVDirektaktivierung is null)) -- keine Pseudo-Teilnahmen für FAV-Teilnahmeerklärung via HZV oder cashed Info für EAV
left join hzvvertrag D on (D.ident = B.hzvvertrag_ident)
left join patient P on (P.ident = B.patient_ident)
left join Nutzer BA on (B.betreuarzt_ident = BA.ident)
left join Betriebsstaette BS on (A.betriebsstaette_ident = BS.ident)
;
drop table if exists tempHZVDiagnosenTableUngrouped;
create temporary table tempHZVDiagnosenTableUngrouped as
select
A.HZVscheinID,
concat(' ohne code ', G.typ::text) as diagnose,
G.freitext as bezeichnung,
G.isddi
from tempHZVScheinTable A
join HZVschein_quartalsdiagnosen F on (A.HZVscheinID = F.HZVschein_ident)
join diagnose G on (G.ident = F.quartalsdiagnosen_ident and G.visible = true)
where G.icdkatalogeintrag_ident is null
order by A.HZVscheinID, G.datum;
drop table if exists tempHZVDiagnosenTable;
create temporary table tempHZVDiagnosenTable as
select ungroupedDiags.HZVscheinID,
string_agg(ungroupedDiags.diagnose,',') as Diagnosen,
string_agg(ungroupedDiags.bezeichnung,',') as Diagnosenbezeichnungen
from tempHZVDiagnosenTableUngrouped ungroupedDiags
group by ungroupedDiags.HZVscheinID;
drop table if exists tempHZVDDITable;
create temporary table tempHZVDDITable as
select ungroupedDiags.HZVscheinID,
string_agg(ungroupedDiags.diagnose,',') as Diagnosen,
string_agg(ungroupedDiags.bezeichnung,',') as Diagnosenbezeichnungen
from tempHZVDiagnosenTableUngrouped ungroupedDiags
where ungroupedDiags.isDDI = true
group by ungroupedDiags.HZVscheinID;
select A.*,
C.Diagnosen,
C.Diagnosenbezeichnungen,
DDI.Diagnosen as Dauerdiagnosen,
DDI.Diagnosenbezeichnungen as DDI_Bezeichnungen
from tempHZVScheinTable A
left join tempHZVDiagnosenTable C on (C.HZVscheinID = A.HZVscheinID)
left join tempHZVDDITable DDI on (DDI.hzvscheinID = A.hzvscheinID)
where true
-- hier kann man nach Vertrag vorfiltern
--and A.vertragCode ilike '%ikk%'
;
- Patient ohne Versichertendaten
Kann mit Schein-Leistung-Statistik im Abrechnungsfenster ermittelt werden