diff --git a/Dakota/Dakota.csproj b/Dakota/Dakota.csproj
index 42546f2c8..78270f9f4 100644
--- a/Dakota/Dakota.csproj
+++ b/Dakota/Dakota.csproj
@@ -45,15 +45,19 @@
-
-
+
+
+
+
-
-
-
+
+
+
+
+
@@ -63,7 +67,7 @@
-
+
@@ -82,7 +86,8 @@
-
+
+
\ No newline at end of file
diff --git a/Dakota/DakotaFileGenerator.cs b/Dakota/DakotaFileGenerator.cs
index 72266b483..c2375ed37 100644
--- a/Dakota/DakotaFileGenerator.cs
+++ b/Dakota/DakotaFileGenerator.cs
@@ -1,4 +1,8 @@
-using Dakota.Models;
+using BS.Shared.DataContracts;
+using Dakota.Models;
+using Dakota.Models.Datei;
+using Dakota.Models.Nachricht;
+using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,52 +13,240 @@ namespace Dakota
{
public class DakotaFileGenerator
{
- internal SozioTherapieDatei SozioTherapieDatei { get; set; }
- internal int Counter { get; private set; }
+ internal SozioTherapieEinzelnachweis SozioTherapieEinzelnachweis { get; set; }
internal DateTime Created { get; private set; }
+ internal int DatenaustauschreferenzCounter { get; private set; }
+ internal int NachrichtenreferenzCounter { get; private set; }
+ internal int AnzahlUNHCounter { get; set; }
+ internal int SegmentSLGACounter { get; set; }
+ internal int SegmentSLLACounter { get; set; }
+
+ // UNB
+ internal SegmentUNB SegmentUNB => SozioTherapieEinzelnachweis.UNB;
+ // Block
+ internal BlockKrankenkarteVerordnung BlockKrankenkarteVerordnung => SozioTherapieEinzelnachweis.BlockKrankenkarteVerordnung;
+ // SLGA
+ internal SegmentUNH BlockSLGAUNH => BlockKrankenkarteVerordnung.SLGAUNH;
+ internal NachrichtSLGA2 BlockSLGANachricht => BlockKrankenkarteVerordnung.SLGANachricht2;
+ internal SegmentUNT BlockSLGAUNT => BlockKrankenkarteVerordnung.SLGAUNT;
+ // SLLA
+ internal SegmentUNH BlockSLLAUNH => BlockKrankenkarteVerordnung.SLLAUNH;
+ internal NachrichtSLLA2 BlockSLLANachricht => BlockKrankenkarteVerordnung.SLLANachricht2;
+ internal SegmentUNT BlockSLLAUNT => BlockKrankenkarteVerordnung.SLLAUNT;
+ // UNZ
+ internal SegmentUNZ SegmentUNZ => SozioTherapieEinzelnachweis.UNZ;
+
+ public string UNBAbsenderbezeichnung => string.Empty;
+ public string UNBEmpfangerbezeichnung => string.Empty;
+ public string UNBAnwendungsreferenz => string.Empty;
+ public string SLGAFKTIKRechnungssteller => string.Empty;
+ public string SLGAFKTIKKostentrager => string.Empty;
+ public string SLGAFKTIKKrankenkasse => string.Empty;
+
public DakotaFileGenerator(int counter)
{
- SozioTherapieDatei = new SozioTherapieDatei();
- Counter = counter;
+ SozioTherapieEinzelnachweis = new SozioTherapieEinzelnachweis();
Created = DateTime.Now;
+
+ DatenaustauschreferenzCounter = counter;
+ NachrichtenreferenzCounter = 1;
+ AnzahlUNHCounter = 0;
+ SegmentSLGACounter = 0;
+ SegmentSLLACounter = 0;
}
public void Generate()
{
GenerateUNB();
- Generatexyz();
+ GenerateBlockSLGA();
+ GenerateBlockSLLA();
GenerateUNZ();
+
+ IncrementCounter();
}
public void GenerateUNB()
{
- SozioTherapieDatei.UNB.SyntaxKennung.SetValue("UNOC");
- SozioTherapieDatei.UNB.SyntaxVersionsnummer.SetValue("3");
- //SozioTherapieDatei.UNB.Absenderdatei
- // - IK
- //SozioTherapieDatei.UNB.Empfangdatei
- // - IK
- SozioTherapieDatei.UNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
- SozioTherapieDatei.UNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
- SozioTherapieDatei.UNB.Datenaustauschreferenz.SetFilledIntValue(Counter, 5);
- SozioTherapieDatei.UNB.Leistungsbereich.SetValue("O");
- //SozioTherapieDatei.UNB.Anwengundsreferenz
- // - Logischer Dateiname
- SozioTherapieDatei.UNB.Testindikator.SetValue("0");
+ SegmentUNB.SyntaxKennung.SetValue("UNOC");
+ SegmentUNB.SyntaxVersionsnummer.SetValue("3");
+ SegmentUNB.Absenderdatei.SetValue(UNBAbsenderbezeichnung);
+ SegmentUNB.Empfangdatei.SetValue(UNBEmpfangerbezeichnung);
+ SegmentUNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
+ SegmentUNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
+ SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(DatenaustauschreferenzCounter++, 5);
+ SegmentUNB.Leistungsbereich.SetValue("O");
+ SegmentUNB.Anwengundsreferenz.SetValue(UNBAnwendungsreferenz);
+ SegmentUNB.Testindikator.SetValue("0");
}
- public void Generatexyz()
+ public void GenerateBlockSLGA()
{
- var block = new BlockKostenträger();
+ //UNH, UNT, FKT, REC
+ SegmentSLGACounter += 2;
+ AnzahlUNHCounter++;
+
+ var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
+
+ // Head
+ BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
+ BlockSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
+ BlockSLGAUNH.Verionsnummer.SetValue("18");
+ BlockSLGAUNH.FreigabeNrDesTypes.SetValue("0");
+ BlockSLGAUNH.VerwaltendeOrganisation.SetValue("0");
+
+ // Body
+ // FKT
+ BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue("01");
+ BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(SLGAFKTIKRechnungssteller);
+ BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(SLGAFKTIKKostentrager);
+ BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(SLGAFKTIKKrankenkasse);
+ BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(UNBAbsenderbezeichnung);
+ // REC
+ BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentREC.Datum.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue("1");
+ // UST - wird nicht gebraucht
+ //BlockSLGANachricht.SegmentUST.Steuernummer.SetValue(string.Empty);
+ //BlockSLGANachricht.SegmentUST.Kennung.SetValue(string.Empty);
+ // SKO - wird nicht gebraucht
+ //BlockSLGANachricht.SegmentSKO.SkontoProzent.SetValue(string.Empty);
+ //BlockSLGANachricht.SegmentSKO.Zahlungsziel.SetValue(string.Empty);
+ // GES00
+ BlockSLGANachricht.SegmentGES00.Status.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetValue(string.Empty);
+ // GES
+ BlockSLGANachricht.SegmentGES.Status.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetValue(string.Empty);
+ // NAM
+ BlockSLGANachricht.SegmentNAM.Name1.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentNAM.Name2.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentNAM.Name3.SetValue(string.Empty);
+ BlockSLGANachricht.SegmentNAM.Name4.SetValue(string.Empty);
- SozioTherapieDatei.BlockKostenträger.Add(block);
+ // End
+ BlockSLGAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLGACounter, 6);
+ BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
+ }
+
+ public void GenerateBlockSLLA()
+ {
+ SegmentSLLACounter++;
+ AnzahlUNHCounter++;
+
+ var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
+
+ // Head
+ BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(NachrichtenreferenzCounter, 5);
+ BlockSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
+ BlockSLLAUNH.Verionsnummer.SetValue("18");
+ BlockSLLAUNH.FreigabeNrDesTypes.SetValue("0");
+ BlockSLLAUNH.VerwaltendeOrganisation.SetValue("0");
+
+ // Body
+ // FKT Funktion
+ BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue("01");
+ BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
+ // REC
+ var slgarec = BlockSLGANachricht.SegmentREC;
+ BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(slgarec.SammelRechnungsnummer.GetValue());
+ BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue(slgarec.EinzelRechnungsnummer.GetValue());
+ BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(slgarec.Datum.GetValue());
+ BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(slgarec.Rechnungsart.GetValue());
+ // INV
+ // Information Versicherte
+ BlockSLLANachricht.SegmentSLLAINV.VersichertenNummer.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAINV.Versichertenstatus.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAINV.Belegnummer.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAINV.KennzeichenBesondereVersorgungsform.SetValue(string.Empty);
+ // URI
+ // Wird erst bei Korrekturen verwendet
+ // NAD
+ BlockSLLANachricht.SegmentSLLANAD.Nachname.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.Vorname.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.Geburtsdatum.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.StraßeNr.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.PLZ.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.Wohnort.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLANAD.Länderkennzeichen.SetValue(string.Empty);
+ // IMG
+ BlockSLLANachricht.SegmentSLLAIMG.Abrechnungsjahr.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAIMG.Abrechnungsmonat.SetValue(string.Empty);
+ BlockSLLANachricht.SegmentSLLAIMG.Identifikationsmerkmal.SetValue(string.Empty);
+
+ var test = new List