Home > C#, Sonstiges > C# :: IK-Nummer Prüfung

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;
        }
KategorienC#, Sonstiges Tags:
  1. pascal
    14. Dezember 2011, 13:18 | #1

    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 :)

  1. Bisher keine Trackbacks

Spam protection by WP Captcha-Free