SPLG Grouper

.NET-Integrationsmodul

Das .NET-Modul stellt den SPLG-Grouper als Assembly grouper.dll bereit. Es benötigt .NET 8. Die Scheme-Laufzeit wird in der beiliegenden scheme.dll mitgeliefert; beide Dateien müssen zusammen im Ausgabeverzeichnis der Anwendung liegen.

Einbindung

grouper.dll als Referenz einbinden (die scheme.dll wird von grouper.dll benötigt und mitkopiert):

<ItemGroup>
  <Reference Include="grouper">
    <HintPath>.\grouper.dll</HintPath>
  </Reference>
</ItemGroup>

Verwendungsbeispiel

using splg;

Grouper grouper = Grouper.Create("config/license.txt");
grouper.SetDefdir("config/defs-2026.dat");
grouper.SetSldir("config/spitallisten-2026.dat");
grouper.SetRelease("A_2026");

var fall = new Falldaten {
    burnr = "12345678",
    wohnkanton = "ZH",
    agey = "28",
    austritt = "20260315",
};
fall.diagnosen.Add(new FalldatenDiagnose { rang = 1, code = "O80" });
fall.behandlungen.Add(new FalldatenBehandlung { rang = 1, code = "7500" });

Result result = grouper.Group(fall);
Console.WriteLine(result.splg);      // ermittelte SPLG
Console.WriteLine(result.lactrl);    // Leistungsauftragskontrolle

Klassenreferenz

Alle Klassen liegen im Namespace splg. Die API entspricht – bis auf die .NET-übliche Gross-/Kleinschreibung der Methoden – dem Java-Modul. Felder sind ö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(string licfile)
Erzeugt eine Grouper-Instanz mit der angegebenen Lizenzdatei. Die Lizenz wird bei jeder Gruppierung geprüft.
void SetDefdir(string)
Setzt die Quelle der SPLG-Definitionen: ein Verzeichnis mit *.scm-Dateien oder ein defs-*.dat-Bündel.
void SetSldir(string)
Setzt die Quelle der Spitallisten (Verzeichnis oder spitallisten-*.dat-Bündel).
void SetRelease(string release)
Wählt den aktiven Release, z. B. "A_2026". Format: <A|P|R>_<Jahr>[_<Suffix>]. Lädt Definition und Spitalliste und prüft die Lizenz.
void SetConfig(Bereich, SplgDefinition, Spitalliste)
Setzt Definition und Spitalliste direkt (Alternative zu SetRelease).
void AddSpitalliste(string release, string burnr, string plz,
  string standort, bool reference, string canton, params string[] splgs)
void AddSpitalliste(string release, string burnr, string plz,
  string standort, bool 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.
void SetKantonOverride(string kanton)
Überschreibt den für die Spitallistenauswahl verwendeten Wohnkanton.
void SetYearShift(bool) · bool IsYearShift()
Schaltet die Jahres-Verschiebung ein/aus (Datumsfelder werden vor dem Gruppieren ins Definitionsjahr verschoben; agey/aged bleiben unverändert).
void ClearCache() · ClearDefinitions() · ClearSpitallisten()
Leert die Caches bzw. verwirft die gesetzten Quellen (inkl. der In-Memory-Einträge).
Result Group(Falldaten fall)
Gruppiert einen Fall und liefert das Ergebnis. Zentrale Methode.
string GetTestcase(Falldaten fall [, Result result])
string GetTestcaseWithLog(Falldaten fall, Result result)
Erzeugt einen Testcase 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. Platzhalter im Dateinamen: {burnr}, {plz}, {standort}, {fallid}, {release}.
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.
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

FalldatenDiagnose
int rang, string code (ICD), string seitigkeit (0=beidseitig, 1=links, 2=rechts), string zusatz.
FalldatenBehandlung
int rang, string code (CHOP), string seitigkeit, string ambExt (3 = ambulant erbracht), string beginn, List<FalldatenOperateur> operateure.
FalldatenOperateur
string gln, string funktion (1=Erst-, 2=Zweitoperateur), string zulassung (1=auf Liste GD, 0=nicht).
FalldatenPatientenbewegung
string 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.
SortedSet<string> lactrlcodes
Zugehörige LACTRL-Codes.
SortedSet<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) oder new LA(splg, validFrom, validTo) (DateOnly).
Bereich
Aufzählung Akutsomatik, Rehabilitation, Psychiatrie.