Mehr Schlüssel, mehr logik, automatische Erzeugung von Vergütungsart

This commit is contained in:
2023-09-19 14:32:05 +02:00
parent a881fa037b
commit 866020d12c
65 changed files with 1614 additions and 988 deletions

View File

@@ -46,14 +46,19 @@
<Compile Include="DakotaFile.cs" />
<Compile Include="DakotaFileCreator.cs" />
<Compile Include="DakotaValidator.cs" />
<Compile Include="DakotaFileInfo.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\Blocke\Block.cs" />
<Compile Include="Models\Daten\DatenelementDateTime.cs" />
<Compile Include="Models\Daten\DatenelementDecimal.cs" />
<Compile Include="Models\Daten\DatenelementFiller.cs" />
<Compile Include="Models\Infos\DakotaFileInfo.cs" />
<Compile Include="Models\Blocke\BlockAbrechnungsfall.cs" />
<Compile Include="Models\Blocke\BlockKostenträger.cs" />
<Compile Include="Models\Blocke\BlockKrankenkarteVerordnung.cs" />
<Compile Include="Models\Infos\DakotaInvoiceItemInfo.cs" />
<Compile Include="Models\Daten\Dateneinheit.cs" />
<Compile Include="Models\Daten\Datenelement.cs" />
<Compile Include="Models\Daten\DatenelementCounter.cs" />
<Compile Include="Models\Daten\Datenelementgruppe.cs" />
<Compile Include="Models\IRowable.cs" />
<Compile Include="Models\Nachrichten\Nachricht.cs" />
<Compile Include="Models\Nachrichten\NachrichtSLGA3.cs" />
@@ -62,12 +67,21 @@
<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" />
<Compile Include="Models\Schlüssel\SchlüsselVerarbeitungskennzeichen.cs" />
<Compile Include="Models\Schlüssels\Schlüssel.cs" />
<Compile Include="Models\Schlüssels\SchlüsselAbrechnungscode.cs" />
<Compile Include="Models\Schlüssels\SchlüsselPosVergütungsart.cs" />
<Compile Include="Models\Schlüssels\SchlüsselPosBehandlungsart.cs" />
<Compile Include="Models\Schlüssels\SchlüsselPosArtDerEinrichtung.cs" />
<Compile Include="Models\Schlüssels\SchlüsselPos.cs" />
<Compile Include="Models\Schlüssels\SchlüsselLeistungserbringerSammelgruppenschlussel.cs" />
<Compile Include="Models\Schlüssels\SchlüsselBeleginformation.cs" />
<Compile Include="Models\Schlüssels\SchlüsselRechnungsart.cs" />
<Compile Include="Models\Schlüssels\SchlüsselSummenstatus.cs" />
<Compile Include="Models\Schlüssels\SchlüsselTarifkennzeichen.cs" />
<Compile Include="Models\Schlüssels\SchlüsselTarifkennzeichenSondertarif.cs" />
<Compile Include="Models\Schlüssels\SchlüsselTarifkennzeichenBereich.cs" />
<Compile Include="Models\Schlüssels\SchlüsselTestindikator.cs" />
<Compile Include="Models\Schlüssels\SchlüsselVerarbeitungskennzeichen.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLABES.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLADIA.cs" />
<Compile Include="Models\Segmente\SLLA\SegmentSLLAMWS.cs" />
@@ -95,7 +109,7 @@
<Compile Include="Models\Segmente\SegmentUNT.cs" />
<Compile Include="Models\Segmente\SegmentUNZ.cs" />
<Compile Include="Models\Segmente\SLGA\SegmentSLGAUST.cs" />
<Compile Include="Models\Block\BlockNutzdatendatei.cs" />
<Compile Include="Models\Blocke\BlockNutzdatendatei.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj">

View File

@@ -1,7 +1,8 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using Dakota.Models;
using Dakota.Models.Block;
using Dakota.Models.Blocke;
using Dakota.Models.Infos;
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
@@ -16,12 +17,7 @@ namespace Dakota
internal class DakotaFile : Nachricht
{
internal BlockNutzdatendatei Nutzdatendatei { get; private set; }
internal DateTime Created { get; private set; }
internal int NachrichtenCounter { get; set; }
internal int AnzahlUNHCounter { get; set; }
internal int SegmentSLGACounter { get; set; }
internal int SegmentSLLACounter { get; set; }
// Rene26 Comment
//// UNB
@@ -40,85 +36,18 @@ namespace Dakota
//// UNZ
//internal SegmentUNZ SegmentUNZ => SozioTherapieEinzelnachweis.UNZ;
internal DakotaFileInfo Info { get; set; }
internal DakotaFileInfo FileInfo { get; set; }
internal DakotaFile(DakotaFileInfo info)
{
Nutzdatendatei = new BlockNutzdatendatei();
// Updates = new List<Action>();
Info = info;
FileInfo = info;
Created = DateTime.Now;
NachrichtenCounter = 1;
AnzahlUNHCounter = 0;
SegmentSLGACounter = 0;
SegmentSLLACounter = 0;
GenerateUNBSegment();
}
internal void AddInvoiceItem(InvoiceItem invoice)
{
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();
}
internal void AddInvoiceItemIntoBlock(BlockKrankenkarteVerordnung block, InvoiceItem invoice)
{
// Wie soll das hier sein
// SLLA
}
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();
}
@@ -126,172 +55,356 @@ namespace Dakota
{
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);
Nutzdatendatei.SegmentUNB.Absenderdatei.SetValue(FileInfo.Absenderbezeichnung);
Nutzdatendatei.SegmentUNB.Empfangdatei.SetValue(FileInfo.Empfangerbezeichnung);
Nutzdatendatei.SegmentUNB.Datum.SetValue(FileInfo.Created);
Nutzdatendatei.SegmentUNB.Uhrzeit.SetValue(FileInfo.Created);
Nutzdatendatei.SegmentUNB.Datenaustauschreferenz.SetValue(FileInfo.Datenaustauschreferenz);
Nutzdatendatei.SegmentUNB.Leistungsbereich.SetValue(FileInfo.Leistungsbereich.Value);
Nutzdatendatei.SegmentUNB.Anwengundsreferenz.SetValue(FileInfo.Anwendungsreferenz);
Nutzdatendatei.SegmentUNB.Testindikator.SetValue(FileInfo.Testindikator.Value);
}
private void GenerateUNZSegment()
{
Nutzdatendatei.SegmentUNZ.AnzahlNachrichten.SetValue(AnzahlUNHCounter);
Nutzdatendatei.SegmentUNZ.Datenaustauschreferenz.SetValue(FileInfo.Datenaustauschreferenz);
}
internal void AddInvoiceItem(DakotaInvoiceItemInfo invoiceInfo)
{
var kostentrager = "123456789";
var kostentragerblock = GetBlockKostenträger(kostentrager, invoiceInfo);
var krankenversichten = "987654321";
var krankenversichtenblock = GetBlockKrankenkarte(kostentragerblock, krankenversichten, invoiceInfo);
AddInvoiceItemIntoBlock(krankenversichtenblock, invoiceInfo);
}
internal void AddInvoiceItemIntoBlock(BlockKrankenkarteVerordnung block, DakotaInvoiceItemInfo invoiceInfo)
{
}
private BlockKostenträger GetBlockKostenträger(string kostentrager, DakotaInvoiceItemInfo invoiceInfo)
{
var kostentragerblock = Nutzdatendatei.BlockKostenträger.FirstOrDefault(block => block.IKKostenträger == kostentrager);
if (kostentragerblock is null)
{
kostentragerblock = GenerateBlockKostentrager(invoiceInfo);
Nutzdatendatei.BlockKostenträger.Add(kostentragerblock);
}
return kostentragerblock;
}
private BlockKrankenkarteVerordnung GetBlockKrankenkarte(BlockKostenträger blockkt, string kvkarte, DakotaInvoiceItemInfo invoiceInfo)
{
var krankenkartenBlock = blockkt.BlockKrankenkarteVerordnung.FirstOrDefault(block => block.IKKrankenkasseKVKarte == kvkarte);
if (krankenkartenBlock is null)
{
krankenkartenBlock = GenerateBlockKrankenkarte(invoiceInfo);
blockkt.BlockKrankenkarteVerordnung.Add(krankenkartenBlock);
}
return krankenkartenBlock;
}
private BlockKostenträger GenerateBlockKostentrager(DakotaInvoiceItemInfo invoiceinfo)
{
var block = new BlockKostenträger();
var nachrefnum = ++AnzahlUNHCounter;
block.SegmentUNH.Nachrichtenreferenznummer.SetValue(nachrefnum);
block.SegmentUNH.NachrichtenTypKennung.SetValue("SLGA");
block.SegmentUNH.Verionsnummer.SetValue("18");
block.SegmentUNH.FreigabeNrDesTypes.SetValue("0");
block.SegmentUNH.VerwaltendeOrganisation.SetValue("0");
block.NachrichtSLGA.SegmentFKT.Verarbeitungskennzeichen.SetValue(FileInfo.Verarbeitungskennzeichen);
block.NachrichtSLGA.SegmentFKT.IKLeistungserbringers.SetValue(invoiceinfo.IKLeistungserbringer);
block.NachrichtSLGA.SegmentFKT.IKKostenträger.SetValue(invoiceinfo.IKKostentrager);
block.NachrichtSLGA.SegmentFKT.IKKrankenkasseKVKarte.SetValue(invoiceinfo.IKKVKarte);
block.NachrichtSLGA.SegmentFKT.IKAbsender.SetValue(invoiceinfo.IKAbsender);
block.NachrichtSLGA.SegmentREC.SammelRechnungsnummer.SetValue(FileInfo.Rechnungsnummer);
block.NachrichtSLGA.SegmentREC.EinzelRechnungsnummer.SetValue("0");
block.NachrichtSLGA.SegmentREC.Datum.SetValue(FileInfo.Rechnungsdatum);
block.NachrichtSLGA.SegmentREC.Rechnungsart.SetValue(FileInfo.Rechnungsart);
block.NachrichtSLGA.SegmentGES00.Status.SetValue(FileInfo.Summenstatus00);
block.NachrichtSLGA.SegmentGES00.Gesamtbruttobetrag.SetValue(FileInfo.Gesamtbruttobetrag00);
block.NachrichtSLGA.SegmentGES00.Gesamtrechnungsbetrag.SetValue(FileInfo.Gesamtrechnungsbetrag00);
block.NachrichtSLGA.SegmentGES00.GesamtbetragZuzahlung.SetValue(FileInfo.GesamtbetragZuzahlung00);
block.NachrichtSLGA.SegmentGES.Status.SetValue(FileInfo.Summenstatus);
block.NachrichtSLGA.SegmentGES.Gesamtbruttobetrag.SetValue(FileInfo.Gesamtbruttobetrag);
block.NachrichtSLGA.SegmentGES.Gesamtrechnungsbetrag.SetValue(FileInfo.Gesamtrechnungsbetrag);
block.NachrichtSLGA.SegmentGES.GesamtbetragZuzahlung.SetValue(FileInfo.GesamtbetragZuzahlung);
block.NachrichtSLGA.SegmentNAM.Name1.SetValue(FileInfo.Name1);
block.NachrichtSLGA.SegmentNAM.Name2.SetValue(FileInfo.Name2);
block.NachrichtSLGA.SegmentNAM.Name3.SetValue(FileInfo.Name3);
block.NachrichtSLGA.SegmentNAM.Name4.SetValue(FileInfo.Name4);
block.SegmentUNT.Nachrichtenreferenznummer.SetValue(nachrefnum);
return block;
}
private BlockKrankenkarteVerordnung GenerateBlockKrankenkarte(DakotaInvoiceItemInfo invoiceInfo)
{
var block = new BlockKrankenkarteVerordnung();
var nachrefnum = ++AnzahlUNHCounter;
var nachrefnum2 = ++AnzahlUNHCounter;
// block.SegmentSLGAUNH.Nachrichtenreferenznummer.SetFilled
block.SegmentSLGAUNH.Nachrichtenreferenznummer.SetValue(nachrefnum);
block.SegmentSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
block.SegmentSLGAUNH.Verionsnummer.SetValue("18");
block.SegmentSLGAUNH.FreigabeNrDesTypes.SetValue("0");
block.SegmentSLGAUNH.VerwaltendeOrganisation.SetValue("0");
block.NachrichtSLGA.SegmentFKT.Verarbeitungskennzeichen.SetValue(FileInfo.Verarbeitungskennzeichen);
block.NachrichtSLGA.SegmentFKT.IKLeistungserbringers.SetValue(invoiceInfo.IKLeistungserbringer);
block.NachrichtSLGA.SegmentFKT.IKKostenträger.SetValue(invoiceInfo.IKKostentrager);
block.NachrichtSLGA.SegmentFKT.IKKrankenkasseKVKarte.SetValue(invoiceInfo.IKKVKarte);
block.NachrichtSLGA.SegmentFKT.IKAbsender.SetValue(invoiceInfo.IKAbsender);
block.NachrichtSLGA.SegmentREC.SammelRechnungsnummer.SetValue(FileInfo.Rechnungsnummer);
block.NachrichtSLGA.SegmentREC.EinzelRechnungsnummer.SetValue("0");
block.NachrichtSLGA.SegmentREC.Datum.SetValue(FileInfo.Rechnungsdatum);
block.NachrichtSLGA.SegmentREC.Rechnungsart.SetValue(FileInfo.Rechnungsart);
block.NachrichtSLGA.SegmentGES00.Status.SetValue(FileInfo.Summenstatus00);
block.NachrichtSLGA.SegmentGES00.Gesamtbruttobetrag.SetValue(FileInfo.Gesamtbruttobetrag00);
block.NachrichtSLGA.SegmentGES00.Gesamtrechnungsbetrag.SetValue(FileInfo.Gesamtrechnungsbetrag00);
block.NachrichtSLGA.SegmentGES00.GesamtbetragZuzahlung.SetValue(FileInfo.GesamtbetragZuzahlung00);
block.NachrichtSLGA.SegmentGES.Status.SetValue(FileInfo.Summenstatus);
block.NachrichtSLGA.SegmentGES.Gesamtbruttobetrag.SetValue(FileInfo.Gesamtbruttobetrag);
block.NachrichtSLGA.SegmentGES.Gesamtrechnungsbetrag.SetValue(FileInfo.Gesamtrechnungsbetrag);
block.NachrichtSLGA.SegmentGES.GesamtbetragZuzahlung.SetValue(FileInfo.GesamtbetragZuzahlung);
block.NachrichtSLGA.SegmentNAM.Name1.SetValue(FileInfo.Name1);
block.NachrichtSLGA.SegmentNAM.Name2.SetValue(FileInfo.Name2);
block.NachrichtSLGA.SegmentNAM.Name3.SetValue(FileInfo.Name3);
block.NachrichtSLGA.SegmentNAM.Name4.SetValue(FileInfo.Name4);
block.SegmentSLGAUNT.Nachrichtenreferenznummer.SetValue(nachrefnum);
block.SegmentSLLAUNH.Nachrichtenreferenznummer.SetValue(nachrefnum2);
block.SegmentSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
block.SegmentSLLAUNH.Verionsnummer.SetValue("18");
block.SegmentSLLAUNH.FreigabeNrDesTypes.SetValue("0");
block.SegmentSLLAUNH.VerwaltendeOrganisation.SetValue("0");
block.NachrichtSLLA.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(FileInfo.Verarbeitungskennzeichen);
block.NachrichtSLLA.SegmentSLLAFKT.IKLeistungserbringers.SetValue(invoiceInfo.IKLeistungserbringer);
block.NachrichtSLLA.SegmentSLLAFKT.IKKostenträgers.SetValue(invoiceInfo.IKKostentrager);
block.NachrichtSLLA.SegmentSLLAFKT.IKKVKarte.SetValue(invoiceInfo.IKKVKarte);
block.NachrichtSLLA.SegmentSLLAFKT.IKRechnungsstellers.SetValue(invoiceInfo.IKAbsender);
// Abrechnungsfalle
AddBlockAbrechnungsfall(block, invoiceInfo);
block.SegmentSLLAUNT.Nachrichtenreferenznummer.SetValue(nachrefnum2);
return block;
}
private BlockAbrechnungsfall AddBlockAbrechnungsfall(BlockKrankenkarteVerordnung blockkvkarte, DakotaInvoiceItemInfo info)
{
var block = new BlockAbrechnungsfall();
block.SegmentSLLAINV.VersichertenNummer.SetValue(info.VersichtertenNummer);
block.SegmentSLLAINV.Versichertenstatus.SetValue(info.Versichertenstatus);
block.SegmentSLLAINV.Beleginformation.SetValue(info.Beleginformation);
block.SegmentSLLAINV.Belegnummer.SetValue(info.Belegnummer);
// block.SegmentSLLAINV.KennzeichenBesondereVersorgungsform.SetValue(invoiceInfo.Kenn)
block.SegmentSLLANAD.Vorname.SetValue(info.VersichtertenVorname);
block.SegmentSLLANAD.Nachname.SetValue(info.VersichtertenNachname);
block.SegmentSLLANAD.Geburtsdatum.SetValue(info.VersichtertenGeburtstag);
block.SegmentSLLANAD.StraßeNr.SetValue(info.VersichtertenStraßeNr);
block.SegmentSLLANAD.PLZ.SetValue(info.VersichtertenPLZ);
block.SegmentSLLANAD.Wohnort.SetValue(info.VersichtertenWohnort);
block.SegmentSLLANAD.Länderkennzeichen.SetValue(info.VersichtertenLanderkennung);
block.SegmentSLLAENF.Identifikationsnummer.SetValue(info.EinzelfallIdentifikationsnummer);
block.SegmentSLLAENF.Abrechnungscode.SetValue(info.EinzelfallAbrechnungscode);
block.SegmentSLLAENF.Tarifkennzeichen.SetValue(info.EinzelfallTarifkennzeichen);
block.SegmentSLLAENF.ArtLeistung.SetValue(info.Abrechnungsposition);
block.SegmentSLLAENF.AnzahlMenge.SetValue(info.EinzelfallAnzahlMenge);
block.SegmentSLLAENF.EinzelbetragAbrechnungsposition.SetValue(info.EinzelfallEinzelbetragAbrechnungsposition);
block.SegmentSLLAENF.DatumLeistungserbringung.SetValue(info.EinzelfallDatumDerLeistungserbringung);
block.SegmentSLLAENF.BetragZuzahlung.SetValue(info.EinzelfallBetragZuzahlung);
block.SegmentSLLASUT.GefahreneKilometer.SetValue(info.EinzelfallGefahreneKilometer);
block.SegmentSLLASUT.Uhrzeit.SetValue(info.EinzelfallUhrzeit);
block.SegmentSLLASUT.Dauer.SetValue(info.EinzelfallDauer);
block.SegmentSLLASUT.VersorgungszeitraumVon.SetValue(info.EinzelfallVersorgungszeitraum);
block.SegmentSLLASUT.VersorgungszeitraumBis.SetValue(info.EinzelfallVersorgungszeitraumBis);
block.SegmentSLLATXT.Text.SetValue(info.Text);
block.SegmentSLLABES.GesamtbetragBrutto.SetValue(info.GesamtbetragBrutto);
block.SegmentSLLABES.GesamtbetragGesetzlicheZuzahlung.SetValue(info.GesamtbetragGesetzlicheZuzahlung);
block.SegmentSLLABES.GesamtbetragProzentualeZuzahlung.SetValue(info.GesamtbetragProzentualeZuzahlung);
block.SegmentSLLABES.PauschalerZuzahlungsbetrag.SetValue(info.PauschalerZuzahlungsbetrag);
block.SegmentSLLABES.GesamtbetragEigenanteil.SetValue(info.GesamtbetragEigenanteil);
blockkvkarte.NachrichtSLLA.Abrechnungsfalle.Add(block);
return block;
}
private void GenerateBlockSLGA(DakotaFileInfo info)
{
//UNH, UNT, FKT, REC, GES00, GES, NAM
SegmentSLGACounter += 7;
var nachrefnum = ++AnzahlUNHCounter;
// Head
BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
BlockSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
BlockSLGAUNH.Verionsnummer.SetValue("18");
BlockSLGAUNH.FreigabeNrDesTypes.SetValue("0");
BlockSLGAUNH.VerwaltendeOrganisation.SetValue("0");
//BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
//BlockSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
//BlockSLGAUNH.Verionsnummer.SetValue("18");
//BlockSLGAUNH.FreigabeNrDesTypes.SetValue("0");
//BlockSLGAUNH.VerwaltendeOrganisation.SetValue("0");
// Body
// FKT
BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(info.IKKostenträger);
BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(info.Absenderbezeichnung);
// REC
BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue("0");
BlockSLGANachricht.SegmentREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
// 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("00");
BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag) ;
BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
// GES
BlockSLGANachricht.SegmentGES.Status.SetValue(info.Summenstatus.Value);
BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag);
BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
// NAM
BlockSLGANachricht.SegmentNAM.Name1.SetValue(info.Name1);
BlockSLGANachricht.SegmentNAM.Name2.SetValue(info.Name2);
BlockSLGANachricht.SegmentNAM.Name3.SetValue(info.Name3);
BlockSLGANachricht.SegmentNAM.Name4.SetValue(info.Name4);
//// Body
//// FKT
//BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
//BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
//BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(info.IKKostenträger);
//BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
//BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(info.Absenderbezeichnung);
//// REC
//BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
//BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue("0");
//BlockSLGANachricht.SegmentREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
//BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
//// 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("00");
//BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag) ;
//BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
//BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
//// GES
//BlockSLGANachricht.SegmentGES.Status.SetValue(info.Summenstatus.Value);
//BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetDecimalValue(info.Gesamtrechnungsbetrag);
//BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetDecimalValue(info.Gesamtbruttobetrag);
//BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetDecimalValue(info.GesamtbetragZuzahlung);
//// NAM
//BlockSLGANachricht.SegmentNAM.Name1.SetValue(info.Name1);
//BlockSLGANachricht.SegmentNAM.Name2.SetValue(info.Name2);
//BlockSLGANachricht.SegmentNAM.Name3.SetValue(info.Name3);
//BlockSLGANachricht.SegmentNAM.Name4.SetValue(info.Name4);
// End
BlockSLGAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLGACounter, 6);
BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
//// End
//BlockSLGAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLGACounter, 6);
//BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
private void GenerateBlockSLLA(DakotaFileInfo info)
{
SegmentSLLACounter++;
AnzahlUNHCounter++;
var nachrefnum = ++AnzahlUNHCounter;
// Head
BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
BlockSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
BlockSLLAUNH.Verionsnummer.SetValue("18");
BlockSLLAUNH.FreigabeNrDesTypes.SetValue("0");
BlockSLLAUNH.VerwaltendeOrganisation.SetValue("0");
//BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
//BlockSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
//BlockSLLAUNH.Verionsnummer.SetValue("18");
//BlockSLLAUNH.FreigabeNrDesTypes.SetValue("0");
//BlockSLLAUNH.VerwaltendeOrganisation.SetValue("0");
// Body
// FKT Funktion
BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostenträger);
BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
//BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
// REC
BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
// INV
// Information Versicherte
BlockSLLANachricht.SegmentSLLAINV.VersichertenNummer.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.Versichertenstatus.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue("0");
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);
//// Body
//// FKT Funktion
//BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen.Value);
//BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringers);
//BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(info.IKKostenträger);
//BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(info.IKKrankenkasse);
////BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
//// REC
//BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(info.Rechnungsnummer);
//BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue("0");
//BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(info.Rechnungsdatum.ToString("yyyyMMdd"));
//BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(info.Rechnungsart.Value);
//// INV
//// Information Versicherte
//BlockSLLANachricht.SegmentSLLAINV.VersichertenNummer.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAINV.Versichertenstatus.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue("0");
//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<object>();
var abrechnungspositionen = new List<InvoiceItemDC>();
foreach (var position in abrechnungspositionen)
{
var pos = new Abrechnungsposition();
// ENF
pos.SegmentSLLAENF.Identifikationsnummer.SetValue(string.Empty);
pos.SegmentSLLAENF.Abrechnungscode.SetValue("69");
pos.SegmentSLLAENF.Tarifkennzeichen.SetValue(string.Empty);
pos.SegmentSLLAENF.ArtLeistung.SetValue(string.Empty);
pos.SegmentSLLAENF.AnzahlMenge.SetValue(string.Empty);
pos.SegmentSLLAENF.EinzelbetragAbrechnungsposition.SetValue(string.Empty);
pos.SegmentSLLAENF.DatumLeistungserbringung.SetValue(string.Empty);
pos.SegmentSLLAENF.BetragZuzahlung.SetValue(string.Empty);
// SUT
pos.SegmentSLLASUT.GefahreneKilometer.SetValue(string.Empty);
pos.SegmentSLLASUT.Uhrzeit.SetValue(string.Empty);
pos.SegmentSLLASUT.UhrzeitBis.SetValue(string.Empty);
pos.SegmentSLLASUT.Dauer.SetValue(string.Empty);
pos.SegmentSLLASUT.VersorgungszeitraumVon.SetValue(string.Empty);
pos.SegmentSLLASUT.VersorgungszeitraumBis.SetValue(string.Empty);
// TXT
pos.SegmentSLLATXT.Text.SetValue(string.Empty);
// MWS
//pos.SegmentSLLAMWS.Mehrwertsteuersatz.SetValue(string.Empty);
//pos.SegmentSLLAMWS.BetragMehrwertsteuer.SetValue(string.Empty);
//var test = new List<object>();
//var abrechnungspositionen = new List<InvoiceItemDC>();
//foreach (var position in abrechnungspositionen)
//{
// var pos = new Abrechnungsposition();
// // ENF
// pos.SegmentSLLAENF.Identifikationsnummer.SetValue(string.Empty);
// pos.SegmentSLLAENF.Abrechnungscode.SetValue("69");
// pos.SegmentSLLAENF.Tarifkennzeichen.SetValue(string.Empty);
// pos.SegmentSLLAENF.ArtLeistung.SetValue(string.Empty);
// pos.SegmentSLLAENF.AnzahlMenge.SetValue(string.Empty);
// pos.SegmentSLLAENF.EinzelbetragAbrechnungsposition.SetValue(string.Empty);
// pos.SegmentSLLAENF.DatumLeistungserbringung.SetValue(string.Empty);
// pos.SegmentSLLAENF.BetragZuzahlung.SetValue(string.Empty);
// // SUT
// pos.SegmentSLLASUT.GefahreneKilometer.SetValue(string.Empty);
// pos.SegmentSLLASUT.Uhrzeit.SetValue(string.Empty);
// pos.SegmentSLLASUT.UhrzeitBis.SetValue(string.Empty);
// pos.SegmentSLLASUT.Dauer.SetValue(string.Empty);
// pos.SegmentSLLASUT.VersorgungszeitraumVon.SetValue(string.Empty);
// pos.SegmentSLLASUT.VersorgungszeitraumBis.SetValue(string.Empty);
// // TXT
// pos.SegmentSLLATXT.Text.SetValue(string.Empty);
// // MWS
// //pos.SegmentSLLAMWS.Mehrwertsteuersatz.SetValue(string.Empty);
// //pos.SegmentSLLAMWS.BetragMehrwertsteuer.SetValue(string.Empty);
BlockSLLANachricht.AddPosition(pos);
}
// BlockSLLANachricht.AddPosition(pos);
//}
// ZUV
//BlockSLLANachricht.SegmentSLLAZUV.Betriebsstättennummer.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.LebenslangeArztnummer.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.VerordnungsAusstellEinsatzdatum.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.Zuzahlungskennzeichen.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.Unfallkennzeichen.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.KennzeichenBVGSonstiges.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLAZUV.KennzeichenVerordnungsbesonderheiten.SetValue(string.Empty);
//// ZUV
////BlockSLLANachricht.SegmentSLLAZUV.Betriebsstättennummer.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.LebenslangeArztnummer.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.VerordnungsAusstellEinsatzdatum.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.Zuzahlungskennzeichen.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.Unfallkennzeichen.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.KennzeichenBVGSonstiges.SetValue(string.Empty);
////BlockSLLANachricht.SegmentSLLAZUV.KennzeichenVerordnungsbesonderheiten.SetValue(string.Empty);
// BES
BlockSLLANachricht.SegmentSLLABES.GesamtbetragBrutto.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLABES.GesamtbetragGesetzlicheZuzahlung.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLABES.GesamtbetragProzentualeZuzahlung.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLABES.PauschalerZuzahlungsbetrag.SetValue(string.Empty);
BlockSLLANachricht.SegmentSLLABES.GesamtbetragEigenanteil.SetValue(string.Empty);
//// BES
//BlockSLLANachricht.SegmentSLLABES.GesamtbetragBrutto.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLABES.GesamtbetragGesetzlicheZuzahlung.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLABES.GesamtbetragProzentualeZuzahlung.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLABES.PauschalerZuzahlungsbetrag.SetValue(string.Empty);
//BlockSLLANachricht.SegmentSLLABES.GesamtbetragEigenanteil.SetValue(string.Empty);
// End
BlockSLLAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLLACounter, 6);
BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
private void GenerateUNZSegment()
{
Nutzdatendatei.SegmentUNZ.AnzahlNachrichten.SetFilledIntValue(AnzahlUNHCounter, 6);
Nutzdatendatei.SegmentUNZ.Datenaustauschreferenz.SetFilledIntValue(Info.Datenaustauschreferenz, 5);
//// End
//BlockSLLAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLLACounter, 6);
//BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrefnum, 5);
}
public void foo(long? invoiceBaseOid)

View File

@@ -2,7 +2,9 @@
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
using Dakota;
using Dakota.Models.Schlüssel;
using Dakota.Models;
using Dakota.Models.Infos;
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -34,22 +36,6 @@ namespace BeWo.Service.ServiceUtils.Generell
}
}
/// <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);
@@ -78,68 +64,122 @@ namespace BeWo.Service.ServiceUtils.Generell
// 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)
DakotaKeyDictionary currentkey = new DakotaKeyDictionary
{
var info = LoadInfo(invoice);
DateTime = first,
Kassenart = Kassenart.BKK,
Kostenträger = ""
};
dakota = new DakotaFile(info);
var dakota = GetDakotaFile(res, currentkey, invoice);
res.Add(currentkey, dakota);
}
var invoiceinfo = GetDakotaFileInvoiceItem(dakota.FileInfo, invoice);
dakota.AddInvoiceItem(invoice);
dakota.AddInvoiceItem(invoiceinfo);
}
return res;
}
/// <summary>
/// Get Dakota File. Creates if doesn't exist
/// </summary>
/// <param name="dict">current Dict</param>
/// <param name="key"></param>
/// <param name="invoice"></param>
/// <returns></returns>
internal static DakotaFile GetDakotaFile(Dictionary<DakotaKeyDictionary, DakotaFile> dict, DakotaKeyDictionary key, InvoiceItem invoice)
{
var dakota = dict.FirstOrDefault(keypair => keypair.Key.Equals(key)).Value;
if (dakota is null)
{
var info = LoadInfo(invoice);
dakota = new DakotaFile(info);
dict.Add(key, dakota);
}
return dakota;
}
internal static DakotaInvoiceItemInfo GetDakotaFileInvoiceItem(DakotaFileInfo fileinfo, InvoiceItem invoice)
{
var invoiceinfo = new DakotaInvoiceItemInfo();
invoiceinfo.IKLeistungserbringer = fileinfo.IKLeistungserbringers;
invoiceinfo.IKAbsender = fileinfo.Absenderbezeichnung;
invoiceinfo.IKEmpfänger = fileinfo.Empfangerbezeichnung;
invoiceinfo.IKKostentrager = fileinfo.Empfangerbezeichnung;
invoiceinfo.IKKrankenkasse = "112233445";
invoiceinfo.IKKVKarte = "566778899";
invoiceinfo.Verarbeitungskennzeichen = SchlüsselVerarbeitungskennzeichen.AbrechnungOhneBesonderheit;
// invoiceinfo.
return invoiceinfo;
}
public static DakotaFileInfo LoadInfo(InvoiceItem invoice)
{
throw new NotImplementedException();
var info = new DakotaFileInfo();
info.IKLeistungserbringers = "999888777";
info.Absenderbezeichnung = "123456789";
info.Empfangerbezeichnung = "987654321";
info.Datenaustauschreferenz = 1;
info.Leistungsbereich = SchlüsselLeistungserbringerSammelgruppenschlussel.SoziotherapeutischerLeistungserbringer;
info.Anwendungsreferenz = "abovollkra.txt";
info.Testindikator = SchlüsselTestindikator.Testdatei;
info.Created = DateTime.Now;
info.Rechnungsdatum = invoice.ItemPeriodEnd.Value;
info.Rechnungsart = SchlüsselRechnungsart.AbrechnungVonLeistungserbringer;
info.Summenstatus = SchlüsselSummenstatus.Mitglieder;
info.Gesamtrechnungsbetrag = 1;
info.GesamtbetragZuzahlung = 1;
info.Gesamtbruttobetrag = 1;
info.Name1 = "Hallo Dies";
info.Name2 = "Dies nicht gut";
info.Name3 = "Nein";
info.Name4 = "omg";
return info;
}
public static DakotaFileInfo LoadInfos(List<InvoiceItemDC> invoiceItems)
{
var res = new DakotaFileInfo();
//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.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.IKLeistungserbringers = "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.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.Verarbeitungskennzeichen = SchlüsselVerarbeitungskennzeichen.AbrechnungOhneBesonderheit;
res.IKKrankenkasse = "abovollkrass.txt";
res.InvoiceItems = invoiceItems;
return res;
}
// return res;
//}
}
}

View File

@@ -1,186 +0,0 @@
using BS.Shared.DataContracts;
using Dakota.Models.Schlüssel;
using System;
using System.Collections.Generic;
namespace Dakota
{
/// <summary>
/// Klasse zum Erzeugen von Dakota Files
/// </summary>
public class DakotaFileInfo
{
private int _Datenaustauschreferenz;
/// <summary>
/// IK des Absenders ( Abrechnungsstelle mit oder ohne Inkassobefugnis oder LE)
/// Genutzt werden die ersten 9 Stellen;
/// einzutragen ist das IK der absendenden Stelle.
/// Diese Angabe muss übereinstimmen mit SLGA.FKT.IK Absender der Datei.
/// </summary>
public string Absenderbezeichnung { get; set; }
/// <summary>
/// IK des Empfängers (d.h. Datenannahmestelle mit Entschlüsselungsbefugnis);
/// genutzt werden die ersten 9 Stellen;
/// einzutragen ist das IK der empfangenden Stelle
/// </summary>
public string Empfangerbezeichnung { get; set; }
/// <summary>
/// Ab Version 12 ist die Datenaustauschreferenz zwingend zu füllen.
/// Genutzt werden die ersten 5 Stellen;
/// einzutragen ist die fortlaufende
/// Nummer der Lieferungen zwischen
/// Absender und Empfänger mit führenden Nullen.
/// Bei Überlauf der Datenaustauschreferenz („99999“) ist wieder
/// bei Eins(„00001“) zu beginnen
/// </summary>
public int Datenaustauschreferenz
{
get { return _Datenaustauschreferenz; }
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht negativ sein");
else if (value == 0)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht gleich null sein");
else if (value > 100000)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht größer als 99999 sein");
else if (value == 100000)
value = 1;
_Datenaustauschreferenz = value;
}
}
/// <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.
/// </summary>
public string Anwendungsreferenz { get; set; }
/// <summary>
/// Inhalt = 0 wenn Testdatei
/// Inhalt = 1 wenn Erprobungsdatei
/// Inhalt = 2 wenn Echtdatei
/// </summary>
public SchlüsselTestindikator Testindikator { get; set; }
/// <summary>
/// Es ist das IK des Leistungserbringers
/// anzugeben mit folgender Ausnahme:
/// Erfolgt die Abrechnung über eine
/// Abrechnungsstelle mit Inkassovollmacht, so ist in der Sammelrechnungs-SLGA das IK der Abrechnungsstelle anzugeben.
/// </summary>
public string IKLeistungserbringers { get; set; }
/// <summary>
/// Einzutragen ist das IK des Kostenträ-
/// gers auf den das IK der KV-Karte in
/// der Kostenträgerdatei verweist; diese
/// Angabe ist identisch mit dem IK des
/// Kostenträgers im FKT-Segment der
/// zugehörigen SLLA-Nachricht.
/// </summary>
public string IKKostenträger { get; set; }
/// <summary>
/// IK der Krankenkasse von der KVKarte bzw. der ärztlichen Verordnung
/// ist zwingend anzugeben, außer es
/// handelt sich um eine Sammelrechnung-SLGA.Bei allen SLGA-Nachrichten als Gesamtrechnung ist diese
/// Angabe identisch mit SLLA.FKT.IK der
/// Krankenkasse der zugehörigen SLLANachricht.
/// </summary>
public string IKKrankenkasse { get; set; }
/// <summary>
/// Die Einzel-Rechnungsnummer ist zusätzlich zur Sammel-Rechnungsnummer anzugeben, wenn eine SLGANachricht als Sammelrechnung zusätzlich in der Nutzdatendatei übermittelt
/// wird, ansonsten wird lediglich das Datenelement Sammel-Rechnungsnummer gefüllt und die Einzel-Rechnungsnummer auf „0“ gesetzt(zum Beispiel
/// 00234567:0
/// </summary>
public string Rechnungsnummer { get; set; }
/// <summary>
/// Rechnungsdatum JJJJMMTT
/// </summary>
public DateTime Rechnungsdatum { get; set; }
/// <summary>
/// Siehe Schlüssel Summenstatus
/// Anlage 3 Abschnitt 8.1.6
/// </summary>
public SchlüsselSummenstatus Summenstatus { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“,
/// „02“ und „04“:
/// Gesamtrechnungsbetrag(ggf.inklusive Mehrwertsteuer)
/// Berechnungsregel:
/// GES.Gesamtbruttobetrag minus
/// GES.Gesamtbetrag Zuzahlung und/oder Eigenanteil und/oder Pauschale
/// Korrekturbetrag.
/// Bei Verarbeitungskennzeichen „03“:
/// Entspricht dem Wert aus GES.Gesamtbetrag Zuzahlung und/oder Eigenanteil und/oder Pauschale Korrekturbetrag.
/// </summary>
public decimal Gesamtrechnungsbetrag { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“,
/// „02“ und „04“:
/// Summe der Gesamtbruttobeträge der
/// Abrechnungsfälle(inklusive gesetzlicher Zuzahlungsbeträge oder Eigenanteil und/oder Pauschale Korrekturbetrag sowie ggf.Mehrwertsteuer)
/// aus BES.
/// Bei Verarbeitungskennzeichen „03“:
/// Ist der Gesamtbruttobetrag mit 0,00
/// zu übermitteln.
/// </summary>
public decimal Gesamtbruttobetrag { get; set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“
/// und „02“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus BES
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(BES.Gesambetrag gesetzliche Zuzahlung + BES.Gesamtbetrag Eigenanteil).
/// Bei Verarbeitungskennzeichen „03“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus GZF
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(GZF.Gesambetrag gesetzliche Zuzahlung + GZF.Gesamtbetrag Eigenanteil).
/// Bei Verarbeitungskennzeichen „04“:
/// Summe der gesetzlichen Zuzahlungen und/oder der Eigenanteile der
/// Abrechnungsfälle aus BES
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(BES.Gesambetrag gesetzliche Zuzahlung + BES.Gesamtbetrag Eigenanteil + BES.Pauschale Korrekturbetrag).
/// </summary>
public decimal GesamtbetragZuzahlung { get; set; }
/// <summary>
/// Siehe Schlüssel Rechnungsart
/// Anlage 3 Abschnitt 8.1.4.
/// Dieser Schlüsselwert muss in der
/// Sammelrechnungs-SLGA und allen
/// 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.
/// </summary>
public string Name2 { get; set; }
/// <summary>
/// ggf. Ansprechpartner und Telefonnummer.
/// </summary>
public string Name3 { get; set; }
/// <summary>
/// E-Mail-Adresse;
/// zugelassen sind Buchstaben und Ziffern, ausgenommen Umlaute
/// </summary>
public string Name4 { get; set; }
/// <summary>
/// Siehe Schlüssel Verarbeitungskennzeichen Anlage 3 Abschnitt 8.1.7.
/// </summary>
public SchlüsselVerarbeitungskennzeichen Verarbeitungskennzeichen { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using Dakota.Models.Nachrichten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Blocke
{
internal abstract class Block : Nachricht
{
public abstract int GetUNHCount();
}
}

View File

@@ -7,9 +7,9 @@ using System.Text;
using System.Threading.Tasks;
using Dakota.Models.Segmente.SLLA;
namespace Dakota.Models.Block
namespace Dakota.Models.Blocke
{
internal class BlockAbrechnungsfall : Nachricht
internal class BlockAbrechnungsfall : Block
{
/// <summary>
@@ -117,5 +117,10 @@ namespace Dakota.Models.Block
SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT, SegmentSLLAMWS,
SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES};
}
public override int GetUNHCount()
{
return 0;
}
}
}

View File

@@ -6,31 +6,30 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Block
namespace Dakota.Models.Blocke
{
/// <summary>
/// Wiederhole folgenden Block je IK des Kostenträgers
/// </summary>
internal class BlockKostenträger : Nachricht
internal class BlockKostenträger : Block
{
public SegmentUNH SegmentUNH { get; private set; }
public NachrichtSLGA NachrichtSLGA { get; private set; }
public NachrichtSLGA3 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();
NachrichtSLGA = new NachrichtSLGA3();
SegmentUNT = new SegmentUNT(GetSegmentLength);
BlockKrankenkarteVerordnung = new List<BlockKrankenkarteVerordnung>();
}
public string IKKostenträger
{
get { return NachrichtSLGA.SegmentFKT.IKKostenträger.GetValue(); }
set { NachrichtSLGA.SegmentFKT.IKKostenträger.SetValue(value); }
}
public override List<Segment> GetSegments()
{
@@ -47,5 +46,17 @@ namespace Dakota.Models.Block
return list;
}
public override int GetUNHCount()
{
var i = 1;
foreach (var block in BlockKrankenkarteVerordnung)
{
i += block.GetUNHCount();
}
return i;
}
}
}

View File

@@ -1,55 +1,61 @@
using Dakota.Models.Nachrichten;
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.Block
namespace Dakota.Models.Blocke
{
/// <summary>
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
/// </summary>
internal class BlockKrankenkarteVerordnung : Nachricht
internal class BlockKrankenkarteVerordnung : Block
{
public SegmentUNH SegmentSLGAUNH { get; private set; }
public NachrichtSLGA2 SLGANachricht2 { get; private set; }
public NachrichtSLGA3 NachrichtSLGA { get; private set; }
public SegmentUNT SegmentSLGAUNT { get; private set; }
public SegmentUNH SegmentSLLAUNH { get; private set; }
public NachrichtSLLA2 SLLANachricht2 { get; private set; }
public NachrichtSLLA3 NachrichtSLLA { get; private set; }
public SegmentUNT SegmentSLLAUNT { get; private set; }
public BlockKrankenkarteVerordnung()
{
SegmentSLGAUNH = new SegmentUNH();
SLGANachricht2 = new NachrichtSLGA2();
NachrichtSLGA = new NachrichtSLGA3();
SegmentSLGAUNT = new SegmentUNT(SLGASegmentLength);
SegmentSLLAUNH = new SegmentUNH();
SLLANachricht2 = new NachrichtSLLA2();
NachrichtSLLA = new NachrichtSLLA3();
SegmentSLLAUNT = new SegmentUNT(SLLASegmentLength);
}
public string IKKrankenkasseKVKarte
{
get { return SLGANachricht2.SegmentFKT.IKKrankenkasseKVKarte.GetValue(); }
set { SLGANachricht2.SegmentFKT.IKKrankenkasseKVKarte.SetValue(value); }
get { return NachrichtSLGA.SegmentFKT.IKKrankenkasseKVKarte.GetValue(); }
set { NachrichtSLGA.SegmentFKT.IKKrankenkasseKVKarte.SetValue(value); }
}
public int SLGASegmentLength() => SLGANachricht2.GetSegmentLength() + 2;
public int SLLASegmentLength() => SLLANachricht2.GetSegmentLength() + 2;
public int SLGASegmentLength() => NachrichtSLGA.GetSegmentLength() + 2;
public int SLLASegmentLength() => NachrichtSLLA.GetSegmentLength() + 2;
public override List<Segment> GetSegments()
{
var list = new List<Segment>() { SegmentSLGAUNH };
list.AddRange(SLGANachricht2.GetSegments());
list.AddRange(NachrichtSLGA.GetSegments());
list.Add(SegmentSLGAUNT);
list.Add(SegmentSLLAUNH);
list.AddRange(SLLANachricht2.GetSegments());
list.AddRange(NachrichtSLLA.GetSegments());
list.Add(SegmentSLLAUNT);
return list;
}
public override int GetUNHCount()
{
return 2;
}
}
}

View File

@@ -6,7 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Block
namespace Dakota.Models.Blocke
{
/// <summary>
/// Nutzdatendatei ohne Logik
@@ -21,15 +21,14 @@ namespace Dakota.Models.Block
{
SegmentUNB = new SegmentUNB();
BlockKostenträger = new List<BlockKostenträger>();
SegmentUNZ = new SegmentUNZ();
SegmentUNZ = new SegmentUNZ(GetUNHCount);
}
public override List<Segment> GetSegments()
{
var list = new List<Segment>()
{
SegmentUNB
};
var list = new List<Segment>();
list.Add(SegmentUNB);
foreach (var block in BlockKostenträger)
{
@@ -40,5 +39,17 @@ namespace Dakota.Models.Block
return list;
}
public int GetUNHCount()
{
int i = 0;
foreach (var block in BlockKostenträger)
{
i += block.GetUNHCount();
}
return i;
}
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
namespace Dakota.Models.Daten
{
public abstract class Dateneinheit
{

View File

@@ -1,31 +1,29 @@
using System;
using Dakota.Models.Schlüssels;
using System;
namespace Dakota.Models
namespace Dakota.Models.Daten
{
internal class Datenelement : Dateneinheit
{
private string _Value;
private bool _IsDecimal;
private protected string _Value;
private protected bool _IgnoreCheck;
public int MinStellen { get; set; }
public int MaxStellen { get; set; }
public Feldart Feldart { get; set; }
public Datenelement(string title)
{
Title = title;
_IsDecimal = false;
_IgnoreCheck = false;
}
public Datenelement(string title, int min, int max, Feldart art) : this(title)
{
MinStellen = min;
MaxStellen = max;
Feldart = art;
}
public Datenelement(string title, int count, Feldart art) : this(title, count, count, art)
{
@@ -49,7 +47,7 @@ namespace Dakota.Models
}
}
if (!_IsDecimal && (_Value.Length < MinStellen || _Value.Length > MaxStellen))
if (!_IgnoreCheck && (_Value.Length < MinStellen || _Value.Length > MaxStellen))
{
throw new NotImplementedException("Error Code: 3483091097897");
}
@@ -57,14 +55,15 @@ namespace Dakota.Models
return _Value;
}
public void SetFilledIntValue(int value, int length)
public void SetValue(int value)
{
if (value.ToString().Length > length)
throw new ArgumentOutOfRangeException("length", $"the length of {value} is bigger than len {length}");
SetValue(value.ToString("D" + length.ToString()));
SetValue(value.ToString());
}
public void SetValue(Schlüssel schlussel)
{
SetValue(schlussel.Value);
}
public void SetValue(string value)
{
if (value is string)
@@ -83,24 +82,7 @@ namespace Dakota.Models
_Value = value;
_IsDecimal = false;
}
public void SetDecimalValue(Decimal input)
{
var dec = input.ToString("#.00").Replace(".", ",");
var tester = Math.Abs(input).ToString("#.00").Replace(".", "");
if (tester.Length < MinStellen || tester.Length > MaxStellen)
{
throw new NotImplementedException("Error Code: 3483091097895");
}
else
{
_Value = dec;
}
_IsDecimal = true;
_IgnoreCheck = false;
}
}
}

View File

@@ -4,20 +4,27 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
namespace Dakota.Models.Daten
{
internal class DatenelementCounter : Datenelement
internal class DatenelementCounter : DatenelementFiller
{
public Func<int> Counter { get; private set; }
public DatenelementCounter(string title, int count, Func<int> counter) : base(title, count, Feldart.Muss)
public DatenelementCounter(string title, int count, Func<int> counter) : this(title, count, counter, count)
{
}
public DatenelementCounter(string title, int count, Func<int> counter, int filllen) : base(title, count, filllen)
{
Counter = counter;
}
public void Update()
{
SetFilledIntValue(Counter(), MinStellen);
var value = Counter();
SetValue(value.ToString("D" + MinStellen.ToString()));
}
public override string GetValue()

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Daten
{
internal class DatenelementDateTime : Datenelement
{
public string Format { get; set; }
public DatenelementDateTime(string title, int count, string format, Feldart art) : base(title, count, count, art)
{
_IgnoreCheck = true;
Format = format;
}
public void SetValue(DateTime input)
{
base.SetValue(input.ToString(Format));
}
}
}

View File

@@ -0,0 +1,28 @@
using Dakota.Models.Schlüssels;
using System;
namespace Dakota.Models.Daten
{
internal class DatenelementDecimal : Datenelement
{
public DatenelementDecimal(string title, int min, int max, Feldart art) : base(title, min, max, art)
{
_IgnoreCheck = true;
}
public void SetValue(Decimal input)
{
var dec = input.ToString("#.00").Replace(".", ",");
var tester = Math.Abs(input).ToString("#.00").Replace(".", "");
if (tester.Length < MinStellen || tester.Length > MaxStellen)
{
throw new NotImplementedException("Error Code: 3483091097895");
}
else
{
_Value = dec;
}
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Daten
{
internal class DatenelementFiller : Datenelement
{
public int Value { get; set; }
public int FillLength { get; set; }
public DatenelementFiller(string title, int count, int filllength) : base(title, count, Feldart.Muss)
{
FillLength = filllength;
Title = title;
}
public DatenelementFiller(string title, int min, int max, int filllength) : base(title, min, max, Feldart.Muss)
{
FillLength = filllength;
Title = title;
}
public void SetValue(int value)
{
if (value.ToString().Length > FillLength)
throw new ArgumentOutOfRangeException("length", $"the length of {value} is bigger than len {FillLength}");
Value = value;
SetValue(value.ToString("D" + FillLength.ToString()));
}
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models
namespace Dakota.Models.Daten
{
internal class Datenelementgruppe : Dateneinheit
{

View File

@@ -0,0 +1,56 @@
using BS.Shared.DataContracts;
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;
namespace Dakota.Models.Infos
{
/// <summary>
/// Klasse zum Erzeugen von Dakota Files
/// </summary>
public class DakotaFileInfo
{
private int _Datenaustauschreferenz;
public string Absenderbezeichnung { get; set; }
public string Empfangerbezeichnung { get; set; }
public int Datenaustauschreferenz
{
get { return _Datenaustauschreferenz; }
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht negativ sein");
else if (value == 0)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht gleich null sein");
else if (value > 100000)
throw new ArgumentOutOfRangeException("Datenaustauschreferenz", "Referenz darf nicht größer als 99999 sein");
else if (value == 100000)
value = 1;
_Datenaustauschreferenz = value;
}
}
public DateTime Created { get; set; }
public SchlüsselLeistungserbringerSammelgruppenschlussel Leistungsbereich { get; set; }
public string Anwendungsreferenz { get; set; }
public SchlüsselTestindikator Testindikator { get; set; }
public string IKLeistungserbringers { get; set; }
public string Rechnungsnummer { get; set; }
public DateTime Rechnungsdatum { get; set; }
public SchlüsselSummenstatus Summenstatus00 { get; set; }
public SchlüsselSummenstatus Summenstatus { get; set; }
public decimal Gesamtrechnungsbetrag00 { get; set; }
public decimal Gesamtbruttobetrag00 { get; set; }
public decimal GesamtbetragZuzahlung00 { get; set; }
public decimal Gesamtrechnungsbetrag { get; set; }
public decimal Gesamtbruttobetrag { get; set; }
public decimal GesamtbetragZuzahlung { get; set; }
public SchlüsselRechnungsart Rechnungsart { get; set; }
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
public string Name4 { get; set; }
public SchlüsselVerarbeitungskennzeichen Verarbeitungskennzeichen { get; set; }
}
}

View File

@@ -0,0 +1,66 @@
using Dakota.Models.Schlüssels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Infos
{
public class DakotaInvoiceItemInfo
{
public string IKAbsender { get; set; }
public string IKEmpfänger { get; set; }
public string IKLeistungserbringer { get; set; }
public string IKKrankenkasse { get; set; }
public string IKKVKarte { get; set; }
public string IKKostentrager { get; set; }
public SchlüsselVerarbeitungskennzeichen Verarbeitungskennzeichen { get; set; }
public string VersichtertenVorname { get; set; }
public string VersichtertenNachname { get; set; }
public DateTime VersichtertenGeburtstag { get; set; }
public string VersichtertenStraßeNr { get; set; }
public string VersichtertenPLZ { get; set; }
public string VersichtertenWohnort { get; set; }
public string VersichtertenLanderkennung { get; set; }
public string VersichtertenNummer { get; set; }
public string Versichertenstatus { get; set; }
public SchlüsselBeleginformation Beleginformation { get; set; }
public string Belegnummer { get; set; }
public string EinzelfallIdentifikationsnummer { get; set; }
public SchlüsselAbrechnungscodes EinzelfallAbrechnungscode { get; set; }
public SchlüsselTarifkennzeichen EinzelfallTarifkennzeichen => new SchlüsselTarifkennzeichen(EinzelfallTarifkennzeichenBereich, EinzelfallTarifkennzeichenSondertarif);
public SchlüsselTarifkennzeichenBereich EinzelfallTarifkennzeichenBereich { get; set; }
public SchlüsselTarifkennzeichenSondertarif EinzelfallTarifkennzeichenSondertarif { get; set; }
public SchlüsselPos Abrechnungsposition => new SchlüsselPos(AbrechnungspositionArtDerEinrichtung, AbrechnungspositionBehandlungsart, AbrechnungspositionVergütungsart);
public SchlüsselPosArtDerEinrichtung AbrechnungspositionArtDerEinrichtung { get; set; }
public SchlüsselPosBehandlungsart AbrechnungspositionBehandlungsart { get; set; }
public SchlüsselPosVergütungsart AbrechnungspositionVergütungsart { get; set; }
public decimal EinzelfallAnzahlMenge { get; set; }
public decimal EinzelfallEinzelbetragAbrechnungsposition { get; set; }
public DateTime EinzelfallDatumDerLeistungserbringung { get; set; }
public decimal EinzelfallBetragZuzahlung { get; set; }
public decimal EinzelfallGefahreneKilometer { get; set; }
public DateTime EinzelfallUhrzeit { get; set; }
public DateTime EinzelfallUhrzeitBis { get; set; }
public int EinzelfallDauer { get; set; }
public DateTime EinzelfallVersorgungszeitraum { get; set; }
public DateTime EinzelfallVersorgungszeitraumBis { get; set; }
public string Text { get; set; }
public decimal GesamtbetragBrutto { get; set; }
public decimal GesamtbetragGesetzlicheZuzahlung { get; set; }
public decimal GesamtbetragProzentualeZuzahlung { get; set; }
public decimal PauschalerZuzahlungsbetrag { get; set; }
public decimal GesamtbetragEigenanteil { get; set; }
}
}

View File

@@ -10,7 +10,7 @@ namespace Dakota.Models.Nachrichten
internal abstract class Nachricht : IRow
{
public abstract List<Segment> GetSegments();
public int GetSegmentLength()
{
return GetSegments().Count;

View File

@@ -1,60 +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;
//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 NachrichtSLGA : 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; }
//namespace Dakota.Models.Nachrichten
//{
// /// <summary>
// /// Gesamtaufstellung der
// /// Abrechnung(Rechnung)
// /// </summary>
// internal class NachrichtSLGA : 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 NachrichtSLGA()
{
SegmentFKT = new SegmentSLGAFKT();
SegmentREC = new SegmentSLGAREC();
SegmentUST = new SegmentSLGAUST();
SegmentSKO = new SegmentSLGASKO();
SegmentGES = new SegmentSLGAGES();
SegmentNAM = new SegmentSLGANAM();
}
// public NachrichtSLGA()
// {
// 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 };
}
}
}
// public override List<Segment> GetSegments()
// {
// return new List<Segment>() { SegmentFKT, SegmentREC, SegmentUST, SegmentSKO, SegmentGES, SegmentNAM };
// }
// }
//}

View File

@@ -1,54 +1,54 @@
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;
//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 NachrichtSLGA2 : 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 SegmentSLGAGES SegmentGES { get; set; }
/// <summary>
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
/// </summary>
public SegmentSLGAGES SegmentGES00 { get; set; }
/// <summary>
/// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
/// </summary>
public SegmentSLGANAM SegmentNAM { get; set; }
//namespace Dakota.Models.Nachrichten
//{
// /// <summary>
// /// Gesamtaufstellung der
// /// Abrechnung(Rechnung)
// /// </summary>
// internal class NachrichtSLGA2 : 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 SegmentSLGAGES SegmentGES { get; set; }
// /// <summary>
// /// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
// /// </summary>
// public SegmentSLGAGES SegmentGES00 { get; set; }
// /// <summary>
// /// Das Segment enthält den Namen und die Firmenbezeichnung des Leistungserbringers
// /// </summary>
// public SegmentSLGANAM SegmentNAM { get; set; }
public NachrichtSLGA2()
{
SegmentFKT = new SegmentSLGAFKT();
SegmentREC = new SegmentSLGAREC();
SegmentGES = new SegmentSLGAGES();
SegmentGES00 = new SegmentSLGAGES();
SegmentNAM = new SegmentSLGANAM();
}
// public NachrichtSLGA2()
// {
// SegmentFKT = new SegmentSLGAFKT();
// SegmentREC = new SegmentSLGAREC();
// SegmentGES = new SegmentSLGAGES();
// SegmentGES00 = new SegmentSLGAGES();
// SegmentNAM = new SegmentSLGANAM();
// }
public override List<Segment> GetSegments()
{
return new List<Segment>() { SegmentFKT, SegmentREC, SegmentGES00, SegmentGES, SegmentNAM };
}
}
}
// public override List<Segment> GetSegments()
// {
// return new List<Segment>() { SegmentFKT, SegmentREC, SegmentGES00, SegmentGES, SegmentNAM };
// }
// }
//}

View File

@@ -36,6 +36,10 @@ namespace Dakota.Models.Nachrichten
/// <summary>
/// Das Segment enthält Rechnungssummen (Bruttobetrag, Zuzahlungsbetrag, Nettobetrag je Status).
/// </summary>
public SegmentSLGAGES SegmentGES00 { 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
@@ -48,13 +52,14 @@ namespace Dakota.Models.Nachrichten
SegmentREC = new SegmentSLGAREC();
SegmentUST = new SegmentSLGAUST();
SegmentSKO = new SegmentSLGASKO();
SegmentGES00 = new SegmentSLGAGES();
SegmentGES = new SegmentSLGAGES();
SegmentNAM = new SegmentSLGANAM();
}
public override List<Segment> GetSegments()
{
return new List<Segment>() { SegmentFKT, SegmentREC, SegmentUST, SegmentSKO, SegmentGES, SegmentNAM };
return new List<Segment>() { SegmentFKT, SegmentREC, SegmentUST, SegmentSKO, SegmentGES00, SegmentGES, SegmentNAM };
}
}
}

View File

@@ -1,134 +1,134 @@
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;
//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; }
//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; }
// /// <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();
// 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();
}
// 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
};
}
}
}
// 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,119 +1,119 @@
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;
//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; }
//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();
// public NachrichtSLLA2()
// {
// SegmentSLLAFKT = new SegmentSLLAFKT();
// SegmentSLLAREC = new SegmentSLLAREC();
// SegmentSLLAINV = new SegmentSLLAINV();
// SegmentSLLAURI = new SegmentSLLAURI();
// SegmentSLLANAD = new SegmentSLLANAD();
// SegmentSLLAIMG = new SegmentSLLAIMG();
Abrechnungspositions = new List<Abrechnungsposition>();
// Abrechnungspositions = new List<Abrechnungsposition>();
SegmentSLLAZUV = new SegmentSLLAZUV();
SegmentSLLADIA = new SegmentSLLADIA();
SegmentSLLASKZ = new SegmentSLLASKZ();
SegmentSLLABES = new SegmentSLLABES();
}
// SegmentSLLAZUV = new SegmentSLLAZUV();
// SegmentSLLADIA = new SegmentSLLADIA();
// SegmentSLLASKZ = new SegmentSLLASKZ();
// SegmentSLLABES = new SegmentSLLABES();
// }
public void AddPosition(Abrechnungsposition pos)
{
Abrechnungspositions.Add(pos);
}
// 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 };
// 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());
}
// foreach (var seg in Abrechnungspositions)
// {
// list.AddRange(seg.GetSegments());
// }
list.AddRange(list2);
// list.AddRange(list2);
return list;
}
}
}
// return list;
// }
// }
//}

View File

@@ -1,4 +1,4 @@
using Dakota.Models.Block;
using Dakota.Models.Blocke;
using Dakota.Models.Segmente;
using Dakota.Models.Segmente.SLLA;
using System;
@@ -33,6 +33,8 @@ namespace Dakota.Models.Nachrichten
{
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
Abrechnungsfalle = new List<BlockAbrechnungsfall>();
}
public override List<Segment> GetSegments()

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public abstract class Schlüssel
{

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselAbrechnungscodes : Schlüssel
{
public SchlüsselAbrechnungscodes(string val) : base(val) { }
public static SchlüsselAbrechnungscodes SozialpädiatrischeZentren => new SchlüsselAbrechnungscodes("68");
public static SchlüsselAbrechnungscodes SoziotherapeutischerLeistungserbringer => new SchlüsselAbrechnungscodes("69");
public static SchlüsselAbrechnungscodes SpezialisierteAmbulantePalliativversorgung => new SchlüsselAbrechnungscodes("75");
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselBeleginformation : Schlüssel
{
public SchlüsselBeleginformation(string val) : base(val) { }
public static SchlüsselBeleginformation KeineBeleguebermittlung => new SchlüsselBeleginformation("0");
public static SchlüsselBeleginformation BelegePerPost => new SchlüsselBeleginformation("1");
public static SchlüsselBeleginformation BelegeElektronisch => new SchlüsselBeleginformation("2");
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public class SchlüsselLeistungserbringerSammelgruppenschlussel : Schlüssel
{

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselPos : Schlüssel
{
public SchlüsselPos(SchlüsselPosArtDerEinrichtung s1, SchlüsselPosBehandlungsart s2, SchlüsselPosVergütungsart s3) : base(s1.Value + s2.Value + s3.Value) { }
}
}

View File

@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselPosArtDerEinrichtung : Schlüssel
{
public SchlüsselPosArtDerEinrichtung(string val) : base(val) { }
public static SchlüsselPosArtDerEinrichtung SozialpädiatrischesZentrum => new SchlüsselPosArtDerEinrichtung("01");
public static SchlüsselPosArtDerEinrichtung Frühfördereinrichtung => new SchlüsselPosArtDerEinrichtung("02");
public static SchlüsselPosArtDerEinrichtung integrativerKindergarten => new SchlüsselPosArtDerEinrichtung("03");
public static SchlüsselPosArtDerEinrichtung Tagesstätte => new SchlüsselPosArtDerEinrichtung("04");
public static SchlüsselPosArtDerEinrichtung AmbulanteIntensivförderungseinrichtung => new SchlüsselPosArtDerEinrichtung("05");
public static SchlüsselPosArtDerEinrichtung WohnheimWerkstattFörderstätte => new SchlüsselPosArtDerEinrichtung("06");
public static SchlüsselPosArtDerEinrichtung TagesstättePsychischKranke => new SchlüsselPosArtDerEinrichtung("07");
public static SchlüsselPosArtDerEinrichtung Sonderkindergarten => new SchlüsselPosArtDerEinrichtung("08");
public static SchlüsselPosArtDerEinrichtung Sprachheilambulanz => new SchlüsselPosArtDerEinrichtung("09");
public static SchlüsselPosArtDerEinrichtung Institutsambulanz => new SchlüsselPosArtDerEinrichtung("10");
public static SchlüsselPosArtDerEinrichtung Gebärdendolmetscher => new SchlüsselPosArtDerEinrichtung("11");
public static SchlüsselPosArtDerEinrichtung Hochschulambulanz => new SchlüsselPosArtDerEinrichtung("12");
public static SchlüsselPosArtDerEinrichtung PsychiatrischeHochschulambulanz => new SchlüsselPosArtDerEinrichtung("13");
public static SchlüsselPosArtDerEinrichtung PsychiatrischeInstitutsambulanz => new SchlüsselPosArtDerEinrichtung("14");
public static SchlüsselPosArtDerEinrichtung SoziotherapeutischerLeistungserbringer => new SchlüsselPosArtDerEinrichtung("20");
public static SchlüsselPosArtDerEinrichtung VollstationärePflegeeinrichtung => new SchlüsselPosArtDerEinrichtung("30");
public static SchlüsselPosArtDerEinrichtung EinrichtungEingliederungshilfe => new SchlüsselPosArtDerEinrichtung("31");
public static SchlüsselPosArtDerEinrichtung SonstigeEinrichtung => new SchlüsselPosArtDerEinrichtung("99");
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselPosBehandlungsart : Schlüssel
{
public SchlüsselPosBehandlungsart(string val) : base(val) { }
public static SchlüsselPosBehandlungsart Einzelbehandlung => new SchlüsselPosBehandlungsart("01");
public static SchlüsselPosBehandlungsart Gruppenbehandlung => new SchlüsselPosBehandlungsart("02");
public static SchlüsselPosBehandlungsart Sonstiges => new SchlüsselPosBehandlungsart("09");
}
}

View File

@@ -0,0 +1,166 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselPosVergütungsart : Schlüssel
{
public string FullText { get; set; }
public SchlüsselPosVergütungsart(string val, string full) : base(val)
{
FullText = full;
}
public static SchlüsselPosVergütungsart Pauschale1 => new SchlüsselPosVergütungsart("001", "Pauschale 1");
public static SchlüsselPosVergütungsart Pauschale2 => new SchlüsselPosVergütungsart("002", "Pauschale 2");
public static SchlüsselPosVergütungsart Pauschale3 => new SchlüsselPosVergütungsart("003", "Pauschale 3");
public static SchlüsselPosVergütungsart Pauschale4 => new SchlüsselPosVergütungsart("004", "Pauschale 4");
public static SchlüsselPosVergütungsart Pauschale5 => new SchlüsselPosVergütungsart("005", "Pauschale 5");
public static SchlüsselPosVergütungsart Pauschale6 => new SchlüsselPosVergütungsart("006", "Pauschale 6");
public static SchlüsselPosVergütungsart Pauschale7 => new SchlüsselPosVergütungsart("007", "Pauschale 7");
public static SchlüsselPosVergütungsart Pauschale8 => new SchlüsselPosVergütungsart("008", "Pauschale 8");
public static SchlüsselPosVergütungsart Pauschale9 => new SchlüsselPosVergütungsart("009", "Pauschale 9");
public static SchlüsselPosVergütungsart Pauschale10 => new SchlüsselPosVergütungsart("010", "Pauschale 10");
public static SchlüsselPosVergütungsart Pauschale11 => new SchlüsselPosVergütungsart("011", "Pauschale 11");
public static SchlüsselPosVergütungsart Pauschale12 => new SchlüsselPosVergütungsart("012", "Pauschale 12");
public static SchlüsselPosVergütungsart Pauschale13 => new SchlüsselPosVergütungsart("013", "Pauschale 13");
public static SchlüsselPosVergütungsart Pauschale14 => new SchlüsselPosVergütungsart("014", "Pauschale 14");
public static SchlüsselPosVergütungsart Pauschale15 => new SchlüsselPosVergütungsart("015", "Pauschale 15");
public static SchlüsselPosVergütungsart Pauschale16 => new SchlüsselPosVergütungsart("016", "Pauschale 16");
public static SchlüsselPosVergütungsart Pauschale17 => new SchlüsselPosVergütungsart("017", "Pauschale 17");
public static SchlüsselPosVergütungsart Pauschale18 => new SchlüsselPosVergütungsart("018", "Pauschale 18");
public static SchlüsselPosVergütungsart Pauschale19 => new SchlüsselPosVergütungsart("019", "Pauschale 19");
public static SchlüsselPosVergütungsart Pauschale20 => new SchlüsselPosVergütungsart("020", "Pauschale 20");
public static SchlüsselPosVergütungsart KrankenhilfepauschaleHeilmittel => new SchlüsselPosVergütungsart("021", "Krankenhilfepauschale Heilmittel");
public static SchlüsselPosVergütungsart KrankenhilfepauschaleArzneimittel => new SchlüsselPosVergütungsart("022", "Krankenhilfepauschale Arzneimittel");
public static SchlüsselPosVergütungsart GrundpauschaleJeNeuZuTherapierendenPatienten => new SchlüsselPosVergütungsart("600", "Grundpauschale je neu zu therapierenden Patienten");
public static SchlüsselPosVergütungsart GrundpauschaleNach60Therapiestunde => new SchlüsselPosVergütungsart("601", "Grundpauschale nach 60. Therapiestunde");
public static SchlüsselPosVergütungsart GrundpauschaleNach90Therapiestunde => new SchlüsselPosVergütungsart("602", "Grundpauschale nach 90. Therapiestunde");
public static SchlüsselPosVergütungsart ErstellungEinesBetreuungsplanesUndAbstimmungMitArzt => new SchlüsselPosVergütungsart("603", "Erstellung eines Betreuungsplanes und Abstimmung mit Arzt (60 Minuten)");
public static SchlüsselPosVergütungsart ProbestundeOhneVerordnung60Minuten => new SchlüsselPosVergütungsart("604", "Probestunde ohne Verordnung 60 Minuten");
public static SchlüsselPosVergütungsart ProbestundeOhneVerordnung10Minuten => new SchlüsselPosVergütungsart("605", "Probestunde ohne Verordnung 10 Minuten");
public static SchlüsselPosVergütungsart ProbestundeOhneVerordnung1Minute => new SchlüsselPosVergütungsart("606", "Probestunde ohne Verordnung 1 Minute");
public static SchlüsselPosVergütungsart ProbestundeMitVerordnung60Minuten => new SchlüsselPosVergütungsart("607", "Probestunde mit Verordnung 60 Minuten");
public static SchlüsselPosVergütungsart ProbestundeMitVerordnung10Minuten => new SchlüsselPosVergütungsart("608", "Probestunde mit Verordnung 10 Minuten");
public static SchlüsselPosVergütungsart ProbestundeMitVerordnung1Minute => new SchlüsselPosVergütungsart("609", "Probestunde mit Verordnung 1 Minute");
public static SchlüsselPosVergütungsart Einzelbehandlung60Minuten => new SchlüsselPosVergütungsart("610", "Einzelbehandlung 60 Minuten");
public static SchlüsselPosVergütungsart Einzelbehandlung45Minuten => new SchlüsselPosVergütungsart("611", "Einzelbehandlung 45 Minuten");
public static SchlüsselPosVergütungsart Einzelbehandlung30Minuten => new SchlüsselPosVergütungsart("612", "Einzelbehandlung 30 Minuten");
public static SchlüsselPosVergütungsart Einzelbehandlung10Minuten => new SchlüsselPosVergütungsart("613", "Einzelbehandlung 10 Minuten");
public static SchlüsselPosVergütungsart Einzelbehandlung1Minute => new SchlüsselPosVergütungsart("614", "Einzelbehandlung 1 Minute");
public static SchlüsselPosVergütungsart EinzelbehandlungPerVideotelefonie60Minuten => new SchlüsselPosVergütungsart("615", "Einzelbehandlung per Videotelefonie - 60 Minuten");
public static SchlüsselPosVergütungsart EinzelbehandlungPerVideotelefonie30Minuten => new SchlüsselPosVergütungsart("616", "Einzelbehandlung per Videotelefonie - 30 Minuten");
public static SchlüsselPosVergütungsart EinzelbehandlungPerTelefonie60Minuten => new SchlüsselPosVergütungsart("617", "Einzelbehandlung per Telefonie - 60 Minuten");
public static SchlüsselPosVergütungsart EinzelbehandlungPerTelefonie30Minuten => new SchlüsselPosVergütungsart("618", "Einzelbehandlung per Telefonie - 30 Minuten");
public static SchlüsselPosVergütungsart TherapieeinheitBeiÜberweisungZurIndikationsstellung60Minuten => new SchlüsselPosVergütungsart("620", "Therapieeinheit bei Überweisung zur Indikationsstellung 60 Minuten");
public static SchlüsselPosVergütungsart TherapieeinheitBeiÜberweisungZurIndikationsstellung10Minuten => new SchlüsselPosVergütungsart("621", "Therapieeinheit bei Überweisung zur Indikationsstellung 10 Minuten");
public static SchlüsselPosVergütungsart TherapieeinheitBeiÜberweisungZurIndikationsstellung1Minute => new SchlüsselPosVergütungsart("622", "Therapieeinheit bei Überweisung zur Indikationsstellung 1 Minute");
public static SchlüsselPosVergütungsart GrundpauschaleJeNeuZuTherapierendenPatientenGruppe => new SchlüsselPosVergütungsart("640", "Grundpauschale je neu zu therapierenden Patienten");
public static SchlüsselPosVergütungsart GrundpauschaleAb60Therapiestunde => new SchlüsselPosVergütungsart("641", "Grundpauschale ab 60. Therapiestunde");
public static SchlüsselPosVergütungsart GrundpauschaleAb90Therapiestunde => new SchlüsselPosVergütungsart("642", "Grundpauschale ab 90. Therapiestunde");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten2Teilnehmer => new SchlüsselPosVergütungsart("650", "Gruppenbehandlung 90 Minuten 2 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten3Teilnehmer => new SchlüsselPosVergütungsart("651", "Gruppenbehandlung 90 Minuten 3 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten4Teilnehmer => new SchlüsselPosVergütungsart("652", "Gruppenbehandlung 90 Minuten 4 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten5Teilnehmer => new SchlüsselPosVergütungsart("653", "Gruppenbehandlung 90 Minuten 5 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten6Teilnehmer => new SchlüsselPosVergütungsart("654", "Gruppenbehandlung 90 Minuten 6 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten7Teilnehmer => new SchlüsselPosVergütungsart("655", "Gruppenbehandlung 90 Minuten 7 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten8Teilnehmer => new SchlüsselPosVergütungsart("656", "Gruppenbehandlung 90 Minuten 8 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten9Teilnehmer => new SchlüsselPosVergütungsart("657", "Gruppenbehandlung 90 Minuten 9 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten10Teilnehmer => new SchlüsselPosVergütungsart("658", "Gruppenbehandlung 90 Minuten 10 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten11Teilnehmer => new SchlüsselPosVergütungsart("659", "Gruppenbehandlung 90 Minuten 11 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten12Teilnehmer => new SchlüsselPosVergütungsart("660", "Gruppenbehandlung 90 Minuten 12 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten2bis3Teilnehmer => new SchlüsselPosVergütungsart("670", "Gruppenbehandlung 90 Minuten 2 bis 3 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten2bis4Teilnehmer => new SchlüsselPosVergütungsart("671", "Gruppenbehandlung 90 Minuten 2 bis 4 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten2bis5Personen => new SchlüsselPosVergütungsart("672", "Gruppenbehandlung 90 Minuten 2 bis 5 Personen");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten4bis6Teilnehmer => new SchlüsselPosVergütungsart("673", "Gruppenbehandlung 90 Minuten 4 bis 6 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten5bis7Teilnehmer => new SchlüsselPosVergütungsart("674", "Gruppenbehandlung 90 Minuten 5 bis 7 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten6bis12Personen => new SchlüsselPosVergütungsart("675", "Gruppenbehandlung 90 Minuten 6 bis 12 Personen");
public static SchlüsselPosVergütungsart Gruppenbehandlung90Minuten8bis12Teilnehmer => new SchlüsselPosVergütungsart("676", "Gruppenbehandlung 90 Minuten 8 bis 12 Teilnehmer");
public static SchlüsselPosVergütungsart Gruppenbehandlung60Minuten2bis5Personen => new SchlüsselPosVergütungsart("677", "Gruppenbehandlung 60 Minuten 2 bis 5 Personen");
public static SchlüsselPosVergütungsart Gruppenbehandlung45Minuten2bis5Personen => new SchlüsselPosVergütungsart("678", "Gruppenbehandlung 45 Minuten 2 bis 5 Personen");
public static SchlüsselPosVergütungsart HausbesuchspauschaleFahrtkosten => new SchlüsselPosVergütungsart("690", "Hausbesuchspauschale/Fahrtkosten");
public static SchlüsselPosVergütungsart WegegeldpauschaleWegegebühren => new SchlüsselPosVergütungsart("691", "Wegegeldpauschale/Wegegebühren");
public static SchlüsselPosVergütungsart WegegeldJeKm => new SchlüsselPosVergütungsart("692", "Wegegeld je km");
public static SchlüsselPosVergütungsart FahrkostenÖPNV => new SchlüsselPosVergütungsart("693", "Fahrkosten ÖPNV");
public static SchlüsselPosVergütungsart BesuchspauschaleFürFahrtenBis15KmEinfach => new SchlüsselPosVergütungsart("694", "Besuchspauschale für Fahrten bis 15 km (einfach)");
public static SchlüsselPosVergütungsart BesuchspauschaleFürFahrtenÜber15KmEinfach => new SchlüsselPosVergütungsart("695", "Besuchspauschale für Fahrten über 15 km (einfach)");
public static SchlüsselPosVergütungsart KHVermeidung01bis03Tage => new SchlüsselPosVergütungsart("680", "KH Vermeidung 01 bis 03 Tage");
public static SchlüsselPosVergütungsart KHVermeidung04bis12Tage => new SchlüsselPosVergütungsart("681", "KH Vermeidung 04 bis 12 Tage");
public static SchlüsselPosVergütungsart KHVermeidung13bis21Tage => new SchlüsselPosVergütungsart("682", "KH Vermeidung 13 bis 21 Tage");
public static SchlüsselPosVergütungsart KHVermeidung22bis29Tage => new SchlüsselPosVergütungsart("683", "KH Vermeidung 22 bis 29 Tage");
public static SchlüsselPosVergütungsart KHVermeidung30bis34Tage => new SchlüsselPosVergütungsart("684", "KH Vermeidung 30 bis 34 Tage");
public static SchlüsselPosVergütungsart KHVermeidung35undmehrTage => new SchlüsselPosVergütungsart("685", "KH Vermeidung 35 und mehr Tage");
public static SchlüsselPosVergütungsart BesuchspauschalenFürFahrtenBis20Km => new SchlüsselPosVergütungsart("686", "Besuchspauschalen für Fahrten bis 20 km");
public static SchlüsselPosVergütungsart BesuchspauschalenFürFahrtenÜber20Km => new SchlüsselPosVergütungsart("687", "Besuchspauschalen für Fahrten über 20 km");
public static SchlüsselPosVergütungsart Teamgespräch => new SchlüsselPosVergütungsart("901", "Teamgespräch");
public static SchlüsselPosVergütungsart MobileBehandlung => new SchlüsselPosVergütungsart("902", "Mobile Behandlung");
public static SchlüsselPosVergütungsart TeamgesprächKrankengymnastik => new SchlüsselPosVergütungsart("903", "Teamgespräch Krankengymnastik");
public static SchlüsselPosVergütungsart TeamgesprächLogopädie => new SchlüsselPosVergütungsart("904", "Teamgespräch Logopädie");
public static SchlüsselPosVergütungsart TeamgesprächErgotherapie => new SchlüsselPosVergütungsart("905", "Teamgespräch Ergotherapie");
public static SchlüsselPosVergütungsart TeamgesprächsaufschlagJeTherapietagKrankengymnastik => new SchlüsselPosVergütungsart("910", "Teamgesprächsaufschlag je Therapietag Krankengymnastik");
public static SchlüsselPosVergütungsart TeamgesprächsaufschlagJeTherapietagLogopädie => new SchlüsselPosVergütungsart("912", "Teamgesprächsaufschlag je Therapietag Logopädie");
public static SchlüsselPosVergütungsart TeamgesprächsaufschlagJeTherapietagErgotherapie => new SchlüsselPosVergütungsart("914", "Teamgesprächsaufschlag je Therapietag Ergotherapie");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungKrankengymnastik => new SchlüsselPosVergütungsart("916", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines Patienten in seiner Wohnung (Krankengymnastik)");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungLogopädie => new SchlüsselPosVergütungsart("918", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines Patienten in seiner Wohnung (Logopädie)");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungErgotherapie => new SchlüsselPosVergütungsart("920", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines Patienten in seiner Wohnung (Ergotherapie)");
public static SchlüsselPosVergütungsart KilometerpauschaleFürÄrztlichVerordneteHausbesuche => new SchlüsselPosVergütungsart("921", "Kilometerpauschale für ärztlich verordnete Hausbesuche");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientKrankengymnastik => new SchlüsselPosVergütungsart("922", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines oder mehrerer Patienten in derselben sozialen Einrichtung (z. B. Pflegeheime etc.) an einem Tag - je Patient (Krankengymnastik)");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientLogopädie => new SchlüsselPosVergütungsart("924", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines oder mehrerer Patienten in derselben sozialen Einrichtung (z. B. Pflegeheime etc.) an einem Tag - je Patient (Logopädie)");
public static SchlüsselPosVergütungsart AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientErgotherapie => new SchlüsselPosVergütungsart("926", "Abrechungspauschale für den verordneten Hausbesuch inklusive Wegegeld eines oder mehrerer Patienten in derselben sozialen Einrichtung (z. B. Pflegeheime etc.) an einem Tag - je Patient (Ergotherapie)");
public static SchlüsselPosVergütungsart VergütungNach132gSGBVPauschale => new SchlüsselPosVergütungsart("927", "Vergütung nach § 132g SGB V Pauschale");
public static List<SchlüsselPosVergütungsart> Pauschalen = new List<SchlüsselPosVergütungsart>()
{
Pauschale1, Pauschale2, Pauschale3, Pauschale4, Pauschale5, Pauschale6, Pauschale7, Pauschale8,
Pauschale9, Pauschale10, Pauschale11, Pauschale12, Pauschale13, Pauschale14, Pauschale15, Pauschale16,
Pauschale17, Pauschale18, Pauschale19, Pauschale20, KrankenhilfepauschaleHeilmittel, KrankenhilfepauschaleArzneimittel
};
public static List<SchlüsselPosVergütungsart> SozioEinzel = new List<SchlüsselPosVergütungsart>()
{
GrundpauschaleJeNeuZuTherapierendenPatienten, GrundpauschaleNach60Therapiestunde, GrundpauschaleNach90Therapiestunde,
ErstellungEinesBetreuungsplanesUndAbstimmungMitArzt, ProbestundeOhneVerordnung60Minuten, ProbestundeOhneVerordnung10Minuten,
ProbestundeOhneVerordnung1Minute, ProbestundeMitVerordnung60Minuten, ProbestundeMitVerordnung10Minuten, ProbestundeMitVerordnung1Minute,
Einzelbehandlung60Minuten, Einzelbehandlung45Minuten, Einzelbehandlung30Minuten, Einzelbehandlung10Minuten, Einzelbehandlung1Minute,
EinzelbehandlungPerVideotelefonie60Minuten, EinzelbehandlungPerVideotelefonie30Minuten, EinzelbehandlungPerTelefonie60Minuten, EinzelbehandlungPerTelefonie30Minuten,
TherapieeinheitBeiÜberweisungZurIndikationsstellung60Minuten, TherapieeinheitBeiÜberweisungZurIndikationsstellung10Minuten, TherapieeinheitBeiÜberweisungZurIndikationsstellung1Minute
};
public static List<SchlüsselPosVergütungsart> SozioGruppe = new List<SchlüsselPosVergütungsart>()
{
GrundpauschaleJeNeuZuTherapierendenPatientenGruppe, GrundpauschaleAb60Therapiestunde, GrundpauschaleAb90Therapiestunde, Gruppenbehandlung90Minuten2Teilnehmer,
Gruppenbehandlung90Minuten3Teilnehmer, Gruppenbehandlung90Minuten4Teilnehmer, Gruppenbehandlung90Minuten5Teilnehmer, Gruppenbehandlung90Minuten6Teilnehmer,
Gruppenbehandlung90Minuten7Teilnehmer, Gruppenbehandlung90Minuten8Teilnehmer, Gruppenbehandlung90Minuten9Teilnehmer, Gruppenbehandlung90Minuten10Teilnehmer,
Gruppenbehandlung90Minuten11Teilnehmer, Gruppenbehandlung90Minuten12Teilnehmer, Gruppenbehandlung90Minuten2bis3Teilnehmer, Gruppenbehandlung90Minuten2bis4Teilnehmer,
Gruppenbehandlung90Minuten2bis5Personen, Gruppenbehandlung90Minuten4bis6Teilnehmer, Gruppenbehandlung90Minuten5bis7Teilnehmer, Gruppenbehandlung90Minuten6bis12Personen,
Gruppenbehandlung90Minuten8bis12Teilnehmer, Gruppenbehandlung60Minuten2bis5Personen, Gruppenbehandlung45Minuten2bis5Personen
};
public static List<SchlüsselPosVergütungsart> SozioSonst = new List<SchlüsselPosVergütungsart>()
{
HausbesuchspauschaleFahrtkosten, WegegeldpauschaleWegegebühren, WegegeldJeKm, FahrkostenÖPNV, BesuchspauschaleFürFahrtenBis15KmEinfach,
BesuchspauschaleFürFahrtenÜber15KmEinfach, KHVermeidung01bis03Tage, KHVermeidung04bis12Tage, KHVermeidung13bis21Tage, KHVermeidung22bis29Tage, KHVermeidung30bis34Tage,
KHVermeidung35undmehrTage, BesuchspauschalenFürFahrtenBis20Km, BesuchspauschalenFürFahrtenÜber20Km
};
public static List<SchlüsselPosVergütungsart> Sonstiges = new List<SchlüsselPosVergütungsart>()
{
Teamgespräch, MobileBehandlung, TeamgesprächKrankengymnastik, TeamgesprächLogopädie, TeamgesprächErgotherapie, TeamgesprächsaufschlagJeTherapietagKrankengymnastik,
TeamgesprächsaufschlagJeTherapietagLogopädie, TeamgesprächsaufschlagJeTherapietagErgotherapie,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungKrankengymnastik,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungLogopädie,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesPatientenInSeinerWohnungErgotherapie, KilometerpauschaleFürÄrztlichVerordneteHausbesuche,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientKrankengymnastik,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientLogopädie,
AbrechungspauschaleFürDenVerordnetenHausbesuchInklusiveWegegeldEinesOderMehrererPatientenInDerselbenSozialenEinrichtungAnEinemTagJePatientErgotherapie,
VergütungNach132gSGBVPauschale
};
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public class SchlüsselRechnungsart : Schlüssel
{

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public class SchlüsselSummenstatus : Schlüssel
{

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselTarifkennzeichen : Schlüssel
{
public SchlüsselTarifkennzeichen(SchlüsselTarifkennzeichenBereich bereich, SchlüsselTarifkennzeichenSondertarif sonder) : base(bereich.Value + sonder.Value)
{
}
}
}

View File

@@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselTarifkennzeichenBereich : Schlüssel
{
public SchlüsselTarifkennzeichenBereich(string val) : base(val) { }
public static SchlüsselTarifkennzeichenBereich Bundeseinheitlich => new SchlüsselTarifkennzeichenBereich("00");
public static SchlüsselTarifkennzeichenBereich BadenWürtenberg => new SchlüsselTarifkennzeichenBereich("01");
public static SchlüsselTarifkennzeichenBereich Bayern => new SchlüsselTarifkennzeichenBereich("02");
public static SchlüsselTarifkennzeichenBereich BerlinOst => new SchlüsselTarifkennzeichenBereich("03");
public static SchlüsselTarifkennzeichenBereich Bremen => new SchlüsselTarifkennzeichenBereich("04");
public static SchlüsselTarifkennzeichenBereich Hamburg => new SchlüsselTarifkennzeichenBereich("05");
public static SchlüsselTarifkennzeichenBereich Hessen => new SchlüsselTarifkennzeichenBereich("06");
public static SchlüsselTarifkennzeichenBereich Niedersachsen => new SchlüsselTarifkennzeichenBereich("07");
public static SchlüsselTarifkennzeichenBereich NordRheinWestfalen => new SchlüsselTarifkennzeichenBereich("08");
public static SchlüsselTarifkennzeichenBereich RheinlandPfalz => new SchlüsselTarifkennzeichenBereich("09");
public static SchlüsselTarifkennzeichenBereich Saarland => new SchlüsselTarifkennzeichenBereich("10");
public static SchlüsselTarifkennzeichenBereich SchleswigHolstein => new SchlüsselTarifkennzeichenBereich("11");
public static SchlüsselTarifkennzeichenBereich Brandenburg => new SchlüsselTarifkennzeichenBereich("12");
public static SchlüsselTarifkennzeichenBereich Sachsen => new SchlüsselTarifkennzeichenBereich("13");
public static SchlüsselTarifkennzeichenBereich SachsenAnhalt => new SchlüsselTarifkennzeichenBereich("14");
public static SchlüsselTarifkennzeichenBereich MecklenburgVorpommern => new SchlüsselTarifkennzeichenBereich("15");
public static SchlüsselTarifkennzeichenBereich Thüringen => new SchlüsselTarifkennzeichenBereich("16");
public static SchlüsselTarifkennzeichenBereich StuttgartKarlsruhe => new SchlüsselTarifkennzeichenBereich("17");
public static SchlüsselTarifkennzeichenBereich FreiburgTübingen => new SchlüsselTarifkennzeichenBereich("18");
public static SchlüsselTarifkennzeichenBereich BerlinWest => new SchlüsselTarifkennzeichenBereich("19");
public static SchlüsselTarifkennzeichenBereich Nordrhein => new SchlüsselTarifkennzeichenBereich("20");
public static SchlüsselTarifkennzeichenBereich WestfalenLippe => new SchlüsselTarifkennzeichenBereich("21");
public static SchlüsselTarifkennzeichenBereich Lippe => new SchlüsselTarifkennzeichenBereich("22");
public static SchlüsselTarifkennzeichenBereich BerlinGesamt => new SchlüsselTarifkennzeichenBereich("23");
public static SchlüsselTarifkennzeichenBereich BundeseinheitlicherTarifWest => new SchlüsselTarifkennzeichenBereich("24");
public static SchlüsselTarifkennzeichenBereich BundeseinheitlicherTarifOst => new SchlüsselTarifkennzeichenBereich("25");
public static SchlüsselTarifkennzeichenBereich Bundesvertrag => new SchlüsselTarifkennzeichenBereich("50");
public static SchlüsselTarifkennzeichenBereich BadenWürttemberg => new SchlüsselTarifkennzeichenBereich("51");
public static SchlüsselTarifkennzeichenBereich Bayern2 => new SchlüsselTarifkennzeichenBereich("52");
public static SchlüsselTarifkennzeichenBereich BerlinOst2 => new SchlüsselTarifkennzeichenBereich("53");
public static SchlüsselTarifkennzeichenBereich Bremen2 => new SchlüsselTarifkennzeichenBereich("54");
public static SchlüsselTarifkennzeichenBereich Hamburg2 => new SchlüsselTarifkennzeichenBereich("55");
public static SchlüsselTarifkennzeichenBereich Hessen2 => new SchlüsselTarifkennzeichenBereich("56");
public static SchlüsselTarifkennzeichenBereich Niedersachsen2 => new SchlüsselTarifkennzeichenBereich("57");
public static SchlüsselTarifkennzeichenBereich NordRheinWestfalen2 => new SchlüsselTarifkennzeichenBereich("58");
public static SchlüsselTarifkennzeichenBereich RheinlandPfalz2 => new SchlüsselTarifkennzeichenBereich("59");
public static SchlüsselTarifkennzeichenBereich Saarland2 => new SchlüsselTarifkennzeichenBereich("60");
public static SchlüsselTarifkennzeichenBereich SchleswigHolstein2 => new SchlüsselTarifkennzeichenBereich("61");
public static SchlüsselTarifkennzeichenBereich Brandenburg2 => new SchlüsselTarifkennzeichenBereich("62");
public static SchlüsselTarifkennzeichenBereich Sachsen2 => new SchlüsselTarifkennzeichenBereich("63");
public static SchlüsselTarifkennzeichenBereich SachsenAnhalt2 => new SchlüsselTarifkennzeichenBereich("64");
public static SchlüsselTarifkennzeichenBereich MecklenburgVorpommern2 => new SchlüsselTarifkennzeichenBereich("65");
public static SchlüsselTarifkennzeichenBereich Thüringen2 => new SchlüsselTarifkennzeichenBereich("66");
public static SchlüsselTarifkennzeichenBereich StuttgartKarlsruhe2 => new SchlüsselTarifkennzeichenBereich("67");
public static SchlüsselTarifkennzeichenBereich FreiburgTübingen2 => new SchlüsselTarifkennzeichenBereich("68");
public static SchlüsselTarifkennzeichenBereich BerlinWest2 => new SchlüsselTarifkennzeichenBereich("69");
public static SchlüsselTarifkennzeichenBereich Nordrhein2 => new SchlüsselTarifkennzeichenBereich("70");
public static SchlüsselTarifkennzeichenBereich WestfalenLippe2 => new SchlüsselTarifkennzeichenBereich("71");
public static SchlüsselTarifkennzeichenBereich Lippe2 => new SchlüsselTarifkennzeichenBereich("72");
public static SchlüsselTarifkennzeichenBereich BerlinGesamt2 => new SchlüsselTarifkennzeichenBereich("73");
public static SchlüsselTarifkennzeichenBereich BundeseinheitlicherTarifWest2 => new SchlüsselTarifkennzeichenBereich("74");
public static SchlüsselTarifkennzeichenBereich BundeseinheitlicherTarifOst2 => new SchlüsselTarifkennzeichenBereich("75");
public static SchlüsselTarifkennzeichenBereich SonstigeländerübergreifenderTarig => new SchlüsselTarifkennzeichenBereich("90");
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssels
{
public class SchlüsselTarifkennzeichenSondertarif : Schlüssel
{
public SchlüsselTarifkennzeichenSondertarif(string val) : base(val) { }
public static SchlüsselTarifkennzeichenSondertarif OhneBesonderheiten => new SchlüsselTarifkennzeichenSondertarif("000");
public static SchlüsselTarifkennzeichenSondertarif NichtBesetzt => new SchlüsselTarifkennzeichenSondertarif("091");
public static SchlüsselTarifkennzeichenSondertarif LeistungOhnePreislicheRegelung => new SchlüsselTarifkennzeichenSondertarif("099");
public static SchlüsselTarifkennzeichenSondertarif NichtBesetzt2 => new SchlüsselTarifkennzeichenSondertarif("U00");
public static SchlüsselTarifkennzeichenSondertarif Sondertarigvereinbarungen => new SchlüsselTarifkennzeichenSondertarif("err");
}
}

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public class SchlüsselTestindikator : Schlüssel
{

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Schlüssel
namespace Dakota.Models.Schlüssels
{
public class SchlüsselVerarbeitungskennzeichen : Schlüssel
{

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -35,7 +36,7 @@ namespace Dakota.Models.Segmente.SLGA
/// Bei Verarbeitungskennzeichen „03“:
/// Entspricht dem Wert aus GES.Gesamtbetrag Zuzahlung und/oder Eigenanteil und/oder Pauschale Korrekturbetrag.
/// </summary>
public Datenelement Gesamtrechnungsbetrag { get; private set; }
public DatenelementDecimal Gesamtrechnungsbetrag { get; private set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“,
/// „02“ und „04“:
@@ -46,7 +47,7 @@ namespace Dakota.Models.Segmente.SLGA
/// Ist der Gesamtbruttobetrag mit 0,00
/// zu übermitteln.
/// </summary>
public Datenelement Gesamtbruttobetrag { get; private set; }
public DatenelementDecimal Gesamtbruttobetrag { get; private set; }
/// <summary>
/// Bei Verarbeitungskennzeichen „01“
/// und „02“:
@@ -65,14 +66,14 @@ namespace Dakota.Models.Segmente.SLGA
/// Berechnungsregel:
/// Summe aller Abrechnungsfälle(BES.Gesambetrag gesetzliche Zuzahlung + BES.Gesamtbetrag Eigenanteil + BES.Pauschale Korrekturbetrag).
/// </summary>
public Datenelement GesamtbetragZuzahlung { get; private set; }
public DatenelementDecimal GesamtbetragZuzahlung { get; private set; }
public SegmentSLGAGES()
{
Status = new Datenelement("Status", 2, Feldart.Muss);
Gesamtrechnungsbetrag = new Datenelement("Gesamtrechnungsbetrag", 3, 13, Feldart.Muss);
Gesamtbruttobetrag = new Datenelement("Gesamtbruttobetrag", 3, 13, Feldart.Muss);
GesamtbetragZuzahlung = new Datenelement("GesamtbetragZuzahlung", 3, 13, Feldart.Kann);
Gesamtrechnungsbetrag = new DatenelementDecimal("Gesamtrechnungsbetrag", 3, 13, Feldart.Muss);
Gesamtbruttobetrag = new DatenelementDecimal("Gesamtbruttobetrag", 3, 13, Feldart.Muss);
GesamtbetragZuzahlung = new DatenelementDecimal("GesamtbetragZuzahlung", 3, 13, Feldart.Kann);
}
public override string GetHead() => "GES";

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -57,7 +58,7 @@ namespace Dakota.Models.Segmente.SLGA
/// <summary>
/// Rechnungsdatum JJJJMMTT
/// </summary>
public Datenelement Datum { get; private set; }
public DatenelementDateTime Datum { get; private set; }
/// <summary>
/// Siehe Schlüssel Rechnungsart
/// Anlage 3 Abschnitt 8.1.4.
@@ -72,7 +73,7 @@ namespace Dakota.Models.Segmente.SLGA
Rechnungsnummer = new Datenelementgruppe("Rechnungsnummer", 2);
SammelRechnungsnummer = Rechnungsnummer.Datenelemente[0] = new Datenelement("SammelRechnungsnummer", 0, 14, Feldart.Muss);
EinzelRechnungsnummer = Rechnungsnummer.Datenelemente[1] = new Datenelement("EinzelRechnungsnummer", 0, 6, Feldart.Muss);
Datum = new Datenelement("Datum", 8, Feldart.Muss);
Datum = new DatenelementDateTime("Datum", 8, "yyyyMMdd", Feldart.Muss);
Rechnungsart = new Datenelement("Rechnungsart", 1, Feldart.Muss);
}

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -17,7 +18,7 @@ namespace Dakota.Models.Segmente.SLLA
/// Berechnungsregel:
/// Summe über alle Abrechnungspositionen des Abrechnungsfalls von:
/// (((ENF.Einzelbetrag der Abrechnungsposition mal ENF.Anzahl/Menge) plus ggf.MWS.Betrag
/// Mehrwertsteuer)) kaufmännisch gerundet).
/// Mehrwertsteuer)) kaufmännisch gerundet).
/// </summary>
public DatenelementDecimal GesamtbetragBrutto { get; private set; }
/// <summary>
@@ -25,32 +26,32 @@ namespace Dakota.Models.Segmente.SLLA
/// Berechnungsregel:
/// Summe
/// (BES.Gesamtbetrag prozentuale Zuzahlung je Abrechnungsfall
/// +BES.PauschalerZuzahlungsbetrag je
/// +BES.PauschalerZuzahlungsbetrag je
/// Abrechnungsfall
/// +(Summe über alle Leistungen
/// (ZUZ.Betrag Gesetzliche Zuzahlung))
/// </summary>
public DatenelementDecimal GesamtbetragGesetzlicheZuzahlung { get; private set; }
/// <summary>
/// <summary>
/// Gesamtbetrag prozentuale Zuzahlung je Abrechnungsfall.
/// Berechnungsregel:
/// Summe über alle Abrechnungspositionen des Abrechnungsfalls von:
/// (ENF.Betrag der Zuzahlung mal
/// ENF.Anzahl/Menge) kaufmännisch
/// ENF.Anzahl/Menge) kaufmännisch
/// gerundet
/// </summary>
public DatenelementDecimal GesamtbetragProzentualeZuzahlung { get; private set; }
/// <summary>
/// Pauschaler Zuzahlungsbetrag je Abrechnungsfall (Verordnungsblatt).
/// 10 Euro maximal, jedoch höchstens
/// 10 Euro maximal, jedoch höchstens
/// die Differenz Gesamtbetrag Brutto
/// abzüglich Gesamtbetrag prozentuale Zuzahlung
/// </summary>
public Datenelement PauschalerZuzahlungsbetrag { get; private set; }
/// <summary>
/// Gesamtbetrag Eigenanteil
/// Berechnungsregel:
/// Summe über alle Abrechnungspositionen(ZUZ.Betrag Eigenanteil).
public DatenelementDecimal PauschalerZuzahlungsbetrag { get; private set; }
/// <summary>
/// Gesamtbetrag Eigenanteil
/// Berechnungsregel:
/// Summe über alle Abrechnungspositionen(ZUZ.Betrag Eigenanteil).
/// </summary>
public DatenelementDecimal GesamtbetragEigenanteil { get; private set; }

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
namespace Dakota.Models.Segmente.SLLA
{
@@ -56,7 +58,7 @@ namespace Dakota.Models.Segmente.SLLA
/// am selben Tag erbracht worden
/// sind. Andernfalls ist für jeden Tag
/// der Leistungserbringung ein eigenes
/// ENF-Segment zu erstellen.
/// ENF-Segment zu erstellen.
/// </summary>
public DatenelementDecimal AnzahlMenge { get; private set; }
/// <summary>
@@ -66,12 +68,12 @@ namespace Dakota.Models.Segmente.SLLA
/// der Nettopreis in ENF anzugeben
/// und das Segment MWS zu füllen. Ist
/// der Einzelpreis inklusive MwSt. vereinbart, ist dieser in ENF anzugeben
/// und kein Segment MWS anzugeben
/// und kein Segment MWS anzugeben
/// </summary>
public DatenelementDecimal EinzelbetragAbrechnungsposition { get; private set; }
/// <summary>
/// Tag der Leistungserbringung
/// (JJJJMMTT).
/// (JJJJMMTT).
/// </summary>
public DatenelementDateTime DatumLeistungserbringung { get; private set; }
/// <summary>
@@ -84,7 +86,7 @@ namespace Dakota.Models.Segmente.SLLA
/// * Der Betrag Mehrwertsteuer ist auf
/// die einzelne Position mit dem Mengenfaktor 1 herunterzurechnen und
/// kaufmännisch zu runden.
/// (Der ermittelte Betrag ist kaufmännisch zu runden).
/// (Der ermittelte Betrag ist kaufmännisch zu runden).
/// </summary>
public DatenelementDecimal BetragZuzahlung { get; private set; }
@@ -93,10 +95,10 @@ namespace Dakota.Models.Segmente.SLLA
Identifikationsnummer = new Datenelement("Identifikationsnummer", 0, 3, Feldart.Kann);
Leistungserbringergruppe = new Datenelementgruppe("Leistungserbringergruppe", 2);
Abrechnungscode = Leistungserbringergruppe.Datenelemente[0] = new Datenelement("Abrechnungscode", 2, Feldart.Muss);
Tarifkennzeichen = Leistungserbringergruppe.Datenelemente[1] = new Datenelement("Tarifkennzeichen", 5, Feldart.Muss);
ArtLeistung = new Datenelement("ArtLeistung", 0, 10, Feldart.Muss);
AnzahlMenge = new Datenelement("AnzahlMenge", 3, 7, Feldart.Muss);
EinzelbetragAbrechnungsposition = new Datenelement("EinzelbetragAbrechnungsposition", 3, 13, Feldart.Muss);
Tarifkennzeichen = Leistungserbringergruppe.Datenelemente[1] = new Datenelement("Tarifkennzeichen", 5, Feldart.Muss);
ArtLeistung = new Datenelement("ArtLeistung", 0, 10, Feldart.Muss);
AnzahlMenge = new DatenelementDecimal("AnzahlMenge", 3, 7, Feldart.Muss);
EinzelbetragAbrechnungsposition = new DatenelementDecimal("EinzelbetragAbrechnungsposition", 3, 13, Feldart.Muss);
DatumLeistungserbringung = new DatenelementDateTime("DatumLeistungserbringung", 8, "yyyyMMdd", Feldart.Muss);
BetragZuzahlung = new DatenelementDecimal("BetragZuzahlung", 3, 13, Feldart.Kann);
}

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -41,7 +42,7 @@ namespace Dakota.Models.Segmente.SLLA
/// zwingend anzugeben.Diese Angabe ist
/// identisch mit SLGA.FKT.IK der Krankenkasse der zugehörigen SLGA-Nachricht als Gesamtrechnung.
/// </summary>
public Datenelement IKKrankenkasse { get; private set; }
public Datenelement IKKVKarte { get; private set; }
/// <summary>
/// IK des Rechnungsstellers, ist nur anzugeben, wenn die Abrechnung durch
/// eine Abrechnungsstelle mit Inkassovollmacht erfolgt.In diesem Fall muss
@@ -55,12 +56,12 @@ namespace Dakota.Models.Segmente.SLLA
Freifeld = new Datenelement("Freifeld", 1, Feldart.Kann);
IKLeistungserbringers = new Datenelement("IKLeistungserbringers", 9, Feldart.Muss);
IKKostenträgers = new Datenelement("IKKostenträgers", 9, Feldart.Muss);
IKKrankenkasse = new Datenelement("IKKrankenkasse", 9, Feldart.Muss);
IKKVKarte = new Datenelement("IKKVKarte", 9, Feldart.Muss);
IKRechnungsstellers = new Datenelement("IKRechnungsstellers", 9, Feldart.Kann);
}
public override string GetHead() => "FKT";
public override List<Dateneinheit> GetBody()
=> new List<Dateneinheit>() { Verarbeitungskennzeichen, Freifeld, IKLeistungserbringers, IKKostenträgers, IKKrankenkasse, IKRechnungsstellers };
=> new List<Dateneinheit>() { Verarbeitungskennzeichen, Freifeld, IKLeistungserbringers, IKKostenträgers, IKKVKarte, IKRechnungsstellers };
}
}

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -27,7 +28,7 @@ namespace Dakota.Models.Segmente.SLLA
/// „0000“ für nicht bekannte Geburtstage und Geburtsmonate verwendet
/// werden.
/// </summary>
public Datenelement Geburtsdatum { get; private set; }
public DatenelementDateTime Geburtsdatum { get; private set; }
/// <summary>
/// Die Anschrift ist zwingend anzugeben, sofern die Versichertennummer/Versichertenstatus nicht bekannt ist.
/// </summary>
@@ -53,7 +54,7 @@ namespace Dakota.Models.Segmente.SLLA
{
Nachname = new Datenelement("Nachname", 0, 47, Feldart.Muss);
Vorname = new Datenelement("Vorname", 0, 30, Feldart.Muss);
Geburtsdatum = new Datenelement("Geburtsdatum", 8, Feldart.Muss);
Geburtsdatum = new DatenelementDateTime("Geburtsdatum", 8, "yyyyMMdd", Feldart.Muss);
StraßeNr = new Datenelement("StraßeNr", 0, 30, Feldart.Kann);
PLZ = new Datenelement("PLZ", 0, 7, Feldart.Kann);
Wohnort = new Datenelement("Wohnort", 0, 25, Feldart.Kann);

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Dakota.Models.Daten;
using System.Collections.Generic;
namespace Dakota.Models.Segmente.SLLA
{

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -16,17 +17,17 @@ namespace Dakota.Models.Segmente.SLLA
/// Anzahl der gefahrenen Kilometer/
/// bzw.anteilige Kilometer.Das Datenfeld enthält Angaben über die Kilometeranzahl, die z.B. in einer Pauschale abgerechnet werden. Sofern
/// Einzelkilometer abgerechnet werden, sind diese im Datenfeld Anzahl/Menge in ENF angegeben.
/// </summary>
/// </summary>
public DatenelementDecimal GefahreneKilometer { get; private set; }
/// <summary>
/// HHMM (Wertebereich HH 00 bis 23,
/// MM 00 bis 59)
/// </summary>
/// </summary>
public DatenelementDateTime Uhrzeit { get; private set; }
/// <summary>
/// HHMM (Wertebereich HH 00 bis 23,
/// MM 00 bis 59)
/// </summary>
/// </summary>
public DatenelementDateTime UhrzeitBis { get; private set; }
/// <summary>
/// Zeitangabe in Minuten.
@@ -35,21 +36,21 @@ namespace Dakota.Models.Segmente.SLLA
/// <summary>
/// JJJJMMTT. Beginn des Versorgungszeitraumes.
/// Angabe erfolgt soweit vorgesehen
/// bzw.vertraglich vereinbart
/// bzw.vertraglich vereinbart
/// </summary>
public DatenelementDateTime VersorgungszeitraumVon { get; private set; }
/// <summary>
/// JJJJMMTT. Ende des Versorgungszeitraumes.
/// Angabe erfolgt soweit vorgesehen
/// Angabe erfolgt soweit vorgesehen
/// bzw.vertraglich vereinbart
/// Das Feld "Versorgungszeitraum bis"
/// ist zwingend anzugeben, wenn das
/// Feld "Versorgungszeitraum von"
/// vorhanden ist.
/// </summary>
/// Feld "Versorgungszeitraum von"
/// vorhanden ist.
/// </summary>
public DatenelementDateTime VersorgungszeitraumBis { get; private set; }
public SegmentSLLASUT()
public SegmentSLLASUT()
{
GefahreneKilometer = new DatenelementDecimal("GefahreneKilometer", 0, 6, Feldart.Kann);
Uhrzeit = new DatenelementDateTime("Uhrzeit", 4, "HHmm", Feldart.Kann);

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Dakota.Models.Daten;
using System.Collections.Generic;
namespace Dakota.Models.Segmente.SLLA
{

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Dakota.Models.Daten;
using System.Collections.Generic;
namespace Dakota.Models.Segmente.SLLA
{

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
namespace Dakota.Models.Segmente
{
@@ -44,11 +46,11 @@ namespace Dakota.Models.Segmente
/// <summary>
/// Erstelldatum der Datei
/// </summary>
public Datenelement Datum { get; private set; }
public DatenelementDateTime Datum { get; private set; }
/// <summary>
/// Erstelluhrzeit der Datei
/// </summary>
public Datenelement Uhrzeit { get; private set; }
public DatenelementDateTime Uhrzeit { get; private set; }
/// <summary>
/// Ab Version 12 ist die Datenaustauschreferenz zwingend zu füllen.
/// Genutzt werden die ersten 5 Stellen;
@@ -58,7 +60,7 @@ namespace Dakota.Models.Segmente
/// Bei Überlauf der Datenaustauschreferenz („99999“) ist wieder
/// bei Eins(„00001“) zu beginnen
/// </summary>
public Datenelement Datenaustauschreferenz { get; private set; }
public DatenelementFiller Datenaustauschreferenz { get; private set; }
/// <summary>
/// Einzutragen ist der Leistungserbringer-Sammelgruppenschlüssel,
/// siehe Schlüssel Anlage 3 Abschnitt 8.1.14
@@ -85,9 +87,9 @@ namespace Dakota.Models.Segmente
Absenderdatei = new Datenelement("Absenderdatei", 0, 35, Feldart.Muss);
Empfangdatei = new Datenelement("Empfangdatei", 0, 35, Feldart.Muss);
DatumUhrzeit = new Datenelementgruppe("DatumUhrzeit", 2);
Datum = DatumUhrzeit.Datenelemente[0] = new Datenelement("Datum", 8, Feldart.Muss);
Uhrzeit = DatumUhrzeit.Datenelemente[1] = new Datenelement("Uhrzeit", 4, Feldart.Muss);
Datenaustauschreferenz = new Datenelement("Datenaustauschreferenz", 0, 14, Feldart.Muss);
DatumUhrzeit.Datenelemente[0] = Datum = new DatenelementDateTime("Datum", 8, "yyyyMMdd", Feldart.Muss);
DatumUhrzeit.Datenelemente[1] = Uhrzeit = new DatenelementDateTime("Uhrzeit", 4, "HHmm", Feldart.Muss);
Datenaustauschreferenz = new DatenelementFiller("Datenaustauschreferenz", 0, 14, 5);
Leistungsbereich = new Datenelement("Leistungsbereich", 1, Feldart.Muss);
Anwengundsreferenz = new Datenelement("Anwengundsreferenz", 0, 14, Feldart.Muss);
Testindikator = new Datenelement("Testindikator", 1, Feldart.Muss);

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -22,7 +23,7 @@ namespace Dakota.Models.Segmente
/// Nullen,
/// z.B. 00001 für 1. UNH
/// </summary>
public Datenelement Nachrichtenreferenznummer { get; private set; }
public DatenelementFiller Nachrichtenreferenznummer { get; private set; }
/// <summary>
/// Bei Nachricht SLGA ist einzutragen:
/// SLGA:18:0:0
@@ -58,7 +59,7 @@ namespace Dakota.Models.Segmente
public SegmentUNH()
{
Nachrichtenreferenznummer = new Datenelement("Nachrichtenreferenznummer", 0, 14, Feldart.Muss);
Nachrichtenreferenznummer = new DatenelementFiller("Nachrichtenreferenznummer", 0, 14, 5);
Nachrichtenerkennung = new Datenelementgruppe("Nachrichtenerkennung", 4);
NachrichtenTypKennung = Nachrichtenerkennung.Datenelemente[0] = new Datenelement("NachrichtenTypKennung", 0, 6, Feldart.Muss);
Verionsnummer = Nachrichtenerkennung.Datenelemente[1] = new Datenelement("Verionsnummer", 0, 3, Feldart.Muss);

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -19,12 +20,12 @@ namespace Dakota.Models.Segmente
/// <summary>
/// wie in UNH
/// </summary>
public Datenelement Nachrichtenreferenznummer { get; private set; }
public DatenelementFiller Nachrichtenreferenznummer { get; private set; }
public SegmentUNT(Func<int> counter)
{
AnzahlEinheiten = new DatenelementCounter("AnzahlEinheiten", 6, counter);
Nachrichtenreferenznummer = new Datenelement("Nachrichtenreferenznummer", 0, 14, Feldart.Muss);
Nachrichtenreferenznummer = new DatenelementFiller("Nachrichtenreferenznummer", 0, 14, 5);
}
public override string GetHead() => "UNT";

View File

@@ -1,4 +1,5 @@
using System;
using Dakota.Models.Daten;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -15,16 +16,17 @@ namespace Dakota.Models.Segmente
/// <summary>
/// Anzahl UNHs in der Nutzdatendatei
/// </summary>
public Datenelement AnzahlNachrichten { get; private set; }
public DatenelementCounter AnzahlNachrichten { get; private set; }
/// <summary>
/// wie in UNB
/// </summary>
public Datenelement Datenaustauschreferenz { get; private set; }
public DatenelementFiller Datenaustauschreferenz { get; private set; }
public SegmentUNZ()
public SegmentUNZ(Func<int> counter)
{
AnzahlNachrichten = new Datenelement("AnzahlNachrichten", 6, Feldart.Muss);
Datenaustauschreferenz = new Datenelement("Datenaustauschreferenz", 0, 14, Feldart.Muss);
AnzahlNachrichten = new DatenelementCounter("AnzahlNachrichten", 6, counter);
//new Datenelement("AnzahlNachrichten", 6, Feldart.Muss);
Datenaustauschreferenz = new DatenelementFiller("Datenaustauschreferenz", 0, 14, 5);
}
public override string GetHead() => "UNZ";