diff --git a/Dakota/Dakota.csproj b/Dakota/Dakota.csproj
index 7dc061d17..2c7b28b98 100644
--- a/Dakota/Dakota.csproj
+++ b/Dakota/Dakota.csproj
@@ -65,9 +65,9 @@
-
+
-
+
diff --git a/Dakota/Logic/DakotaInfoCreator.cs b/Dakota/Logic/DakotaInfoCreator.cs
index 50363bba7..d513d1e61 100644
--- a/Dakota/Logic/DakotaInfoCreator.cs
+++ b/Dakota/Logic/DakotaInfoCreator.cs
@@ -18,12 +18,12 @@ namespace Dakota.Logic
public ServiceInvoice ServiceInvoice { get; set; }
public InvoiceBase InvoiceBase { get; set; }
public Customer Customer { get; set; }
+ public SozioInvoiceItem SozioInvoiceItem { get; set; }
public string IKKostentrager => "111222333";
public string IKKvkarte => "333444555";
public string Versichertenstatus => "55555";
public string Belegnummer => "444444test";
- public string Identifikationsnummer => "111";
}
public struct InfoCreatorParameter2
@@ -137,9 +137,9 @@ namespace Dakota.Logic
info.Verschlusselungsart = 0;
info.ElektronischeUnterschrift = 0;
- // info.Satzformat = "";
- // info.Satzlange = 0;
- // info.Blocklange = 0;
+ info.Satzformat = " ";
+ info.Satzlange = 0;
+ info.Blocklange = 0;
// Part 3 nicht vom Absender
@@ -212,7 +212,6 @@ namespace Dakota.Logic
internal static InfoAbrechnungsposition GetDakotaInfoAbrechnungsposition(this InfoAbrechnungsfall fall, InfoCreatorParameter para, InfoCreatorParameter2 para2)
{
- var id = para.Identifikationsnummer;
var pos = CreateDakotaInfoAbrechnungsposition(para);
return pos;
@@ -294,18 +293,6 @@ namespace Dakota.Logic
info.VersichtertenWohnort = para.Customer.Person.Address.Town;
info.VersichtertenLanderkennung = null;
- // info.DakotaInfosAbrechnungsposition.Add(GetDakotaInfoAbrechnungsposition(para));
-
- // Kann
-
- // info.DakotaInfoDiagnosen.Add(GetDakotaInfoDiagnosen());
-
- //info.GesamtbetragGesetzlicheZuzahlung = 0;
- //info.GesamtbetragProzentualeZuzahlung = 0;
- //info.PauschalerZuzahlungsbetrag = 0;
- //info.GesamtbetragEigenanteil = 0;
- //info.GesamtbetragBrutto = 0;
-
return info;
}
@@ -313,19 +300,21 @@ namespace Dakota.Logic
{
var info = new InfoAbrechnungsposition();
- info.Identifikationsnummer = para.Identifikationsnummer;
- info.Abrechnungscode = SchlüsselAbrechnungscodes.SoziotherapeutischerLeistungserbringer;
+ info.Identifikationsnummer = para.SozioInvoiceItem.Identifikationsnummer;
- info.TarifkennzeichenBereich = SchlüsselTarifkennzeichenBereich.NordRheinWestfalen;
- info.TarifkennzeichenSondertarif = SchlüsselTarifkennzeichenSondertarif.OhneBesonderheiten;
+ info.Abrechnungscode = new SchlüsselAbrechnungscodes(para.SozioInvoiceItem.Abrechnungscode);
- info.AbrechnungspositionArtDerEinrichtung = SchlüsselPosArtDerEinrichtung.SoziotherapeutischerLeistungserbringer;
- info.AbrechnungspositionBehandlungsart = SchlüsselPosBehandlungsart.Einzelbehandlung;
- info.AbrechnungspositionVergütungsart = SchlüsselPosVergütungsart.Gruppenbehandlung90Minuten9Teilnehmer;
+ info.TarifkennzeichenBereich = new SchlüsselTarifkennzeichenBereich(para.SozioInvoiceItem.TarifkennzeichenBereich);
+ info.TarifkennzeichenSondertarif = new SchlüsselTarifkennzeichenSondertarif(para.SozioInvoiceItem.TarifkennzeichenSondertarif);
+
+ info.AbrechnungspositionArtDerEinrichtung = new SchlüsselPosArtDerEinrichtung(para.SozioInvoiceItem.AbrechnungspositionArtDerEinrichtung);
+ info.AbrechnungspositionBehandlungsart = new SchlüsselPosBehandlungsart(para.SozioInvoiceItem.AbrechnungspositionBehandlungsart);
+ info.AbrechnungspositionVergütungsart = new SchlüsselPosVergütungsart(para.SozioInvoiceItem.AbrechnungspositionVergütungsart, para.SozioInvoiceItem.AbrechnungspositionVergütungsart2);
info.AnzahlMenge = para.InvoiceItem.UnitCount.Value;
- info.EinzelbetragAbrechnungsposition = para.InvoiceItem.AmountTotal.Value;
- info.DatumDerLeistungserbringung = para.InvoiceBase.InvoiceDate.Value;
+ info.EinzelbetragAbrechnungsposition = para.InvoiceItem.AmountPerUnit.Value;
+ info.DatumDerLeistungserbringung = para.InvoiceItem.ItemPeriodStart.Value;
+
info.BetragZuzahlung = 0;
return info;
diff --git a/Dakota/Models/Blocke/BlockFile.cs b/Dakota/Models/Blocke/BlockFile.cs
index 7273ed9c7..26eae15d8 100644
--- a/Dakota/Models/Blocke/BlockFile.cs
+++ b/Dakota/Models/Blocke/BlockFile.cs
@@ -12,7 +12,7 @@ namespace Dakota.Models.Blocke
///
/// Nutzdatendatei ohne Logik
///
- internal class BlockFile : Nachricht
+ internal class BlockFile : Block
{
public SegmentUNB SegmentUNB { get; private set; }
public List BlockKostenträger { get; private set; }
@@ -40,7 +40,7 @@ namespace Dakota.Models.Blocke
return list;
}
- public int GetUNHCount()
+ public override int GetUNHCount()
{
int i = 0;
diff --git a/Dakota/Models/Blocke/BlockAbrechnungsfall.cs b/Dakota/Models/Blocke/BlockKlient.cs
similarity index 98%
rename from Dakota/Models/Blocke/BlockAbrechnungsfall.cs
rename to Dakota/Models/Blocke/BlockKlient.cs
index d1bf423f3..949e2e39d 100644
--- a/Dakota/Models/Blocke/BlockAbrechnungsfall.cs
+++ b/Dakota/Models/Blocke/BlockKlient.cs
@@ -10,7 +10,7 @@ using Dakota.Models.Infos;
namespace Dakota.Models.Blocke
{
- internal class BlockAbrechnungsfall : Block
+ internal class BlockKlient : Block
{
///
@@ -82,7 +82,7 @@ namespace Dakota.Models.Blocke
public decimal GesamtbetragProzentualeZuzahlung => SegmentSLLABES.GesamtbetragProzentualeZuzahlung.DecimalValue;
public decimal PauschalerZuzahlungsbetrag => SegmentSLLABES.PauschalerZuzahlungsbetrag.DecimalValue;
- public BlockAbrechnungsfall()
+ public BlockKlient()
{
SegmentSLLAINV = new SegmentSLLAINV();
SegmentSLLAURI = new SegmentSLLAURI();
diff --git a/Dakota/Models/Blocke/BlockKostenträger.cs b/Dakota/Models/Blocke/BlockKostenträger.cs
index bc986cd74..f7073e8a0 100644
--- a/Dakota/Models/Blocke/BlockKostenträger.cs
+++ b/Dakota/Models/Blocke/BlockKostenträger.cs
@@ -19,14 +19,14 @@ namespace Dakota.Models.Blocke
public SegmentUNH SegmentUNH { get; private set; }
public NachrichtSLGA NachrichtSLGA { get; private set; }
public SegmentUNT SegmentUNT { get; private set; }
- public List BlockKrankenkarteVerordnung { get; private set; }
+ public List BlockKrankenkasse { get; private set; }
internal BlockKostenträger()
{
SegmentUNH = new SegmentUNH();
NachrichtSLGA = new NachrichtSLGA();
SegmentUNT = new SegmentUNT(NachrichtSLGA.GetSegmentLength);
- BlockKrankenkarteVerordnung = new List();
+ BlockKrankenkasse = new List();
}
public string IKKostenträger
@@ -43,7 +43,7 @@ namespace Dakota.Models.Blocke
list.AddRange(NachrichtSLGA.GetSegments());
list.Add(SegmentUNT);
- foreach (var block in BlockKrankenkarteVerordnung)
+ foreach (var block in BlockKrankenkasse)
{
list.AddRange(block.GetSegments());
}
@@ -54,7 +54,7 @@ namespace Dakota.Models.Blocke
{
var i = 1;
- foreach (var block in BlockKrankenkarteVerordnung)
+ foreach (var block in BlockKrankenkasse)
{
i += block.GetUNHCount();
}
@@ -62,9 +62,9 @@ namespace Dakota.Models.Blocke
return i;
}
- public void Add(BlockKrankenkarteVerordnung block)
+ public void Add(BlockKrankenkasse block)
{
- BlockKrankenkarteVerordnung.Add(block);
+ BlockKrankenkasse.Add(block);
}
public void Apply(InfoBlockKostentrager info)
{
@@ -78,7 +78,7 @@ namespace Dakota.Models.Blocke
foreach (var infoblock in info.BlockKvKarte)
{
- var blockkvkarte = new BlockKrankenkarteVerordnung();
+ var blockkvkarte = new BlockKrankenkasse();
blockkvkarte.Apply(infoblock);
@@ -94,7 +94,7 @@ namespace Dakota.Models.Blocke
{
Dictionary segments = new Dictionary();
- foreach (var block in BlockKrankenkarteVerordnung)
+ foreach (var block in BlockKrankenkasse)
{
// Gesamt
CalculateSLGAStep(segments, block.NachrichtSLGA.SegmentGES00);
diff --git a/Dakota/Models/Blocke/BlockKrankenkarteVerordnung.cs b/Dakota/Models/Blocke/BlockKrankenkasse.cs
similarity index 97%
rename from Dakota/Models/Blocke/BlockKrankenkarteVerordnung.cs
rename to Dakota/Models/Blocke/BlockKrankenkasse.cs
index 38520e91f..6a8b0b28b 100644
--- a/Dakota/Models/Blocke/BlockKrankenkarteVerordnung.cs
+++ b/Dakota/Models/Blocke/BlockKrankenkasse.cs
@@ -15,7 +15,7 @@ namespace Dakota.Models.Blocke
///
/// Wiederhole folgenden Block je IK der Krankenkarte bzw der Verordnung
///
- internal class BlockKrankenkarteVerordnung : Block
+ internal class BlockKrankenkasse : Block
{
public SegmentUNH SegmentSLGAUNH { get; private set; }
public NachrichtSLGA NachrichtSLGA { get; private set; }
@@ -24,7 +24,7 @@ namespace Dakota.Models.Blocke
public NachrichtSLLA NachrichtSLLA { get; private set; }
public SegmentUNT SegmentSLLAUNT { get; private set; }
- public BlockKrankenkarteVerordnung()
+ public BlockKrankenkasse()
{
SegmentSLGAUNH = new SegmentUNH();
NachrichtSLGA = new NachrichtSLGA();
@@ -104,7 +104,7 @@ namespace Dakota.Models.Blocke
Dictionary segments = new Dictionary();
- foreach (var fall in NachrichtSLLA.Abrechnungsfalle)
+ foreach (var fall in NachrichtSLLA.BlockKlienten)
{
int status = 11;
diff --git a/Dakota/Models/Nachrichten/NachrichtSLGA.cs b/Dakota/Models/Nachrichten/NachrichtSLGA.cs
index da65bb29d..8cb11d100 100644
--- a/Dakota/Models/Nachrichten/NachrichtSLGA.cs
+++ b/Dakota/Models/Nachrichten/NachrichtSLGA.cs
@@ -76,6 +76,7 @@ namespace Dakota.Models.Nachrichten
public void Apply(InfoNachrichtSLGA info)
{
SegmentFKT.Verarbeitungskennzeichen.SetValue(info.Verarbeitungskennzeichen);
+ SegmentFKT.Sammelrechnung.SetValue("J");
SegmentFKT.IKLeistungserbringers.SetValue(info.IKLeistungserbringer);
SegmentFKT.IKKostenträger.SetValue(info.IKKostentrager);
SegmentFKT.IKKrankenkasseKVKarte.SetValue(info.IKKvKarte);
diff --git a/Dakota/Models/Nachrichten/NachrichtSLLA.cs b/Dakota/Models/Nachrichten/NachrichtSLLA.cs
index c04c92155..dac16d4a3 100644
--- a/Dakota/Models/Nachrichten/NachrichtSLLA.cs
+++ b/Dakota/Models/Nachrichten/NachrichtSLLA.cs
@@ -28,7 +28,7 @@ namespace Dakota.Models.Nachrichten
///
/// Abrechnungsfälle (INV - BES)
///
- public List Abrechnungsfalle { get; set; }
+ public List BlockKlienten { get; set; }
@@ -37,14 +37,14 @@ namespace Dakota.Models.Nachrichten
SegmentSLLAFKT = new SegmentSLLAFKT();
SegmentSLLAREC = new SegmentSLLAREC();
- Abrechnungsfalle = new List();
+ BlockKlienten = new List();
}
public override List GetAllSegments()
{
var list = new List() { SegmentSLLAFKT, SegmentSLLAREC };
- foreach (var block in Abrechnungsfalle)
+ foreach (var block in BlockKlienten)
{
list.AddRange(block.GetSegments());
}
@@ -52,9 +52,9 @@ namespace Dakota.Models.Nachrichten
return list;
}
- public void Add(BlockAbrechnungsfall fall)
+ public void Add(BlockKlient fall)
{
- Abrechnungsfalle.Add(fall);
+ BlockKlienten.Add(fall);
}
public void Apply(InfoNachrichtSLLA info)
{
@@ -66,7 +66,7 @@ namespace Dakota.Models.Nachrichten
foreach (var infofall in info.Abrechnungsfalle)
{
- var block = new BlockAbrechnungsfall();
+ var block = new BlockKlient();
block.Apply(infofall);
diff --git a/Data/Entities/SozioInvoiceItem.cs b/Data/Entities/SozioInvoiceItem.cs
index c7d45f966..ad12d3ea8 100644
--- a/Data/Entities/SozioInvoiceItem.cs
+++ b/Data/Entities/SozioInvoiceItem.cs
@@ -11,15 +11,34 @@ namespace BeWo.Data.Entities
{
protected InvoiceItem _InvoiceItem;
protected ServiceRecord _ServiceRecord;
+
protected string _Identifikationsnummer;
- protected string _Leistungsgruppe;
+ protected string _Abrechnungscode;
+ protected string _TarifkennzeichenBereich;
+ protected string _TarifkennzeichenSondertarif;
+
protected string _ArtDerAngegebenLeistung;
+ protected string _SchlüsselTarifkennzeichenBereich;
+ protected string _SchlüsselTarifkennzeichenSondertarif;
+
+ protected string _AbrechnungspositionArtDerEinrichtung;
+ protected string _AbrechnungspositionBehandlungsart;
+ protected string _AbrechnungspositionVergütungsart;
+ protected string _AbrechnungspositionVergütungsart2;
+
public SozioInvoiceItem() : base()
{
_Tid = TableID.SozioInvoiceItem;
}
+ public virtual DateTime TagDerLeistungserbringung => InvoiceItem.ItemPeriodStart.Value;
+ public virtual decimal GefahreneKilometer => ServiceRecord.DistanceInMeter.Value / 1000;
+ public virtual DateTime UhrzeitVon => ServiceRecord.Start.Value;
+ public virtual DateTime UhrzeitBis => ServiceRecord.End.Value;
+ public virtual int DauerRounded => (int)ServiceRecord.DurationMinutes;
+ public virtual string Text => string.Empty;
+
public virtual InvoiceItem InvoiceItem
{
get
@@ -34,6 +53,7 @@ namespace BeWo.Data.Entities
}
}
}
+
public virtual ServiceRecord ServiceRecord
{
get
@@ -62,17 +82,45 @@ namespace BeWo.Data.Entities
}
}
}
- public virtual string Leistungsgruppe
+ public virtual string Abrechnungscode
{
get
{
- return _Leistungsgruppe;
+ return _Abrechnungscode;
}
set
{
- if (AreDifferent(_Leistungsgruppe, value))
+ if (AreDifferent(_Abrechnungscode, value))
{
- _Leistungsgruppe = value;
+ _Abrechnungscode = value;
+ }
+ }
+ }
+ public virtual string TarifkennzeichenBereich
+ {
+ get
+ {
+ return _TarifkennzeichenBereich;
+ }
+ set
+ {
+ if (AreDifferent(_TarifkennzeichenBereich, value))
+ {
+ _TarifkennzeichenBereich = value;
+ }
+ }
+ }
+ public virtual string TarifkennzeichenSondertarif
+ {
+ get
+ {
+ return _TarifkennzeichenSondertarif;
+ }
+ set
+ {
+ if (AreDifferent(_TarifkennzeichenSondertarif, value))
+ {
+ _TarifkennzeichenSondertarif = value;
}
}
}
@@ -90,5 +138,89 @@ namespace BeWo.Data.Entities
}
}
}
+ public virtual string SchlüsselTarifkennzeichenBereich
+ {
+ get
+ {
+ return _SchlüsselTarifkennzeichenBereich;
+ }
+ set
+ {
+ if (AreDifferent(_SchlüsselTarifkennzeichenBereich, value))
+ {
+ _SchlüsselTarifkennzeichenBereich = value;
+ }
+ }
+ }
+ public virtual string SchlüsselTarifkennzeichenSondertarif
+ {
+ get
+ {
+ return _SchlüsselTarifkennzeichenSondertarif;
+ }
+ set
+ {
+ if (AreDifferent(_SchlüsselTarifkennzeichenSondertarif, value))
+ {
+ _SchlüsselTarifkennzeichenSondertarif = value;
+ }
+ }
+ }
+ public virtual string AbrechnungspositionArtDerEinrichtung
+ {
+ get
+ {
+ return _AbrechnungspositionArtDerEinrichtung;
+ }
+ set
+ {
+ if (AreDifferent(_AbrechnungspositionArtDerEinrichtung, value))
+ {
+ _AbrechnungspositionArtDerEinrichtung = value;
+ }
+ }
+ }
+ public virtual string AbrechnungspositionBehandlungsart
+ {
+ get
+ {
+ return _AbrechnungspositionBehandlungsart;
+ }
+ set
+ {
+ if (AreDifferent(_AbrechnungspositionBehandlungsart, value))
+ {
+ _AbrechnungspositionBehandlungsart = value;
+ }
+ }
+ }
+ public virtual string AbrechnungspositionVergütungsart
+ {
+ get
+ {
+ return _AbrechnungspositionVergütungsart;
+ }
+ set
+ {
+ if (AreDifferent(_AbrechnungspositionVergütungsart, value))
+ {
+ _AbrechnungspositionVergütungsart = value;
+ }
+ }
+ }
+ public virtual string AbrechnungspositionVergütungsart2
+ {
+ get
+ {
+ return _AbrechnungspositionVergütungsart2;
+ }
+ set
+ {
+ if (AreDifferent(_AbrechnungspositionVergütungsart2, value))
+ {
+ _AbrechnungspositionVergütungsart = value;
+ }
+ }
+ }
}
}
diff --git a/Service/ServiceImplementations/OperationsServiceImp.cs b/Service/ServiceImplementations/OperationsServiceImp.cs
index 1971fb60a..d4534563a 100644
--- a/Service/ServiceImplementations/OperationsServiceImp.cs
+++ b/Service/ServiceImplementations/OperationsServiceImp.cs
@@ -7700,6 +7700,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
+ public SozioInvoiceItem GetSozioInvoiceItem(InvoiceItem invoiceItem)
+ {
+ throw new NotImplementedException();
+ }
+
public string GetDakotaFileFormat(object param)
{
try
@@ -7723,6 +7728,7 @@ namespace BeWo.Service.ServiceImplementations
para.ServiceInvoicePeriod = period;
para.InvoiceBase = invoicebase;
para.Customer = period.Customer;
+ para.SozioInvoiceItem = GetSozioInvoiceItem(item);
paras.Add(para);
}