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 @@
+
+
+
+- ');add_selected_acte_medicaux(' ".$v["libelle"]; ?>');">
+
+
+
+
+
\ 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 @@
-
+
+
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 @@
+
-
+
+
+ | = _("Acte") ?> |
+
+
+ " autofocus required AUTOCOMPLETE="OFF">
+
+
+ |
+
@@ -82,8 +93,10 @@
-