Changeset 1300


Ignore:
Timestamp:
Feb 28, 2011, 11:40:18 AM (11 years ago)
Author:
Nicklas Nordborg
Message:

References #291: Personal information registration

Better handling of cases where laterality information is missing on specimen tubes or when it is not consistent.

Cleaning up some validation code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.reggie/trunk/resources/persinfo.jsp

    r1290 r1300  
    2929var pnrIsValid = false;
    3030var caseIsValid = false;
     31var lateralityIsValid = false;
    3132
    3233var patientInfo = null;
    3334var caseInfo = null;
    3435
     36function init()
     37{
     38  var frm = document.forms['reggie'];
     39  frm.caseName.focus();
     40}
     41
     42function step1IsValid()
     43{
     44  return pnrIsValid && caseIsValid;
     45}
     46
     47function step2IsValid()
     48{
     49  var formOk = true;
     50  var frm = document.forms['reggie'];
     51
     52  // New patient only
     53  if (!patientInfo.id)
     54  {
     55    // Validate 'New patient' form
     56    if (frm.allFirstNames.value == '')
     57    {
     58      setInputStatus('allFirstNames', 'Missing', 'invalid');
     59      frm.allFirstNames.focus();
     60      formOk = false;
     61    }
     62    else
     63    {
     64      setInputStatus('allFirstNames', '', 'valid');
     65    }
     66   
     67    if (frm.familyName.value == '')
     68    {
     69      setInputStatus('familyName', 'Missing', 'invalid');
     70      frm.familyName.focus();
     71      formOk = false;
     72    }
     73    else
     74    {
     75      setInputStatus('familyName', '', 'valid');
     76    }
     77
     78    if (frm.patientCode.value == '')
     79    {
     80      setInputStatus('patientCode', 'Missing', 'invalid');
     81      frm.patientCode.focus();
     82      formOk = false;
     83    }
     84    else
     85    {
     86      setInputStatus('patientCode', '', 'valid');
     87    }
     88  }
     89  return formOk;
     90}
     91
     92function step3IsValid()
     93{
     94  return lateralityIsValid;
     95}
     96
    3597function goNext()
    3698{
    3799  if (currentStep == 1)
    38100  {
    39     if (pnrIsValid && caseIsValid) gotoStep2();
     101    if (step1IsValid()) gotoStep2();
    40102  }
    41103  else if (currentStep == 2)
    42104  {
    43     gotoStep3();
     105    if (step2IsValid()) gotoStep3();
    44106  }
    45107}
     
    97159  setInputStatus('pnr', '', 'valid');
    98160  pnrIsValid = true;
    99  
    100   //if (caseIsValid) gotoStep2();
    101161}
    102162
    103163function lateralityOnChange()
    104164{
     165  lateralityIsValid = false;
     166 
    105167  // Check selected laterality against specimen tubes
    106168  var frm = document.forms['reggie'];
     
    108170 
    109171  // No laterality/case selected
    110   if (selectedLaterality == null) return;
     172  if (selectedLaterality == null)
     173  {
     174    setInputStatus('laterality', 'Not selected', 'invalid');
     175    return;
     176  }
     177  setInputStatus('laterality', '', 'valid');
     178  lateralityIsValid = true;
    111179 
    112180  var laterality = selectedLaterality.value;
     
    129197  // No specimen tubes
    130198  if (!caseInfo.specimen || caseInfo.specimen.length == 0) return;
    131  
    132199  for (var i = 0; i < caseInfo.specimen.length; i++)
    133200  {
     
    139206    }
    140207  }
    141   setInputStatus('laterality', '', 'valid');
    142208}
    143209
     
    165231  request.send(null);
    166232 
    167   setInnerHTML('debug', request.responseText);
     233  //setInnerHTML('debug', request.responseText);
    168234 
    169235  var response = JSON.parse(request.responseText);
     
    202268  // Check entered case and pnr with AJAX
    203269  var frm = document.forms['reggie'];
    204 
    205   if (!patientInfo.id)
    206   {
    207     var formOk = true;
    208     // Validate 'New patient' form
    209     if (frm.allFirstNames.value == '')
    210     {
    211       setInputStatus('allFirstNames', 'Missing', 'invalid');
    212       frm.allFirstNames.focus();
    213       formOk = false;
    214     }
    215     else
    216     {
    217       setInputStatus('allFirstNames', '', 'valid');
    218     }
    219    
    220     if (frm.familyName.value == '')
    221     {
    222       setInputStatus('familyName', 'Missing', 'invalid');
    223       frm.familyName.focus();
    224       formOk = false;
    225     }
    226     else
    227     {
    228       setInputStatus('familyName', '', 'valid');
    229     }
    230 
    231    
    232     if (frm.patientCode.value == '')
    233     {
    234       setInputStatus('patientCode', 'Missing', 'invalid');
    235       frm.patientCode.focus();
    236       formOk = false;
    237     }
    238     else
    239     {
    240       setInputStatus('patientCode', '', 'valid');
    241     }
    242     if (!formOk) return;
    243   }
    244  
    245   currentStep = 3;
     270 
    246271  if (!patientInfo.id)
    247272  {
     
    252277    patientInfo.allFirstNames = frm.allFirstNames.value;
    253278  }
     279  currentStep = 3;
    254280 
    255281  // Generate list of specimen tubes
     
    274300        thisCaseLaterality = specimen.laterality;
    275301      }
     302      else
     303      {
     304        specimenTubes += ' (<i>unknown laterality</i>)';
     305      }
    276306      specimenTubes += '<br>';
    277307    }
     
    303333      }
    304334      if (cc.laterality == thisCaseLaterality) cases += ' checked';
    305       cases += ' onclick="lateralityOnChange()">';
    306       cases += cc.name + ' (' + cc.laterality + ')<br>';
     335      cases += ' onclick="lateralityOnChange()">' + cc.name;
     336      if (cc.laterality)
     337      {
     338        cases += ' (' + cc.laterality + ')<br>';
     339      }
     340      else
     341      {
     342        cases += ' (<i>unknown laterality</i>)<br>';
     343      }
    307344    }
    308345   
    309     if (!hasLeftCase)
    310     {
    311       cases += '<input type="radio" name="laterality" value="LEFT" ';
    312       if (thisCaseLaterality == 'LEFT') cases += ' checked';
    313       cases += ' onclick="lateralityOnChange()"><i>new case</i> (LEFT)<br>';
    314     }
    315     if (!hasRightCase)
    316     {
    317       cases += '<input type="radio" name="laterality" value="RIGHT"';
    318       if (thisCaseLaterality == 'RIGHT') cases += ' checked';
    319       cases += ' onclick="lateralityOnChange()"><i>new case</i> (RIGHT)<br>';
     346    if (patientInfo.cases.length == 1)
     347    {
     348      if (!hasLeftCase)
     349      {
     350        cases += '<input type="radio" name="laterality" value="LEFT" ';
     351        if (thisCaseLaterality == 'LEFT') cases += ' checked';
     352        cases += ' onclick="lateralityOnChange()"><i>new case</i> (LEFT)<br>';
     353      }
     354      if (!hasRightCase)
     355      {
     356        cases += '<input type="radio" name="laterality" value="RIGHT"';
     357        if (thisCaseLaterality == 'RIGHT') cases += ' checked';
     358        cases += ' onclick="lateralityOnChange()"><i>new case</i> (RIGHT)<br>';
     359      }
    320360    }
    321361   
    322     if (hasLeftCase && hasRightCase)
     362    if (patientInfo.cases.length == 2)
    323363    {
    324364      setInnerHTML('laterality.prompt', 'Merge with case');
     
    339379function goCreate()
    340380{
     381  if (!step3IsValid()) return;
     382 
    341383  Main.hide('gocreate');
    342384  var frm = document.forms['reggie'];
     
    344386  caseInfo.laterality = Forms.getCheckedRadio(frm.laterality).value;
    345387  caseInfo.reasonIfNoSpecimen = frm.reasonIfNoSpecimen.value;
    346  
     388
     389  for (var i = 0; i < frm.laterality.length; i++)
     390  {
     391    frm.laterality[i].disabled = true;
     392  }
     393  frm.reasonIfNoSpecimen.disabled = true;
     394
    347395  var submitInfo = new Object();
    348396  submitInfo.patientInfo = patientInfo;
     
    355403  request.send(JSON.stringify(submitInfo));
    356404
    357   setInnerHTML('debug', request.responseText);
     405  //setInnerHTML('debug', request.responseText);
    358406 
    359407  var response = JSON.parse(request.responseText);
     
    511559</style>
    512560</base:head>
    513 <base:body>
     561<base:body onload="init()">
    514562
    515563  <p:path style="margin-top: 20px; margin-bottom: 10px;">
Note: See TracChangeset for help on using the changeset viewer.