Yeah NHI number validation! There is an exciting document here that the Ministry of Health have supplied which specifies what makes an NHI number valid or not.
Here's a method y'all.
public bool ValidateNhi(string nhi)
{
bool valid = false;
const string validNhiChars = "ABCDEFGHJKLMNPQRSTUVWXYZ";
nhi = nhi.ToUpper();
// must be seven chars long
if (nhi.Length == 7)
{
// must not contain I or O
if (!nhi.Contains("I") && !nhi.Contains("O"))
{
// last four must be integer
int parsed;
if (int.TryParse(nhi.Substring(3), out parsed))
{
// multiply each character by 8 minus its index and then sum em all together
// e.g. first char * 7 + second char * 6 + third char * 5 etc
int result = 0;
int counter = 7;
foreach (var character in nhi.Substring(0, 6)) // exclude last character
{
int parsedCharacter = counter > 4 ? validNhiChars.IndexOf(character) + 1 : (int)Char.GetNumericValue(character);
result = result + (counter * parsedCharacter);
counter--;
}
// create a checksum by mod 11
int checksum = result % 11;
int checkDidgit = 11 - checksum;
if (checkDidgit == 10)
checkDidgit = 0;
// last value in nhi number must equal check digit
valid = (int)Char.GetNumericValue(nhi.Last()) == checkDidgit;
}
}
}
return valid;
}
I can't deal with the excitement!
No comments:
Post a Comment