using Dakota.Logic; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.IO; namespace DakotaUnitTest { [TestClass] public class DakotaReaderUnitTest { public DakotaKTDReader Reader { get; set; } [TestInitialize] public void Initialize() { var path = AppDomain.CurrentDomain.BaseDirectory; var project_path = Directory.GetParent(path).Parent.Parent.FullName; var kdt_path = Path.Combine(project_path, "Dakota", "KTDatei"); var reader = new DakotaKTDReader(kdt_path); Reader = reader; } [TestMethod] public void ValidateReaderLoaded() { Assert.IsTrue(Reader is object); } [TestMethod] public void ValidateFileCount() { var count = Reader.GetFileCount(); Assert.IsTrue(count == 6); } [TestMethod] public void ValidateFileEntryCount() { var count = Reader.GetAllFileEntryCount(); Assert.IsTrue(count == 1106); } [TestMethod] public void ValidateBkkGilletteOst() { var test = Reader.Resolve("105328415", "69", "00000"); Assert.IsNotNull(test); Assert.IsTrue(test.IKKrankenkasse == "661430035"); Assert.IsTrue(test.IKKostentrager == "106492406"); Assert.IsTrue(test.IKDatenannahmestelle == "105328415"); } [TestMethod] public void ValidateAOKRheinlandHamburgSoz() { var test = Reader.Resolve("104212505", "69", "00000"); Assert.IsNotNull(test); Assert.IsTrue(test.IKKrankenkasse == "104212516"); Assert.IsTrue(test.IKKostentrager == "104212505"); Assert.IsTrue(test.IKDatenannahmestelle == "104212505"); } [TestMethod] public void ValidateBarmar() { var test = Reader.Resolve("104080005", "69", "08101"); Assert.IsNull(test); } [TestMethod] public void ValidateKnappschaft() { var test = Reader.Resolve("109905003", "69", "08000"); Assert.IsNotNull(test); Assert.IsTrue(test.IKKrankenkasse == "109905003"); Assert.IsTrue(test.IKKostentrager == "109905003"); Assert.IsTrue(test.IKDatenannahmestelle == "109905003"); } // ----------------------------------------------------------------------- // Papierannahmestellen-Tests // Struktur der KT-Datei für Papierannahmestellen: // VKG+09++...++' // 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). // ----------------------------------------------------------------------- /// /// 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) /// [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); } /// /// 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) /// [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); } /// /// 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) /// [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); } } }