diff --git a/Js/fonctions.js b/Js/fonctions.js index 8a3ab8b..bcc4cbe 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -25543,3 +25543,3507 @@ function dentisterie() return; } + dentisteriePossible=$("#dentisteriePossible").val(); + + if (dentisteriePossible!="1") + { + v_msg="Non autorisé!"; + v_msgEng="Not allowed!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + affectionObligatoire=$("#affectionObligatoire").val(); + codeAffection=$("#codeAffection").val(); + modeSaisieFacture=$("#modeSaisieFacture").val(); + + hospitalisation = $("#hospitalisation").val(); + if (hospitalisation=="1") + { + v_msg="Non autoris\u00e9 car la p\u00e9riode d'hospitalisation est en cours."; + v_msgEng="Not authorized because the period of hospitalization is in progress."; + + alert_ebene_callback(v_msg, v_msgEng, function() { + window.location.assign($("#racineWeb").val()+"Feuillemaladie/"); + }); + + return; + } + + + if (affectionObligatoire=="1" && codeAffection=="990" && modeSaisieFacture!="1") + { + v_msg="Diagnostique exig\u00e9!"; + v_msgEng="Diagnosis required!"; + alert_ebene(v_msg, v_msgEng); + + $("#libelleAffection").focus(); + $("#btn_pop_affection").click(); + + return; + } + + + window.location.assign($("#racineWeb" ).val()+"Dentisterie/"); +} + +function ajoute_dentaire() +{ + var codeActe = $('#codeActe').val(); + + if (!codeActe || codeActe.trim() <= " ") { + $("#searchInput").focus(); + alert_ebene( + "Veuillez sélectionner un acte!", + "Please select an act!" + ); + return; + } + + var ententePrealable = $('#ententePrealable').val(); + + var numeroDent = $("#numeroDent").val(); + + var motifDentaire = $('#motifDentaire').val(); + + var idCollege = $('#idCollege').val(); + var nbreProthese = $('#nbreProthese').val(); + + donnees = 'codeActe='+codeActe+'&numeroDent='+numeroDent+'&motifDentaire='+motifDentaire; + + var div_prestations = $('#div_prestations'); + div_prestations.html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/ajouter/", + type: 'POST', + data: donnees, + success: function(data) + { + div_prestations.html(data); + var bool = $('#bool').val(); + + if(bool=="1"){ + v_msg="Ajout impossible risque de doublons!"; + v_msgEng="Addition impossible risk of duplicates!"; + + alert_ebene(v_msg, v_msgEng); + return; + } + }, + error : function(resultat, statut, erreur) + { + }, + complete: function(data) + { + dentisterie(); + } + }); +} + +// 07-11-2022 +function ajax_maj_prixacte_dentaire(idPrestationactes, prix, controle) +{ + prix=prix.replace(",","."); + prix=prix.replace(/ /g,""); + controle.value=prix; + + if(controle_numerique(controle)) + { + if(prix==0) + { + controle.focus(); + v_msg="Veuillez saisir le prix!"; + v_msgEng="Please enter the price!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + donnees = 'idPrestationactes='+idPrestationactes+"&prix="+prix; + + donnee_a_affciher = ""; + + donnees = 'idPrestationactes='+idPrestationactes+"&prix="+prix;; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/majprixacte/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_affciher = data; + }, + error: function(data) { + }, + complete: function() { + $("#div_prestations").html(donnee_a_affciher); + controle.focus(); + } + }); + } +} + + +function ajax_maj_qte_acte_dentaire(idPrestationactes, quantite, controle) +{ + quantite=quantite.replace(",","."); + controle.value=quantite; + + if(controle_numerique(controle)) + { + if(quantite==0) + { + controle.focus(); + v_msg="Veuillez saisir la quantité!"; + v_msgEng="Please enter the quantity!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + donnees = 'idPrestationactes='+idPrestationactes+"&quantite="+quantite; + + donnee_a_affciher = ""; + + donnees = 'idPrestationactes='+idPrestationactes+"&quantite="+quantite;; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/majquantite/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_affciher = data; + }, + error: function(data) { + }, + complete: function() { + $("#div_prestations").html(donnee_a_affciher); + controle.focus(); + } + }); + } +} + +/** + * Fonction pour supprimer un acte dentaire sélectionné + * - Affiche une confirmation avant suppression + * - Envoie la requête de suppression via AJAX + * - Met à jour l'affichage après suppression + * @param {number} idPrestationactes - L'identifiant de l'acte dentaire à supprimer + */ +async function supprimer_acte_dentaire_selection(idPrestationactes) { + let donnee_a_affciher = ""; + + // Demande de confirmation avec gestion multilingue + const isConfirm = await confirm_ebene_sweet( + "Confirmez-vous la suppression de cet acte?", + "Do you confirm the removal of this act?" + ); + + if (!isConfirm) { + return false; + } + + // Affichage du loader pendant le traitement + $("#listeacte").html('
' + '
'); + + // Préparation des données pour la requête AJAX + const donnees = `idPrestationactes=${idPrestationactes}`; + + try { + // Envoi de la requête AJAX + const response = await $.ajax({ + url: $("#racineWeb").val() + "Ajaxdetaildentisterie/supprimeracte/", + type: 'POST', + data: donnees + }); + + // Traitement de la réponse + donnee_a_affciher = response; + + // Mise à jour de l'affichage + $("#div_prestations").html(donnee_a_affciher); + + } catch (error) { + console.error("Erreur lors de la suppression de l'acte:", error); + // Gestion d'erreur supplémentaire possible ici + } +} + +/** + * Fonction pour valider un traitement dentaire + * - Demande confirmation à l'utilisateur + * - Envoie la validation via AJAX + * - Affiche un message si demande d'accord préalable envoyée + * - Recharge la feuille de maladie après traitement + */ +async function valider_dentaire() { + // Récupération des états actuels + const existeEntentePrealable = parseInt($("#existeEntentePrealable").val()); + const envoyeSms = parseInt($("#envoyeSms").val()); + + // Demande de confirmation multilingue + const isConfirm = await confirm_ebene_sweet( + "Confirmez-vous la validation?", + "Do you confirm validation?" + ); + + if (!isConfirm) { + return false; + } + + try { + // Envoi de la validation via AJAX + await $.ajax({ + url: $("#racineWeb").val() + "Ajaxdetaildentisterie/valider/", + type: 'POST', + data: '' + }); + + // Vérification si besoin d'envoyer un message de confirmation + if (existeEntentePrealable === 2 && envoyeSms === 0) { + alert_ebene( + "Demande accord préalable envoyée!", + "Request prior agreement sent!" + ); + } + + // Rechargement de la feuille de maladie + feuillemaladie(); + + } catch (error) { + console.error("Erreur lors de la validation dentaire:", error); + // Gestion d'erreur supplémentaire possible ici + } +} + +function add_selected_dentisterie(controle) +{ + + + motifDentaire = $("#motifDentaire").val(); + + if (motifDentaire<=" ") + { + v_msg="Veuillez entrer le motif de la prescription dentaire!"; + v_msgEng="Please enter the reason for the dental prescription!"; + alert_ebene(v_msg, v_msgEng); + + $("#searchInput").val(""); + $("#motifDentaire").focus(); + + return; + }else{ + var str = controle.split(' <==> '); + + + var codeActe = str[0]; + var libelleActe = str[1]; + var acteExclu = str[2]; + var ententePrealable = str[3]; + + var datePrescription = $("#datePrescription").val(); + + var statut = isStatut(codeActe); + + //alert(statut); + //return; + + if(statut!='1') + { + v_msg="Cet acte n'est pas autorisé!"; + v_msgEng="This act is not allowed!"; + alert_ebene(v_msg, v_msgEng); + + getstatutacte(codeActe); + $('#searchInput').val(''); + $("#div_selection").hide(); + return; + } + + if(acteExclu=="Garanti"){ + acteExclu=0; + }else{ + acteExclu=1; + } + + if(ententePrealable=="Demander Accord"){ + ententePrealable=1; + }else{ + ententePrealable=0; + } + + if(libelleActe<=" ") + { + $("#codeActe").focus(); + return; + } + + if(acteExclu==1) + { + v_msg="Acte non couvert!"; + v_msgEng="Not covered!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + + $("#codeActe").val(codeActe); + $("#libelleActe").val(libelleActe); + //$("#prixTarif").val("0"); + //$("#codeGarantie").val("DEN"); + $("#acteExclu").val(acteExclu); + $("#ententePrealable").val(ententePrealable); + } +} + +function maj_motif_dentaire() +{ + motifDentaire = $("#motifDentaire").val(); + + if (motifDentaire>" ") + { + donnees = "motifDentaire="+motifDentaire; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/majmotifdentaire/", + type: 'POST', + data: donnees, + success: function(data) { + + }, + error: function(data) { + }, + complete: function() { + + } + }); + } +} + + +function maj_medecin_dentaire() +{ + codeMedecin = $("#codeMedecin").val(); + motifDentaire = $("#motifDentaire").val(); + + donnees = "codeMedecin="+codeMedecin+"&motifDentaire="+motifDentaire; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/majmedecin/", + type: 'POST', + data: donnees, + success: function(data) { + }, + error: function(data) { + }, + complete: function() { + + } + }); + +} + + +function ajax_maj_renouvelable_medicament(idMedicament, renouvelable, controle) +{ + donnees = 'idMedicament='+idMedicament+"&renouvelable="+renouvelable; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetailprescription/majrenouvelable/", + type: 'POST', + data: donnees, + success: function(data) { + $("#medicaments").html(data); + var input = document.getElementById("frequenceRenouvellement" + idMedicament); + if (input) { + input.focus(); + } + }, + error: function(data) { + }, + complete: function() { + } + }); + +} + +function ajax_maj_frequence_medicament(idMedicament, frequence, controle) +{ + frequence=frequence.replace(",","."); + controle.value=frequence; + + if(controle_numerique(controle)) + { + donnees = 'idMedicament='+idMedicament+"&frequence="+frequence; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetailprescription/majfrequence/", + type: 'POST', + data: donnees, + success: function(data) { + $("#medicaments").html(data); + }, + error: function(data) { + }, + complete: function() { + } + }); + } + +} + +function ajax_maj_qte_medicament_cso(idLivre, quantite, controle, quantiteRestante, ligne, quantiteRestanteInitiale) +{ + quantite=parseInt(quantite.replace(",",".")); + controle.value=quantite; + + + + quantiteRestanteInitiale = parseInt(quantiteRestanteInitiale); + + + if(quantiteRestanteInitiale > 0){ + quantiteRestante = quantiteRestanteInitiale; + } + + if(isNaN(quantite) || quantite < 0 ){ + controle.value = 0; + controle.focus(); + return; + } + + interdirVentePartielleMedicament = $("#interdirVentePartielleMedicament").val(); + + if(interdirVentePartielleMedicament=="1"){ + + if((quantite > 0) && (quantite < quantiteRestante)){ + controle.focus(); + v_msg="La vente partielle de médicament est interdite!"; + v_msgEng="Partial sale of medicine is prohibited!"; + alert_ebene(v_msg, v_msgEng); + + controle.value = 0; + return; + } + + } + + + + if(controle_numerique(controle)) + { + if(quantite > parseInt(quantiteRestante)){ + controle.focus(); + v_msg="La quantité servie est supérieure à la quantité restante! "; + v_msgEng="Review the quantity served, it is greater than the remaining quantity!"; + alert_ebene(v_msg, v_msgEng); + + controle.value = 0; + return; + } + + donnees = 'idLivre='+idLivre+"&quantite="+quantite+'&quantiteRestanteInitiale='+quantiteRestanteInitiale; + + //alert(donnees);return; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetailpharmacie/majquantitecso/", + type: 'POST', + data: donnees, + success: function(data) { + $("#livraison").html(data); + + var nbLigne = parseInt($("#nbLigne").val()); + $("#qte"+parseInt(ligne+1)).focus(); + + }, + error: function(data) { + }, + complete: function() { + controle.focus(); + } + }); + } + +} + +function enregistrer_rapport_seance() +{ + + + rapportTraitement = $("#rapportTraitement").val(); + + if (rapportTraitement <= " ") + { + v_msg="Veuillez enregistrer le rapport du traitement des séances!"; + v_msgEng="Please fill in the reason for hospitalization!"; + alert_ebene(v_msg, v_msgEng); + + $("#rapportTraitement").focus(); + return; + } + + donnees = 'rapportTraitement='+rapportTraitement; + + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxenregistrerprescriptionseance/majrapportTraitement/", + type : 'post', + data: donnees, + error: function(errorData) { + + }, + success: function(data) + { + //window.location.assign($("#racineWeb" ).val()+"Prescriptionsence/"); + + }, + complete: function() + { + //valider_seance_cso(); + } + }); + + +} + + +function listemedicamentsubstitue(ligne, quantite, tM, codeMedicament) +{ + var libelle = $('#searchInput'+ligne).val(); + var donnees = 'libelle='+ libelle+'&ligne='+ligne+'&quantite='+quantite+'&tM='+tM+'&codeMedicament='+codeMedicament; + + if(libelle.length >="3") + { + vLink = "Ajaxlistemedicamentsubstitue/"; + $.ajax({ + type: "POST", + url: $("#racineWeb").val()+vLink, + data:donnees, + beforeSend: function(){ + $("#searchInput"+ligne).css("background","#FFF url(Bootstrap/images/LoaderIcon.gif) no-repeat 165px"); + }, + success: function(data){ + $("#div_selection"+ligne).show(); + $("#div_selection"+ligne).html(data); + $("#searchInput"+ligne).css("background","#FFF"); + } + }); + }else{ + $("#div_selection"+ligne).hide(); + return false; + } +} + + +function selectElementSubtitue(val, ligne, quantite, tM, codeSubstitut, codeMedicament) { + + + // Extraction des valeurs depuis la chaîne 'val' + var str = val.split(' <==> '); + var libelle = str[0]; + var forme = str[1]; + var srtGarantie = str[2]; + var prix = str[3]; + + var valeurActe = parseInt(extraitNombre(prix)); + + // Vérifie si le médicament n'est pas garanti (non remboursé) + if (srtGarantie === "Non garanti") { + // Message d’alerte en français et en anglais + const v_msg = "Attention, ce produit n'est pas remboursé! Voulez-vous continuer?"; + const v_msgEng = "Be careful, this product is not refunded! Do you want to continue?"; + + // Appel à la boîte de dialogue personnalisée avec callback + confirm_ebene_sweet_callback(v_msg, v_msgEng, function () { + // Si l’utilisateur confirme, on force tM à 0 (pas de taux de remboursement) + tM = 0; + + // Calcul des montants et mise à jour de l’interface + remplirChampsMedicament(); + }); + + // On retourne immédiatement, le traitement se poursuivra dans le callback si confirmé + return; + } + + // Si le produit est garanti, on remplit directement les champs + remplirChampsMedicament(); + + // Fonction interne pour éviter la duplication du code de remplissage + function remplirChampsMedicament() { + var fraisReel = valeurActe * parseInt(quantite); + var montantTm = parseInt(fraisReel * parseInt(tM) / 100); + var montantArembourser = parseInt(fraisReel) - parseInt(montantTm); + + $("#searchInput" + ligne).val(libelle); + $("#div_selection" + ligne).hide(); + + $("#valeurActe" + ligne).val(formatCurrency(valeurActe)); + $("#fraisReel" + ligne).val(formatCurrency(fraisReel)); + $("#montantTm" + ligne).val(formatCurrency(montantTm)); + $("#montantArembourser" + ligne).val(formatCurrency(montantArembourser)); + $("#forme" + ligne).val(forme); + + // Mise à jour côté serveur du médicament substitué + var donnees = "codeMedicament=" + codeMedicament + "&codeSubstitut=" + codeSubstitut; + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxdetailpharmacie/majmedicamentsubstitution/", + type: 'POST', + data: donnees, + success: function(data) { + // Optionnel : traitement si nécessaire + }, + error: function(data) { + // Optionnel : gestion d'erreur + } + }); + } +} + + +function fermer_seance() +{ + + window.location.assign($("#racineWeb" ).val()+$("#vueParent").val()+"/"); + +} + + +function changer_entite_portail() +{ + codeSociete=$("#codeSociete").val(); + + if (codeSociete<=" ") + { + v_msg="Veuillez sélectionner une entité!"; + v_msgEng="Please select an entity!"; + alert_ebene(v_msg, v_msgEng); + + $("#codeSociete").focus(); + return; + } + + donnees = 'codeSociete='+codeSociete; + + v_url = $("#racineWeb").val()+"Ajaxchangerentiteportail/"; + + $("#div_login_portail").html('
' + '
'); + + $.ajax({ + url: v_url, + type : 'post', + data: donnees, + error: function(errorData) { + $("#div_login_portail").html(errorData); + }, + success: function(data) { + $("#div_login_portail").html(data); + $("#login").focus(); + }, + complete: function() + { + var src_logo=""; + var afficherLogoSociete = $("#afficherLogoSociete").val(); + if(afficherLogoSociete=="1") + { + src_logo="Societes/"+codeSociete+"/Logos/logo_societe.png"; + } + + const image_logo = document.getElementById('image_logo'); + image_logo.setAttribute('src', src_logo); + } + }); +} + +function changer_langue_connexion() +{ + codeLangue = $("#langue").val(); + donnees = 'codeLangue='+codeLangue; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxconnexioncookie/changerlangue/", + type : 'post', + data: donnees, + error: function(errorData) + { + }, + success: function(data) + { + $("#div_detail_connexion").html(data); + }, + complete: function() + { + $(".selectpicker").selectpicker(); + } + }); + +} + +function affichespecialite() +{ + // 10/03/2026 => Si on change d'acte, mettre le prix saisie ) 0 + $("#prixSaisi").val(0); + $("#prixModifiable").val(0); + donnees = ""; + donnees_retour = ""; + + codeActe = $("#codeActe").val(); + nbSpecialite = "0"; + + donnees = 'codeActe='+codeActe; + + faireDefileMessage("", ""); + + var div_specialite = $('#div_specialite'); + div_specialite.html('
' + '
'); + + // div_specialite + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxspecialiteacte/", + type : 'post', + data: donnees, + error: function(errorData) + { + }, + success: function(data) + { + + donnees_retour = data; + + }, + complete: function() + { + + $("#div_specialite").html(donnees_retour); + + $(".selectpicker").selectpicker(); + + acteNuit = $("#acteNuit").val(); + nuit = $("#nuit").val(); + nbSpecialite = $("#nbSpecialite").val(); + + if (acteNuit=="1" && nuit=="0") + { + v_msg="Vous ne pouvez pas effectuer cet acte à cette heure!"; + v_msgEng="You cannot perform this act at this time!"; + alert_ebene(v_msg, v_msgEng); + $("#codeActe").focus(); + + return; + } + + if(nbSpecialite=="1"){ + specialite_medecin(); + } + } + }); +} + +function consulter_envois_sms() +{ + donnees = ""; + donnees_retour = ""; + + date1 = $("#date1").val(); + date2 = $("#date2").val(); + + donnees += 'date1=' + date1; + donnees += '&date2=' + date2; + + $("#div_sms").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/consulter/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + donnees_retour = data; + }, + complete: function() { + $("#div_sms").html(donnees_retour); + $("#nbligne").val("Lignes : "+$("#nbligne_info").val()); + } + }); +} + +function vider_medecin(){ + + donnees = ''; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxspecialitemedecin/vider/", + type : 'post', + data: donnees, + error: function(errorData) + { + }, + success: function(data) + { + $("#div_medecin").html(data); + }, + complete: function() + { + $(".selectpicker").selectpicker(); + initialiser_prix_acte(); + } + }); +} + +function initialiser_prix_acte(){ + + donnees = ''; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxprixacte/initialiser/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + $("#infosacte").html(data); + }, + complete: function() { + + } + }); +} + +/** + * Fonction pour créer une nouvelle proforma d'hospitalisation chirurgicale + * - Valide les champs obligatoires + * - Crée la proforma via un appel AJAX + * - Redirige vers la page de la proforma après création + */ +async function nouvelle_proforma_hopitalisation() { + // Récupération des valeurs du formulaire + const codeLangue = $("#codeLangue").val(); + const motifHospitalisation = $('#motifHospitalisation').val(); + const optionHospitalisation = $('#optionHospitalisation').val(); + const codeActeChambreHospit = $('#codeActeChambreHospit').val(); + const dateDebutHospit = $('#dateDebutHospit').val(); + const dureeHospit = $('#dureeHospit').val(); + const numeroFeuilleMaladie = $("#numeroFeuilleMaladie").val(); + const idBeneficiaire = $("#idBeneficiaire").val(); + const codePrestataire = $("#codePrestataire").val(); + + // Validation des champs obligatoires + if (motifHospitalisation <= " ") { + alert_ebene( + "Veuillez renseigner le motif d'hospitalisation!", + "Please fill in the reason for hospitalization!" + ); + $("#motifHospitalisation").focus(); + return; + } + + if (optionHospitalisation <= " ") { + alert_ebene( + "Veuillez renseigner le type d'hospitalisation!", + "Please fill in the type of hospitalization!" + ); + $("#optionHospitalisation").focus(); + return; + } + + if (codeActeChambreHospit <= " ") { + alert_ebene( + "Veuillez renseigner le type de chambre!", + "Please enter the room type!" + ); + $("#codeActeChambreHospit").focus(); + return; + } + + if (dateDebutHospit <= " ") { + alert_ebene( + "Veuillez saisir la date de début!", + "Please enter the start date!" + ); + $("#dateDebutHospit").focus(); + return; + } + + if (dureeHospit == "0") { + alert_ebene( + "Veuillez renseigner le nombre de jours prévisionnels d'hospitalisation!", + "Please fill in the estimated number of days of hospitalization!" + ); + $("#dureeHospit").focus(); + return; + } + + // Préparation des données pour l'AJAX + let donnees = `motifHospitalisation=${motifHospitalisation}`; + donnees += `&optionHospitalisation=${optionHospitalisation}`; + donnees += `&codeActeChambreHospit=${codeActeChambreHospit}`; + donnees += `&dateDebutHospit=${dateDebutHospit}`; + donnees += `&dureeHospit=${dureeHospit}`; + donnees += `&numeroFeuilleMaladie=${numeroFeuilleMaladie}`; + donnees += `&idBeneficiaire=${idBeneficiaire}`; + donnees += `&codePrestataire=${codePrestataire}`; + + // Demande de confirmation + const isConfirm = await confirm_ebene_sweet( + "Confirmez-vous la création d'une facture proforma d'hospitalisation chirurgicale?", + "Do you confirm the creation of a surgical hospitalization proforma invoice?" + ); + + if (!isConfirm) return false; + + try { + // Envoi de la requête AJAX + const response = await $.ajax({ + url: $("#racineWeb").val() + "Ajaxproformahospitalisationfeuille/", + type: 'POST', + data: donnees + }); + + // Traitement de la réponse + $("#div_proforma").html(response); + const idProforma = parseInt($("#idProforma").val()); + + // Redirection si proforma créée + if (idProforma > 0) { + window.location.assign(`${$("#racineWeb").val()}Hospitalisationproforma/${idProforma}/`); + } + + } catch (error) { + console.error("Erreur lors de la création de la proforma:", error); + // Gestion d'erreur supplémentaire possible ici + } +} + +function messageSituationProformaHospit(){ + var optionHospitalisation = $("#optionHospitalisation").val(); + var datePrestation = $('#dateDebut').val(); + var idBeneficiaire = $('#idBeneficiaire').val(); + var estcouvert = $('#estcouvert').val(); + var estsorti = $('#estsorti').val(); + + if(optionHospitalisation == "option-1"){ + codeActe = "HHM"; + }else if (optionHospitalisation == "option-3"){ + codeActe = "HHC"; + }else{ + codeActe = ""; + } + + if(estcouvert == "0" || estsorti == "1") + { + v_msg="Proforma impossible \u00e0 \u00e9tablir car ce b\u00e9n\u00e9ficiaire n'est plus couvert par l'assurance!"; + v_msgEng="Proforma impossible to establish because this beneficiary is no longer covered by insurance!"; + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + + $("#dateDebut").disable(); + $("#duree").disable(); + $("#motif").disable(); + $("#codeMedecin").disable(); + $("#codeAffection").disable(); + + return; + } + + ajax_beneficiaire_contexte(idBeneficiaire); + + getstatutactedate(codeActe, datePrestation); + + var donnees = 'codeActe='+codeActe+'&datePrestation='+datePrestation+'&idBeneficiaire='+idBeneficiaire; + + $("#div_reponse").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxsituationproformahospit/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) + { + $("#div_reponse").html(data); + + }, + complete: function(data) + { + + } + }); +} + + +function ajaxbeneficiairecouvert(id) +{ + donnees = "idBeneficiaire="+id; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxbeneficiairecouvert/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + $("#div_couverture").html(data); + }, + complete: function(data) { + + } + }); +} + +function ajax_beneficiaire_contexte(idBeneficiaire) +{ + donnees = 'idBeneficiaire='+idBeneficiaire; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxbeneficiairecontexte/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + complete: function() { + + } + }); +} + +function getstatutactedate(codeActe, datePrestation) +{ + + + donnee_a_affciher = ""; + + + donnees = 'codeActe='+codeActe+'&datePrestation='+datePrestation; + + donnees = charger_csrf_token(donnees); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxstatutacte/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + + donnee_a_affciher = data; + }, + complete: function() { + + + $("#div_statutacte").html(donnee_a_affciher); + + var statut = $("#statut").val(); + var libelleMotif = $("#libelleMotif").val(); + var libelleMotifEng = $("#libelleMotifEng").val(); + + + faireDefileMessage(libelleMotif, libelleMotifEng); + } + }); +} + +/** + * Fonction pour supprimer une proforma d'hospitalisation + * - Demande confirmation avant suppression + * - Envoie la requête de suppression via AJAX + * - Actualise la liste des proformas après suppression + * @param {number} idProforma - L'identifiant de la proforma à supprimer + */ +async function supprimer_proforma_hospitalisation(idProforma) { + // Préparation des données pour la requête AJAX + const donnees = `idProforma=${idProforma}`; + + // Demande de confirmation avec gestion multilingue + const isConfirm = await confirm_ebene_sweet( + "Attention! Confirmez-vous la suppression de cette proforma?", + "Attention! Do you confirm the deletion of this proforma?" + ); + + if (!isConfirm) { + return false; + } + + try { + // Envoi de la requête de suppression + await $.ajax({ + url: $("#racineWeb").val() + "Ajaxlisterproformahospitalisation/supprimer/", + type: 'POST', + data: donnees + }); + + // Actualisation de la liste des proformas + listerproformahospitalisation(); + + } catch (error) { + console.error("Erreur lors de la suppression de la proforma:", error); + // Gestion d'erreur supplémentaire possible ici + } +} + +// Fonction pour vérifier si une date est antérieure à aujourd'hui +function verifierDate() { + + dateString = $("#dateDebut").val(); + // Décomposer la date au format "jj/mm/aaaa" + const [jour, mois, annee] = dateString.split('/').map(Number); + + // Créer un objet Date à partir de la date saisie + const dateSaisie = new Date(annee, mois - 1, jour); + + // Obtenir la date actuelle sans l'heure + const aujourdHui = new Date(); + aujourdHui.setHours(0, 0, 0, 0); + + // Vérifier si la date saisie est strictement antérieure à aujourd'hui + if (dateSaisie < aujourdHui) { + + v_msg="La date de d\u00e9but ne peut-\u00eatre ant\u00e9rieure \u00e0 la date du jour!"; + v_msgEng="The start date cannot be earlier than today!"; + + alert_ebene(v_msg, v_msgEng); + + $("#dateDebut").val(""); + $("#dateDebut").focus(); + return; + } else{ + messageSituationProformaHospit(); + } +} + +function estDateFuture(date) { + // Obtenir la date d'aujourd'hui sans l'heure + const aujourdHui = new Date(); + aujourdHui.setHours(0, 0, 0, 0); // Réinitialiser les heures pour une comparaison pure de dates + + // S'assurer que l'argument 'date' est un objet Date + const dateComparee = new Date(date); + dateComparee.setHours(0, 0, 0, 0); // De même, ignorer l'heure + + // Comparer les dates + return dateComparee > aujourdHui; +} + +function ouvrir_feuillemaladie(numeroBon, dateDebut) +{ + + autoriserBonHospitAvantDate = $("#autoriserBonHospitAvantDate").val(); + + if(estDateFuture(dateDebut) && autoriserBonHospitAvantDate=="0") + { + v_msg="Hospitalisation chirurgicale non encore autorisée! Attendez, s'il vous plaît, la date de sa programmation. Merci pour votre compréhension!"; + v_msgEng="Surgical hospitalization not yet authorized! Please wait for the scheduling date. Thank you for understanding!"; + + alert_ebene(v_msg, v_msgEng); + + faireDefileMessage(v_msg, v_msgEng); + + return; + } + + donnees = 'numeroBon='+numeroBon; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxouvrirfeuillemaladie/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) + { + feuillemaladie(); + + }, + complete: function(data) + { + + } + }); + +} + +function verifierDateChambre() { + + dateString = $("#dateDebutHospit").val(); + // Décomposer la date au format "jj/mm/aaaa" + const [jour, mois, annee] = dateString.split('/').map(Number); + + // Créer un objet Date à partir de la date saisie + const dateSaisie = new Date(annee, mois - 1, jour); + + // Obtenir la date actuelle sans l'heure + const aujourdHui = new Date(); + aujourdHui.setHours(0, 0, 0, 0); + + // Vérifier si la date saisie est strictement antérieure à aujourd'hui + if (dateSaisie < aujourdHui) { + + v_msg="La date de d\u00e9but ne peut-\u00eatre ant\u00e9rieure \u00e0 la date du jour!"; + v_msgEng="The start date cannot be earlier than today!"; + + alert_ebene(v_msg, v_msgEng); + + $("#dateDebutHospit").val(""); + $("#dateDebutHospit").focus(); + return; + } +} + +/** + * Fonction pour changer le mot de passe utilisateur + * - Affiche un avertissement avant redirection + * - Gère la confirmation en multilingue (FR/EN) + * - Redirige vers la page de changement de mot de passe après confirmation + * - Prévient l'utilisateur qu'il sera déconnecté après l'opération + */ +async function change_password() { + // Messages d'avertissement multilingues + const messages = { + fr: { + titre: "Attention, vous serez déconnecté par la suite!", + question: "Voulez-vous changer votre mot de passe?", + confirm: "Oui", + cancel: "Non" + }, + en: { + titre: "Attention, you will be logged out afterwards!", + question: "Do you want to change your password?", + confirm: "Yes", + cancel: "No" + } + }; + + // Détermination de la langue + const langue = $("#codeLangue").val() === "en_US" ? "en" : "fr"; + const { titre, question, confirm, cancel } = messages[langue]; + + // Demande de confirmation + const isConfirm = await Swal.fire({ + title: `${titre} ${question}`, + icon: 'warning', + showCancelButton: true, + confirmButtonText: confirm, + cancelButtonText: cancel, + dangerMode: true + }); + + // Redirection si confirmé + if (isConfirm.isConfirmed) { + window.location.assign(`${$("#racineWeb").val()}Changermotpass/`); + } +} + +function tarif_applique(tarif) +{ + v_msg="Tarif appliqué : "+tarif; + v_msgEng="Price applied : "+tarif; + + alert_ebene(v_msg, v_msgEng); + +} + +function imprimer_facture_seance(idFacture) +{ + + + donnees = "idFacture="+idFacture; + + var div_export = $('#div_facture_definitive'); + div_export.html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaximprimerfacturedefinitive/", + type: 'POST', + data: donnees, + success: function(data) + { + div_export.html(data); + //facturepartielle(); + }, + error : function(resultat, statut, erreur) + { + }, + complete: function(data) + { + // + + } + }); + +} + +function creer_proforma_hospitalistation() +{ + + + prestationPossible = $("#prestationPossible").val(); + face_confirmee = $("#face_confirmee").val(); + faceActif = $("#faceActif").val(); + codeProfil = $("#codeProfil_C" ).val(); + + if(prestationPossible == "0" || codeProfil == "PHA" || codeProfil == "OPT" || codeProfil == "LAB" || codeProfil == "SEA"){ + + v_msg="Non autoris\u00e9e!"; + v_msgEng="Not allowed!"; + + alert_ebene(v_msg, v_msgEng); + + return; + } + + if ((face_confirmee == "1") || (faceActif != '1')){ + + window.location.assign($("#racineWeb" ).val()+"Proformahospitalisation/"); + + }else{ + + v_msg="Veuillez authentifier la photo du patient!"; + v_msgEng="Please authenticate the patient's photo!"; + + alert_ebene(v_msg, v_msgEng); + + return; + } +} + +function pop_ged_optique() +{ + $.ajax({ + url: $("#racineWeb").val()+"Ajaxlistegedoptique/", + error: function(errorData) { + }, + success: function(data) + { + $("#div_ged").html(data); + }, + complete: function() { + $("#btn_pop_ged_optique").click(); + } + }); +} + +function consulter_envois_sms() +{ + donnees = ""; + donnees_retour = ""; + + date1 = $("#date1").val(); + date2 = $("#date2").val(); + + donnees += 'date1=' + date1; + donnees += '&date2=' + date2; + + $("#div_sms").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/consulter/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + donnees_retour = data; + }, + complete: function() { + $("#div_sms").html(donnees_retour); + $("#nbligne").val("Lignes : "+$("#nbligne_info").val()); + } + }); +} + +function consulter_envois_whatsapp() +{ + donnees = ""; + donnees_retour = ""; + + date1 = $("#date1").val(); + date2 = $("#date2").val(); + + donnees += 'date1=' + date1; + donnees += '&date2=' + date2; + + $("#div_sms").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/consulterwhatsapp/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + donnees_retour = data; + }, + complete: function() { + $("#div_sms").html(donnees_retour); + $("#nbligne").val("Lignes : "+$("#nbligne_info").val()); + } + }); +} + +function consulter_envois_whatsapp_en_cours() +{ + donnees = ""; + donnees_retour = ""; + + date1 = $("#date1").val(); + date2 = $("#date2").val(); + + donnees += 'date1=' + date1; + donnees += '&date2=' + date2; + + $("#div_sms").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/consulterwhatsappencours/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + donnees_retour = data; + }, + complete: function() { + $("#div_sms").html(donnees_retour); + $("#nbligne").val("Lignes : "+$("#nbligne_info").val()); + } + }); +} + +function mettre_sms_commun_attente_assureur() +{ + textMessage = $("#textMessageCommun").val(); + textMessage = textMessage.trim(); + + if (textMessage<=" ") + { + v_msg="Veuillez saisir le message!"; + v_msgEng="Please enter the message!"; + alert_ebene(v_msg, v_msgEng); + + $("#textMessageCommun").focus(); + return; + } + + donnees = "textMessage="+textMessage; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/mettrewhatsappattenteassureur/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // $('#div_test_gabarit').html(data); + // alert(data); + }, + complete: function() { + v_msg="Messages mis dans la queue des envois!"; + v_msgEng="Messages in the queue!"; + alert_ebene(v_msg, v_msgEng); + re_init_envoi_sms(); + } + }); +} + +function mettre_sms_commun_attente_assure() +{ + + idAdherent_C = $("#idAdherent_C").val(); + + if (idAdherent_C<="0") + { + v_msg="Veuillez sélectionner un assuré!"; + v_msgEng="Please select an insured!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + textMessage = $("#textMessageCommun").val(); + textMessage = textMessage.trim(); + + if (textMessage<=" ") + { + v_msg="Veuillez saisir le message!"; + v_msgEng="Please enter the message!"; + alert_ebene(v_msg, v_msgEng); + + $("#textMessageCommun").focus(); + return; + } + + donnees = "textMessage="+textMessage; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/mettrewhatsappattenteassure/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // $('#div_test_gabarit').html(data); + // alert(data); + }, + complete: function() { + v_msg="Messages mis dans la queue des envois!"; + v_msgEng="Messages in the queue!"; + alert_ebene(v_msg, v_msgEng); + re_init_envoi_sms(); + } + }); +} + +function mettre_sms_commun_attente_tous() +{ + + idAdherent_C = $("#idAdherent_C").val(); + + if (idAdherent_C<="0") + { + v_msg="Veuillez sélectionner un assuré!"; + v_msgEng="Please select an insured!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + textMessage = $("#textMessageCommun").val(); + textMessage = textMessage.trim(); + + if (textMessage<=" ") + { + v_msg="Veuillez saisir le message!"; + v_msgEng="Please enter the message!"; + alert_ebene(v_msg, v_msgEng); + + $("#textMessageCommun").focus(); + return; + } + + donnees = "textMessage="+textMessage; + + // alert("mettre_sms_commun_attente_tous => idAdherent_C = "+idAdherent_C+" ; "+donnees); + // return; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdestinatairesms/mettrewhatsappattenteassureurassure/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // $('#div_test_gabarit').html(data); + // alert(data); + }, + complete: function() { + v_msg="Messages mis dans la queue des envois!"; + v_msgEng="Messages in the queue!"; + alert_ebene(v_msg, v_msgEng); + re_init_envoi_sms(); + } + }); +} + +function re_init_envoi_sms() +{ + window.location.assign($("#racineWeb" ).val()+"Envoisms/"); +} + +// KANE 12/04/2025 +function envoieprescription_examen() +{ + $.ajax({ + url: $("#racineWeb").val()+"Ajaxenregistrerprescriptionexamen/envoieprescriptionexamen/", + type : 'post', + error: function(errorData) + { + }, + success: function(data) + { + // alert(data); + // $('#div_test_gabarit').html(data); + }, + complete: function() { + feuillemaladie(); + } + }); +} + +function envoieprescription_seance() +{ + $.ajax({ + url: $("#racineWeb").val()+"Ajaxenregistrerprescriptionseance/envoieprescriptionseance/", + type : 'post', + error: function(errorData) + { + }, + success: function(data) + { + // alert(data); + // $('#div_test_gabarit').html(data); + }, + complete: function() { + // feuillemaladie(); + } + }); +} + + +function actualiser_proforma_hospitalisation() +{ + idProforma = $("#idProformaHospitalisation").val(); + + window.location.assign($("#racineWeb" ).val()+"Hospitalisationproforma/"+idProforma+"/"); + +} + +function verifierContestationAvantOuverture() { + + var contestation = $("#contestation").val(); + + if (contestation == "1") { + // Ne pas ouvrir le modal si contestation == 1 + feuillemaladie(); + + } else { + // Ouvrir le modal si pas de contestation + $('#popRechercheAffection').modal('show'); + } + +} + +function actualiser_contestation(){ + + const numeroFeuilleMaladie = $("#numeroFeuilleMaladie_C").val(); + + if (numeroFeuilleMaladie > "0") { + $.ajax({ + url: $("#racineWeb").val()+"Ajaxfeuillemaladie/", + type : 'post', + error: function(errorData) + { + }, + success: function(data) + { + // Mise à jour du contenu de la div contestation + $("#div_contestation").html(data); + }, + complete: function() { + + } + }); + } +} + +function actualiser_avis_hospitalisation(){ + + const numeroFeuilleMaladie = $("#numeroFeuilleMaladie_C").val(); + + if (numeroFeuilleMaladie > "0") { + $.ajax({ + url: $("#racineWeb").val()+"Ajaxfeuillemaladie/avishopitalisation/", + type : 'post', + error: function(errorData) + { + }, + success: function(data) + { + // Mise à jour du contenu de la div contestation + $("#div_avis_hos").html(data); + }, + complete: function() { + + } + }); + } +} + + +function verification_contestation() { + + // Récupération des valeurs des champs + const bonCaduc = $("#bonCaduc").val(); + const facture = $("#facture").val(); + const numeroFeuilleMaladie = $("#numeroFeuilleMaladie_C").val(); + const nomForm = $("#nomForm").val(); + + // Vérification si le numéro de feuille de maladie est valide + if (numeroFeuilleMaladie > "0") { + $.ajax({ + url: $("#racineWeb").val() + "Ajaxfeuillemaladie/", + type: 'POST', + success: function(data) { + + + // Mise à jour du contenu de la div contestation + $("#div_contestation").html(data); + + // Vérification des conditions de contestation + const contestation = $("#contestation").val(); + + if (bonCaduc === "0" && facture === "0" && contestation === "1") { + // Affichage de l'alerte en cas de contestation + const v_msg = "Dossier médical contesté !"; + const v_msgEng = "Medical records contested!"; + + alert_ebene_callback(v_msg, v_msgEng, function(){ + feuillemaladie(); + }); + + } else { + // Exécution des fonctions spécifiques selon le formulaire + switch(nomForm) + { + case "prescriptionexamens": + enregistrerprescriptionexamen(); + break; + case "prescriptionseances": + enregistrerprescriptionseance(); + break; + case "Optique": + enregistreroptique(); + break; + case "dentaire": + maj_motif_dentaire(); + break; + + // Possibilité d'ajouter d'autres cas si nécessaire + } + } + }, + error: function(xhr, status, error) { + console.error("Erreur AJAX:", status, error); + // Vous pourriez ajouter ici un traitement d'erreur + } + }); + } +} + +function alertsiprixprestationzero() +{ + v_msg="Veuillez saisir au moins un prix de prestation!"; + v_msgEng="Please enter at least one service price!"; + + alert_ebene(v_msg, v_msgEng); + return; +} + +function afficherMasquerEnteteProforma() +{ + masquerEnteteProforma = $("#masquerEnteteProforma").val(); + + const element = document.getElementById("chevron-entete-proforma"); + + if(masquerEnteteProforma=="1"){ + $('#div_entete_proforma').hide(); + $("#masquerEnteteProforma").val("0"); + //$("#span_entete_proforma").text("Afficher"); + + element.classList.remove("bi-chevron-up"); + element.classList.add("bi-chevron-down"); + }else{ + $('#div_entete_proforma').show(); + $("#masquerEnteteProforma").val("1"); + //$("#span_entete_proforma").text("Masquer"); + + element.classList.remove("bi-chevron-down"); + element.classList.add("bi-chevron-up"); + } +} + +function listerrdv() +{ + d1 = $("#d1").val(); + d2 = $("#d2").val(); + + codeEtatRdv = $("#codeEtatRdv").val(); + + donnees = 'd1='+ d1+'&d2='+d2+'&codeEtatRdv='+codeEtatRdv; + + $("#div_dossiers").html('
' + '
'); + + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdemanderdv/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // alert(data); + + + $('#div_dossiers').html(data); + }, + complete: function() { + + } + }); +} + +function selectionner_rdv(idDemande) +{ + donnees = 'idDemande='+idDemande; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdemanderdv/selectionner/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // alert(data); + + + + }, + complete: function() { + ouvrir_rdv(); + } + }); +} + + +function ouvrir_rdv() +{ + window.location.assign($("#racineWeb" ).val()+"Rendezvous/"); + +} + +function historique_rdv() +{ + window.location.assign($("#racineWeb" ).val()+"Historiquerdv/"); + +} + +function valider_rdv() +{ + + + numeroDemandeRdv = $("#numeroDemandeRdv").val(); + codeEtatRdv = $("#codeEtatRdv").val(); + + motifReponseRdv = $("#motifReponseRdv").val(); + motifReponseRdv = motifReponseRdv.trim(); + + if(codeEtatRdv=="0"){ + + v_msg="Un autre état de réponse est obligatoire!"; + v_msgEng="Another response status is required!"; + alert_ebene(v_msg, v_msgEng); + + $("#codeEtatRdv").focus(); + + return; + } + + if (codeEtatRdv=="1"){ + dateRdvAccordee = $("#dateRdvAccordee").val(); + heureRdvAccordee = $("#heureRdvAccordee").val(); + + if(dateRdvAccordee<=" "){ + v_msg="Une date de rendez-vous est obligatoire!"; + v_msgEng="An appointment date is required!"; + alert_ebene(v_msg, v_msgEng); + + $("#dateRdvAccordee").focus(); + + return; + } + + if(heureRdvAccordee<=" "){ + v_msg="Une heure de rendez-vous est obligatoire!"; + v_msgEng="An appointment time is required!"; + alert_ebene(v_msg, v_msgEng); + + $("#heureRdvAccordee").focus(); + + return; + } + + }else{ + dateRdvAccordee = ""; + heureRdvAccordee = ""; + } + + + if(codeEtatRdv=="9" && motifReponseRdv<=" "){ + v_msg="Le motif est obligatoire!"; + v_msgEng="The pattern is mandatory!"; + alert_ebene(v_msg, v_msgEng); + + $("#motifReponseRdv").focus(); + + return; + } + + donnees = 'numeroDemandeRdv='+ numeroDemandeRdv+'&codeEtatRdv='+codeEtatRdv; + donnees += '&dateRdvAccordee='+dateRdvAccordee+'&heureRdvAccordee='+heureRdvAccordee; + donnees += '&motifReponseRdv='+motifReponseRdv; + + + v_msg="Confirmez-vous la modification de votre demande?"; + v_msgEng="Do you confirm the modification of your request?"; + + confirm_ebene_sweet(v_msg, v_msgEng) + .then((isConfirmed) => { + if (isConfirmed) { + // L'utilisateur a confirmé + + vLink = "Ajaxdemanderdv/valider/"; + + $.ajax({ + type: "POST", + url: $("#racineWeb").val()+vLink, + data:donnees, + error: function(errorData) { + }, + success: function(data) { + //alert(data); + // $('#div_test_gabarit').html(data); + + }, + complete: function() { + + historique_rdv(); + } + + }); + + } else { + // L'utilisateur a annulé + console.log("Confirmation refusée"); + } + }); + +} + +function visibilite_date_rdv() +{ + codeEtatRdv = $('#codeEtatRdv').val(); + + if(codeEtatRdv=="0" || codeEtatRdv=="1"){ + $('#tr_date').show(); + }else{ + + $('#tr_date').hide(); + } +} + +function ajax_context_feuille_maladie_recherche(numeroBonConsultation,idBeneficiaire,idPolice) +{ + // + donnees = 'numeroBonConsultation='+numeroBonConsultation + '&idBeneficiaire='+idBeneficiaire+ '&idPolice='+idPolice ; + $.ajax({ + url: $("#racineWeb").val()+"Ajaxcontextfeuillemaladie/recherche/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + complete: function() { + feuillemaladie(); + } + }); +} + +// +function filtrefeuillerecher() { + etatFeuille = $("#etatFeuille").val(); + debut = $("#debut").val(); + fin = $("#fin").val(); + + donnees = 'etatFeuille=' + etatFeuille; + donnees += '&debut=' + debut + '&fin=' + fin; + + $("#div_filtrefeuillerecher").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxcloturerfeuillemaladie/filtrefeuillerecher/", + type: 'post', + data: donnees, + error: function (errorData) { + }, + success: function (data) { + $("#div_filtrefeuillerecher").html(data); + $(".datepicker" ).datepicker(); + appliquerDataTable(); + + }, + complete: function () { + } + }); +} + + +function listeententeprealables() { + + codeReponseEntentePrealable = $("#codeReponseEntentePrealable").val(); + debut_entente = $("#debut_entente").val(); + fin_entente = $("#fin_entente").val(); + + donnees = 'codeReponseEntentePrealable=' + codeReponseEntentePrealable; + donnees += '&debut_entente=' + debut_entente + '&fin_entente=' + fin_entente; + + $("#div_ententeprealable").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxententeprealables/", + type: 'post', + data: donnees, + error: function (errorData) { + }, + success: function (data) { + $("#div_ententeprealable").html(data); + $(".datepicker" ).datepicker(); + appliquerDataTable(); + + }, + complete: function () { + } + }); +} + +function cloturer_feuille_maladie(numeroFeuilleMaladie,idBeneficiaire) +{ + + + donnees = 'numeroFeuilleMaladie='+numeroFeuilleMaladie +'&idBeneficiaire='+idBeneficiaire; + + $("#div_dossiers").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxcloturerfeuillemaladie/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + $("#div_recap_feuille_maladie").html(data); + $("#div_recap_feuille_maladie").modal({ backdrop: 'static', keyboard: false, show: true }); + $("#div_recap_feuille_maladie").modal("show"); + $("#codeAffectionPop").selectpicker(); + }, + complete: function() { + afficherMasquerBeneficiaire(); + } + }); +} + +function afficherMasquerBeneficiaire() { + masquerbeneficiaire= $("#masquerbeneficiaire").val(); + + if (masquerbeneficiaire == "1") { + $('#div_beneficiaire').hide(); + $("#masquerbeneficiaire").val("0"); + $("#span_beneficiaire").html(''); + + } else { + $('#div_beneficiaire').show(); + $("#masquerbeneficiaire").val("1"); + $("#span_beneficiaire").html(''); + } +} + +function listerdossiercontestes() +{ + + + d1=$("#d1").val(); + d2=$("#d2").val(); + + donnees = 'd1='+d1+'&d2='+d2; + + $("#div_dossiers").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdossierscontestes/", + type : 'post', + data: donnees, + error: function(errorData) { + // alert("Erreur : "+errorData); + }, + success: function(data) { + + + $("#div_dossiers").html(data); + }, + complete: function() { + } + }); +} + +// pour le mode saisi facture décompte +function enregistrerconsultationassureur() +{ + codeLangue = $("#codeLangue").val(); + codeActeConsultationGratuite = $("#codeActeConsultationGratuite").val(); + + $("#okId" ).val("1"); + $("#okId_face" ).val("1"); + + /* + codeTypeRemboursement=$("#codeTypeRemboursement").val(); + + if(codeTypeRemboursement=="RDE"){ + + v_msg="Attention! La consultation est exclusivement en remboursement direct! Le patient est pri\u00e9 de se rendre chez le gestionnaire pour se faire rembourser. Merci pour votre compr\u00e9hension!"; + v_msgEng="Warning! The consultation is exclusively in direct reimbursement! The patient is asked to go to the manager for reimbursement. "+nomSociete+" thanks you!"; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + } + */ + + badcodeGestionBon = $("#badcodeGestionBon").val(); + + if (badcodeGestionBon=="1") + { + v_msg="Veuillez revoir le type de gestion de bons!"; + v_msgEng="Please review the type of forms management!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + appliquerDelaiCarence = $("#appliquerDelaiCarence").val(); + + anciennete = $("#anciennete").val(); + anciennete = parseInt(anciennete); + + delaiCarenceRaisonconsultation = $("#delaiCarenceRaisonconsultation").val(); + delaiCarenceRaisonconsultation = parseInt(delaiCarenceRaisonconsultation); + + delaiCarenceBeneficiaire = $("#delaiCarenceBeneficiaire").val(); + delaiCarenceBeneficiaire = parseInt(delaiCarenceBeneficiaire); + + if (delaiCarenceBeneficiaire > 0 && appliquerDelaiCarence=="1") + { + if (anciennete < delaiCarenceBeneficiaire) + { + v_msg="Attention! P\u00e9riode de carence!"; + v_msgEng="Warning! waiting period!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + delaiCarenceActe = $("#delaiCarenceActe").val(); + delaiCarenceActe = parseInt(delaiCarenceActe); + + if (anciennete "0") && (dureeDerniereConsultation <= dureeVieBon) && (codePrestataire == dernierCentre)){ + if(codeTypeConsultation == "GE"){ + v_msg="La derni\u00e8re consultation du patient pour cet acte date de moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="The patient's last consultation was less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "SP") && (dernierMedecinConsulte == codeMedecin)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 par ce sp\u00e9cialiste, il ya moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="Please note, this patient has already been consulted by this specialist, less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + } + }else if ((codeActe == dernierActe) && (dureeDerniereConsultation == "0")){ + if((codeTypeConsultation == "GE") && (codePrestataire == dernierCentre)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par un g\u00e9n\u00e9raliste. Voulez-vous ouvrir son dossier m\u00e9dical?"; + v_msgEng="Attention, this patient has already been consulted by a general practitioner today. Would you like to open his medical file?"; + + confirm_ebene_sweet(v_msg, v_msgEng).then((confirmed) => { + if (confirmed) { + dossiers(0); + } else { + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par un g\u00e9n\u00e9raliste. Cliquer sur le menu Dossiers, dans la barre de gauche, pour ouvrir son dossier m\u00e9dical."; + v_msgEng="Attention, this patient has already been consulted by a general practitioner today. Click on the Files menu, in the left bar, to open his medical file."; + faireDefileMessage(v_msg, v_msgEng); + } + }); + return; + }else if((codeTypeConsultation == "GE") && (codePrestataire != dernierCentre)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui ailleurs par un g\u00e9n\u00e9raliste. Veuiller changer l'acte ou demander au patient de revenir un autre jour. Merci pour votre compr\u00e9hension!"; + v_msgEng="Please note, for this day the patient has already been consulted elsewhere by a general practitioner. Please change the procedure or ask the patient to come back another day. Thank you for your understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "SP") && (nbreConsultaionSpecialisteJour >= paramConsultationSpecialisteJour)){ + v_msg="Attention, ce patient a d\u00e9ja consult\u00e9 "+ paramConsultationSpecialisteJour +" sp\u00e9cialistes aujourd'hui. Veuiller changer l'acte. Merci pour votre compr\u00e9hension!"; + v_msgEng="Attention, this patient has already consulted "+ paramConsultationSpecialisteJour +" specialists today. Please change the deed. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "SP") && (codePrestataire == dernierCentre) && (dernierMedecinConsulte == codeMedecin)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par ce sp\u00e9cialiste."; + v_msgEng="Attention, this patient has already been consulted by this specialist today."; + + confirm_ebene_sweet( + codeLangue === "en_US" ? "Do you want to open the patient's medical file?" : "Voulez-vous ouvrir le dossier médical du patient?", + codeLangue === "en_US" ? v_msgEng : v_msg + ).then((confirmed) => { + if (confirmed) { + dossiers(0); + } else { + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par ce sp\u00e9cialiste. Cliquer sur le menu Dossiers, dans la barre de gauche, pour ouvrir son dossier m\u00e9dical."; + v_msgEng="Attention, this patient has already been consulted by this specialist today. Click on the Files menu, in the left bar, to open his medical file."; + faireDefileMessage(v_msg, v_msgEng); + } + }); + return; + } + }else if ((codeActe == dernierActe) && (dureeDerniereConsultation == "0")){ + if((codeTypeConsultation == "GE") && (codePrestataire == dernierCentre)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par un g\u00e9n\u00e9raliste. Voulez-vous ouvrir son dossier m\u00e9dical?"; + v_msgEng="Attention, this patient has already been consulted by a general practitioner today. Would you like to open his medical file?"; + + confirm_ebene_sweet(v_msg, v_msgEng).then((confirmed) => { + if (confirmed) { + dossiers(0); + } else { + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui par un g\u00e9n\u00e9raliste. Cliquer sur le menu Dossiers, dans la barre de gauche, pour ouvrir son dossier m\u00e9dical."; + v_msgEng="Attention, this patient has already been consulted by a general practitioner today. Click on the Files menu, in the left bar, to open his medical file."; + faireDefileMessage(v_msg, v_msgEng); + } + }); + return; + }else if((codeTypeConsultation == "GE") && (codePrestataire != dernierCentre)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui dans un autre centre."; + v_msgEng="Attention, this patient has already been consulted today in another center"; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "GE") && (dureeDerniereConsultation >= "0") && (dureeDerniereConsultation <= dureeVieBon) && (codePrestataire == dernierCentre)){ + v_msg="La derni\u00e8re consultation g\u00e9n\u00e9raliste du patient date de moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="The patient's last general consultation was less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "SP") && (specialiteEstPossible == "0")){ + if(codeSpecialite == "PED" && (age > agemaxipediatrie)) { + v_msg="Attention, ce patient n'a pas moins de "+agemaxipediatrie+" ans! Il ne peut pas faire cette consultation, veuiller changer l'acte."; + v_msgEng="Attention, this patient is not less than "+agemaxipediatrie+" years old! He cannot do this consultation, please change the act."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else{ + v_msg="La derni\u00e8re consultation du patient pour cet acte date de moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="The patient's last consultation was less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + } + } + }else if((codeTypeConsultation == "SP") && (nbreConsultaionSpecialisteJour >= paramConsultationSpecialisteJour) && (dureeDerniereConsultation == "0")){ + v_msg="Attention, ce patient a d\u00e9ja consult\u00e9 "+ paramConsultationSpecialisteJour +" sp\u00e9cialistes aujourd'hui. Veuiller changer l'acte. Merci pour votre compr\u00e9hension!"; + v_msgEng="Attention, this patient has already consulted "+ paramConsultationSpecialisteJour +" specialists today. Please change the deed. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "GE") && (dureeDerniereConsultation == "0") && (codePrestataire != dernierCentre)){ + v_msg="Attention, ce patient a d\u00e9ja \u00e9t\u00e9 consult\u00e9 aujourd'hui dans un autre centre."; + v_msgEng="Attention, this patient has already been consulted today in another center"; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "GE") && (dureeDerniereConsultation >= "0") && (dureeDerniereConsultation <= dureeVieBon) && (codePrestataire == dernierCentre)){ + v_msg="La derni\u00e8re consultation g\u00e9n\u00e9raliste du patient date de moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="The patient's last general consultation was less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else if((codeTypeConsultation == "SP") && (specialiteEstPossible == "0")){ + if(codeSpecialite == "PED" && (age > agemaxipediatrie)) { + v_msg="Attention, ce patient n'a pas moins de "+agemaxipediatrie+" ans! Il ne peut pas faire cette consultation, veuiller changer l'acte."; + v_msgEng="Attention, this patient is not less than "+agemaxipediatrie+" years old! He cannot do this consultation, please change the act."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + }else{ + v_msg="La derni\u00e8re consultation du patient pour cet acte date de moins de "+dureeVieBon+" jours. Veuiller changer l'acte ou passer en consultation gratuite. Merci pour votre compr\u00e9hension!"; + v_msgEng="The patient's last consultation was less than "+dureeVieBon+" days ago. Please change the deed or go to free consultation. Thanks for understanding."; + + alert_ebene(v_msg, v_msgEng); + faireDefileMessage(v_msg, v_msgEng); + return; + } + } + }else if(codeActe == codeActeConsultationGratuite || codeTypeConsultation == "CO"){ + if((dureeDerniereConsultation == "0") && (nombreFeuilleGratuite >= parametreNombreFeuilleGratuitJour)){ + v_msg="Le quotas journalier de feuille de soin gratuite est atteint pour ce patient."; + v_msgEng="The daily free care sheet quota has been reached for this patient."; + + confirm_ouvrir_dossier(v_msg, v_msgEng); + + return; + } + } + + codeRaisonConsultation = $("#codeRaisonConsultation").val(); + + if (codeRaisonConsultation<=" ") + { + v_msg="Veuillez s\u00e9lectionner une raison pour la consultation!"; + v_msgEng="Please select a reason for the consultation!"; + alert_ebene(v_msg, v_msgEng); + $("#codeRaisonConsultation").focus(); + return; + } + + if (codeGestionBon=="0") + { + numeroBon = $("#numeroBon").val(); + + if(isNaN(numeroBon)) + { + v_msg="Veuillez revoir le num\u00e9ro de bon!"; + v_msgEng="Please review the prescription number!"; + alert_ebene(v_msg, v_msgEng); + + $("#btn_enreg").disable(); + $("#msgErreur").html(""); + $("#codeEtatBon").val(""); + + $("#numeroBon").focus(); + return; + } + + if ($("#numeroBon").val()<="0") + { + v_msg="Veuillez saisir un No de bon!"; + v_msgEng="Please enter a prescription number!"; + alert_ebene(v_msg, v_msgEng); + $("#numeroBon").focus(); + return; + } + + codeEtatBon = $("#codeEtatBon").val(); + + if (codeEtatBon!="1") + { + v_msg="Veuillez saisir un No de bon disponible!"; + v_msgEng="Please enter a prescription number available!"; + alert_ebene(v_msg, v_msgEng); + $("#numeroBon").focus(); + return; + } + + if(numeroBonSave!=numeroBon) + { + v_msg="Veuillez revoir le num\u00e9ro de bon!"; + v_msgEng="Please review the prescription number!"; + alert_ebene(v_msg, v_msgEng); + + $("#btn_enreg").disable(); + $("#msgErreur").html(""); + $("#codeEtatBon").val(""); + + $("#numeroBon").focus(); + return; + } + + v_msg="Confirmez-vous ce No de bon?"; + v_msgEng="Do you confirm this number of presciption?"; + } + else + { + numeroBon = "-1"; + v_msg="Confirmez-vous l'ouverture d'un dossier médical pour ce patient?"; + v_msgEng="Do you confirm the opening of a medical file for this patient?"; + } + + confirm_ebene_sweet(v_msg, v_msgEng).then((confirmed) => { + if (confirmed) { + dateSurvenance = $("#dateSurvenance").val(); + observations = $("#observations").val(); + + depassement = $("#depassement").val(); + numeroDerogation = $("#derogation_en_cours_C").val(); + numeroDerogationFinger = $("#derogation_finger_en_cours_C").val(); + + okReferencement = $("#okReferencement").val(); + + dateReferencement = $("#dateReferencement").val(); + codeReferencement = $("#codeReferencement").val(); + + if(dateReferencement == undefined){ + dateReferencement=""; + } + + if(codeReferencement == undefined){ + codeReferencement=""; + } + + if (numeroDerogation<1) { + numeroDerogation = "0"; + } + + if (numeroDerogationFinger<1) { + numeroDerogationFinger = "0"; + } + + ententePrealable='0'; + bonPrincipal = "0"; + medecinManquant =""; + + donnees = 'codeActe='+codeActe+'&numeroBon='+numeroBon+'&codeMedecin='+codeMedecin+'&codeRaisonConsultation='+codeRaisonConsultation; + donnees += '&dateSurvenance='+dateSurvenance+'&observations='+observations+'&prixActe='+prixActe+'&prixBase='+prixBase; + donnees += '&montantTm='+montantTm+'&aRembourser='+aRembourser+'&numeroDerogation='+numeroDerogation+'&depassement='+depassement; + donnees += '&numeroDerogationFinger='+numeroDerogationFinger; + donnees += '&medecinManquant='+medecinManquant; + donnees += '&ententePrealable='+ententePrealable; + donnees += '&dateReferencement='+dateReferencement; + donnees += '&codeReferencement='+codeReferencement; + donnees += '&bonPrincipal='+bonPrincipal; + donnees += '&codeGestionBon='+codeGestionBon; + donnees += '&codeSpecialite='+codeSpecialite; + + $("#btn_enreg").disable(); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxenregistrerconsultation/enregistrerconsultation/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + maj_fraisexclu_cso(); + }, + complete: function() { + v_msg="Consultation enregistr\u00e9e avec succ\u00e8s"; + v_msgEng="Saved successfully!"; + alert_ebene(v_msg, v_msgEng); + feuillemaladie(); + } + }); + } else { + return; + } + }); +} + +async function envoyer_demande_reconnaissance_faciale() { + // alert("envoyer_demande_reconnaissance_faciale"); + // return; + + // Demande de confirmation multilingue + const isConfirm = await confirm_ebene_sweet( + "Confirmez-vous la validation?", + "Do you confirm validation?" + ); + + if (!isConfirm) { + return false; + } + + try { + await $.ajax({ + url: $("#racineWeb").val() + "Ajaxdetaildentisterie/valider/", + type: 'POST', + data: '' + }); + + alert_ebene( + "Demande envoyée!", + "Request sent!" + ); + + fiche_beneficiaire(); + + } catch (error) { + console.error("Erreur :", error); + } +} + +function init_demande_reconnaissance_faciale() { + // alert("init_demande_reconnaissance_faciale"); + // return; + + // $("#idHtagcarte").val(idHtagcarte); + $("#telephoneAutre").focus(); + $("#div_demande_reconnaissance_faciale").modal({backdrop: 'static', keyboard: false, show: true }); + $("#div_demande_reconnaissance_faciale").modal("show"); +} + +function modifier_prix_acte() { + prixModifiable = $('#prixModifiable').val(); + $('#prixSaisi').val(prixModifiable); + prixModifiable = $('#prixModifiable').val(); + prixSaisi = $('#prixSaisi').val(); + + if(prixSaisi<="0"){ + initialiser_prix_acte(); + } + else{ + ajaxprixacte(); + } +} + +function modifier_prix_examen(idExamen, prixSaisi) { + donnees = 'idExamen='+idExamen+'&prixSaisi='+prixSaisi; + + if (prixSaisi <= "0"){ + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetailexamen/majprixamen/", + type: 'POST', + data: donnees, + success: function(data) { + $("#livraison").html(data); + }, + error: function(data) { + }, + complete: function() { + } + }); +} + + +function modifier_prix_examen_lab(idExamen, prixSaisi) { + donnees = 'idExamen='+idExamen+'&prixSaisi='+prixSaisi; + + if (prixSaisi <= "0"){ + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaillaboratoire/majprixamen/", + type: 'POST', + data: donnees, + success: function(data) { + $("#livraison").html(data); + }, + error: function(data) { + }, + complete: function() { + } + }); +} + +function modifier_prix_seance() { + prixModifiable = $('#prixModifiable').val(); + $('#prixSaisi').val(prixModifiable); + $('#prixActe').val(prixModifiable); + + ajaxprixseance(); +} + +function modifier_prix_dentisterie(idDentisterie, prixSaisi) { + donnees = 'idDentisterie='+idDentisterie+'&prixSaisi='+prixSaisi; + + if (prixSaisi <= "0"){ + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdetaildentisterie/majprixdentisterie/", + type: 'POST', + data: donnees, + complete: function() { + dentisterie(); + } + }); +} + +function modifier_prix_autres_actes(idPrestationactes, prixSaisi, controle) { + donnees = 'idPrestationactes='+idPrestationactes+'&prixSaisi='+prixSaisi; + + if (prixSaisi <= "0"){ + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + let donnee_a_afficher = ""; + + $("#div_prestations").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxactesmedicauxselect/majprixautresactes/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_afficher = data; + }, + complete: function() { + $("#div_prestations").html(donnee_a_afficher); + controle.focus(); + } + }); +} + +function ajax_maj_qte_acte(idPrestationactes, quantite, controle) +{ + quantite=quantite.replace(",","."); + controle.value=quantite; + + if(controle_numerique(controle)) + { + if(quantite==0) + { + controle.focus(); + v_msg="Veuillez saisir la quantit\u00e9!"; + v_msgEng="Please enter the quantity!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + donnees = 'idPrestationactes='+idPrestationactes+"&quantite="+quantite; + + donnee_a_affciher = ""; + + donnees = 'idPrestationactes='+idPrestationactes+"&quantite="+quantite; + + $("#div_prestations").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxactesmedicauxselect/majquantite/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_affciher = data; + }, + error: function(data) { + }, + complete: function() { + $("#div_prestations").html(donnee_a_affciher); + controle.focus(); + } + }); + } +} + +/** + * Fonction pour supprimer un acte médical sélectionné + * @param {string} idPrestationactes - Identifiant unique de la prestation à supprimer + * @param {string} codeTypePrestation - Code du type de prestation + */ +async function supprimer_acte_medical_selection(idPrestationactes, codeTypePrestation) { + // 1. Initialisation des variables + let donnee_a_afficher = ""; + + // 2. Messages de confirmation multilingues + const messages = { + confirmation: { + fr: "Confirmez-vous la suppression de cet acte?", + en: "Do you confirm the removal of this act?" + }, + chargement: { + fr: "Veuillez patienter...", + en: "Please wait..." + } + }; + + // 3. Demande de confirmation à l'utilisateur + const isConfirmed = await confirm_ebene_sweet( + messages.confirmation.fr, + messages.confirmation.en + ); + + if (!isConfirmed) return; + + // 4. Récupération du code famille acte + const codeFamilleActe = $("#codeFamilleActe").val(); + + // 5. Affichage de l'indicateur de chargement + // $("#listeacte").html('
' + '
'); + $("#div_prestations").html('
' + '
'); + + + // 6. Préparation des données pour la requête + const donnees = { + codeFamilleActe: codeFamilleActe, + idPrestationactes: idPrestationactes, + codeTypePrestation: codeTypePrestation + }; + + // 7. Envoi de la requête AJAX + try { + const response = await $.ajax({ + url: $("#racineWeb").val() + "Ajaxselectactesmedicaux/supprimeracte/", + type: 'POST', + data: donnees + }); + + // 8. Traitement de la réponse + donnee_a_afficher = response; + + // 9. Mise à jour de l'interface utilisateur + $("#totam_donnees").html(donnee_a_afficher); + appliquerDataTable(); // Application du plugin DataTables + majgestionacte(); // Mise à jour de la gestion des actes + + } catch (error) { + console.error("Erreur lors de la suppression de l'acte médical:", error); + // Gestion supplémentaire des erreurs pourrait être ajoutée ici + } +} + +// Fonction appelée lorsqu’on veut indiquer qu’il n’y a pas de prescription pour un patient +function no_presciption() +{ + const facture = $("#facture").val(); + const contestation = $("#contestation").val(); + + // Si la facture est déjà émise, on affiche une alerte et on arrête + if (facture == "1") { + const v_msg = "D\u00e9jà factur\u00e9!"; + const v_msgEng = "Already charged!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + // Si le dossier est contesté, on empêche la validation + if (contestation == "1") { + const v_msg = "Dossier médical contest\u00e9 !"; + const v_msgEng = "Medical records contested!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + const numOrd = $("#numOrd").val(); + const noPrescription = $("#noPrescription").val(); + + // Si aucune ordonnance ni indication "pas de prescription" + if (numOrd == "0" && noPrescription == "0") { + const v_msg = "Confirmez-vous qu'il n'y a pas de prescription de m\u00e9dicaments?"; + const v_msgEng = "Do you confirm that there is no drugs prescription?"; + const codeLangue = $("#codeLangue").val(); + + // Appel d'une boîte de confirmation personnalisée, adaptée à la langue + confirm_ebene_sweet( + v_msg, v_msgEng + ).then((confirmed) => { + if (confirmed) { + $.ajax({ + url: $("#racineWeb").val() + "Ajaxenregistrerprescription/noprescription/", + type: 'post', + error: function(errorData) { + // alert(errorData); + }, + success: function(data) { + // alert(data); + }, + + complete: function() { + feuillemaladie(); // Rechargement de la feuille de maladie + } + }); + } + }); + } +} + +function modifier_prix_seance_kine() { + prixModifiable = $('#prixModifiable').val(); + $('#prixSaisi').val(prixModifiable); + $('#prixActe').val(prixModifiable); + + ajaxprixseancesea(); +} + +function ajaxprixseancesea() +{ + codeActe = $("#codeActe").val(); + + if (codeActe<=" ") + { + $("#prixActe_info").val("0"); + $("#totalActe_info").val("0"); + $("#montantTm_info").val("0"); + $("#aRembourser_info").val("0"); + $("#depassement_info").val("0"); + + v_msg="Veuillez s\u00e9lectionner un act!"; + v_msgEng="Please select an act!"; + alert_ebene(v_msg, v_msgEng); + + $("#codeActe").focus(); + return; + } + + quantite = $("#quantiteSeance").val(); + + quantite = parseInt(quantite); + + if(quantite==0) + { + $("#quantiteSeance").val(1); + quantite = 1; + } + + nbRestant = $("#nbRestant").val(); + nbRestant = parseInt(nbRestant); + + if(quantite>nbRestant) + { + v_msg="Vous ne pouvez pas d\u00e9passer "+nbRestant+" s\u00e9ances!"; + v_msgEng="Only "+nbRestant+" sessions are possible!"; + alert_ebene(v_msg, v_msgEng); + quantite = 0; + } + + prixSaisi = $("#prixSaisi").val(); + donnees = 'codeActe='+codeActe+'&quantite='+quantite; + donnees += '&prixSaisi='+prixSaisi; + + $("#infosacte").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxprixseancesea/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + $("#infosacte").html(data); + }, + complete: function() { + } + }); +} + +function ajax_maj_qte_acte_hospitalisation(idPrestationactes, quantite, controle) +{ + quantite=quantite.replace(",","."); + controle.value=quantite; + + if(controle_numerique(controle)) + { + if(quantite==0) + { + controle.focus(); + v_msg="Veuillez saisir la quantit\u00e9!"; + v_msgEng="Please enter the quantity!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + $("#totam_donnees").html('
' + '
'); + + donnees = 'idPrestationactes='+idPrestationactes+"&quantite="+quantite; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxselectactesmedicauxhospitalisation/majquantite/", + type: 'POST', + data: donnees, + success: function(data) { + }, + error: function(data) { + }, + complete: function() { + ajaxactespossibles_selection_hospitalisation(); + } + }); + } +} + +function ajax_maj_prix_acte_hospitalisation(idPrestationactes, valeurActe, controle) +{ + valeurActe=valeurActe.replace(",","."); + controle.value=valeurActe; + + valeurActe=valeurActe.replace(/ /g,""); + valeurActe=parseInt(valeurActe.replace(",","."),10); + controle.value=valeurActe; + + if(controle_numerique(controle)) + { + if (valeurActe <= "0"){ + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + $("#totam_donnees").html('
' + '
'); + + donnees = 'idPrestationactes='+idPrestationactes+"&valeurActe="+valeurActe; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxselectactesmedicauxhospitalisation/majvaleuracte/", + type: 'POST', + data: donnees, + success: function(data) { + }, + error: function(data) { + }, + complete: function() { + ajaxactespossibles_selection_hospitalisation(); + } + }); + } +} + +function ajax_maj_qte_acte_miseenobservation(idDetail, quantite, controle) +{ + quantite=quantite.replace(",","."); + controle.value=quantite; + + if(controle_numerique(controle)) + { + if(quantite==0) + { + controle.focus(); + v_msg="Veuillez saisir la quantit\u00e9!"; + v_msgEng="Please enter the quantity!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + donnees = 'idDetail='+idDetail+"&quantite="+quantite; + + donnee_a_afficher = ""; + + $("#totam_donnees").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxselectactesmedicauxobservation/majquantite/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_afficher = data; + }, + error: function(data) { + }, + complete: function() { + $("#totam_donnees").html(donnee_a_afficher); + appliquerDataTable(); // Application du plugin DataTables + // ajaxactespossibles_miseenobservation(); // Rafraîchissement de la liste des actes + controle.focus(); + } + }); + } +} + +function ajax_maj_prix_acte_miseenobservation(idDetail, valeurActe, controle) +{ + valeurActe=valeurActe.replace(",","."); + controle.value=valeurActe; + + if(controle_numerique(controle)) + { + if(valeurActe==0) + { + controle.focus(); + v_msg="Rien à faire!"; + v_msgEng="Nothing to do!"; + alert_ebene(v_msg, v_msgEng); + return; + } + + donnees = 'idDetail='+idDetail+"&valeurActe="+valeurActe; + + donnee_a_afficher = ""; + + $("#totam_donnees").html('
' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxselectactesmedicauxobservation/majvaleuracte/", + type: 'POST', + data: donnees, + success: function(data) { + donnee_a_afficher = data; + }, + error: function(data) { + }, + complete: function() { + $("#totam_donnees").html(donnee_a_afficher); + appliquerDataTable(); // Application du plugin DataTables + // ajaxactespossibles_miseenobservation(); // Rafraîchissement de la liste des actes + controle.focus(); + } + }); + } +} + +/** + * Fonction pour supprimer un acte médical en mise en observation + * @param {string} idDetail - Identifiant unique de l'acte à supprimer + */ +async function supprimer_acte_medical_miseenobservation(idDetail) { + // 1. Initialisation de la variable pour stocker les données à afficher + let donnee_a_afficher = ""; + + // 2. Messages de confirmation multilingues + const confirmationMsg = { + fr: "Confirmez-vous la suppression de cet acte?", + en: "Do you confirm the removal of this act?" + }; + + // 3. Demande de confirmation à l'utilisateur + const isConfirmed = await confirm_ebene_sweet(confirmationMsg.fr, confirmationMsg.en); + if (!isConfirmed) return; + + // 4. Affichage de l'indicateur de chargement + $("#totam_donnees").html('
' + '
'); + + // 5. Envoi de la requête de suppression au serveur + try { + const response = await $.ajax({ + url: $("#racineWeb").val() + "Ajaxselectactesmedicauxobservation/supprimeracte/", + type: 'POST', + data: { idDetail: idDetail } + }); + + // 6. Traitement de la réponse + donnee_a_afficher = response; + + // 7. Mise à jour de l'interface utilisateur + $("#totam_donnees").html(donnee_a_afficher); + appliquerDataTable(); // Application du plugin DataTables + // ajaxactespossibles_miseenobservation(); // Rafraîchissement de la liste des actes + + } catch (error) { + console.error("Erreur lors de la suppression de l'acte:", error); + // Gestion supplémentaire des erreurs pourrait être ajoutée ici + } +} + + +async function ajouter_un_acte_miseenobservation(codeActe, prixBase, prixActe, ententePrealable) { + // 1. Initialisation des variables + let donnee_a_afficher = ""; + const codeFamilleActe = $("#codeFamilleActe").val(); + + // 2. Validation des données en entrée + if (!codeActe || codeActe.trim() <= " ") { + await alert_ebene( + "Veuillez sélectionner un acte!", + "Please select an act!" + ); + return; + } + + if (parseFloat(prixActe) === 0) { + await alert_ebene( + "Veuillez revoir le tarif!", + "Please review rate!" + ); + return; + } + + // 3. Confirmation utilisateur + const isConfirmed = await confirm_ebene_sweet( + "Confirmez-vous cet acte?", + "Do you confirm this act?" + ); + + if (!isConfirmed) return; + + // 4. Préparation des données pour l'API + const donnees = { + codeFamilleActe: codeFamilleActe, + codeActe: codeActe, + ententePrealable: ententePrealable, + prixActe: prixActe, + prixBase: prixBase + }; + + + + // 5. Affichage du loader pendant le traitement + $("#totam_donnees").html('
' + '
'); + + // 6. Envoi de la requête AJAX + try { + const response = await $.ajax({ + url: $("#racineWeb").val() + "Ajaxselectactesmedicauxobservation/enregistreractemedicalobservation/", + type: 'post', + data: donnees + }); + + donnee_a_afficher = response; + + // 8. Mise à jour de l'interface + $("#totam_donnees").html(donnee_a_afficher); + appliquerDataTable(); + + } catch (error) { + console.error("Erreur lors de l'ajout de l'acte:", error); + } +} + +function listerdemandesconsultation() +{ + demandeEffectuee = $("#demandeEffectuee").val(); + donnees = 'demandeEffectuee=' + demandeEffectuee; + + $("#div_dossiers_demande_consultation").html('
' + '' + '
'); + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxdemanderdv/listerdemandesconsultation/", + type: 'POST', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + // alert(data); + $('#div_dossiers_demande_consultation').html(data); + }, + complete: function() { + + } + }); +} + +function charger_csrf_token(v_data) +{ + csrf_token=$("#csrf_token").val(); + if (!v_data || v_data.trim() === "") { + v_data = 'csrf_token=' + csrf_token; + }else{ + v_data += '&csrf_token=' + csrf_token; + } + // alert("charger_csrf_token => "+v_data); + return v_data; +} + +// gestion prise de constante => 13/06/2026 +function affiche_constante() +{ + idBeneficiaire = $("#idBeneficiaire").val(); + + donnees = 'idBeneficiaire='+idBeneficiaire; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxconstante/", + type : 'post', + data: donnees, + error: function(errorData){ + alert("Erreur : "+errorData); + }, + success: function(data) { + $("#div_constante_beneficiaire").html(data); + $('#div_constante_beneficiaire').modal("show"); + }, + complete: function() { + afficherHistoriqueConstante(); + } + }); +} + +function enregistrer_constante() +{ + idBeneficiaire = $("#idBeneficiaire").val(); + temperature = $("#temperature").val(); + poids = $("#poids").val(); + taille = $("#taille").val(); + imc = $("#imc").val(); + systolique = $("#systolique").val(); + diastolique = $("#diastolique").val(); + pouls = $("#pouls").val(); + saturationOxygene = $("#saturationOxygene").val(); + + if(idBeneficiaire<="0") + { + v_msg="Bénéficiaire manquant!"; + v_msgEng="Missing beneficiary!"; + alert_ebene(v_msg, v_msgEng); + + return; + } + + if(temperature<=" ") + { + v_msg="Veuillez renseigner la température du patient!"; + v_msgEng="Please fill in the patient's temperature!"; + alert_ebene(v_msg, v_msgEng); + + $("#temperature").focus(); + return; + } + + if(poids<=" ") + { + v_msg="Veuillez renseigner le poids du patient!"; + v_msgEng="Please fill in the patient's weight!"; + alert_ebene(v_msg, v_msgEng); + + $("#poids").focus(); + return; + } + + donnees = 'idBeneficiaire='+idBeneficiaire; + donnees += '&temperature='+temperature; + donnees += '&poids='+poids; + donnees += '&taille='+taille; + donnees += '&imc='+imc; + donnees += '&systolique='+systolique; + donnees += '&diastolique='+diastolique; + donnees += '&pouls='+pouls; + donnees += '&saturationOxygene='+saturationOxygene; + + $.ajax({ + url: $("#racineWeb").val()+"Ajaxconstante/enregistrer/", + type: 'POST', + data: donnees, + success: function(data) { + + }, + error: function(data) { + }, + complete: function() { + $("#close_pop_constante").click(); + } + }); + +} + +function afficherHistoriqueConstante() +{ + masquerConstante = $("#masquerConstante").val(); + + if(masquerConstante=="1"){ + $('#div_historique_constante').hide(); + $("#masquerConstante").val("0"); + $("#span_constante").text("Afficher"); + + }else{ + $('#div_historique_constante').show(); + $("#masquerConstante").val("1"); + $("#span_constante").text("Masquer"); + } +} + + +function constantes() +{ + window.location.assign($("#racineWeb" ).val()+"Constantes/"); +} + +function retourConstantes() +{ + var vueRetour = $("#vueRetour").val(); + + window.location.assign($("#racineWeb" ).val()+vueRetour+"/"); + +} + +function calculImc() +{ + poids = $("#poids").val(); + taille = $("#taille").val(); + + imc = 0; + + if(poids >" " && taille >" ") + { + imc = parseFloat(poids.replace(",","."))/(parseFloat(taille.replace(",",".")) ** 2); + + $("#imc").val(parseFloat(imc).toFixed(3)); + } + +} + +function imprimer_prescription() +{ + var nomForm = $("#nomForm").val(); + + var mlink = ''; + var donnees = ''; + + if(nomForm == "prescriptionmedicament") + { + mlink = "Ajaximprimerbonmedicament/"; + }else if(nomForm=="prescriptionexamens") + { + mlink = "Ajaximprimerbonexamen/"; + } + + $.ajax({ + url: $("#racineWeb").val()+mlink, + type : 'post', + data: donnees, + error: function(errorData){ + //alert("Erreur : "+errorData); + console.log(errorData); + + }, + success: function(data) { + //alert("Success : "+data); + $("#div_export_b").html(data); + }, + complete: function() { + + } + }); + +} + +function annuler_substitution_medicament_new(idDetail) { + // Messages de confirmation + const v_msg = "Annuler cette substitution?"; + const v_msgEng = "Cancel this substitution?"; + + // Appel de la confirmation unifiée + confirm_ebene_sweet(v_msg, v_msgEng).then(function(isConfirm) { + if (isConfirm) { + // Préparation des données pour la requête AJAX + const donnees = 'idDetail=' + idDetail; + + $("#non_livre").html('
' + '
'); + + // Requête AJAX + $.ajax({ + url: $("#racineWeb").val() + "Ajaxsubstitutionmedicament/annulersubstitutionmedicamentnew/", + type: 'POST', + data: donnees, + success: function(data) { + // $("#livraison").html(data); + }, + error: function(data) { + // Gestion d'erreur (peut être améliorée si nécessaire) + }, + complete: function() { + alerter_depassement_limite(); + window.location.assign($("#racineWeb").val() + "Pharmacien/"); + } + }); + } + // Si l'utilisateur annule, ne rien faire (return implicite) + }); +}