262 lines
9.2 KiB
JavaScript
Executable File
262 lines
9.2 KiB
JavaScript
Executable File
var notifBar = document.getElementById('NOTIFBAR');
|
|
notifBar.children[1].children[2].addEventListener('click', function(e){
|
|
e.preventDefault();
|
|
remClass(notifBar, 'active');
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
var inPrenom = document.getElementById('crPrenom');
|
|
var inNom = document.getElementById('crNom');
|
|
var inAdr = document.getElementById('crAdr');
|
|
var inAdr2 = document.getElementById('crAdr2');
|
|
var inCP = document.getElementById('crCP');
|
|
var inVille = document.getElementById('crVille');
|
|
var inDN = document.getElementById('crDN');
|
|
var inLN = document.getElementById('crLN');
|
|
var inSecu = document.getElementById('crSecu');
|
|
var inMedecin = document.getElementById('crMedecin');
|
|
var inCivil = document.querySelectorAll('.crCiv');
|
|
var sbCreer = document.getElementById('sbCreer'); // SUBMIT
|
|
|
|
var inCk = new inputChecker();
|
|
// format de la date
|
|
var dateFormat = new formatChecker(null, 'Ji/Mi/Aiii', { 'J': '[0-3]', 'M': '[0-1]', 'A': '[1-2]' } );
|
|
// format du numéro de sécu
|
|
var secuFormat = new formatChecker(null, 'S ii Mi ii iii iii ii', { 'S': '[0-1]', 'M': '[0-1]' } );
|
|
inCk.append( inCP, new formatChecker( null, 'iiiii'), '09000'); // on ajoute le CODE_POSTAL au vérificateur de champs
|
|
inCk.append( inDN, dateFormat, '01/01/2015'); // on ajoute la DATE_NAISSANCE au vérificateur de champs
|
|
inCk.append( inSecu, secuFormat, '1 99 19 99 999 999 99'); // on ajoute le NUM_SECU au vérificateur de champs
|
|
|
|
|
|
|
|
|
|
//////////////////////////////
|
|
// PRENOM & NOM (VARCHAR 45)//
|
|
//////////////////////////////
|
|
inPrenom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false);
|
|
inNom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 45, true); }, false);
|
|
|
|
|
|
//////////////////////////////////////
|
|
// ADRESSE & ADRESSE2 (VARCHAR 255) //
|
|
//////////////////////////////////////
|
|
inAdr.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false);
|
|
inAdr2.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 5, 255); }, false);
|
|
|
|
////////////////////////////
|
|
// VILLE & LIEU_NAISSANCE //
|
|
////////////////////////////
|
|
inVille.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false);
|
|
inLN.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 3, 50); }, false);
|
|
|
|
/////////////////
|
|
// CODE POSTAL //
|
|
/////////////////
|
|
inCP.addEventListener('keyup', function(e){
|
|
if( inCk.check(inCP) ) addClass(inCP, 'validated'); // on active la classe si correct
|
|
else{ // si incorrect
|
|
remClass(inCP, 'validated'); // on désactive la classe
|
|
inCk.correct(inCP, false); // on corrige partiellement
|
|
if( inCk.check(inCP) ) addClass(inCP, 'validated'); // mise à jour de la classe après correction
|
|
}
|
|
}, false);
|
|
|
|
///////////////////////
|
|
// DATE DE NAISSANCE //
|
|
///////////////////////
|
|
inDN.addEventListener('keyup', function(e){
|
|
if( inCk.check(inDN) ) addClass(inDN, 'validated'); // on active la classe si correct
|
|
else{ // si incorrect
|
|
remClass(inDN, 'validated'); // on désactive la classe
|
|
inCk.correct(inDN, false); // on corrige partiellement
|
|
if( inCk.check(inDN) ) addClass(inDN, 'validated'); // mise à jour de la classe après correction
|
|
}
|
|
}, false);
|
|
|
|
////////////////////
|
|
// NUMERO DE SECU //
|
|
////////////////////
|
|
function checkSecuControlKey(pNumSecu){
|
|
var NIR = pNumSecu.slice(0,-2).replace(/ /g, '');
|
|
var key = pNumSecu.slice(-2);
|
|
|
|
return 97-(NIR%97) == key;
|
|
}
|
|
|
|
inSecu.addEventListener('keyup', function(e){
|
|
if( inCk.check(inSecu) ){
|
|
|
|
if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte
|
|
addClass(inSecu, 'validated'); // on dis que le champ est valide
|
|
remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide
|
|
}else{
|
|
remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide
|
|
addClass(inSecu, 'invalid'); // on dis qu'il est invalide
|
|
}
|
|
|
|
}else{ // si incorrect
|
|
|
|
remClass(inSecu, 'validated'); // on désactive la classe
|
|
remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide
|
|
|
|
inCk.correct(inSecu, false); // on corrige partiellement
|
|
if( inCk.check(inSecu) ){
|
|
|
|
if( checkSecuControlKey(inSecu.value) ){ // si la clé est correcte
|
|
addClass(inSecu, 'validated'); // on dis que le champ est valide
|
|
remClass(inSecu, 'invalid'); // on dis qu'il n'est pas invalide
|
|
}else{
|
|
remClass(inSecu, 'validated'); // on dis que le champ n'est pas valide
|
|
addClass(inSecu, 'invalid'); // on dis qu'il est invalide
|
|
}
|
|
}
|
|
}
|
|
}, false);
|
|
|
|
|
|
sbCreer.addEventListener('click', function(e){
|
|
e.preventDefault(); // on annule le submit()
|
|
|
|
var formElements = sbCreer.parentNode.children;
|
|
var checker = true;
|
|
|
|
// pour chaque <input type='text'> du formulaire (fils direct uniquement)
|
|
for( var i = 0 ; i < formElements.length ; i++ ){ if( formElements[i] instanceof HTMLInputElement && formElements[i].type == 'text' ){
|
|
// si le champ est requis (required)
|
|
if( formElements[i].required )
|
|
checker = checker && formElements[i].className.indexOf('validated') > -1; // TRUE => validé (niveau interface)
|
|
// si le champ n'est pas requis et pas vide, on le vide
|
|
else if( formElements[i].value != '' && formElements[i].className.indexOf('validated') < 0 ) // si incorrect et pas vide
|
|
formElements[i].value = ''; // on vide
|
|
}}
|
|
|
|
var inputCheckerValid = inCk.checkAll();
|
|
|
|
if( inputCheckerValid && checker ){ // si tout es ok uniquement, on submit()
|
|
|
|
var request = {
|
|
prenom: inPrenom.value,
|
|
nom: inNom.value,
|
|
civilite: (inCivil[0].checked) ? inCivil[0].value : inCivil[1].value,
|
|
adresse: inAdr.value,
|
|
adresse2: (inAdr2.value.length>0) ? inAdr2.value : null,
|
|
code_postal: inCP.value,
|
|
ville: inVille.value,
|
|
date_naissance: inDN.value,
|
|
lieu_naissance: inLN.value,
|
|
num_secu: inSecu.value,
|
|
medecin_traitant: (inMedecin.value!='.') ? inMedecin.value : null
|
|
};
|
|
|
|
API.send('Patient:add', request, function(e){
|
|
notif(e.status, e.title, e.message);
|
|
|
|
if( e.status == 'success' ) // on vide le formulaire si on a 'success'
|
|
sbCreer.parentNode.reset();
|
|
}, false);
|
|
|
|
|
|
}else{ // sinon on affiche l'erreur
|
|
notif('error', 'Oups!', 'Certains champs sont requis ou incorrects.');
|
|
}
|
|
}, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* RECHERCHE DE MEDECINS */
|
|
var srPrenom = document.getElementById('srPrenom');
|
|
var srNom = document.getElementById('srNom');
|
|
var sbCherche = document.getElementById('sbCherche');
|
|
|
|
|
|
//////////////////////////////
|
|
// PRENOM & NOM (VARCHAR 45)//
|
|
//////////////////////////////
|
|
srPrenom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 1, 45, true); }, false);
|
|
srNom.addEventListener('keyup', function(e){ checkVARCHAR(e.target, 1, 45, true); }, false);
|
|
|
|
//////////////
|
|
// SUBMIT() //
|
|
//////////////
|
|
sbCherche.addEventListener('click', function(e){
|
|
e.preventDefault(); // on annule le submit()
|
|
|
|
var correctNom = srNom.className.indexOf('validated') > -1 && srNom.value.length > 0;
|
|
var correctPrenom = srPrenom.className.indexOf('validated') > -1 && srPrenom.value.length > 0;
|
|
|
|
if( correctPrenom || correctNom ){ // si tout es ok uniquement, on submit()
|
|
|
|
var request = {
|
|
prenom: (correctPrenom) ? srPrenom.value : null,
|
|
nom: (correctNom) ? srNom.value : null
|
|
};
|
|
|
|
API.send('Patient:search', request, function(e){
|
|
if( e.status != 'success' )
|
|
notif(e.status, e.title, e.message);
|
|
|
|
if( e.hasOwnProperty('patients') )
|
|
displayFoundPatients(e.patients);
|
|
else
|
|
displayFoundPatients([]);
|
|
|
|
if( e.status == 'success' ) // on vide le formulaire si on a 'success'
|
|
sbCreer.parentNode.reset();
|
|
}, false);
|
|
|
|
|
|
}else // sinon on affiche l'erreur
|
|
notif('error', 'Oups!', 'Certains champs sont requis ou incorrects.');
|
|
|
|
}, false);
|
|
|
|
|
|
|
|
////////////////////////////////////////////
|
|
// AFFICHAGE DES MEDECINS DE LA RECHERCHE //
|
|
////////////////////////////////////////////
|
|
function displayFoundPatients(foundPatients){
|
|
var container = document.getElementById('searchResultPatient');
|
|
var content = '';
|
|
|
|
for( var i = 0 ; i < foundPatients.length ; i++ ){
|
|
content += '<tr>';
|
|
// début modification
|
|
content += "<td colspan=5><form class='updPatient' action='#update_patient' method='POST'>";
|
|
content += "<input type='hidden' name='update_id' value='"+ foundPatients[i].Id +"'>";
|
|
content += "<span>"+ ((foundPatients[i].Civilite=='M')?'Monsieur':'Madame') + "</span>";
|
|
content += "<span>"+ foundPatients[i].Prenom + "</span>";
|
|
content += "<span>"+ foundPatients[i].Nom.toUpperCase() + "</span>";
|
|
content += "<span>"+ foundPatients[i].DateNaissance + "</span>";
|
|
content += "<span>"+ foundPatients[i].NumSecuriteSociale + "</span>";
|
|
content += "<input type='submit' value=''>";
|
|
|
|
content += '</form></td>';
|
|
// fin modification
|
|
|
|
// début suppression
|
|
content += "<td><form class='delPatient' action='managers/' method='POST'>";
|
|
content += "<input type='hidden' name='command' value='Patient:delete'>";
|
|
content += "<input type='hidden' name='id_patient' value='"+foundPatients[i].Id+"'>";
|
|
content += "<input type='submit' value=''>";
|
|
content += '</form></td>';
|
|
// fin suppression
|
|
content += '</tr>';
|
|
}
|
|
|
|
|
|
// on vide le container
|
|
container.innerHTML = content;
|
|
} |