diff --git a/Bootstrap/css/style.css b/Bootstrap/css/style.css index 8985782..ca37f14 100644 --- a/Bootstrap/css/style.css +++ b/Bootstrap/css/style.css @@ -32,8 +32,8 @@ body { } .navbar-inverse{ - background-color: rgba(0,0,255,0.2) - border-color:#080808 + background-color: rgba(0,0,255,0.2); + border-color: #080808; } .sidebar-nav > li > a { @@ -198,3 +198,53 @@ input[type="button" i], input[type="submit" i], input[type="reset" i], input[typ { padding: 1px 1px; } + +.frmSearch { + width: 100%; + padding: 10px; + background: #858585; +} + +#element-list { + list-style-type: none; + margin: 0; + padding: 0; + width: 100%; +} + +#element-list li { + padding: 10px; + background: #FFF; + border-bottom: #F0F0F0 1px solid; +} + +#element-list li:hover { + background:blue !important; + color: #fff !important; + cursor: pointer; + cursor: hand; +} + +#searchInput, +#searchInputActe, +#searchInputLienparente { + padding: 10px; +} + +.div_selection_list{ + position:absolute; + z-index:999; + height:250px; + width:35%; + overflow: auto; +} + +#div_selection_acte, +#div_selection, +#div_selection_prestataire{ + position:absolute; + z-index:999; + height:250px; + overflow: auto; + width: 87%; +} \ No newline at end of file diff --git a/Controleur/ControleurAjaxchargeractesmedicaux.php b/Controleur/ControleurAjaxchargeractesmedicaux.php new file mode 100755 index 0000000..36bdfbf --- /dev/null +++ b/Controleur/ControleurAjaxchargeractesmedicaux.php @@ -0,0 +1,66 @@ +acte = new Detailtarifacte(); + $this->prescription = new Prestationactes(); + } + + public function index() { + + $libelle = $this->requete->getParametreFormulaire("libelle"); + + if ($libelle=="vide" || $libelle=="") { + $actes = $this->acte->getactesexamenvide(); + }else{ + $actes = $this->acte->getactesmedicauxpossibles($libelle); + } + + $this->genererVueAjax(array('actes' => $actes)); + } + + + public function actecharge() + { + $codeActe = $this->requete->getParametreFormulaire("codeActe"); + + $acte_charge = $this->acte->chargerinfosacte($codeActe); + + $this->genererVueAjax(array('acte_charge' => $acte_charge)); + } + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Controleur/ControleurAjaxselectactesmedicaux.php b/Controleur/ControleurAjaxselectactesmedicaux.php index 05ce9af..bf804d5 100644 --- a/Controleur/ControleurAjaxselectactesmedicaux.php +++ b/Controleur/ControleurAjaxselectactesmedicaux.php @@ -13,17 +13,17 @@ class ControleurAjaxselectactesmedicaux extends Controleur { } public function index() { - $codeFamilleActe = $this->requete->getParametreFormulaire("codeFamilleActe"); + //$codeFamilleActe = $this->requete->getParametreFormulaire("codeFamilleActe"); $numeroFeuilleMaladie = $_SESSION['p_numeroFeuilleMaladie_C']; $codePrestataire = $_SESSION['p_codePrestataire_C']; - $actes = $this->acte->geatactesexamensselection($codeFamilleActe); + //$actes = $this->acte->geatactesexamensselection($codeFamilleActe); $prestations = $this->prestation->getactesmedicauxfeuille($numeroFeuilleMaladie, $codePrestataire); $prestations_total = $this->prestation->getactesmedicauxfeuille_total($numeroFeuilleMaladie, $codePrestataire); - $this->genererVueAjax(array('actes' => $actes, 'prestations' => $prestations, 'prestations_total' => $prestations_total)); + $this->genererVueAjax(array(/*'actes' => $actes, */'prestations' => $prestations, 'prestations_total' => $prestations_total)); } public function enregistreractemedical() diff --git a/Js/fonctions.js b/Js/fonctions.js index d8ba722..9a5f759 100644 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -17602,10 +17602,57 @@ function dataTableSpecialeMini(){ $(function(){ appliquerDataTable(); dataTableSpeciale(); - $('.js-example-basic-single').select2(); + $('.selectpicker').selectpicker(); -}); + $("#div_selection").hide(); + + $("#searchInput").keyup(debounce(function() { + const libelle = $(this).val().trim(); + + if (!libelle || libelle.length < 3) { + $("#div_selection").hide(); + return; + } + + const formHandlers = { + "selectactesmedicaux": { + link: "Ajaxchargeractesmedicaux/", + data: { libelle: libelle } + } + }; + + const handler = formHandlers[$('#nomForm').val()]; + if (!handler) return; + + /* Vérification des prérequis si nécessaire + if (handler.preCheck && !handler.preCheck()) { + return; + } + */ + + // Préparation des données + const data = typeof handler.data === 'function' ? handler.data() : handler.data; + + // Envoi de la requête AJAX + $.ajax({ + type: "POST", + url: $("#racineWeb").val() + handler.link, + data: data, + beforeSend: function() { + $("#searchInput").css("background", "#FFF url(Bootstrap/images/loading.gif) no-repeat 165px"); + }, + success: function(data) { + $("#div_selection").show().html(data); + $("#searchInput").css("background", "#FFF"); + }, + error: function(xhr, status, error) { + console.error("Erreur lors de la recherche:", error); + $("#searchInput").css("background", "#FFF"); + } + }); + }, 300)); +}); function ajaxinfosboninitconsultation() { @@ -18588,3 +18635,134 @@ function visibilite_date_rdv() } } +// Fonction debounce pour limiter les appels fréquents +function debounce(func, wait, immediate) { + let timeout; + return function() { + const context = this, args = arguments; + const later = function() { + timeout = null; + if (!immediate) func.apply(context, args); + }; + const callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; +} + +function selectElement(val){ + $("#searchInput").val(val); + $("#div_selection").hide(); +} + +function validate_acte_params(params) { + if (!params.codeMedecin || params.codeMedecin.trim() === "") { + alert_ebene("Veuillez sélectionner un médecin!", "Please select a doctor!"); + $("#nomMedecin").focus(); + return false; + } + + if (!params.codeActe || params.codeActe.trim() === "") { + alert_ebene("Veuillez sélectionner un acte!", "Please select an act!"); + return false; + } + + if (!params.prixActe || params.prixActe == 0) { + alert_ebene("Veuillez revoir le tarif!", "Please review rate!"); + return false; + } + + return true; +} + +function ajouter_un_acte_selection_new(params) { + // Normalisation entente préalable + if (params.ententePrealable == 1) { + params.ententePrealable = "2"; + } + + var donnees = { + codeFamilleActe: params.codeFamilleActe, + codeActe: params.codeActe, + codeMedecin: params.codeMedecin, + ententePrealable: params.ententePrealable, + prixActe: params.prixActe, + montantTm: params.montantTm, + aRembourser: params.aRembourser + }; + + var numeroFeuilleMaladie = $("#numeroFeuilleMaladie_C").val(); + var donnees_sav = { + codeActe: params.codeActe, + numeroFeuilleMaladie: numeroFeuilleMaladie, + typeMail: "mailententeprealable" + }; + + $("#div_prestations").html('
Veuillez patienter...
'); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxselectactesmedicaux/enregistreractemedical/", + type: 'post', + data: donnees, + success: function(data) { + maj_fraisexclu_cso(); + + if (params.ententePrealable == "2") { + preparesms("ententeprealable"); + alert_ebene("Demande accord préalable envoyée!", "Request prior agreement sent!"); + } + + $("#totam_donnees").html(data); + }, + complete: function() { + if (params.ententePrealable == "2") { + mettremailattente(donnees_sav); + } + } + }); +} + +function add_selected_acte_medicaux(controle) { + var str = controle.split(' <==> '); + var codeActe = str[0] || ""; + var libelleActe = str[1] || ""; + var acteExclu = str[3] || ""; + + acteExclu = (acteExclu === "Garanti" || acteExclu === "Guaranteed") ? 0 : 1; + + if (!libelleActe.trim()) return; + if (acteExclu === 1) { + alert_ebene("Acte non couvert!", "Not covered!"); + return; + } + + $("#div_patientez").html('
'); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxchargeractesmedicaux/actecharge/", + type: 'post', + data: { codeActe: codeActe }, + success: function(data) { + //alert(data); + //$('#div_test_gabarit').html(data); + //return; + $("#div_patientez").html(data); + $("#searchInput").val(''); + + var params = { + codeActe: codeActe, + prixActe: $("#prixActe").val(), + montantTm: $("#montantTm").val(), + aRembourser: $("#aRembourser").val(), + ententePrealable: $("#ententePrealable").val(), + codeFamilleActe: $("#codeFamilleActe").val(), + codeMedecin: $("#codeMedecin").val() + }; + + if (validate_acte_params(params)) { + ajouter_un_acte_selection_new(params); + } + } + }); +} \ No newline at end of file diff --git a/Modele/Detailtarifacte.php b/Modele/Detailtarifacte.php index b85155f..f88bbc6 100644 --- a/Modele/Detailtarifacte.php +++ b/Modele/Detailtarifacte.php @@ -317,5 +317,53 @@ class Detailtarifacte extends Modele { return $liste->fetchAll(PDO::FETCH_ASSOC); } } + + public function getactesexamenvide() { + $sql = 'call sp_p_actes_examen_vide()'; + $resultat = $this->executerRequete($sql); + return $resultat->fetchAll(PDO::FETCH_ASSOC); + } + + public function getactesmedicauxpossibles($libelle) + { + $numeroFeuilleMaladie = $_SESSION['p_numeroFeuilleMaladie_C']; + $codePrestataire = $_SESSION['p_codePrestataire_C']; + $codeTarifActe = $_SESSION['p_codeTarifActe_C']; + $codePrestataire = $_SESSION['p_codePrestataire_C']; + $idAdherent = $_SESSION['p_idAdherent_C']; + + $libelle = contruireParamLike($libelle); + + if (isset($_SESSION['p_lang']) && $_SESSION['p_lang']=="en_US") + { + $sql = 'call sp_p_recherche_actes_medicaux_eng(?, ?, ?, ?, ?);'; + } + else + { + $sql = 'call sp_p_recherche_actes_medicaux(?, ?, ?, ?, ?);'; + } + + $resultat = $this->executerRequete($sql, array($numeroFeuilleMaladie,$codeTarifActe, $libelle, $codePrestataire, $idAdherent)); + + return $resultat->fetchAll(PDO::FETCH_ASSOC); + } + + + public function chargerinfosacte($codeActe) + { + $numeroFeuilleMaladie = $_SESSION['p_numeroFeuilleMaladie_C']; + $codePrestataire = $_SESSION['p_codePrestataire_C']; + $codeTarifActe = $_SESSION['p_codeTarifActe_C']; + $tm = $_SESSION['p_tm_C']; + $codePrestataire = $_SESSION['p_codePrestataire_C']; + $idAdherent = $_SESSION['p_idAdherent_C']; + + $sql = 'call sp_p_charger_infosacte_medical(?, ?, ?, ?, ?, ?);'; + + $resultat = $this->executerRequete($sql, array($numeroFeuilleMaladie,$codeTarifActe, $codeActe, + $codePrestataire, $idAdherent, $tm)); + + return $resultat->fetch(PDO::FETCH_ASSOC); + } } \ No newline at end of file diff --git a/Vue/Ajaxchargeractesmedicaux/actecharge.php b/Vue/Ajaxchargeractesmedicaux/actecharge.php new file mode 100755 index 0000000..5932801 --- /dev/null +++ b/Vue/Ajaxchargeractesmedicaux/actecharge.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/Vue/Ajaxchargeractesmedicaux/index.php b/Vue/Ajaxchargeractesmedicaux/index.php new file mode 100755 index 0000000..d85d1e6 --- /dev/null +++ b/Vue/Ajaxchargeractesmedicaux/index.php @@ -0,0 +1,35 @@ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxselectactesmedicaux/index.php b/Vue/Ajaxselectactesmedicaux/index.php index 570c70a..7eadefa 100644 --- a/Vue/Ajaxselectactesmedicaux/index.php +++ b/Vue/Ajaxselectactesmedicaux/index.php @@ -1,7 +1,7 @@ - + +
- + @@ -119,7 +119,7 @@ - + @@ -137,7 +137,5 @@ -
<=
-
diff --git a/Vue/Selectactesmedicaux/index.php b/Vue/Selectactesmedicaux/index.php index ec26302..9a9985d 100644 --- a/Vue/Selectactesmedicaux/index.php +++ b/Vue/Selectactesmedicaux/index.php @@ -8,6 +8,7 @@ + @@ -23,6 +24,7 @@ + - + + + + +
+
+ " autofocus required AUTOCOMPLETE="OFF"> +
+
+
@@ -82,8 +93,10 @@ -
+
+
+ -
+
- + @@ -159,7 +173,7 @@ - + diff --git a/Vue/gabarit.php b/Vue/gabarit.php index 867ab46..ce5142b 100644 --- a/Vue/gabarit.php +++ b/Vue/gabarit.php @@ -16,7 +16,7 @@ - + @@ -26,6 +26,7 @@ <?= $_SESSION['p_vue'] ?> @@ -263,7 +265,7 @@ actesHarmonises : - +
<=