C# :: IK-Nummer Prüfung
Ok, das hier ist echt ein bisschen speziell. Jede Einrichtung die Leistungen nach dem SGB erbringt kann in Deutschland eine eindeutige Identifikationsnummer beantragen - die sogenannte IK-Nummer (siehe http://www.therapedia.de/wiki/index.php/IK-Nummer)
Eine IK-Nummer lässt sich auf Gültigkeit prüfen:
Die ersten 2 Ziffern (“Klassifikation”) kennzeichnen die Art der Einrichtung oder die Personengruppe
Die Ziffern 3 und 4 (“Regionalbereich”) kennzeichnen das Bundesland der Einrichtung
Die Ziffer 5 bis 8 (“Seriennummer”) werden fortlaufend vergeben
Die Ziffer 9 dient als Prüfziffer
Hier das Snippet für die Prüfung dieser Nummer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public bool IstIKGueltig(string IKNr) { bool retVal = false; int ik1 = Quersumme(Int32.Parse(IKNr.Substring(0, 1)) * 2); int ik2 = Int32.Parse(IKNr.Substring(1, 1)); int ik3 = Quersumme(Int32.Parse(IKNr.Substring(2, 1)) * 2); int ik4 = Int32.Parse(IKNr.Substring(3, 1)); int ik5 = Quersumme(Int32.Parse(IKNr.Substring(4, 1)) * 2); int ik6 = Int32.Parse(IKNr.Substring(5, 1)); int ikSum = (ik1 + ik2 + ik3 + ik4 + ik5 + ik6); string ikPruef = ikSum.ToString().Substring(ikSum.ToString().Length - 1, 1); if (Int32.Parse(IKNr.Substring(6, 1)) == Int32.Parse(ikPruef)) retVal = true; return retVal; } |
Hier noch die Funktion zur Ermittlung der Quersumme:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private int Quersumme(int iNumber) { string strNumbers = iNumber.ToString(); iNumber = 0; List lstParts = new List(); foreach (char ch in strNumbers) { lstParts.Add(Convert.ToInt32(ch.ToString())); } foreach (int i in lstParts) { iNumber = iNumber + i; } return iNumber; } |
mherbert
Hallo,
die Liste in der Quersummen-Funktion ist überflüssig:
private int Quersumme(int iNumber)
{
string strNumbers = iNumber.ToString();
int result = 0;
foreach (char ch in strNumbers)
{
result += Convert.ToInt32(ch.ToString());
}
return result;
}
Konnte nicht widerstehen :)