Java-Integrationsmodul
Das Java-Modul stellt den SPLG-Grouper als Bibliothek
splg-grouper.jar bereit. Es benötigt Java 11 oder
neuer. Die Scheme-Laufzeit wird im beiliegenden scm.jar
mitgeliefert; beide Dateien müssen zusammen im Klassenpfad liegen (die
Manifest-Angabe Class-Path: scm.jar bindet scm.jar
automatisch ein, wenn es neben splg-grouper.jar liegt).
Einbindung
splg-grouper.jar (und scm.jar) in den
Klassenpfad aufnehmen, z. B.:
javac -cp splg-grouper.jar MeineAnwendung.java java -cp .:splg-grouper.jar MeineAnwendung
Verwendungsbeispiel
import splg.*;
import java.io.File;
Grouper grouper = Grouper.create(new File("config/license.txt"));
grouper.setDefdir(new File("config/defs-2026.dat"));
grouper.setSldir(new File("config/spitallisten-2026.dat"));
grouper.setRelease("A_2026");
Falldaten fall = new Falldaten();
fall.burnr = "12345678";
fall.wohnkanton = "ZH";
fall.agey = "28";
fall.austritt = "20260315";
FalldatenDiagnose d = new FalldatenDiagnose();
d.rang = 1; d.code = "O80";
fall.diagnosen.add(d);
FalldatenBehandlung b = new FalldatenBehandlung();
b.rang = 1; b.code = "7500";
fall.behandlungen.add(b);
Result result = grouper.group(fall);
System.out.println(result.splg); // ermittelte SPLG
System.out.println(result.lactrl); // Leistungsauftragskontrolle
Klassenreferenz
Alle Klassen liegen im Paket splg. Felder sind – wie im
Beispiel oben – öffentlich und werden direkt gesetzt bzw. gelesen.
Grouper
Einstiegspunkt. Eine Instanz kann für beliebig viele Fälle wiederverwendet werden, ist aber nicht threadsicher – für parallele Verarbeitung mehrere Instanzen erzeugen.
static Grouper create(File licfile)- Erzeugt eine Grouper-Instanz mit der angegebenen Lizenzdatei. Die Lizenz wird bei jeder Gruppierung geprüft.
void setDefdir(File)·void setDeffile(File)- Setzt die Quelle der SPLG-Definitionen: entweder ein Verzeichnis mit
*.scm-Dateien oder eindefs-*.dat-Bündel. Beide Methoden sind gleichwertig. void setSldir(File)·void setSlfile(File)- Setzt die Quelle der Spitallisten
(Verzeichnis oder
spitallisten-*.dat-Bündel). void setRelease(String release)- Wählt den aktiven Release, z. B.
"A_2026"oder"A_2026_1". Format:<A|P|R>_<Jahr>[_<Suffix>](A=Akutsomatik, P=Psychiatrie, R=Rehabilitation). Lädt Definition und Spitalliste aus den gesetzten Quellen und prüft die Lizenz. void setConfig(Bereich, SplgDefinition, Spitalliste)- Setzt Definition und Spitalliste direkt (Alternative zu
setRelease, v. a. für Tests). void addSpitalliste(String release, String burnr, String plz,
String standort, boolean reference, String canton, String... splgs)void addSpitalliste(String release, String burnr, String plz,
String standort, boolean reference, String canton, List<LA> las)- Fügt einen Betrieb mit seinen Leistungsaufträgen als
In-Memory-Spitalliste hinzu. Solche Einträge überschreiben die
aus Dateien geladenen und fliessen in die Leistungsauftragskontrolle
ein. Die erste Variante nimmt SPLG-Namen (ganzjährig gültig), die zweite
LA-Objekte mit Gültigkeitszeitraum. void setKantonOverride(String kanton)- Überschreibt den für die Spitallistenauswahl verwendeten Wohnkanton (leerer String = kein Override).
void setYearShift(boolean)·boolean isYearShift()- Schaltet die Jahres-Verschiebung ein/aus: Datumsfelder eines Falls
werden vor dem Gruppieren so verschoben, dass ein Fall aus einem anderen
Datenjahr gegen die aktive Definition gruppiert werden kann.
agey/agedbleiben unverändert. void clearCache()·clearDefinitions()·clearSpitallisten()- Leert die internen Caches bzw. verwirft die gesetzten Definitions- oder Spitallistenquellen (inkl. der In-Memory-Einträge).
Result group(Falldaten fall)- Gruppiert einen Fall und liefert das Ergebnis. Zentrale Methode.
String getTestcase(Falldaten fall)
String getTestcase(Falldaten fall, Result result)
String getTestcaseWithLog(Falldaten fall, Result result)- Erzeugt einen Testcase
für den Fall als Zeichenkette; die
…WithLog-Variante hängt das Nachvollziehbarkeits-Log an. void writeTestcase(Falldaten fall [, Result result], String destfile)
void writeTestcaseWithLog(Falldaten fall, Result result, String destfile)- Schreibt den Testcase in eine Datei. Im Dateinamen werden die
Platzhalter
{burnr},{plz},{standort},{fallid}und{release}ersetzt. List<String> getDetailsLog()- Liefert die Nachvollziehbarkeits-Logzeilen der zuletzt gruppierten Fälle.
Falldaten
Eingabeobjekt für einen Fall. Alle Felder sind Strings (der Grouper interpretiert numerische Felder selbst), sofern nicht anders angegeben.
Controlling / Betrieb:
burnr- BUR-Nummer des Betriebs.
plz,standort- Postleitzahl und Standortnummer des Betriebs.
wohnkanton- Wohnkanton der Patientin/des Patienten (Spitallistenauswahl).
standortkanton- Standortkanton des Betriebs.
statistikfall,behandlungsart,tarifsystem- Falltyp-Bestandteile (medizinische Statistik).
fallid- Fallidentifikation; wird ins Ergebnis übernommen.
erhebungsjahr- Erhebungsjahr.
Grouper-relevant:
agey,aged- Alter in Jahren bzw. (bei Säuglingen) in Tagen.
austritt- Austrittsdatum im Format
YYYYMMDD. ssw,ggw,dmb- Schwangerschaftswoche, Geburtsgewicht, Beatmungsdauer.
freiwilligkeit- Freiwilligkeitsstatus.
List<FalldatenDiagnose> diagnosen- Diagnosen (die erste gilt als Hauptdiagnose).
List<FalldatenBehandlung> behandlungen- Behandlungen/Prozeduren, je mit ihren Operateuren.
List<FalldatenPatientenbewegung> bewegungen- Patientenbewegungen.
Durchreiche (für die Ausgabe): ave, weg,
sn, skz, ea, ad,
ana, ed, mk, ei,
gew, hktr, drg, pcg,
rcg, mdc, cw, pccl,
ecwt, zusatz – diese Felder beeinflussen die
Gruppierung nicht und werden unverändert in die Ausgabe übernommen.
Kindobjekte
FalldatenDiagnoseint rang,String code(ICD),String seitigkeit(0=beidseitig, 1=links, 2=rechts),String zusatz.FalldatenBehandlungint rang,String code(CHOP),String seitigkeit,String ambExt(3 = ambulant erbracht),String beginn,List<FalldatenOperateur> operateure.FalldatenOperateurString gln,String funktion(1=Erst-, 2=Zweitoperateur),String zulassung(1=auf Liste GD, 0=nicht).FalldatenPatientenbewegungString beginn,String ende,String art,String burnr.
Result
String fallid- Fallidentifikation (aus der Eingabe).
String splg- Die ermittelte SPLG.
String splg_raw- Die SPLG vor Anwendung der Quer-/Ausschlussregeln.
List<String> lgs- Alle ausgelösten Leistungsgruppen.
List<String> quer- Quer-Leistungsgruppen.
List<String> mfzs- Leistungsgruppen mit Mindestfallzahl Spital.
List<String> mfzo- Leistungsgruppen mit Mindestfallzahl Operateur.
List<MFZOPoints> points- MFZO-Punkte je Operateur/Leistungsgruppe
(
String gln,String lg,double points). int slst- Welche Spitalliste zutraf: 1=Standortkanton, 2=Wohnkanton, 3=Referenzliste, 9=keine gefunden.
int lactrl- Ergebnis der Leistungsauftragskontrolle.
Set<String> lactrlcodes- Zugehörige LACTRL-Codes.
Set<ErrorCode> errorcode- Fehler-/Warncodes.
String defversion- Verwendete Definitionsversion.
List<String> spitallisten- Verwendete Spitallisten.
String notes,String zusatz- Notizen bzw. durchgereichter Zusatz.
int yearShiftDelta- Angewandte Jahres-Verschiebung (0 = keine).
Methoden: String getErrorCode() (höchstpriorisierter Fehlercode
bzw. "0"), String getMFZOString().
Weitere Klassen
LA- Ein einzelner Leistungsauftrag für
addSpitalliste:new LA(splg)(ganzjährig),new LA(splg, year)odernew LA(splg, validFrom, validTo)(Java-Date). Bereich- Aufzählung
Akutsomatik,Rehabilitation,Psychiatrie.