Grobe Datenstruktur #2
This commit is contained in:
@@ -45,15 +45,19 @@
|
||||
<Compile Include="DakotaEnums.cs" />
|
||||
<Compile Include="DakotaFileGenerator.cs" />
|
||||
<Compile Include="DakotaValidator.cs" />
|
||||
<Compile Include="Models\BlockKostenträger.cs" />
|
||||
<Compile Include="Models\BlockKrankenkarteVerordnung.cs" />
|
||||
<Compile Include="Models\Abrechnungsposition.cs" />
|
||||
<Compile Include="Models\Datei\BlockKostenträger.cs" />
|
||||
<Compile Include="Models\Datei\BlockKrankenkarteVerordnung.cs" />
|
||||
<Compile Include="Models\Datei\SozioTherapieEinzelnachweis.cs" />
|
||||
<Compile Include="Models\Dateneinheit.cs" />
|
||||
<Compile Include="Models\Datenelement.cs" />
|
||||
<Compile Include="Models\Datenelementgruppe.cs" />
|
||||
<Compile Include="Models\IRowable.cs" />
|
||||
<Compile Include="Models\Nachricht.cs" />
|
||||
<Compile Include="Models\NachrichtSLGA.cs" />
|
||||
<Compile Include="Models\NachrichtSLLA.cs" />
|
||||
<Compile Include="Models\Nachricht\Nachricht.cs" />
|
||||
<Compile Include="Models\Nachricht\NachrichtSLGA.cs" />
|
||||
<Compile Include="Models\Nachricht\NachrichtSLGA2.cs" />
|
||||
<Compile Include="Models\Nachricht\NachrichtSLLA2.cs" />
|
||||
<Compile Include="Models\Nachricht\NachrichtSLLA.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLLABES.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLLADIA.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLLAMWS.cs" />
|
||||
@@ -63,7 +67,7 @@
|
||||
<Compile Include="Models\Segmente\SegmentSLLATXT.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLLAZUV.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLLAZUZ.cs" />
|
||||
<Compile Include="Models\Nutzdatendatei.cs" />
|
||||
<Compile Include="Models\Datei\Nutzdatendatei.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Models\Segmente\Segment.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLGAFKT.cs" />
|
||||
@@ -82,7 +86,8 @@
|
||||
<Compile Include="Models\Segmente\SegmentUNT.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentUNZ.cs" />
|
||||
<Compile Include="Models\Segmente\SegmentSLGAUST.cs" />
|
||||
<Compile Include="Models\SozioTherapieDatei.cs" />
|
||||
<Compile Include="Models\Datei\SozioTherapieDatei.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -1,4 +1,8 @@
|
||||
using Dakota.Models;
|
||||
using BS.Shared.DataContracts;
|
||||
using Dakota.Models;
|
||||
using Dakota.Models.Datei;
|
||||
using Dakota.Models.Nachricht;
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -9,52 +13,240 @@ namespace Dakota
|
||||
{
|
||||
public class DakotaFileGenerator
|
||||
{
|
||||
internal SozioTherapieDatei SozioTherapieDatei { get; set; }
|
||||
internal int Counter { get; private set; }
|
||||
internal SozioTherapieEinzelnachweis SozioTherapieEinzelnachweis { get; set; }
|
||||
internal DateTime Created { get; private set; }
|
||||
|
||||
internal int DatenaustauschreferenzCounter { get; private set; }
|
||||
internal int NachrichtenreferenzCounter { get; private set; }
|
||||
internal int AnzahlUNHCounter { get; set; }
|
||||
internal int SegmentSLGACounter { get; set; }
|
||||
internal int SegmentSLLACounter { get; set; }
|
||||
|
||||
// UNB
|
||||
internal SegmentUNB SegmentUNB => SozioTherapieEinzelnachweis.UNB;
|
||||
// Block
|
||||
internal BlockKrankenkarteVerordnung BlockKrankenkarteVerordnung => SozioTherapieEinzelnachweis.BlockKrankenkarteVerordnung;
|
||||
// SLGA
|
||||
internal SegmentUNH BlockSLGAUNH => BlockKrankenkarteVerordnung.SLGAUNH;
|
||||
internal NachrichtSLGA2 BlockSLGANachricht => BlockKrankenkarteVerordnung.SLGANachricht2;
|
||||
internal SegmentUNT BlockSLGAUNT => BlockKrankenkarteVerordnung.SLGAUNT;
|
||||
// SLLA
|
||||
internal SegmentUNH BlockSLLAUNH => BlockKrankenkarteVerordnung.SLLAUNH;
|
||||
internal NachrichtSLLA2 BlockSLLANachricht => BlockKrankenkarteVerordnung.SLLANachricht2;
|
||||
internal SegmentUNT BlockSLLAUNT => BlockKrankenkarteVerordnung.SLLAUNT;
|
||||
// UNZ
|
||||
internal SegmentUNZ SegmentUNZ => SozioTherapieEinzelnachweis.UNZ;
|
||||
|
||||
public string UNBAbsenderbezeichnung => string.Empty;
|
||||
public string UNBEmpfangerbezeichnung => string.Empty;
|
||||
public string UNBAnwendungsreferenz => string.Empty;
|
||||
public string SLGAFKTIKRechnungssteller => string.Empty;
|
||||
public string SLGAFKTIKKostentrager => string.Empty;
|
||||
public string SLGAFKTIKKrankenkasse => string.Empty;
|
||||
|
||||
public DakotaFileGenerator(int counter)
|
||||
{
|
||||
SozioTherapieDatei = new SozioTherapieDatei();
|
||||
Counter = counter;
|
||||
SozioTherapieEinzelnachweis = new SozioTherapieEinzelnachweis();
|
||||
Created = DateTime.Now;
|
||||
|
||||
DatenaustauschreferenzCounter = counter;
|
||||
NachrichtenreferenzCounter = 1;
|
||||
AnzahlUNHCounter = 0;
|
||||
SegmentSLGACounter = 0;
|
||||
SegmentSLLACounter = 0;
|
||||
}
|
||||
|
||||
public void Generate()
|
||||
{
|
||||
GenerateUNB();
|
||||
Generatexyz();
|
||||
GenerateBlockSLGA();
|
||||
GenerateBlockSLLA();
|
||||
GenerateUNZ();
|
||||
|
||||
IncrementCounter();
|
||||
}
|
||||
|
||||
public void GenerateUNB()
|
||||
{
|
||||
SozioTherapieDatei.UNB.SyntaxKennung.SetValue("UNOC");
|
||||
SozioTherapieDatei.UNB.SyntaxVersionsnummer.SetValue("3");
|
||||
//SozioTherapieDatei.UNB.Absenderdatei
|
||||
// - IK
|
||||
//SozioTherapieDatei.UNB.Empfangdatei
|
||||
// - IK
|
||||
SozioTherapieDatei.UNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
|
||||
SozioTherapieDatei.UNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
|
||||
SozioTherapieDatei.UNB.Datenaustauschreferenz.SetFilledIntValue(Counter, 5);
|
||||
SozioTherapieDatei.UNB.Leistungsbereich.SetValue("O");
|
||||
//SozioTherapieDatei.UNB.Anwengundsreferenz
|
||||
// - Logischer Dateiname
|
||||
SozioTherapieDatei.UNB.Testindikator.SetValue("0");
|
||||
SegmentUNB.SyntaxKennung.SetValue("UNOC");
|
||||
SegmentUNB.SyntaxVersionsnummer.SetValue("3");
|
||||
SegmentUNB.Absenderdatei.SetValue(UNBAbsenderbezeichnung);
|
||||
SegmentUNB.Empfangdatei.SetValue(UNBEmpfangerbezeichnung);
|
||||
SegmentUNB.Datum.SetValue(Created.ToString("yyyyMMdd"));
|
||||
SegmentUNB.Uhrzeit.SetValue(Created.ToString("HHmm"));
|
||||
SegmentUNB.Datenaustauschreferenz.SetFilledIntValue(DatenaustauschreferenzCounter++, 5);
|
||||
SegmentUNB.Leistungsbereich.SetValue("O");
|
||||
SegmentUNB.Anwengundsreferenz.SetValue(UNBAnwendungsreferenz);
|
||||
SegmentUNB.Testindikator.SetValue("0");
|
||||
}
|
||||
|
||||
public void Generatexyz()
|
||||
public void GenerateBlockSLGA()
|
||||
{
|
||||
var block = new BlockKostenträger();
|
||||
//UNH, UNT, FKT, REC
|
||||
SegmentSLGACounter += 2;
|
||||
AnzahlUNHCounter++;
|
||||
|
||||
var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
|
||||
|
||||
// Head
|
||||
BlockSLGAUNH.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
|
||||
BlockSLGAUNH.NachrichtenTypKennung.SetValue("SLGA");
|
||||
BlockSLGAUNH.Verionsnummer.SetValue("18");
|
||||
BlockSLGAUNH.FreigabeNrDesTypes.SetValue("0");
|
||||
BlockSLGAUNH.VerwaltendeOrganisation.SetValue("0");
|
||||
|
||||
// Body
|
||||
// FKT
|
||||
BlockSLGANachricht.SegmentFKT.Verarbeitungskennzeichen.SetValue("01");
|
||||
BlockSLGANachricht.SegmentFKT.IKLeistungserbringers.SetValue(SLGAFKTIKRechnungssteller);
|
||||
BlockSLGANachricht.SegmentFKT.IKKostenträger.SetValue(SLGAFKTIKKostentrager);
|
||||
BlockSLGANachricht.SegmentFKT.IKKrankenkasse.SetValue(SLGAFKTIKKrankenkasse);
|
||||
BlockSLGANachricht.SegmentFKT.IKAbsender.SetValue(UNBAbsenderbezeichnung);
|
||||
// REC
|
||||
BlockSLGANachricht.SegmentREC.SammelRechnungsnummer.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentREC.EinzelRechnungsnummer.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentREC.Datum.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentREC.Rechnungsart.SetValue("1");
|
||||
// UST - wird nicht gebraucht
|
||||
//BlockSLGANachricht.SegmentUST.Steuernummer.SetValue(string.Empty);
|
||||
//BlockSLGANachricht.SegmentUST.Kennung.SetValue(string.Empty);
|
||||
// SKO - wird nicht gebraucht
|
||||
//BlockSLGANachricht.SegmentSKO.SkontoProzent.SetValue(string.Empty);
|
||||
//BlockSLGANachricht.SegmentSKO.Zahlungsziel.SetValue(string.Empty);
|
||||
// GES00
|
||||
BlockSLGANachricht.SegmentGES00.Status.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES00.Gesamtrechnungsbetrag.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES00.Gesamtbruttobetrag.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES00.GesamtbetragZuzahlung.SetValue(string.Empty);
|
||||
// GES
|
||||
BlockSLGANachricht.SegmentGES.Status.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES.Gesamtrechnungsbetrag.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES.Gesamtbruttobetrag.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentGES.GesamtbetragZuzahlung.SetValue(string.Empty);
|
||||
// NAM
|
||||
BlockSLGANachricht.SegmentNAM.Name1.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentNAM.Name2.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentNAM.Name3.SetValue(string.Empty);
|
||||
BlockSLGANachricht.SegmentNAM.Name4.SetValue(string.Empty);
|
||||
|
||||
SozioTherapieDatei.BlockKostenträger.Add(block);
|
||||
// End
|
||||
BlockSLGAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLGACounter, 6);
|
||||
BlockSLGAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
|
||||
}
|
||||
|
||||
public void GenerateBlockSLLA()
|
||||
{
|
||||
SegmentSLLACounter++;
|
||||
AnzahlUNHCounter++;
|
||||
|
||||
var nachrichtenreferenznummer = NachrichtenreferenzCounter++;
|
||||
|
||||
// Head
|
||||
BlockSLLAUNH.Nachrichtenreferenznummer.SetFilledIntValue(NachrichtenreferenzCounter, 5);
|
||||
BlockSLLAUNH.NachrichtenTypKennung.SetValue("SLLA");
|
||||
BlockSLLAUNH.Verionsnummer.SetValue("18");
|
||||
BlockSLLAUNH.FreigabeNrDesTypes.SetValue("0");
|
||||
BlockSLLAUNH.VerwaltendeOrganisation.SetValue("0");
|
||||
|
||||
// Body
|
||||
// FKT Funktion
|
||||
BlockSLLANachricht.SegmentSLLAFKT.Verarbeitungskennzeichen.SetValue("01");
|
||||
BlockSLLANachricht.SegmentSLLAFKT.IKLeistungserbringers.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAFKT.IKKostenträgers.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAFKT.IKKrankenkasse.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAFKT.IKRechnungsstellers.SetValue(string.Empty);
|
||||
// REC
|
||||
var slgarec = BlockSLGANachricht.SegmentREC;
|
||||
BlockSLLANachricht.SegmentSLLAREC.SammelRechnungsnummer.SetValue(slgarec.SammelRechnungsnummer.GetValue());
|
||||
BlockSLLANachricht.SegmentSLLAREC.EinzelRechnungsnummer.SetValue(slgarec.EinzelRechnungsnummer.GetValue());
|
||||
BlockSLLANachricht.SegmentSLLAREC.Datum.SetValue(slgarec.Datum.GetValue());
|
||||
BlockSLLANachricht.SegmentSLLAREC.Rechnungsart.SetValue(slgarec.Rechnungsart.GetValue());
|
||||
// INV
|
||||
// Information Versicherte
|
||||
BlockSLLANachricht.SegmentSLLAINV.VersichertenNummer.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAINV.Versichertenstatus.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAINV.Beleginformation.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAINV.Belegnummer.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAINV.KennzeichenBesondereVersorgungsform.SetValue(string.Empty);
|
||||
// URI
|
||||
// Wird erst bei Korrekturen verwendet
|
||||
// NAD
|
||||
BlockSLLANachricht.SegmentSLLANAD.Nachname.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.Vorname.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.Geburtsdatum.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.StraßeNr.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.PLZ.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.Wohnort.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLANAD.Länderkennzeichen.SetValue(string.Empty);
|
||||
// IMG
|
||||
BlockSLLANachricht.SegmentSLLAIMG.Abrechnungsjahr.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAIMG.Abrechnungsmonat.SetValue(string.Empty);
|
||||
BlockSLLANachricht.SegmentSLLAIMG.Identifikationsmerkmal.SetValue(string.Empty);
|
||||
|
||||
var test = new List<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);
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
||||
// End
|
||||
BlockSLLAUNT.AnzahlEinheiten.SetFilledIntValue(SegmentSLLACounter, 6);
|
||||
BlockSLLAUNT.Nachrichtenreferenznummer.SetFilledIntValue(nachrichtenreferenznummer, 5);
|
||||
}
|
||||
|
||||
public void GenerateUNZ()
|
||||
{
|
||||
//SozioTherapieDatei.UNZ.AnzahlNachrichten
|
||||
SozioTherapieDatei.UNZ.Datenaustauschreferenz.SetFilledIntValue(Counter, 5);
|
||||
SegmentUNZ.AnzahlNachrichten.SetFilledIntValue(AnzahlUNHCounter, 6);
|
||||
var datenaustauschreferenz = SegmentUNB.Datenaustauschreferenz.GetValue();
|
||||
SegmentUNZ.Datenaustauschreferenz.SetValue(datenaustauschreferenz);
|
||||
}
|
||||
|
||||
public void IncrementCounter()
|
||||
{
|
||||
if (DatenaustauschreferenzCounter == 99999)
|
||||
DatenaustauschreferenzCounter = 0;
|
||||
|
||||
DatenaustauschreferenzCounter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
48
Dakota/Models/Abrechnungsposition.cs
Normal file
48
Dakota/Models/Abrechnungsposition.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
{
|
||||
internal class Abrechnungsposition
|
||||
{
|
||||
public SegmentSLLAENF SegmentSLLAENF { get; private set; }
|
||||
/// <summary>
|
||||
/// Mit diesem Segment können weitere Informationen, bezogen
|
||||
/// auf die abzurechnende Position übermittelt werden.Hier können u.a.die Uhrzeit und die gefahrenen Kilometer angegeben
|
||||
/// werden. Es kann je abzurechnende Position einmal vorkommen
|
||||
/// </summary>
|
||||
public SegmentSLLASUT SegmentSLLASUT { get; private set; }
|
||||
/// <summary>
|
||||
/// Mit diesem Segment kann zu jeder abzurechnenden Position
|
||||
/// ein Text(z.B.als Begründung) hinterlegt werden.Es kann je
|
||||
/// abzurechnende Position einmal vorkommen.
|
||||
/// </summary>
|
||||
public SegmentSLLATXT SegmentSLLATXT { get; private set; }
|
||||
/// <summary>
|
||||
/// Mit diesem Segment kann zu jeder abzurechnenden Position
|
||||
/// Mehrwertsteuer angegeben werden.Benutzt werden soll das
|
||||
/// Segment nur dann, wenn dem in ENF genannten Einzelbetrag
|
||||
/// die Mehrwertsteuer hinzuzurechnen ist.
|
||||
/// </summary>
|
||||
public SegmentSLLAMWS SegmentSLLAMWS { get; private set; }
|
||||
/// <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 Abrechnungsposition()
|
||||
{
|
||||
SegmentSLLAENF = new SegmentSLLAENF();
|
||||
SegmentSLLASUT = new SegmentSLLASUT();
|
||||
SegmentSLLATXT = new SegmentSLLATXT();
|
||||
SegmentSLLAMWS = new SegmentSLLAMWS();
|
||||
}
|
||||
|
||||
public List<Segment> GetSegments()
|
||||
{
|
||||
return new List<Segment>() { SegmentSLLAENF, SegmentSLLASUT, SegmentSLLATXT, SegmentSLLAMWS };
|
||||
@@ -1,11 +1,12 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Nachricht;
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Datei
|
||||
{
|
||||
/// <summary>
|
||||
/// Wiederhole folgenden Block je IK des Kostenträgers
|
||||
@@ -1,11 +1,12 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using Dakota.Models.Nachricht;
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Datei
|
||||
{
|
||||
/// <summary>
|
||||
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
|
||||
@@ -13,26 +14,26 @@ namespace Dakota.Models
|
||||
internal class BlockKrankenkarteVerordnung : IRowable
|
||||
{
|
||||
public SegmentUNH SLGAUNH { get; private set; }
|
||||
public NachrichtSLGA SLGANachricht { get; private set; }
|
||||
public NachrichtSLGA2 SLGANachricht2 { get; private set; }
|
||||
public SegmentUNT SLGAUNT { get; private set; }
|
||||
public SegmentUNH SLLAUNH { get; private set; }
|
||||
public NachrichtSLLA SLLANachricht { get; private set; }
|
||||
public NachrichtSLLA2 SLLANachricht2 { get; private set; }
|
||||
public SegmentUNT SLLAUNT { get; private set; }
|
||||
|
||||
public BlockKrankenkarteVerordnung()
|
||||
{
|
||||
SLGAUNH = new SegmentUNH();
|
||||
SLGANachricht = new NachrichtSLGA();
|
||||
SLGANachricht2 = new NachrichtSLGA2();
|
||||
SLGAUNT = new SegmentUNT();
|
||||
SLLAUNH = new SegmentUNH();
|
||||
SLLANachricht = new NachrichtSLLA();
|
||||
SLLANachricht2 = new NachrichtSLLA2();
|
||||
SLLAUNT = new SegmentUNT();
|
||||
}
|
||||
|
||||
public string GetRows()
|
||||
{
|
||||
return SLGAUNH.GetValue() + SLGANachricht.GetRows() + SLGAUNT.GetValue() +
|
||||
SLLAUNH.GetValue() + SLLANachricht.GetRows() + SLLAUNT.GetValue();
|
||||
return SLGAUNH.GetValue() + SLGANachricht2.GetRows() + SLGAUNT.GetValue() +
|
||||
SLLAUNH.GetValue() + SLLANachricht2.GetRows() + SLLAUNT.GetValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Datei
|
||||
{
|
||||
internal class Nutzdatendatei
|
||||
{
|
||||
@@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Datei
|
||||
{
|
||||
internal class SozioTherapieDatei : IRowable
|
||||
{
|
||||
28
Dakota/Models/Datei/SozioTherapieEinzelnachweis.cs
Normal file
28
Dakota/Models/Datei/SozioTherapieEinzelnachweis.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Datei
|
||||
{
|
||||
internal class SozioTherapieEinzelnachweis : IRowable
|
||||
{
|
||||
public SegmentUNB UNB { get; set; }
|
||||
public BlockKrankenkarteVerordnung BlockKrankenkarteVerordnung { get; set; }
|
||||
public SegmentUNZ UNZ { get; set; }
|
||||
|
||||
internal SozioTherapieEinzelnachweis()
|
||||
{
|
||||
UNB = new SegmentUNB();
|
||||
BlockKrankenkarteVerordnung = new BlockKrankenkarteVerordnung();
|
||||
UNZ = new SegmentUNZ();
|
||||
}
|
||||
|
||||
public string GetRows()
|
||||
{
|
||||
return UNB.GetValue() + string.Join(string.Empty, BlockKrankenkarteVerordnung.GetRows() + UNZ.GetValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Nachricht
|
||||
{
|
||||
internal abstract class Nachricht : IRowable
|
||||
{
|
||||
@@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Gesamtaufstellung der
|
||||
53
Dakota/Models/Nachricht/NachrichtSLGA2.cs
Normal file
53
Dakota/Models/Nachricht/NachrichtSLGA2.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// 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 override List<Segment> GetSegments()
|
||||
{
|
||||
return new List<Segment>() { SegmentFKT, SegmentREC, SegmentGES00, SegmentGES, SegmentNAM };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models
|
||||
namespace Dakota.Models.Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Leistungserbringer
|
||||
111
Dakota/Models/Nachricht/NachrichtSLLA2.cs
Normal file
111
Dakota/Models/Nachricht/NachrichtSLLA2.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using Dakota.Models.Segmente;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Dakota.Models.Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Leistungserbringer
|
||||
/// </summary>
|
||||
internal class NachrichtSLLA2 : Nachricht
|
||||
{
|
||||
/// <summary>
|
||||
/// Das Segment enthält Informationen über den tatsächlichen
|
||||
/// Leistungserbringer und das IK der Krankenkasse von der
|
||||
/// Krankenversichertenkarte bzw.der ärztlichen Verordnung bezogen auf die folgenden Abrechnungsfälle.Es kommt je Nachricht nur einmal vor.
|
||||
/// </summary>
|
||||
public SegmentSLLAFKT SegmentSLLAFKT { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Rechnungsinformationen, wie Rechnungsnummer und Rechnungsdatum
|
||||
/// </summary>
|
||||
public SegmentSLLAREC SegmentSLLAREC { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält die Versichertendaten eines Abrechnungsfalles (Verordnung), und gilt gleichzeitig als BeginnSegment für einen Abrechnungsfall. Jeder Abrechnungsfall ist
|
||||
/// mit einer eindeutigen Belegnummer zu kennzeichnen, die der
|
||||
/// auf der Verordnung zu übertragenen Belegnummer(s. § 4 des
|
||||
/// Richtlinientextes) entsprechen muss.
|
||||
/// </summary>
|
||||
public SegmentSLLAINV SegmentSLLAINV { get; private set; }
|
||||
/// <summary>
|
||||
/// Dieses Segment enthält bei Korrekturlieferungen die ursprünglichen Rechnungsinformationen. Es wird zunächst nur
|
||||
/// in Abhängigkeit für die Verarbeitungskennzeichen
|
||||
/// '02' Nachforderung,
|
||||
/// ‚03‘ Zuzahlungsforderung und
|
||||
/// ‚04‘ Korrekturrechnung
|
||||
/// (Schlüsselverzeichnis Anlage 3, Kapitel 8.1.7) geliefert
|
||||
/// </summary>
|
||||
public SegmentSLLAURI SegmentSLLAURI { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält den Namen und die Adressdaten des
|
||||
/// Versicherten.
|
||||
/// </summary>
|
||||
public SegmentSLLANAD SegmentSLLANAD { get; private set; }
|
||||
/// <summary>
|
||||
/// Das Segment enthält den Imagenamen bei Übermittlung von
|
||||
/// Imagearchiven durch den Absender.
|
||||
/// </summary>
|
||||
public SegmentSLLAIMG SegmentSLLAIMG { get; private set; }
|
||||
public List<Abrechnungsposition> Abrechnungspositions { get; 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 NachrichtSLLA2()
|
||||
{
|
||||
SegmentSLLAFKT = new SegmentSLLAFKT();
|
||||
SegmentSLLAREC = new SegmentSLLAREC();
|
||||
SegmentSLLAINV = new SegmentSLLAINV();
|
||||
SegmentSLLAURI = new SegmentSLLAURI();
|
||||
SegmentSLLANAD = new SegmentSLLANAD();
|
||||
SegmentSLLAIMG = new SegmentSLLAIMG();
|
||||
|
||||
Abrechnungspositions = new List<Abrechnungsposition>();
|
||||
|
||||
SegmentSLLAZUV = new SegmentSLLAZUV();
|
||||
SegmentSLLADIA = new SegmentSLLADIA();
|
||||
SegmentSLLASKZ = new SegmentSLLASKZ();
|
||||
SegmentSLLABES = new SegmentSLLABES();
|
||||
}
|
||||
|
||||
public void AddPosition(Abrechnungsposition pos)
|
||||
{
|
||||
Abrechnungspositions.Add(pos);
|
||||
}
|
||||
|
||||
public override List<Segment> GetSegments()
|
||||
{
|
||||
var list = new List<Segment>() { SegmentSLLAFKT, SegmentSLLAREC, SegmentSLLAINV, SegmentSLLAURI, SegmentSLLANAD, SegmentSLLAIMG };
|
||||
var list2 = new List<Segment>() { SegmentSLLABES };
|
||||
//var list2 = new List<Segment>() { SegmentSLLAZUZ, SegmentSLLAZUV, SegmentSLLADIA, SegmentSLLASKZ, SegmentSLLABES };
|
||||
|
||||
foreach (var seg in Abrechnungspositions)
|
||||
{
|
||||
list.AddRange(seg.GetSegments());
|
||||
}
|
||||
|
||||
list.AddRange(list2);
|
||||
|
||||
return list;
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
<session-factory xmlns='urn:nhibernate-configuration-2.2'>
|
||||
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
|
||||
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
|
||||
<property name="connection.connection_string">Password=root;Persist Security Info=True;User ID=BeWoUser;Initial Catalog=BeWo;Data Source=betreuwo</property>
|
||||
<property name="connection.connection_string">Password=root;Persist Security Info=True;User ID=BeWoUser;Initial Catalog=BeWo;Data Source=4000000000</property>
|
||||
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
|
||||
<mapping assembly="BeWo.Data" />
|
||||
</session-factory>
|
||||
|
||||
@@ -255,26 +255,39 @@ namespace BeWo.Report
|
||||
var dcList = new List<ServiceInvoiceDC>();
|
||||
|
||||
var dcidStrs = dcIds.Split(';');
|
||||
|
||||
// Gehe jede ServiceItem Reference durch
|
||||
foreach (var oidStr in dcidStrs)
|
||||
{
|
||||
var oid = long.Parse(oidStr);
|
||||
// Lade ServiceInvoice
|
||||
var invoice = DAOFactory.GenericDAO.LoadByID<ServiceInvoice>(oid);
|
||||
var dc = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(invoice);
|
||||
// Füge dcListe hinzu
|
||||
dcList.Add(dc);
|
||||
|
||||
// Falls ServiceInvoice Oid bereits in serviceInvoiceOid2CostbearerOid List (S2C List) ist, überspringe
|
||||
if (serviceInvoiceOid2CostbearerId.ContainsKey(oid))
|
||||
continue;
|
||||
|
||||
// ServiceInvoice Oid ist noch nicht in S2C List
|
||||
|
||||
// Frage, ob ServiceInvoice - InvoiceBase - InvoiceId nicht leer ist
|
||||
if (!String.IsNullOrEmpty(invoice.InvoiceBase.InvoiceId))
|
||||
// Falls ServiceInvoice - InvoiceBase - InvoiceId nicht leer ist, füge in S2C Liste ein
|
||||
serviceInvoiceOid2CostbearerId.Add(oid, invoice.InvoiceBase.InvoiceId);
|
||||
else
|
||||
// Ab wann? Welcher Sinn?
|
||||
{
|
||||
// Falls ServiceInvoice - InvoiceBase - InvoiceId leer ist
|
||||
// Gehe jede peroide von ServiceInvoice - ServiceInvoicePeriodList durch
|
||||
foreach (var period in invoice.ServiceInvoicePeriodList)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (period.SupportConceptApprovalPeriod != null)
|
||||
{
|
||||
// Falls periode - SupportConecptApprovalPeriod nicht leer ist, füge
|
||||
AddCostBearerIdToDict(oid, serviceInvoiceOid2CostbearerId,
|
||||
period.SupportConceptApprovalPeriod.CostBearer2SupportConcept);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user