Files
BeWoPlaner/Shared/Core/DakotaValidator.cs
Rene Evertz 99df9b6960 Model/Changes_2024_10_31 ALLE GKV TABELLEN.txt aktualisiert
-> Bei neu Ausliefern, vorher alte Tabellen Droppen

-> App8 zu App5 Kommunikation

und mehr!
2024-10-31 15:38:24 +01:00

127 lines
5.2 KiB
C#

using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Exceptions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BS.Shared.Core
{
public static class DakotaValidator
{
public static string ValidateCustomer(string insuranceNumber, string versichertenStatus)
{
bool valid_number = IsVersichertennummerValid(insuranceNumber);
bool valid_status = IsVersichertenstatusValid(versichertenStatus);
if (!valid_number && !valid_status)
return $"Versichtertennummer & -status des {Translation.Translator.Translate("Klient/in")} ungültig.";
else if (!valid_number)
return $"Versichertennummer des {Translation.Translator.Translate("Klient/in")} ungültig";
else if (!valid_status)
return $"Versichertenstatus des {Translation.Translator.Translate("Klient/in")} ungültig";
return null;
}
/// <summary>
/// Validiert in erster Phase den Mandator.
/// </summary>
public static void ValidateMandator(MandatorDC mandatordc)
{
if (mandatordc == null)
throw new GkvException("Mandator ist null");
if (!DakotaValidator.IsIKNumberValid(mandatordc.IKLeistungserbringer))
throw new GkvException($"Die IK Nummer des Leistungserbringers \"{mandatordc.IKLeistungserbringer}\" ist ungültig.");
}
/// <summary>
/// Validiert in zweiter Phase die Daten. Bei Fehler wird eine DakotaException geworfen.
/// </summary>
public static void ValidateCustomer(CustomerDC customerDC)
{
string error = null;
if (customerDC == null)
error = "Customer ist null";
else if (!IsVersichertennummerValid(customerDC.InsuranceNumber))
error = $"Klient/in \"{customerDC.LastName}, {customerDC.FirstName}\" hat keine gültige Versichertennummer";
else if (!IsVersichertenstatusValid(customerDC.VersichertenStatus))
error = $"Klient/in \"{customerDC.LastName}, {customerDC.FirstName}\" hat keinen gültigen Versichertenstatus";
if (error != null)
throw new GkvException(error);
}
public static void ValidateOrganisation(OrganisationDC orga)
{
string error = null;
if (orga == null)
error = "Organisation ist null";
else if (!IsLeistungserbringergruppeValid(orga.Leistungserbringergruppe))
error = $"Die Organisation \"{orga.Name}\" hat keine gültige Leistungserbringergruppe: \"{orga.Leistungserbringergruppe}\". Erwarten werden 5 Stellen für das Tarifkennzeichen alleine oder 7 Stellen für den Abrechnungscode und für das Tarifkennzeichen zusammen.";
else if (!IsIKNumberValid(orga.IKKrankenkasse))
error = $"Die Organisation \"{orga.Name}\" hat kein gültiges IK Krankenkasse Kennzeichen: \"{orga.IKKrankenkasse}\".";
else if (!IsIKNumberValid(orga.IKKostentrager))
error = $"Die Organisation \"{orga.Name}\" hat kein gültiges IK Kostenträger Kennzeichen: \"{orga.IKKostentrager}\".";
else if (!IsIKNumberValid(orga.IKDatenannahmestelle))
error = $"Die Organisation \"{orga.Name}\" hat kein gültiges IK Datenannahmestelle Kennzeichen: \"{orga.IKDatenannahmestelle}\".";
else if (string.IsNullOrWhiteSpace(orga.BezDatenannahmestelle))
error = $"Die Organisation \"{orga.Name}\" hat keine gültige Bezeichnung Datenannahmestelle: \"{orga.BezDatenannahmestelle}\".";
if (error != null)
throw new GkvException(error);
}
public static bool IsOrganisationInformationValid(string ik_datenannahmestelle, string ik_kostentrager, string ik_krankenkasse, string bez_datenannahmestelle)
=> IsIKNumberValid(ik_datenannahmestelle, ik_kostentrager, ik_krankenkasse) && !string.IsNullOrEmpty(bez_datenannahmestelle);
public static bool IsIKNumberValid(params string[] iks)
=> iks?.All(IsIKNumberValid) ?? false;
public static bool IsIKNumberValid(string iknummer)
{
if (iknummer == null)
return false;
if (iknummer.Length != 9)
return false;
return int.TryParse(iknummer, out int x);
}
public static bool IsVersichertennummerValid(string nummer)
{
if (nummer == null)
return false;
if (nummer.Length < 10)
return false;
return true;
}
public static bool IsVersichertenstatusValid(string status)
{
if (status == null)
return false;
if (status.Length != 5 && status.Length != 7)
return false;
return true;
}
public static bool IsLeistungserbringergruppeValid(string code)
{
if (code == null)
return false;
if (code.Length != 5 && code.Length != 7)
return false;
return true;
}
}
}