From 19117da4953a73cbb41b92f1fd54cf5e7426898c Mon Sep 17 00:00:00 2001 From: sunsetsystems Date: Sat, 28 Jul 2007 17:11:14 +0000 Subject: [PATCH] improved ndc data validation --- interface/forms/fee_sheet/new.php | 41 +++++++++++++++++++++++++++++++------- interface/forms/fee_sheet/view.php | 41 +++++++++++++++++++++++++++++++------- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/interface/forms/fee_sheet/new.php b/interface/forms/fee_sheet/new.php index 005e1d17b..6ac54e840 100644 --- a/interface/forms/fee_sheet/new.php +++ b/interface/forms/fee_sheet/new.php @@ -166,13 +166,40 @@ function copayselect() { } function validate(f) { - for (var lino = 1; f['bill[' + lino + '][code_type]']; ++lino) { - var pfx = 'bill[' + lino + ']'; - if (f[pfx + '[ndcnum]'] && f[pfx + '[ndcnum]'].value) { - if (isNaN(f[pfx + '[ndcqty]'].value - 0)) { - alert('' + f[pfx + '[ndcnum]'].value + - ''); - if (f[pfx + '[ndcqty]'].focus) f[pfx + '[ndcqty]'].focus(); + for (var lino = 1; f['bill['+lino+'][code_type]']; ++lino) { + var pfx = 'bill['+lino+']'; + if (f[pfx+'[ndcnum]'] && f[pfx+'[ndcnum]'].value) { + // Check NDC number format. + var ndcok = true; + var ndc = f[pfx+'[ndcnum]'].value; + var a = ndc.split('-'); + if (a.length != 3) { + ndcok = false; + } + else if (a[0].length < 1 || a[1].length < 1 || a[2].length < 1 || + a[0].length > 5 || a[1].length > 4 || a[2].length > 2) { + ndcok = false; + } + else { + for (var i = 0; i < 3; ++i) { + for (var j = 0; j < a[i].length; ++j) { + var c = a[i].charAt(j); + if (c < '0' || c > '9') ndcok = false; + } + } + } + if (!ndcok) { + alert(' "' + ndc + + '", '); + if (f[pfx+'[ndcnum]'].focus) f[pfx+'[ndcnum]'].focus(); + return false; + } + // Check for valid quantity. + var qty = f[pfx+'[ndcqty]'].value - 0; + if (isNaN(qty) || qty <= 0) { + alert(' "' + ndc + + '" '); + if (f[pfx+'[ndcqty]'].focus) f[pfx+'[ndcqty]'].focus(); return false; } } diff --git a/interface/forms/fee_sheet/view.php b/interface/forms/fee_sheet/view.php index 005e1d17b..6ac54e840 100644 --- a/interface/forms/fee_sheet/view.php +++ b/interface/forms/fee_sheet/view.php @@ -166,13 +166,40 @@ function copayselect() { } function validate(f) { - for (var lino = 1; f['bill[' + lino + '][code_type]']; ++lino) { - var pfx = 'bill[' + lino + ']'; - if (f[pfx + '[ndcnum]'] && f[pfx + '[ndcnum]'].value) { - if (isNaN(f[pfx + '[ndcqty]'].value - 0)) { - alert('' + f[pfx + '[ndcnum]'].value + - ''); - if (f[pfx + '[ndcqty]'].focus) f[pfx + '[ndcqty]'].focus(); + for (var lino = 1; f['bill['+lino+'][code_type]']; ++lino) { + var pfx = 'bill['+lino+']'; + if (f[pfx+'[ndcnum]'] && f[pfx+'[ndcnum]'].value) { + // Check NDC number format. + var ndcok = true; + var ndc = f[pfx+'[ndcnum]'].value; + var a = ndc.split('-'); + if (a.length != 3) { + ndcok = false; + } + else if (a[0].length < 1 || a[1].length < 1 || a[2].length < 1 || + a[0].length > 5 || a[1].length > 4 || a[2].length > 2) { + ndcok = false; + } + else { + for (var i = 0; i < 3; ++i) { + for (var j = 0; j < a[i].length; ++j) { + var c = a[i].charAt(j); + if (c < '0' || c > '9') ndcok = false; + } + } + } + if (!ndcok) { + alert(' "' + ndc + + '", '); + if (f[pfx+'[ndcnum]'].focus) f[pfx+'[ndcnum]'].focus(); + return false; + } + // Check for valid quantity. + var qty = f[pfx+'[ndcqty]'].value - 0; + if (isNaN(qty) || qty <= 0) { + alert(' "' + ndc + + '" '); + if (f[pfx+'[ndcqty]'].focus) f[pfx+'[ndcqty]'].focus(); return false; } } -- 2.11.4.GIT