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); }