.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 eindefs-*.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/agedbleiben 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
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.
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)odernew LA(splg, validFrom, validTo)(DateOnly). Bereich- Aufzählung
Akutsomatik,Rehabilitation,Psychiatrie.