2024-10-17 13:57:06 +02:00
using BS.Shared.DataContracts ;
using BS.Shared.DataContracts.GkvAbrechnung ;
2024-10-28 15:48:18 +01:00
using BS.Shared.Exceptions ;
2024-10-17 13:57:06 +02:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
namespace BS.Shared.Core
{
2024-11-06 18:57:57 +01:00
public static class Validator
2024-10-17 13:57:06 +02:00
{
2024-11-06 18:57:57 +01:00
public static bool? IsValid ( ValidationType val_type , string val_str )
{
if ( string . IsNullOrEmpty ( val_str ) )
return null ;
switch ( val_type )
{
case ValidationType . CustomerVersichertenstatus :
return IsVersichertenstatusValid ( val_str ) ;
case ValidationType . CustomerVersichertennummer :
return IsVersichertennummerValid ( val_str ) ;
case ValidationType . OrganisationIKNumber :
return IsIKNumberValid ( val_str ) ;
case ValidationType . OrganisationLeistungserbringergruppe :
return IsLeistungserbringergruppeValid ( val_str ) ;
case ValidationType . OrganisationBezDatenannahmestelle :
return IsBezDatenannahmestelleValid ( val_str ) ;
}
return false ;
}
public static string InvalidTooltipTxt ( ValidationType val_type )
{
switch ( val_type )
{
case ValidationType . CustomerVersichertenstatus :
return "CustomerVersichertenstatus invalid" ;
case ValidationType . CustomerVersichertennummer :
return "CustomerVersichertennummer invalid" ;
case ValidationType . OrganisationIKNumber :
return "OrganisationIKNumber invalid" ;
case ValidationType . OrganisationLeistungserbringergruppe :
return "OrganisationLeistungserbringergruppe invalid" ;
case ValidationType . OrganisationBezDatenannahmestelle :
return "OrganisationBezDatenannahmestelle invalid" ;
}
return "xxx" ;
}
2024-10-21 16:09:52 +02:00
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 ;
}
2024-10-28 15:48:18 +01:00
public static void ValidateMandator ( MandatorDC mandatordc )
{
if ( mandatordc = = null )
throw new GkvException ( "Mandator ist null" ) ;
2024-11-06 18:57:57 +01:00
if ( ! Validator . IsIKNumberValid ( mandatordc . IKLeistungserbringer ) )
2024-10-28 15:48:18 +01:00
throw new GkvException ( $"Die IK Nummer des Leistungserbringers \" { mandatordc . IKLeistungserbringer } \ " ist ungültig." ) ;
}
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}\"." ;
2024-10-31 15:38:24 +01:00
else if ( string . IsNullOrWhiteSpace ( orga . BezDatenannahmestelle ) )
2024-10-28 15:48:18 +01:00
error = $"Die Organisation \" { orga . Name } \ " hat keine gültige Bezeichnung Datenannahmestelle: \"{orga.BezDatenannahmestelle}\"." ;
if ( error ! = null )
throw new GkvException ( error ) ;
}
2024-10-17 15:54:06 +02:00
public static bool IsOrganisationInformationValid ( string ik_datenannahmestelle , string ik_kostentrager , string ik_krankenkasse , string bez_datenannahmestelle )
2024-11-06 18:57:57 +01:00
= > IsIKNumberValid ( ik_datenannahmestelle , ik_kostentrager , ik_krankenkasse ) & & IsBezDatenannahmestelleValid ( bez_datenannahmestelle ) ;
2024-10-17 15:54:06 +02:00
public static bool IsIKNumberValid ( params string [ ] iks )
= > iks ? . All ( IsIKNumberValid ) ? ? false ;
2024-11-06 18:57:57 +01:00
public static bool IsBezDatenannahmestelleValid ( string bez_datenannahmestelle )
{
return ! string . IsNullOrWhiteSpace ( bez_datenannahmestelle ) ;
}
2024-10-17 15:54:06 +02:00
public static bool IsIKNumberValid ( string iknummer )
2024-10-17 13:57:06 +02:00
{
if ( iknummer = = null )
return false ;
2024-11-06 18:57:57 +01:00
iknummer = iknummer . Trim ( ) ;
2024-10-17 13:57:06 +02:00
if ( iknummer . Length ! = 9 )
return false ;
return int . TryParse ( iknummer , out int x ) ;
}
2024-10-17 15:54:06 +02:00
public static bool IsVersichertennummerValid ( string nummer )
{
if ( nummer = = null )
return false ;
2024-11-06 18:57:57 +01:00
nummer = nummer . Trim ( ) ;
if ( nummer . Length < 6 )
return false ;
if ( nummer . Length > 12 )
2024-10-17 15:54:06 +02:00
return false ;
return true ;
}
public static bool IsVersichertenstatusValid ( string status )
2024-10-17 13:57:06 +02:00
{
if ( status = = null )
return false ;
2024-11-06 18:57:57 +01:00
status = status . Trim ( ) ;
if ( status . Length = = 0 )
return false ;
if ( status . Length = = 6 )
return false ;
if ( status . Length > = 8 )
2024-10-17 13:57:06 +02:00
return false ;
return true ;
}
2024-10-17 15:54:06 +02:00
public static bool IsLeistungserbringergruppeValid ( string code )
2024-10-17 13:57:06 +02:00
{
if ( code = = null )
return false ;
2024-11-06 18:57:57 +01:00
code = code . Trim ( ) ;
2024-10-17 13:57:06 +02:00
if ( code . Length ! = 5 & & code . Length ! = 7 )
return false ;
return true ;
}
2024-10-17 15:54:06 +02:00
}
2024-10-17 13:57:06 +02:00
}