diff --git a/Dakota/DakotaValidator.cs b/Dakota/DakotaValidator.cs index abae6914b..edf6b48e7 100644 --- a/Dakota/DakotaValidator.cs +++ b/Dakota/DakotaValidator.cs @@ -65,8 +65,8 @@ namespace Dakota throw new DakotaException(error); } - public static bool ValidateIKNumbers(Organisation orga) - => ValidateIKNumbers(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse); + public static bool ValidateOrganisationInformations(Organisation orga) + => ValidateIKNumbers(orga.IKDatenannahmestelle, orga.IKKostentrager, orga.IKKrankenkasse) && !string.IsNullOrEmpty(orga.BezDatenannahmestelle); private static bool ValidateIKNumbers(params string[] iks) => iks?.All(ValidateIKNumber) ?? false; diff --git a/Dakota/Logic/DakotaKTDReader.cs b/Dakota/Logic/DakotaKTDReader.cs index e6c0f0466..27af3edcb 100644 --- a/Dakota/Logic/DakotaKTDReader.cs +++ b/Dakota/Logic/DakotaKTDReader.cs @@ -44,14 +44,23 @@ namespace Dakota.Logic /// Item1:Datenannahmestelle - /// Item2:Kostenträger - /// Item3:Krankenkasse - public Tuple Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen) + public Tuple Resolve(string ikkrankenkasse, string abrechnungscode, string tarifkennzeichen) { foreach (var kv in FileDictionary) { - var search = GetIKNummern(kv.Value, ikkrankenkasse, abrechnungscode, tarifkennzeichen); + var dict = kv.Value; + + var search = GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen); if (search is object) - return search; + { + var datenannahmestelle = search.Item1; + + var bez = dict[datenannahmestelle].SegmentIDK.Kurzbezeichnung; + + return new Tuple(datenannahmestelle, search.Item2, search.Item3, bez); + } + } return null; diff --git a/Host/GkvAbrechnungView.aspx.cs b/Host/GkvAbrechnungView.aspx.cs index 077c25651..5e0e8439d 100644 --- a/Host/GkvAbrechnungView.aspx.cs +++ b/Host/GkvAbrechnungView.aspx.cs @@ -269,6 +269,7 @@ namespace Host response.IKDatenannahmestelle = resolved.Item1; response.IKKostentrager = resolved.Item2; response.IKKrankenkasse = resolved.Item3; + response.BezDatenannahmestelle = resolved.Item4; } SendResponse(response); diff --git a/Service/ServiceImplementations/AccountingServiceImp.cs b/Service/ServiceImplementations/AccountingServiceImp.cs index d2b500d67..92034611f 100644 --- a/Service/ServiceImplementations/AccountingServiceImp.cs +++ b/Service/ServiceImplementations/AccountingServiceImp.cs @@ -936,7 +936,7 @@ namespace BeWo.Service.ServiceImplementations DakotaValidator.ValidateOrganisation(orga); - if (!DakotaValidator.ValidateIKNumbers(orga)) + if (!DakotaValidator.ValidateOrganisationInformations(orga)) { var res = SendApp8GetIKRequest(orga); @@ -952,8 +952,8 @@ namespace BeWo.Service.ServiceImplementations orga.IKKostentrager = res.IKKostentrager; orga.BezDatenannahmestelle = res.BezDatenannahmestelle; - if (!DakotaValidator.ValidateIKNumbers(orga)) - throw new DakotaException($"Für die Organisation \"{orga.Name}\" konnten die hinterlegten IKs nicht verifiziert werden: \"{orga.IKDatenannahmestelle}\", \"{orga.IKKostentrager}\", \"{orga.IKKrankenkasse}\"", "Interner Fehler"); + if (!DakotaValidator.ValidateOrganisationInformations(orga)) + throw new DakotaException($"Für die Organisation \"{orga.Name}\" konnten die hinterlegten IKs nicht verifiziert werden: \"{orga.BezDatenannahmestelle}\", \"{orga.IKDatenannahmestelle}\", \"{orga.IKKostentrager}\", \"{orga.IKKrankenkasse}\"", "Interner Fehler"); DAOFactory.GenericDAO.Update(orga);