Zwischenstand: Counter zählt korrekt

This commit is contained in:
2023-09-15 16:33:11 +02:00
parent d65ac37cc0
commit a881fa037b
32 changed files with 1042 additions and 581 deletions

View File

@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27004.2009
# Visual Studio Version 16
VisualStudioVersion = 16.0.33927.289
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Client", "Client", "{E7543C39-A44C-40C9-82C9-E7FAA2D9A852}"
EndProject
@@ -31,6 +31,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatController", "..\Chat\C
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dakota", "Dakota\Dakota.csproj", "{47331732-DD96-4075-869F-83AA9F3F9937}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B6039E62-D43E-477A-BE82-EADB1057A3A2}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|.NET = Debug|.NET

View File

@@ -44,22 +44,26 @@
<Compile Include="DakotaConfig.cs" />
<Compile Include="DakotaEnums.cs" />
<Compile Include="DakotaFile.cs" />
<Compile Include="DakotaFileCreator.cs" />
<Compile Include="DakotaValidator.cs" />
<Compile Include="Models\Abrechnungsposition.cs" />
<Compile Include="DakotaFileInfo.cs" />
<Compile Include="Models\Datei\BlockKostenträger.cs" />
<Compile Include="Models\Datei\BlockKrankenkarteVerordnung.cs" />
<Compile Include="Models\Datei\SozioTherapieEinzelnachweis.cs" />
<Compile Include="Models\Block\BlockAbrechnungsfall.cs" />
<Compile Include="Models\Block\BlockKostenträger.cs" />
<Compile Include="Models\Block\BlockKrankenkarteVerordnung.cs" />
<Compile Include="Models\Dateneinheit.cs" />
<Compile Include="Models\Datenelement.cs" />
<Compile Include="Models\DatenelementCounter.cs" />
<Compile Include="Models\Datenelementgruppe.cs" />
<Compile Include="Models\IRowable.cs" />
<Compile Include="Models\Nachricht\Nachricht.cs" />
<Compile Include="Models\Nachricht\NachrichtSLGA.cs" />
<Compile Include="Models\Nachricht\NachrichtSLGA2.cs" />
<Compile Include="Models\Nachricht\NachrichtSLLA2.cs" />
<Compile Include="Models\Nachricht\NachrichtSLLA.cs" />
<Compile Include="Models\Nachrichten\Nachricht.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLGA3.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLGA.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLGA2.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLLA3.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLLA2.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLLA.cs" />
<Compile Include="Models\Schlüssel\Schlüssel.cs" />
<Compile Include="Models\Schlüssel\SchlüsselLeistungserbringerSammelgruppenschlussel.cs" />
<Compile Include="Models\Schlüssel\SchlüsselRechnungsart.cs" />
<Compile Include="Models\Schlüssel\SchlüsselSummenstatus.cs" />
<Compile Include="Models\Schlüssel\SchlüsselTestindikator.cs" />
@@ -73,7 +77,6 @@
<Compile Include="Models\Segmente\SLLA\SegmentSLLATXT.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUV.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAZUZ.cs" />
<Compile Include="Models\Datei\Nutzdatendatei.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Models\Segmente\Segment.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAFKT.cs" />
@@ -92,9 +95,13 @@
<Compile Include="Models\Segmente\SegmentUNT.cs" />
<Compile Include="Models\Segmente\SegmentUNZ.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAUST.cs" />
<Compile Include="Models\Datei\SozioTherapieDatei.cs" />
<Compile Include="Models\Block\BlockNutzdatendatei.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj">
<Project>{B0D73E3D-4AE7-4024-93A6-DB1F46D7CCEE}</Project>
<Name>Data</Name>
</ProjectReference>
<ProjectReference Include="..\Shared\Shared.csproj">
<Project>{2F50B83D-A3F0-4EC4-979A-3F9B7E3D8ED4}</Project>
<Name>Shared</Name>

View File

@@ -17,4 +17,15 @@ namespace Dakota
Alpha,
Numerisch
}
public enum Kassenart
{
HKK,
AOK,
BKK,
IKK,
Knappschaft,
SVLFG,
VDEK
}
}

View File

@@ -1,19 +1,21 @@
using BS.Shared.DataContracts;
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using Dakota.Models;
using Dakota.Models.Datei;
using Dakota.Models.Nachricht;
using Dakota.Models.Block;
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Dakota
{
/// <summary>
/// Interne Logik
/// Nutzdatendatei mit Logik
/// </summary>
public class DakotaFile : IRowable
internal class DakotaFile : Nachricht
{
internal SozioTherapieEinzelnachweis SozioTherapieEinzelnachweis { get; set; }
internal BlockNutzdatendatei Nutzdatendatei { get; private set; }
internal DateTime Created { get; private set; }
internal int NachrichtenCounter { get; set; }
@@ -21,55 +23,120 @@ namespace Dakota
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 DakotaFile()
// Rene26 Comment
//// UNB
//internal SegmentUNB SegmentUNB => SozioTherapieEinzelnachweis.UNB;
//// Block
//internal
//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;
internal DakotaFileInfo Info { get; set; }
internal DakotaFile(DakotaFileInfo info)
{
SozioTherapieEinzelnachweis = new SozioTherapieEinzelnachweis();
Nutzdatendatei = new BlockNutzdatendatei();
Info = info;
Created = DateTime.Now;
NachrichtenCounter = 1;
AnzahlUNHCounter = 0;
SegmentSLGACounter = 0;
SegmentSLLACounter = 0;
GenerateUNBSegment();
}
public void Generate(DakotaFileInfo info)
internal void AddInvoiceItem(InvoiceItem invoice)
{
GenerateUNB(info);
GenerateBlockSLGA(info);
GenerateBlockSLLA(info);
GenerateUNZ(info);
var kostentrager = "123456789";
var kostentragerblock = Nutzdatendatei.BlockKostenträger.FirstOrDefault(block => block.IKKostenträger == kostentrager);
if (kostentragerblock is null)
{
kostentragerblock = GenerateBlockKostentrager(invoice);
Nutzdatendatei.BlockKostenträger.Add(kostentragerblock);
}
var krankenversichten = "987654321";
var krankenversichtenblock = kostentragerblock.BlockKrankenkarteVerordnung.FirstOrDefault(block => block.IKKrankenkasseKVKarte == krankenversichten);
AddInvoiceItemIntoBlock(krankenversichtenblock, invoice);
kostentragerblock.Update();
}
public void GenerateUNB(DakotaFileInfo info)
internal void AddInvoiceItemIntoBlock(BlockKrankenkarteVerordnung block, InvoiceItem invoice)
{
SegmentUNB.SyntaxKennung.SetValue("UNOC");
SegmentUNB.SyntaxVersionsnummer.SetValue("3");
SegmentUNB.Absenderdatei.SetValue(info.Absenderbezeichnung);
SegmentUNB.Empfangdatei.SetValue(info.Empfangerbezeichnung);
SegmentUNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
SegmentUNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(info.Datenaustauschreferenz, 5);
SegmentUNB.Leistungsbereich.SetValue("O");
SegmentUNB.Anwengundsreferenz.SetValue(info.Anwendungsreferenz);
SegmentUNB.Testindikator.SetValue(info.Testindikator.Value);
// Wie soll das hier sein
// SLLA
}
public void GenerateBlockSLGA(DakotaFileInfo info)
private BlockKostenträger GenerateBlockKostentrager(InvoiceItem invoice)
{
var block = new BlockKostenträger();
var nachrefnum = ++AnzahlUNHCounter;
block.SegmentUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
block.SegmentUNH.NachrichtenTypKennung.SetValue("SLGA");
block.SegmentUNH.Verionsnummer.SetValue("18");
block.SegmentUNH.FreigabeNrDesTypes.SetValue("0");
block.SegmentUNH.VerwaltendeOrganisation.SetValue("0");
block.SegmentUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
// ! block.SegmentUNT.AnzahlEinheiten.SetValue("0");
}
private BlockKrankenkarteVerordnung GenerateBlockKrankenkarte(InvoiceItem invoice)
{
var block = new BlockKrankenkarteVerordnung();
var nachrefnum = ++AnzahlUNHCounter;
block.SegmentSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
block.SegmentSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
block.SegmentSLGAUNH.Verionsnummer.SetValue("18");
block.SegmentSLGAUNH.FreigabeNrDesTypes.SetValue("0");
block.SegmentSLGAUNH.VerwaltendeOrganisation.SetValue("0");
block.SegmentSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
// ! block.SegmentSLGAUNT.AnzahlEinheiten.SetValue("0");
}
internal void Finish()
{
GenerateUNZSegment();
}
private void GenerateUNBSegment()
{
Nutzdatendatei.SegmentUNB.SyntaxKennung.SetValue("UNOC");
Nutzdatendatei.SegmentUNB.SyntaxVersionsnummer.SetValue("3");
Nutzdatendatei.SegmentUNB.Absenderdatei.SetValue(Info.Absenderbezeichnung);
Nutzdatendatei.SegmentUNB.Empfangdatei.SetValue(Info.Empfangerbezeichnung);
Nutzdatendatei.SegmentUNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
Nutzdatendatei.SegmentUNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
Nutzdatendatei.SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(Info.Datenaustauschreferenz, 5);
Nutzdatendatei.SegmentUNB.Leistungsbereich.SetValue(Info.Leistungsbereich.Value);
Nutzdatendatei.SegmentUNB.Anwengundsreferenz.SetValue(Info.Anwendungsreferenz);
Nutzdatendatei.SegmentUNB.Testindikator.SetValue(Info.Testindikator.Value);
}
private void GenerateBlockSLGA(DakotaFileInfo info)
{
//UNH, UNT, FKT, REC, GES00, GES, NAM
SegmentSLGACounter += 7;
@@ -122,7 +189,7 @@ namespace Dakota
BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
public void GenerateBlockSLLA(DakotaFileInfo info)
private void GenerateBlockSLLA(DakotaFileInfo info)
{
SegmentSLLACounter++;
AnzahlUNHCounter++;
@@ -221,10 +288,10 @@ namespace Dakota
BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
public void GenerateUNZ(DakotaFileInfo info)
private void GenerateUNZSegment()
{
SegmentUNZ.AnzahlNachrichten.SetFilledIntValue(AnzahlUNHCounter, 6);
SegmentUNZ.Datenaustauschreferenz.SetFilledIntValue(info.Datenaustauschreferenz, 5);
Nutzdatendatei.SegmentUNZ.AnzahlNachrichten.SetFilledIntValue(AnzahlUNHCounter, 6);
Nutzdatendatei.SegmentUNZ.Datenaustauschreferenz.SetFilledIntValue(Info.Datenaustauschreferenz, 5);
}
public void foo(long? invoiceBaseOid)
@@ -283,9 +350,9 @@ namespace Dakota
}
public string GetRows()
public override List<Segment> GetSegments()
{
return SozioTherapieEinzelnachweis.GetRows();
return Nutzdatendatei.GetSegments();
}
}
}

145
Dakota/DakotaFileCreator.cs Normal file
View File

@@ -0,0 +1,145 @@
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using Dakota;
using Dakota.Models.Schlüssel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.ServiceUtils.Generell
{
public static class DakotaFileCreator
{
internal struct DakotaKeyDictionary
{
public DateTime DateTime { get; set; }
public Kassenart Kassenart { get; set; }
public string Kostenträger { get; set; }
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
var objectToCompareWith = (DakotaKeyDictionary)obj;
return objectToCompareWith.DateTime == DateTime && objectToCompareWith.Kassenart == Kassenart &&
objectToCompareWith.Kostenträger == Kostenträger;
}
}
/// <summary>
/// Ein Datei erzeungnis
/// </summary>
/// <param name="invoiceItems"></param>
/// <returns></returns>
//public static string generateasciicode(list<invoiceitemdc> invoiceitems)
//{
// var info = loadinfo(invoiceitems);
// var file = new dakotafile(info);
// file.generate();
// return file.getrows();
//}
public static List<string> GenerateDakotaFilesByMonth(int year, int month)
{
var dict = GenerateDakotaFiles(year, month);
return dict.Values.Select(x => x.GetRows()).ToList();
}
internal static Dictionary<DakotaKeyDictionary, DakotaFile> GenerateDakotaFiles(int year, int month)
{
// Datum, Kassenart, Kostenträger
var res = new Dictionary<DakotaKeyDictionary, DakotaFile>();
var invoiceitems = DAOFactory.GenericDAO.GetAllActive<InvoiceItem>();
var first = new DateTime(year, month, 1);
var last = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);
var filtered = invoiceitems.Where(x => x.ItemPeriodStart == first && x.ItemPeriodEnd == last);
foreach (var invoice in filtered)
{
// Aufteilen
// 1. Monat/Jahr - erstmal gleich
// 2. Kassenart - aok, bkk, lkk
// Kostenträger - kt1, kt2, kt3
// Leistungsbereich - immer soziotherapie
DakotaKeyDictionary currentkey = new DakotaKeyDictionary();
currentkey.DateTime = first;
currentkey.Kassenart = Kassenart.BKK;
currentkey.Kostenträger = "";
var dakota = res.FirstOrDefault(keypair => keypair.Key.Equals(currentkey)).Value;
if (dakota is null)
{
var info = LoadInfo(invoice);
dakota = new DakotaFile(info);
res.Add(currentkey, dakota);
}
dakota.AddInvoiceItem(invoice);
}
return res;
}
public static DakotaFileInfo LoadInfo(InvoiceItem invoice)
{
throw new NotImplementedException();
}
public static DakotaFileInfo LoadInfos(List<InvoiceItemDC> invoiceItems)
{
var res = new DakotaFileInfo();
res.Absenderbezeichnung = "123456789";
res.Empfangerbezeichnung = "987654321";
res.Datenaustauschreferenz = 1;
res.Leistungsbereich = SchlüsselLeistungserbringerSammelgruppenschlussel.SoziotherapeutischerLeistungserbringer;
res.Anwendungsreferenz = "abovollkra.txt";
res.Testindikator = SchlüsselTestindikator.Testdatei;
res.IKLeistungserbringers = "abovollkrass.txt";
res.IKKostenträger = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
// res.Rechnungsnummer = dc.InvoiceBase.InvoiceNumber;
// Einheitlich monatlich
// res.Rechnungsdatum = dc.InvoiceBase.InvoiceDate.Value;
res.Summenstatus = SchlüsselSummenstatus.Mitglieder;
res.Gesamtrechnungsbetrag = 3.5m;
res.Gesamtbruttobetrag = 3.5m;
res.GesamtbetragZuzahlung = 3.5m;
res.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
res.Name1 = "nam7";
res.Name2 = "nam4";
res.Name3 = "nam3";
res.Name4 = "nam1";
res.Verarbeitungskennzeichen = SchlüsselVerarbeitungskennzeichen.AbrechnungOhneBesonderheit;
res.IKKrankenkasse = "abovollkrass.txt";
res.InvoiceItems = invoiceItems;
return res;
}
}
}

View File

@@ -1,5 +1,7 @@
using Dakota.Models.Schlüssel;
using BS.Shared.DataContracts;
using Dakota.Models.Schlüssel;
using System;
using System.Collections.Generic;
namespace Dakota
{
@@ -50,6 +52,12 @@ namespace Dakota
}
}
/// <summary>
/// Einzutragen ist der Leistungserbringer-Sammelgruppenschlüssel,
/// siehe Schlüssel Anlage 3 Abschnitt
/// 8.1.14.
/// </summary>
public SchlüsselLeistungserbringerSammelgruppenschlussel Leistungsbereich { get; set; }
/// <summary>
/// Genutzt werden die ersten 11 Stellen;
/// einzutragen ist der logische Dateiname s.Anhang 1 zur Anlage 1
/// zum Kapitel 4.
@@ -145,10 +153,6 @@ namespace Dakota
/// </summary>
public decimal GesamtbetragZuzahlung { get; set; }
/// <summary>
/// Name bzw. Firmenbezeichnung des
/// Rechnungsstellers(Leistungserbringer oder Abrechnungsstelle
/// </summary>
/// /// <summary>
/// Siehe Schlüssel Rechnungsart
/// Anlage 3 Abschnitt 8.1.4.
/// Dieser Schlüsselwert muss in der
@@ -156,6 +160,10 @@ namespace Dakota
/// zugehörigen SLGA-und SLLA-Nachrichten gleich sein.
/// </summary>
public SchlüsselRechnungsart Rechnungsart { get; set; }
/// <summary>
/// Name bzw. Firmenbezeichnung des
/// Rechnungsstellers(Leistungserbringer oder Abrechnungsstelle
/// </summary>
public string Name1 { get; set; }
/// <summary>
/// ggf. Ansprechpartner und Telefonnummer.

View File

@@ -1,47 +0,0 @@
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
{
internal class Abrechnungsposition
{
public SegmentSLLAENF SegmentSLLAENF { get; private set; }
/// <summary>
/// Mit diesem Segment können weitere Informationen, bezogen
/// auf die abzurechnende Position übermittelt werden.Hier können u.a.die Uhrzeit und die gefahrenen Kilometer angegeben
/// werden. Es kann je abzurechnende Position einmal vorkommen
/// </summary>
public SegmentSLLASUT SegmentSLLASUT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// ein Text(z.B.als Begründung) hinterlegt werden.Es kann je
/// abzurechnende Position einmal vorkommen.
/// </summary>
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// Mehrwertsteuer angegeben werden.Benutzt werden soll das
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
///public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
///
public Abrechnungsposition()
{
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLASUT = new SegmentSLLASUT();
SegmentSLLATXT = new SegmentSLLATXT();
//SegmentSLLAMWS = new SegmentSLLAMWS();
}
public List<Segment> GetSegments()
{
return new List<Segment>() { SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT,
};
//SegmentSLLAMWS };

View File

@@ -0,0 +1,121 @@
using Dakota.Models.Segmente;
using Dakota.Models.Nachrichten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dakota.Models.Segmente.SLLA;
namespace Dakota.Models.Block
{
internal class BlockAbrechnungsfall : Nachricht
{
/// <summary>
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
/// Richtlinientextes) entsprechen muss.
/// </summary>
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
/// <summary>
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
/// in Abhängigkeit für die Verarbeitungskennzeichen
/// '02' Nachforderung,
/// 03 Zuzahlungsforderung und
/// 04 Korrekturrechnung
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
/// </summary>
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
/// <summary>
/// Das Segment enthält den Namen und die Adressdaten des
/// Versicherten.
/// </summary>
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
/// <summary>
/// Das Segment enthält den Imagenamen bei Übermittlung von
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen,
/// die für den abzurechnenden Fall angefallen sind.Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public SegmentSLLAENF SegmentSLLAENF { get; private set; }
/// <summary>
/// Mit diesem Segment können weitere Informationen, bezogen
/// auf die abzurechnende Position übermittelt werden.Hier können u.a.die Uhrzeit und die gefahrenen Kilometer angegeben
/// werden. Es kann je abzurechnende Position einmal vorkommen
/// </summary>
public SegmentSLLASUT SegmentSLLASUT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// ein Text(z.B.als Begründung) hinterlegt werden.Es kann je
/// abzurechnende Position einmal vorkommen.
/// </summary>
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// Mehrwertsteuer angegeben werden.Benutzt werden soll das
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUZ SegmentSLLAZUZ { get; private set; }
/// <summary>
/// Das Segment enthält allgemeine Angaben zum Abrechnungsfall (Verordnung) und ist zu übermitteln, wenn eine ärztliche
/// Verordnung, ein Reparatur- oder Berechtigungsschein oder
/// Unfall/BVG vorliegt.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }
/// <summary>
/// Das Segment dient zur Angabe der Diagnose und ist so oft
/// wiederholbar, wie Diagnosen vorliegen
/// </summary>
public SegmentSLLADIA SegmentSLLADIA { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die von der Krankenkasse
/// ausgesprochene Kostenzusage/Genehmigung und ist nur zu
/// übermitteln, wenn diese vorliegt.
/// </summary>
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über den abzurechnenden Gesamtbruttobetrag eines Abrechnungsfalles (Verordnung)
/// (Summe aller ENF-Beträge ggf.zuzüglich der Mehrwertsteuer)
/// </summary>
public SegmentSLLABES SegmentSLLABES { get; private set; }
public BlockAbrechnungsfall()
{
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
SegmentSLLANAD = new SegmentSLLANAD();
SegmentSLLAIMG = new SegmentSLLAIMG();
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLASUT = new SegmentSLLASUT();
SegmentSLLATXT = new SegmentSLLATXT();
SegmentSLLAMWS = new SegmentSLLAMWS();
SegmentSLLAZUZ = new SegmentSLLAZUZ();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
public override List<Segment> GetSegments()
{
return new List<Segment>() {SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG,
SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT, SegmentSLLAMWS,
SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES};
}
}
}

View File

@@ -0,0 +1,51 @@
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Block
{
/// <summary>
/// Wiederhole folgenden Block je IK des Kostenträgers
/// </summary>
internal class BlockKostenträger : Nachricht
{
public SegmentUNH SegmentUNH { get; private set; }
public NachrichtSLGA NachrichtSLGA { get; private set; }
public SegmentUNT SegmentUNT { get; private set; }
public List<BlockKrankenkarteVerordnung> BlockKrankenkarteVerordnung { get; private set; }
public string IKKostenträger
{
get { return NachrichtSLGA.SegmentFKT.IKKostenträger.GetValue(); }
set { NachrichtSLGA.SegmentFKT.IKKostenträger.SetValue(value); }
}
internal BlockKostenträger()
{
SegmentUNH = new SegmentUNH();
NachrichtSLGA = new NachrichtSLGA();
SegmentUNT = new SegmentUNT(GetSegmentLength);
BlockKrankenkarteVerordnung = new List<BlockKrankenkarteVerordnung>();
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>();
list.Add(SegmentUNH);
list.AddRange(NachrichtSLGA.GetSegments());
list.Add(SegmentUNT);
foreach (var block in BlockKrankenkarteVerordnung)
{
list.AddRange(block.GetSegments());
}
return list;
}
}
}

View File

@@ -0,0 +1,55 @@
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Block
{
/// <summary>
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
/// </summary>
internal class BlockKrankenkarteVerordnung : Nachricht
{
public SegmentUNH SegmentSLGAUNH { get; private set; }
public NachrichtSLGA2 SLGANachricht2 { get; private set; }
public SegmentUNT SegmentSLGAUNT { get; private set; }
public SegmentUNH SegmentSLLAUNH { get; private set; }
public NachrichtSLLA2 SLLANachricht2 { get; private set; }
public SegmentUNT SegmentSLLAUNT { get; private set; }
public BlockKrankenkarteVerordnung()
{
SegmentSLGAUNH = new SegmentUNH();
SLGANachricht2 = new NachrichtSLGA2();
SegmentSLGAUNT = new SegmentUNT(SLGASegmentLength);
SegmentSLLAUNH = new SegmentUNH();
SLLANachricht2 = new NachrichtSLLA2();
SegmentSLLAUNT = new SegmentUNT(SLLASegmentLength);
}
public string IKKrankenkasseKVKarte
{
get { return SLGANachricht2.SegmentFKT.IKKrankenkasseKVKarte.GetValue(); }
set { SLGANachricht2.SegmentFKT.IKKrankenkasseKVKarte.SetValue(value); }
}
public int SLGASegmentLength() => SLGANachricht2.GetSegmentLength() + 2;
public int SLLASegmentLength() => SLLANachricht2.GetSegmentLength() + 2;
public override List<Segment> GetSegments()
{
var list = new List<Segment>() { SegmentSLGAUNH };
list.AddRange(SLGANachricht2.GetSegments());
list.Add(SegmentSLGAUNT);
list.Add(SegmentSLLAUNH);
list.AddRange(SLLANachricht2.GetSegments());
list.Add(SegmentSLLAUNT);
return list;
}
}
}

View File

@@ -0,0 +1,44 @@
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Block
{
/// <summary>
/// Nutzdatendatei ohne Logik
/// </summary>
internal class BlockNutzdatendatei : Nachricht
{
public SegmentUNB SegmentUNB { get; private set; }
public List<BlockKostenträger> BlockKostenträger { get; private set; }
public SegmentUNZ SegmentUNZ { get; private set; }
internal BlockNutzdatendatei()
{
SegmentUNB = new SegmentUNB();
BlockKostenträger = new List<BlockKostenträger>();
SegmentUNZ = new SegmentUNZ();
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>()
{
SegmentUNB
};
foreach (var block in BlockKostenträger)
{
list.AddRange(block.GetSegments());
}
list.Add(SegmentUNZ);
return list;
}
}
}

View File

@@ -1,34 +0,0 @@
using Dakota.Models.Nachricht;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Datei
{
/// <summary>
/// Wiederhole folgenden Block je IK des Kostenträgers
/// </summary>
internal class BlockKostenträger : IRowable
{
public SegmentUNH UNH { get; private set; }
public NachrichtSLGA NachrichtSLGA { get; private set; }
public SegmentUNT UNT { get; private set; }
public List<BlockKrankenkarteVerordnung> BlockKrankenkarteVerordnung { get; set; }
internal BlockKostenträger()
{
UNH = new SegmentUNH();
NachrichtSLGA = new NachrichtSLGA();
UNT = new SegmentUNT();
BlockKrankenkarteVerordnung = new List<BlockKrankenkarteVerordnung>();
}
public string GetRows()
{
return UNH.GetRows() + NachrichtSLGA.GetRows() + UNT.GetRows() + string.Join("", BlockKrankenkarteVerordnung.Select(x => x.GetRows()));
}
}
}

View File

@@ -1,39 +0,0 @@
using Dakota.Models.Nachricht;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Datei
{
/// <summary>
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
/// </summary>
internal class BlockKrankenkarteVerordnung : IRowable
{
public SegmentUNH SLGAUNH { get; private set; }
public NachrichtSLGA2 SLGANachricht2 { get; private set; }
public SegmentUNT SLGAUNT { get; private set; }
public SegmentUNH SLLAUNH { get; private set; }
public NachrichtSLLA2 SLLANachricht2 { get; private set; }
public SegmentUNT SLLAUNT { get; private set; }
public BlockKrankenkarteVerordnung()
{
SLGAUNH = new SegmentUNH();
SLGANachricht2 = new NachrichtSLGA2();
SLGAUNT = new SegmentUNT();
SLLAUNH = new SegmentUNH();
SLLANachricht2 = new NachrichtSLLA2();
SLLAUNT = new SegmentUNT();
}
public string GetRows()
{
return SLGAUNH.GetRows() + SLGANachricht2.GetRows() + SLGAUNT.GetRows() +
SLLAUNH.GetRows() + SLLANachricht2.GetRows() + SLLAUNT.GetRows();
}
}
}

View File

@@ -1,19 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Datei
{
internal class Nutzdatendatei
{
//public List<Nachricht> Nachrichten { get; set; }
//public Nutzdatendatei()
//{
// Nachrichten = new List<Nachricht>();
//}
}
}

View File

@@ -1,26 +0,0 @@
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Datei
{
internal class SozioTherapieDatei : IRowable
{
public SegmentUNB UNB { get; set; }
public List<BlockKostenträger> BlockKostenträger { get; set; }
public SegmentUNZ UNZ { get; set; }
internal SozioTherapieDatei()
{
BlockKostenträger = new List<BlockKostenträger>();
}
public string GetRows()
{
return UNB.GetRows() + string.Join(string.Empty, BlockKostenträger.Select(x => x.GetRows())) + UNZ.GetRows();
}
}
}

View File

@@ -1,28 +0,0 @@
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Datei
{
internal class SozioTherapieEinzelnachweis : IRowable
{
public SegmentUNB UNB { get; set; }
public BlockKrankenkarteVerordnung BlockKrankenkarteVerordnung { get; set; }
public SegmentUNZ UNZ { get; set; }
internal SozioTherapieEinzelnachweis()
{
UNB = new SegmentUNB();
BlockKrankenkarteVerordnung = new BlockKrankenkarteVerordnung();
UNZ = new SegmentUNZ();
}
public string GetRows()
{
return UNB.GetRows() + string.Join(string.Empty, BlockKrankenkarteVerordnung.GetRows() + UNZ.GetRows());
}
}
}

View File

@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
{
internal class DatenelementCounter : Datenelement
{
public Func<int> Counter { get; private set; }
public DatenelementCounter(string title, int count, Func<int> counter) : base(title, count, Feldart.Muss)
{
Counter = counter;
}
public void Update()
{
SetFilledIntValue(Counter(), MinStellen);
}
public override string GetValue()
{
Update();
return base.GetValue();
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Dakota.Models
{
public interface IRowable
internal interface IRow
{
string GetRows();
}

View File

@@ -5,11 +5,16 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachricht
namespace Dakota.Models.Nachrichten
{
internal abstract class Nachricht : IRowable
internal abstract class Nachricht : IRow
{
public abstract List<Segment> GetSegments();
public int GetSegmentLength()
{
return GetSegments().Count;
}
public string GetRows()
{

View File

@@ -1,11 +1,12 @@
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLGA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachricht
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Gesamtaufstellung der

View File

@@ -1,11 +1,12 @@
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLGA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachricht
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Gesamtaufstellung der

View File

@@ -0,0 +1,60 @@
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLGA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Gesamtaufstellung der
/// Abrechnung(Rechnung)
/// </summary>
internal class NachrichtSLGA3 : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über die zu verarbeitende Rechnung, den Rechnungssteller
/// (Leistungserbringer oder Abrechnungsstelle) und das IK der Krankenkasse von
/// der Krankenversichertenkarte bzw.von der ärztlichen Verordnung
/// </summary>
public SegmentSLGAFKT SegmentFKT { get; set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum.
/// </summary>
public SegmentSLGAREC SegmentREC { get; set; }
/// <summary>
/// Das Segment enthält Informationen zur Umsatzsteuer.
/// </summary>
public SegmentSLGAUST SegmentUST { get; set; }
/// <summary>
/// Das Segment enthält Informationen, ob Skonto gewährt wird
/// (Skonto in Prozent, Zahlungsziel).
/// </summary>
public SegmentSLGASKO SegmentSKO { get; set; }
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public SegmentSLGAGES SegmentGES { get; set; }
/// <summary>
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
/// </summary>
public SegmentSLGANAM SegmentNAM { get; set; }
public NachrichtSLGA3()
{
SegmentFKT = new SegmentSLGAFKT();
SegmentREC = new SegmentSLGAREC();
SegmentUST = new SegmentSLGAUST();
SegmentSKO = new SegmentSLGASKO();
SegmentGES = new SegmentSLGAGES();
SegmentNAM = new SegmentSLGANAM();
}
public override List<Segment> GetSegments()
{
return new List<Segment>() { SegmentFKT, SegmentREC, SegmentUST, SegmentSKO, SegmentGES, SegmentNAM };
}
}
}

View File

@@ -1,127 +1,134 @@
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachricht
{
/// <summary>
/// Leistungserbringer
/// </summary>
internal class NachrichtSLLA : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über den tatsächlichen
/// Leistungserbringer und das IK der Krankenkasse von der
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
/// </summary>
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
/// </summary>
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
/// <summary>
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
/// Richtlinientextes) entsprechen muss.
/// </summary>
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
/// <summary>
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
/// in Abhängigkeit für die Verarbeitungskennzeichen
/// '02' Nachforderung,
/// 03 Zuzahlungsforderung und
/// 04 Korrekturrechnung
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
/// </summary>
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
/// <summary>
/// Das Segment enthält den Namen und die Adressdaten des
/// Versicherten.
/// </summary>
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
/// <summary>
/// Das Segment enthält den Imagenamen bei Übermittlung von
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen, /// die für den abzurechnenden Fall angefallen sind.Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public SegmentSLLAENF SegmentSLLAENF { get; private set; }
/// <summary>
/// Mit diesem Segment können weitere Informationen, bezogen /// auf die abzurechnende Position übermittelt werden.Hier können u.a.die Uhrzeit und die gefahrenen Kilometer angegeben
/// werden. Es kann je abzurechnende Position einmal vorkommen
/// </summary>
public SegmentSLLASUT SegmentSLLASUT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// ein Text(z.B.als Begründung) hinterlegt werden.Es kann je
/// abzurechnende Position einmal vorkommen.
/// </summary>
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position /// Mehrwertsteuer angegeben werden.Benutzt werden soll das /// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUZ SegmentSLLAZUZ { get; private set; }
/// <summary>
/// Das Segment enthält allgemeine Angaben zum Abrechnungsfall (Verordnung) und ist zu übermitteln, wenn eine ärztliche /// Verordnung, ein Reparatur- oder Berechtigungsschein oder
/// Unfall/BVG vorliegt.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }
/// <summary>
/// Das Segment dient zur Angabe der Diagnose und ist so oft
/// wiederholbar, wie Diagnosen vorliegen
/// </summary>
public SegmentSLLADIA SegmentSLLADIA { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die von der Krankenkasse /// ausgesprochene Kostenzusage/Genehmigung und ist nur zu
/// übermitteln, wenn diese vorliegt.
/// </summary>
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über den abzurechnenden Gesamtbruttobetrag eines Abrechnungsfalles (Verordnung)
/// (Summe aller ENF-Beträge ggf.zuzüglich der Mehrwertsteuer)
/// </summary>
public SegmentSLLABES SegmentSLLABES { get; private set; }
public NachrichtSLLA()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
SegmentSLLANAD = new SegmentSLLANAD();
SegmentSLLAIMG = new SegmentSLLAIMG();
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLASUT = new SegmentSLLASUT();
SegmentSLLATXT = new SegmentSLLATXT();
SegmentSLLAMWS = new SegmentSLLAMWS();
SegmentSLLAZUZ = new SegmentSLLAZUZ();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
public override List<Segment> GetSegments()
{
return new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC, SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG,
SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT, SegmentSLLAMWS,
SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES
};
}
}
}
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLLA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Leistungserbringer
/// </summary>
internal class NachrichtSLLA : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über den tatsächlichen
/// Leistungserbringer und das IK der Krankenkasse von der
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
/// </summary>
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
/// </summary>
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
/// <summary>
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
/// Richtlinientextes) entsprechen muss.
/// </summary>
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
/// <summary>
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
/// in Abhängigkeit für die Verarbeitungskennzeichen
/// '02' Nachforderung,
/// 03 Zuzahlungsforderung und
/// 04 Korrekturrechnung
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
/// </summary>
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
/// <summary>
/// Das Segment enthält den Namen und die Adressdaten des
/// Versicherten.
/// </summary>
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
/// <summary>
/// Das Segment enthält den Imagenamen bei Übermittlung von
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen,
/// die für den abzurechnenden Fall angefallen sind.Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public SegmentSLLAENF SegmentSLLAENF { get; private set; }
/// <summary>
/// Mit diesem Segment können weitere Informationen, bezogen
/// auf die abzurechnende Position übermittelt werden.Hier können u.a.die Uhrzeit und die gefahrenen Kilometer angegeben
/// werden. Es kann je abzurechnende Position einmal vorkommen
/// </summary>
public SegmentSLLASUT SegmentSLLASUT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// ein Text(z.B.als Begründung) hinterlegt werden.Es kann je
/// abzurechnende Position einmal vorkommen.
/// </summary>
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
/// <summary>
/// Mit diesem Segment kann zu jeder abzurechnenden Position
/// Mehrwertsteuer angegeben werden.Benutzt werden soll das
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
/// die Mehrwertsteuer hinzuzurechnen ist.
/// </summary>
public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUZ SegmentSLLAZUZ { get; private set; }
/// <summary>
/// Das Segment enthält allgemeine Angaben zum Abrechnungsfall (Verordnung) und ist zu übermitteln, wenn eine ärztliche
/// Verordnung, ein Reparatur- oder Berechtigungsschein oder
/// Unfall/BVG vorliegt.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }
/// <summary>
/// Das Segment dient zur Angabe der Diagnose und ist so oft
/// wiederholbar, wie Diagnosen vorliegen
/// </summary>
public SegmentSLLADIA SegmentSLLADIA { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die von der Krankenkasse
/// ausgesprochene Kostenzusage/Genehmigung und ist nur zu
/// übermitteln, wenn diese vorliegt.
/// </summary>
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über den abzurechnenden Gesamtbruttobetrag eines Abrechnungsfalles (Verordnung)
/// (Summe aller ENF-Beträge ggf.zuzüglich der Mehrwertsteuer)
/// </summary>
public SegmentSLLABES SegmentSLLABES { get; private set; }
public NachrichtSLLA()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
SegmentSLLANAD = new SegmentSLLANAD();
SegmentSLLAIMG = new SegmentSLLAIMG();
SegmentSLLAENF = new SegmentSLLAENF();
SegmentSLLASUT = new SegmentSLLASUT();
SegmentSLLATXT = new SegmentSLLATXT();
SegmentSLLAMWS = new SegmentSLLAMWS();
SegmentSLLAZUZ = new SegmentSLLAZUZ();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
public override List<Segment> GetSegments()
{
return new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC, SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG,
SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT, SegmentSLLAMWS,
SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES
};
}
}
}

View File

@@ -1,116 +1,119 @@
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachricht
{
/// <summary>
/// Leistungserbringer
/// </summary>
internal class NachrichtSLLA2 : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über den tatsächlichen
/// Leistungserbringer und das IK der Krankenkasse von der
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
/// </summary>
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
/// </summary>
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
/// <summary>
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
/// Richtlinientextes) entsprechen muss.
/// </summary>
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
/// <summary>
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
/// in Abhängigkeit für die Verarbeitungskennzeichen
/// '02' Nachforderung,
/// 03 Zuzahlungsforderung und
/// 04 Korrekturrechnung
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
/// </summary>
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
/// <summary>
/// Das Segment enthält den Namen und die Adressdaten des
/// Versicherten.
/// </summary>
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
/// <summary>
/// Das Segment enthält den Imagenamen bei Übermittlung von
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen, /// die für den abzurechnenden Fall angefallen sind.
/// Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public List<Abrechnungsposition> Abrechnungspositions { get; set; }
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }
/// <summary>
/// Das Segment dient zur Angabe der Diagnose und ist so oft
/// wiederholbar, wie Diagnosen vorliegen
/// </summary>
public SegmentSLLADIA SegmentSLLADIA { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die von der Krankenkasse /// ausgesprochene Kostenzusage/Genehmigung und ist nur zu
/// übermitteln, wenn diese vorliegt.
/// </summary>
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über den abzurechnenden Gesamtbruttobetrag eines Abrechnungsfalles (Verordnung)
/// (Summe aller ENF-Beträge ggf.zuzüglich der Mehrwertsteuer)
/// </summary>
public SegmentSLLABES SegmentSLLABES { get; private set; }
public NachrichtSLLA2()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
SegmentSLLANAD = new SegmentSLLANAD();
SegmentSLLAIMG = new SegmentSLLAIMG();
Abrechnungspositions = new List<Abrechnungsposition>();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
public void AddPosition(Abrechnungsposition pos)
{
Abrechnungspositions.Add(pos);
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC, SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG };
var list2 = new List<Segment>() { SegmentSLLABES };
//var list2 = new List<Segment>() { SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES };
foreach (var seg in Abrechnungspositions)
{
list.AddRange(seg.GetSegments());
}
list.AddRange(list2);
return list;
}
}
}
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLLA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Leistungserbringer
/// </summary>
internal class NachrichtSLLA2 : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über den tatsächlichen
/// Leistungserbringer und das IK der Krankenkasse von der
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
/// </summary>
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
/// </summary>
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
/// <summary>
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
/// Richtlinientextes) entsprechen muss.
/// </summary>
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
/// <summary>
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
/// in Abhängigkeit für die Verarbeitungskennzeichen
/// '02' Nachforderung,
/// 03 Zuzahlungsforderung und
/// 04 Korrekturrechnung
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
/// </summary>
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
/// <summary>
/// Das Segment enthält den Namen und die Adressdaten des
/// Versicherten.
/// </summary>
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
/// <summary>
/// Das Segment enthält den Imagenamen bei Übermittlung von
/// Imagearchiven durch den Absender.
/// </summary>
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
/// <summary>
/// Das Segment dient zur Abrechnung der einzelnen Positionen,
/// die für den abzurechnenden Fall angefallen sind.
/// Es ist so oft
/// wiederholbar, wie Abrechnungspositionen vorkommen.
/// </summary>
public List<Abrechnungsposition> Abrechnungspositions { get; set; }
/// <summary>
/// Das Segment enthält Angaben über die Zuzahlung. Das Segment ist bis auf weiteres nicht zu übermitteln. Das Segment ist
/// für spätere Ausprägungen reserviert.
/// </summary>
public SegmentSLLAZUV SegmentSLLAZUV { get; private set; }
/// <summary>
/// Das Segment dient zur Angabe der Diagnose und ist so oft
/// wiederholbar, wie Diagnosen vorliegen
/// </summary>
public SegmentSLLADIA SegmentSLLADIA { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über die von der Krankenkasse
/// ausgesprochene Kostenzusage/Genehmigung und ist nur zu
/// übermitteln, wenn diese vorliegt.
/// </summary>
public SegmentSLLASKZ SegmentSLLASKZ { get; private set; }
/// <summary>
/// Das Segment enthält Angaben über den abzurechnenden Gesamtbruttobetrag eines Abrechnungsfalles (Verordnung)
/// (Summe aller ENF-Beträge ggf.zuzüglich der Mehrwertsteuer)
/// </summary>
public SegmentSLLABES SegmentSLLABES { get; private set; }
public NachrichtSLLA2()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
SegmentSLLANAD = new SegmentSLLANAD();
SegmentSLLAIMG = new SegmentSLLAIMG();
Abrechnungspositions = new List<Abrechnungsposition>();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
public void AddPosition(Abrechnungsposition pos)
{
Abrechnungspositions.Add(pos);
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC, SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG };
var list2 = new List<Segment>() { SegmentSLLABES };
//var list2 = new List<Segment>() { SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES };
foreach (var seg in Abrechnungspositions)
{
list.AddRange(seg.GetSegments());
}
list.AddRange(list2);
return list;
}
}
}

View File

@@ -0,0 +1,50 @@
using Dakota.Models.Block;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLLA;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Nachrichten
{
/// <summary>
/// Leistungserbringer
/// </summary>
internal class NachrichtSLLA3 : Nachricht
{
/// <summary>
/// Das Segment enthält Informationen über den tatsächlichen
/// Leistungserbringer und das IK der Krankenkasse von der
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
/// </summary>
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
/// <summary>
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
/// </summary>
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
/// <summary>
/// Abrechnungsfälle (INV - BES)
/// </summary>
public List<BlockAbrechnungsfall> Abrechnungsfalle { get; set; }
public NachrichtSLLA3()
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC };
foreach (var block in Abrechnungsfalle)
{
list.AddRange(block.GetSegments());
}
return list;
}
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
{
public class SchlüsselLeistungserbringerSammelgruppenschlussel : Schlüssel
{
public SchlüsselLeistungserbringerSammelgruppenschlussel(string val) : base(val) { }
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonHilfsmitteln => new SchlüsselLeistungserbringerSammelgruppenschlussel("A");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonHeilmitteln => new SchlüsselLeistungserbringerSammelgruppenschlussel("B");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonHäuslicherKrankenpflege => new SchlüsselLeistungserbringerSammelgruppenschlussel("C");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonHaushaltshilfe => new SchlüsselLeistungserbringerSammelgruppenschlussel("D");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonKrankentransportleistungen => new SchlüsselLeistungserbringerSammelgruppenschlussel("E");
public static SchlüsselLeistungserbringerSammelgruppenschlussel Hebammen => new SchlüsselLeistungserbringerSammelgruppenschlussel("F");
public static SchlüsselLeistungserbringerSammelgruppenschlussel NichtArztlicheDialyseachleistung => new SchlüsselLeistungserbringerSammelgruppenschlussel("G");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonRehabilitationssport => new SchlüsselLeistungserbringerSammelgruppenschlussel("H");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerVonFunktionstraining => new SchlüsselLeistungserbringerSammelgruppenschlussel("I");
public static SchlüsselLeistungserbringerSammelgruppenschlussel WeitereSonstigeLeistungserbringer => new SchlüsselLeistungserbringerSammelgruppenschlussel("J");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerPräventions => new SchlüsselLeistungserbringerSammelgruppenschlussel("K");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerRehamassnahmen => new SchlüsselLeistungserbringerSammelgruppenschlussel("L");
public static SchlüsselLeistungserbringerSammelgruppenschlussel SozialpädiatrischeZentren => new SchlüsselLeistungserbringerSammelgruppenschlussel("M");
public static SchlüsselLeistungserbringerSammelgruppenschlussel SoziotherapeutischerLeistungserbringer => new SchlüsselLeistungserbringerSammelgruppenschlussel("N");
public static SchlüsselLeistungserbringerSammelgruppenschlussel SAPV => new SchlüsselLeistungserbringerSammelgruppenschlussel("O");
public static SchlüsselLeistungserbringerSammelgruppenschlussel LeistungserbringerNach132gSGB => new SchlüsselLeistungserbringerSammelgruppenschlussel("P");
public static SchlüsselLeistungserbringerSammelgruppenschlussel Kurzzeitpflege => new SchlüsselLeistungserbringerSammelgruppenschlussel("Q");
}
}

View File

@@ -44,7 +44,7 @@ namespace Dakota.Models.Segmente.SLGA
/// Angabe identisch mit SLLA.FKT.IK der
/// Krankenkasse der zugehörigen SLLANachricht.
/// </summary>
public Datenelement IKKrankenkasse { get; private set; }
public Datenelement IKKrankenkasseKVKarte { get; private set; }
/// <summary>
/// Einzutragen ist das IK des Absenders der Datei. Diese Angabe ist identisch mit UNB.Absender
/// </summary>
@@ -56,7 +56,7 @@ namespace Dakota.Models.Segmente.SLGA
Sammelrechnung = new Datenelement("Sammelrechnung", 1, Feldart.Kann);
IKLeistungserbringers = new Datenelement("IKLeistungserbringers", 9, Feldart.Muss);
IKKostenträger = new Datenelement("IKKostenträger", 9, Feldart.Muss);
IKKrankenkasse = new Datenelement("IKKrankenkasse", 9, Feldart.Kann);
IKKrankenkasseKVKarte = new Datenelement("IKKrankenkasse", 9, Feldart.Kann);
IKAbsender = new Datenelement("IKAbsender", 9, Feldart.Muss);
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Dakota.Models.Segmente
{
internal abstract class Segment : IRowable
internal abstract class Segment : IRow
{
//public List<Datenelement> Datenelemente { get; set; }

View File

@@ -15,15 +15,15 @@ namespace Dakota.Models.Segmente
/// Anzahl der Segmente in der Nachricht einschließlich der Segmente
/// UNH und UNT mit führenden Nullen.
/// </summary>
public Datenelement AnzahlEinheiten { get; private set; }
public DatenelementCounter AnzahlEinheiten { get; private set; }
/// <summary>
/// wie in UNH
/// </summary>
public Datenelement Nachrichtenreferenznummer { get; private set; }
public SegmentUNT()
public SegmentUNT(Func<int> counter)
{
AnzahlEinheiten = new Datenelement("AnzahlEinheiten", 6, Feldart.Muss);
AnzahlEinheiten = new DatenelementCounter("AnzahlEinheiten", 6, counter);
Nachrichtenreferenznummer = new Datenelement("Nachrichtenreferenznummer", 0, 14, Feldart.Muss);
}

View File

@@ -478,7 +478,6 @@
<Compile Include="ServiceUtils\DistanceCalculator\GoogleDistanceMatrixAPI.cs" />
<Compile Include="ServiceUtils\DistanceCalculator\IDistanceAPI.cs" />
<Compile Include="ServiceUtils\DistanceCalculator\OpenrouteServiceAPI.cs" />
<Compile Include="ServiceUtils\Generell\DakotaFileCreator.cs" />
<Compile Include="UnitOfWork\HibernateSessionEndpointBehavior.cs" />
<Compile Include="UnitOfWork\HibernateSessionBehaviorExtension.cs" />
<Compile Include="UnitOfWork\HibernateSessionContextInitializer.cs" />
@@ -519,9 +518,13 @@
</ItemGroup>
<ItemGroup>
<Folder Include="ServiceUtils\API\" />
<Folder Include="ServiceUtils\Generell\" />
<Folder Include="Utils\" />
</ItemGroup>
<ItemGroup>
<None Include="..\.editorconfig">
<Link>.editorconfig</Link>
</None>
<None Include="app.config">
<SubType>Designer</SubType>
</None>

View File

@@ -7705,15 +7705,28 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
var baseoid = long.Parse((string)param);
// Hier Input Daten Aufbrechen und jeweils den Files zuordnen
var accounting = new AccountingServiceImp();
// Dann jeweils Info erzeugen
var invoice = accounting.GetServiceInvoiceByInvoiceBaseOid(baseoid);
// Und final dann Datei(en)
var year = 2023;
var month = 6;
var rechnungsnummer = "xyz";
var code = DakotaFileCreator.GenerateDakotaFilesByMonth(year, month);
//var baseoid = long.Parse((string)param);
//var accounting = new AccountingServiceImp();
//var invoice = accounting.GetServiceInvoiceByInvoiceBaseOid(baseoid);
var code = DakotaFileCreator.GetAsciiCode(invoice);
//var code = DakotaFileCreator.GenerateAsciiCode(invoice);
return code;
return code.FirstOrDefault();
}
catch (Exception e)
{

View File

@@ -1,64 +0,0 @@
using BS.Shared.DataContracts;
using Dakota;
using Dakota.Models.Schlüssel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.ServiceUtils.Generell
{
public static class DakotaFileCreator
{
public static string GetAsciiCode(ServiceInvoiceDC dc)
{
var info = LoadInfo(dc);
var file = new DakotaFile();
file.Generate(info);
return file.GetRows();
}
public static DakotaFileInfo LoadInfo(ServiceInvoiceDC dc)
{
var res = new DakotaFileInfo();
res.Absenderbezeichnung = "123456789";
res.Empfangerbezeichnung = "987654321";
res.Datenaustauschreferenz = 1;
res.Anwendungsreferenz = "abovollkra.txt";
res.Testindikator = SchlüsselTestindikator.Testdatei;
res.IKLeistungserbringers = "abovollkrass.txt";
res.IKKostenträger = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.Rechnungsnummer = dc.InvoiceBase.InvoiceNumber;
// Einheitlich monatlich
res.Rechnungsdatum = dc.InvoiceBase.InvoiceDate.Value;
res.Summenstatus = SchlüsselSummenstatus.Mitglieder;
res.Gesamtrechnungsbetrag = 3.5m;
res.Gesamtbruttobetrag = 3.5m;
res.GesamtbetragZuzahlung = 3.5m;
res.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
res.Name1 = "nam7";
res.Name2 = "nam4";
res.Name3 = "nam3";
res.Name4 = "nam1";
res.Verarbeitungskennzeichen = SchlüsselVerarbeitungskennzeichen.AbrechnungOhneBesonderheit;
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
res.IKKrankenkasse = "abovollkrass.txt";
return res;
}
}
}