KTDReader Advanced Logik

This commit is contained in:
2024-11-14 15:51:36 +01:00
parent bce0b1a6aa
commit 1b1db0876f
2 changed files with 41 additions and 3 deletions

View File

@@ -83,7 +83,9 @@ namespace Dakota.Logic
if (verweis is object && verweis.IKVerknüpfungspartners != kostentrager)
return GetIKNummern(dict, ikkrankenkasse, abrechnungscode, tarifkennzeichen, verweis.IKVerknüpfungspartners);
var datenannahmestellen = search.SegmentVKG.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis);
var datenannahmestellen = search.SegmentVKG
.Where(x => x.ArtDerVerknüpfung == Models.Schlüssels.SchlüsselArtDerVerknüpfung.DatenannahmestelleMitEntschlusselungsbefugnis)
.ToList();
// Hat keinen Verweis auf Kostenträger oder Datenannahmestelle gefunden
if (datenannahmestellen is null || !datenannahmestellen.Any())
@@ -92,16 +94,38 @@ namespace Dakota.Logic
if (datenannahmestellen.Count() == 1)
return GetIKNummern(datenannahmestellen.First(), kostentrager, ikkrankenkasse);
var datenannahmestellen_2 = datenannahmestellen.Where(x => x.Abrechnungscode == abrechnungscode);
// Abrechnungscode "69" <=> Sozio
var datenannahmestellen_2 = datenannahmestellen
.Where(x => x.Abrechnungscode == abrechnungscode)
.ToList();
if (datenannahmestellen_2.Count() == 1)
return GetIKNummern(datenannahmestellen_2.First(), kostentrager, ikkrankenkasse);
var datenannahmestellen_3 = datenannahmestellen_2.Where(x => x.Tarifkennzeichen == tarifkennzeichen);
// Tarifkennzeichen
var datenannahmestellen_3 = datenannahmestellen_2
.Where(x => x.Tarifkennzeichen == tarifkennzeichen)
.ToList();
if (datenannahmestellen_3.Count() == 1)
return GetIKNummern(datenannahmestellen_3.First(), kostentrager, ikkrankenkasse);
// ArtDesÜbermittlungsmediums "1" <=> Datenfernübertragung
var filter_list = datenannahmestellen_3;
if(!filter_list.Any())
filter_list = datenannahmestellen_2;
if (!filter_list.Any())
filter_list = datenannahmestellen;
filter_list = filter_list
.Where(x => x.ArtDesÜbermittlungsmediums == "1")
.ToList();
if (filter_list.Count() == 1)
return GetIKNummern(filter_list.First(), kostentrager, ikkrankenkasse);
return null;
}

View File

@@ -76,5 +76,19 @@ namespace DakotaUnitTest
Assert.IsNull(test);
}
[TestMethod]
public void ValidateKnappschaft()
{
var test = Reader.Resolve("109905003", "69", "08000");
Assert.IsNotNull(test);
Assert.IsTrue(test.Item1 == "109905003");
Assert.IsTrue(test.Item2 == "109905003");
Assert.IsTrue(test.Item3 == "109905003");
}
}
}