GKV-Abrechnung: Papierannahmestelle-Ermittlung korrigiert, für den Fall dass mehrere Einträge ermittelt werden und Unittests hinzugefügt
SupportOID=157241
This commit is contained in:
@@ -265,8 +265,9 @@ namespace Dakota.Logic
|
||||
if (!filter_list.Any())
|
||||
filter_list = papierannahmestellen;
|
||||
|
||||
if (filter_list.Count() == 1)
|
||||
return filter_list.First().IKVerknüpfungspartners;
|
||||
var distinctIKs = filter_list.Select(x => x.IKVerknüpfungspartners).Distinct().ToList();
|
||||
if (distinctIKs.Count == 1)
|
||||
return distinctIKs.First();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -95,5 +95,83 @@ namespace DakotaUnitTest
|
||||
|
||||
Assert.IsTrue(test.IKDatenannahmestelle == "109905003");
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Papierannahmestellen-Tests
|
||||
// Struktur der KT-Datei für Papierannahmestellen:
|
||||
// VKG+09+<PapierIK>+...+<Abrechnungscode>+<Tarifkennzeichen>'
|
||||
// GetPapierIK() gibt das IK der Papierannahmestelle zurück.
|
||||
// Resolve() befüllt dann GkvKostentragerdateiSummary.Papierannahmeanschrift
|
||||
// aus den ANS-Segmenten des PapierIK-Eintrags (Prio: Haus > Postfach > GK).
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
/// <summary>
|
||||
/// AOK Nordost Region MVP (IK 100395611) hat genau einen VKG+09-Eintrag:
|
||||
/// VKG+09+109519016+5++28+6+++00' → PapierIK = 109519016
|
||||
/// Eintrag 109519016 (AOK Nordost - Rechnungsannahme) besitzt:
|
||||
/// ANS+1+14513+Teltow+Am Teltowkanal 8' (Hausanschrift – höchste Priorität)
|
||||
/// ANS+2+14302+Berlin+140252' (Postfach – wird nicht verwendet)
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void ValidateAokNordostMvp_Papierannahmestelle_Hausanschrift()
|
||||
{
|
||||
var test = Reader.Resolve("100395611", "69", "00000");
|
||||
|
||||
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
|
||||
|
||||
var papier = test.Papierannahmeanschrift;
|
||||
Assert.IsNotNull(papier, "Papierannahmeanschrift soll gesetzt sein (PapierIK = 109519016).");
|
||||
|
||||
Assert.AreEqual("AOK Nordost - Rechnungsannahme", papier.AddressLine1,
|
||||
"AddressLine1 soll die Kurzbezeichnung des PapierIK-Eintrags enthalten.");
|
||||
Assert.AreEqual("14513", papier.PostalCode);
|
||||
Assert.AreEqual("Teltow", papier.Town);
|
||||
Assert.AreEqual("Am Teltowkanal 8", papier.Street);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AOK Rheinland-Pfalz (IK 106215364) hat genau einen VKG+09-Eintrag:
|
||||
/// VKG+09+106315285+5++28+6+++00' → PapierIK = 106315285
|
||||
/// Eintrag 106315285 (AOK Rheinland-Pfalz/Saarland) besitzt:
|
||||
/// ANS+1+56070+Koblenz+Am Sender 1' (nur Hausanschrift)
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void ValidateAokRheinlandPfalz_Papierannahmestelle_Hausanschrift()
|
||||
{
|
||||
var test = Reader.Resolve("106215364", "69", "00000");
|
||||
|
||||
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
|
||||
|
||||
var papier = test.Papierannahmeanschrift;
|
||||
Assert.IsNotNull(papier, "Papierannahmeanschrift soll gesetzt sein (PapierIK = 106315285).");
|
||||
|
||||
Assert.AreEqual("AOK Rheinland-Pfalz/Saarland", papier.AddressLine1);
|
||||
Assert.AreEqual("56070", papier.PostalCode);
|
||||
Assert.AreEqual("Koblenz", papier.Town);
|
||||
Assert.AreEqual("Am Sender 1", papier.Street);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SECURVITA BKK (IK 101320032) hat zwei VKG+09-Einträge, die beide
|
||||
/// auf dieselbe Papierannahmestelle zeigen:
|
||||
/// VKG+09+107436557+5++28++++00' (ArtDerDatenlieferung 28)
|
||||
/// VKG+09+107436557+5++29++++00' (ArtDerDatenlieferung 29)
|
||||
/// </summary>
|
||||
[TestMethod]
|
||||
public void ValidateSecurvitaBkk_Papierannahmestelle_MehrereVkgGleichesPaperIK()
|
||||
{
|
||||
var test = Reader.Resolve("101320032", "69", "00000");
|
||||
|
||||
Assert.IsNotNull(test, "Resolve() soll nicht null zurückgeben.");
|
||||
|
||||
var papier = test.Papierannahmeanschrift;
|
||||
Assert.IsNotNull(papier,
|
||||
"Papierannahmeanschrift null, obwohl zwei VKG+09-Einträge " +
|
||||
"auf IK 107436557 (AZE Emmendingen) zeigen.");
|
||||
|
||||
Assert.AreEqual("AZE Emmendingen", papier.AddressLine1);
|
||||
Assert.AreEqual("79312", papier.PostalCode);
|
||||
Assert.AreEqual("Emmendingen", papier.Town);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user