178 lines
6.2 KiB
C#
178 lines
6.2 KiB
C#
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+<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);
|
||
}
|
||
}
|
||
}
|