{"id":6335,"date":"2026-07-25T21:04:26","date_gmt":"2026-07-25T21:04:26","guid":{"rendered":"https:\/\/ambmmaroc.com\/?page_id=6335"},"modified":"2026-07-25T22:15:17","modified_gmt":"2026-07-25T22:15:17","slug":"nomenclature","status":"publish","type":"page","link":"https:\/\/ambmmaroc.com\/en_us\/our-team\/nomenclature\/","title":{"rendered":"Nomenclature"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6335\" class=\"elementor elementor-6335\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b5cfbc2 gradient-bg-metal e-flex e-con-boxed e-con e-parent\" data-id=\"b5cfbc2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-551a006 e-con-full e-flex e-con e-child\" data-id=\"551a006\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f94db9 at-heading-animation at-animation-heading-style-3 elementor-widget elementor-widget-heading\" data-id=\"2f94db9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Nomenclature des actes de Biologie M\u00e9dicale <\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b05cba8 e-flex e-con-boxed e-con e-parent\" data-id=\"b05cba8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3687e69 elementor-widget elementor-widget-html\" data-id=\"3687e69\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"ambm-nomenclature\" id=\"ambmNomenclature\">\r\n\r\n  <div class=\"ambm-nomenclature-header\">\r\n    <div class=\"ambm-header-content\">\r\n      <span class=\"ambm-eyebrow\">Nomenclature des actes<\/span>\r\n\r\n      <h2>Actes de biologie m\u00e9dicale<\/h2>\r\n\r\n      <p>\r\n        Consultez la nomenclature et recherchez rapidement un acte\r\n        par son code, son intitul\u00e9, son coefficient ou son prix.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ambm-nomenclature-content\">\r\n\r\n    <!-- BARRE DE RECHERCHE -->\r\n    <div class=\"ambm-search-panel\">\r\n\r\n      <div class=\"ambm-search-field\">\r\n        <svg\r\n          viewBox=\"0 0 24 24\"\r\n          fill=\"none\"\r\n          stroke=\"currentColor\"\r\n          stroke-width=\"2\"\r\n          aria-hidden=\"true\"\r\n        >\r\n          <circle cx=\"11\" cy=\"11\" r=\"7\"><\/circle>\r\n          <path d=\"m20 20-3.5-3.5\"><\/path>\r\n        <\/svg>\r\n\r\n        <input\r\n          type=\"search\"\r\n          id=\"searchActes\"\r\n          placeholder=\"Rechercher un acte, un code, un coefficient ou un prix\u2026\"\r\n          aria-label=\"Rechercher dans la nomenclature\"\r\n          autocomplete=\"off\"\r\n        >\r\n\r\n        <button\r\n          type=\"button\"\r\n          id=\"resetSearch\"\r\n          class=\"ambm-reset-search\"\r\n          aria-label=\"Effacer la recherche\"\r\n          title=\"Effacer la recherche\"\r\n          hidden\r\n        >\r\n          \u00d7\r\n        <\/button>\r\n      <\/div>\r\n\r\n      <div class=\"ambm-search-information\">\r\n        <span id=\"actesCount\">Chargement de la nomenclature\u2026<\/span>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    <!-- TABLEAU -->\r\n    <div class=\"ambm-table-container\">\r\n\r\n      <!-- CHARGEMENT -->\r\n      <div class=\"ambm-loading\" id=\"actesLoading\">\r\n        <span class=\"ambm-loader\"><\/span>\r\n        <span>Chargement des actes\u2026<\/span>\r\n      <\/div>\r\n\r\n      <!-- LISTE DES ACTES -->\r\n      <div class=\"ambm-table-scroll\" id=\"actesTableWrapper\" hidden>\r\n\r\n        <table class=\"ambm-table\">\r\n\r\n          <thead>\r\n            <tr>\r\n              <th scope=\"col\">Code<\/th>\r\n              <th scope=\"col\">D\u00e9signation de l\u2019acte<\/th>\r\n              <th scope=\"col\">Coefficient<\/th>\r\n              <th scope=\"col\">Prix avec couverture<\/th>\r\n              <th scope=\"col\">Prix sans couverture<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n\r\n          <tbody id=\"actesBody\"><\/tbody>\r\n\r\n        <\/table>\r\n\r\n      <\/div>\r\n\r\n      <!-- AUCUN R\u00c9SULTAT -->\r\n      <div class=\"ambm-no-results\" id=\"noResults\" hidden>\r\n        <div class=\"ambm-no-results-icon\">\u2315<\/div>\r\n        <h3>Aucun acte trouv\u00e9<\/h3>\r\n        <p>Essayez avec un autre code ou un autre mot-cl\u00e9.<\/p>\r\n      <\/div>\r\n\r\n      <!-- ERREUR -->\r\n      <div class=\"ambm-error\" id=\"actesError\" hidden>\r\n        <h3>Impossible de charger la nomenclature<\/h3>\r\n        <p>\r\n          V\u00e9rifiez que le fichier JSON est accessible, puis rechargez la page.\r\n        <\/p>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n    <!-- PAGINATION -->\r\n    <div\r\n      class=\"ambm-pagination-wrapper\"\r\n      id=\"paginationWrapper\"\r\n      hidden\r\n    >\r\n      <div\r\n        class=\"ambm-pagination-info\"\r\n        id=\"paginationInfo\"\r\n      ><\/div>\r\n\r\n      <nav\r\n        class=\"ambm-pagination\"\r\n        id=\"pagination\"\r\n        aria-label=\"Pagination de la nomenclature\"\r\n      ><\/nav>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n<style>\r\n\/* =========================================================\r\n   NOMENCLATURE AMBM\r\n========================================================= *\/\r\n\r\n.ambm-nomenclature {\r\n  --ambm-navy: #082a5a;\r\n  --ambm-blue: #075f8f;\r\n  --ambm-teal: #5fa3a3;\r\n  --ambm-light: #f4f8fb;\r\n  --ambm-white: #ffffff;\r\n  --ambm-text: #27354d;\r\n  --ambm-muted: #6e7b90;\r\n  --ambm-border: #dfe8ef;\r\n  --ambm-green: #267247;\r\n  --ambm-orange: #a75613;\r\n\r\n  position: relative;\r\n  width: 100%;\r\n  padding: 70px 20px;\r\n  overflow: hidden;\r\n\r\n  background:\r\n    radial-gradient(\r\n      circle at top right,\r\n      rgba(95, 163, 163, 0.11),\r\n      transparent 32%\r\n    ),\r\n    var(--ambm-light);\r\n\r\n  color: var(--ambm-text);\r\n  font-family: inherit;\r\n}\r\n\r\n.ambm-nomenclature *,\r\n.ambm-nomenclature *::before,\r\n.ambm-nomenclature *::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n\/* =========================================================\r\n   LARGEUR PRINCIPALE\r\n========================================================= *\/\r\n\r\n.ambm-nomenclature-header,\r\n.ambm-nomenclature-content {\r\n  width: 100%;\r\n  max-width: 1450px;\r\n  margin-right: auto;\r\n  margin-left: auto;\r\n}\r\n\r\n\/* =========================================================\r\n   EN-T\u00caTE\r\n========================================================= *\/\r\n\r\n.ambm-nomenclature-header {\r\n  position: relative;\r\n  overflow: hidden;\r\n  padding: 45px;\r\n  border-radius: 24px;\r\n\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      var(--ambm-navy) 0%,\r\n      var(--ambm-blue) 100%\r\n    );\r\n\r\n  box-shadow:\r\n    0 20px 55px rgba(8, 42, 90, 0.16);\r\n}\r\n\r\n.ambm-nomenclature-header::before,\r\n.ambm-nomenclature-header::after {\r\n  position: absolute;\r\n  border: 28px solid rgba(255, 255, 255, 0.08);\r\n  border-radius: 50%;\r\n  content: \"\";\r\n}\r\n\r\n.ambm-nomenclature-header::before {\r\n  top: -120px;\r\n  right: -70px;\r\n  width: 260px;\r\n  height: 260px;\r\n}\r\n\r\n.ambm-nomenclature-header::after {\r\n  right: 150px;\r\n  bottom: -160px;\r\n  width: 240px;\r\n  height: 240px;\r\n}\r\n\r\n.ambm-header-content {\r\n  position: relative;\r\n  z-index: 2;\r\n  max-width: 850px;\r\n}\r\n\r\n.ambm-eyebrow {\r\n  display: inline-flex;\r\n  align-items: center;\r\n\r\n  margin-bottom: 14px;\r\n  padding: 7px 13px;\r\n\r\n  border: 1px solid rgba(255, 255, 255, 0.22);\r\n  border-radius: 30px;\r\n\r\n  background: rgba(255, 255, 255, 0.1);\r\n  color: #ffffff;\r\n\r\n  font-size: 12px;\r\n  font-weight: 700;\r\n  letter-spacing: 1.5px;\r\n  text-transform: uppercase;\r\n}\r\n\r\n.ambm-nomenclature-header h2 {\r\n  margin: 0 0 14px;\r\n  color: #ffffff;\r\n\r\n  font-size: clamp(30px, 4vw, 48px);\r\n  font-weight: 750;\r\n  line-height: 1.15;\r\n}\r\n\r\n.ambm-nomenclature-header p {\r\n  max-width: 780px;\r\n  margin: 0;\r\n\r\n  color: rgba(255, 255, 255, 0.85);\r\n\r\n  font-size: 17px;\r\n  line-height: 1.7;\r\n}\r\n\r\n\/* =========================================================\r\n   CONTENU\r\n========================================================= *\/\r\n\r\n.ambm-nomenclature-content {\r\n  margin-top: 25px;\r\n}\r\n\r\n\/* =========================================================\r\n   RECHERCHE\r\n========================================================= *\/\r\n\r\n.ambm-search-panel {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 20px;\r\n\r\n  margin-bottom: 20px;\r\n  padding: 18px;\r\n\r\n  border: 1px solid var(--ambm-border);\r\n  border-radius: 16px;\r\n\r\n  background: var(--ambm-white);\r\n\r\n  box-shadow:\r\n    0 10px 30px rgba(8, 42, 90, 0.06);\r\n}\r\n\r\n.ambm-search-field {\r\n  position: relative;\r\n  flex: 1;\r\n  max-width: 850px;\r\n}\r\n\r\n.ambm-search-field svg {\r\n  position: absolute;\r\n  top: 50%;\r\n  left: 17px;\r\n\r\n  width: 21px;\r\n  height: 21px;\r\n\r\n  color: var(--ambm-blue);\r\n\r\n  transform: translateY(-50%);\r\n  pointer-events: none;\r\n}\r\n\r\n.ambm-search-field input {\r\n  width: 100%;\r\n  min-height: 54px;\r\n\r\n  padding:\r\n    13px\r\n    50px\r\n    13px\r\n    50px;\r\n\r\n  border: 1px solid var(--ambm-border);\r\n  border-radius: 12px;\r\n  outline: none;\r\n\r\n  background: #fbfdff;\r\n  color: var(--ambm-text);\r\n\r\n  font-family: inherit;\r\n  font-size: 15px;\r\n\r\n  transition:\r\n    border-color 0.2s ease,\r\n    box-shadow 0.2s ease,\r\n    background 0.2s ease;\r\n}\r\n\r\n.ambm-search-field input::placeholder {\r\n  color: #929cad;\r\n}\r\n\r\n.ambm-search-field input:focus {\r\n  border-color: var(--ambm-teal);\r\n  background: #ffffff;\r\n\r\n  box-shadow:\r\n    0 0 0 4px rgba(95, 163, 163, 0.13);\r\n}\r\n\r\n.ambm-reset-search {\r\n  position: absolute;\r\n  top: 50%;\r\n  right: 13px;\r\n\r\n  width: 30px;\r\n  height: 30px;\r\n  padding: 0;\r\n\r\n  border: 0;\r\n  border-radius: 50%;\r\n\r\n  background: #eaf1f6;\r\n  color: var(--ambm-navy);\r\n\r\n  font-size: 22px;\r\n  line-height: 1;\r\n\r\n  cursor: pointer;\r\n\r\n  transform: translateY(-50%);\r\n}\r\n\r\n.ambm-reset-search:hover {\r\n  background: var(--ambm-navy);\r\n  color: #ffffff;\r\n}\r\n\r\n.ambm-search-information {\r\n  flex-shrink: 0;\r\n\r\n  color: var(--ambm-muted);\r\n\r\n  font-size: 14px;\r\n  font-weight: 600;\r\n}\r\n\r\n\/* =========================================================\r\n   TABLEAU\r\n========================================================= *\/\r\n\r\n.ambm-table-container {\r\n  position: relative;\r\n  overflow: hidden;\r\n\r\n  min-height: 180px;\r\n\r\n  border: 1px solid var(--ambm-border);\r\n  border-radius: 18px;\r\n\r\n  background: var(--ambm-white);\r\n\r\n  box-shadow:\r\n    0 16px 45px rgba(8, 42, 90, 0.08);\r\n}\r\n\r\n.ambm-table-scroll {\r\n  width: 100%;\r\n  overflow-x: auto;\r\n}\r\n\r\n.ambm-table {\r\n  width: 100%;\r\n  min-width: 1100px;\r\n\r\n  border-collapse: collapse;\r\n}\r\n\r\n.ambm-table thead {\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      var(--ambm-navy),\r\n      var(--ambm-blue)\r\n    );\r\n}\r\n\r\n.ambm-table th {\r\n  padding: 18px 16px;\r\n  border: 0;\r\n\r\n  color: #ffffff;\r\n\r\n  font-size: 12px;\r\n  font-weight: 700;\r\n  letter-spacing: 0.35px;\r\n  text-align: left;\r\n  text-transform: uppercase;\r\n  white-space: nowrap;\r\n}\r\n\r\n.ambm-table th:nth-child(1) {\r\n  width: 130px;\r\n}\r\n\r\n.ambm-table th:nth-child(3) {\r\n  width: 130px;\r\n  text-align: center;\r\n}\r\n\r\n.ambm-table th:nth-child(4),\r\n.ambm-table th:nth-child(5) {\r\n  width: 195px;\r\n  text-align: center;\r\n}\r\n\r\n.ambm-table td {\r\n  padding: 17px 16px;\r\n\r\n  border-bottom: 1px solid #edf1f5;\r\n\r\n  color: var(--ambm-text);\r\n\r\n  font-size: 14px;\r\n  line-height: 1.5;\r\n  vertical-align: middle;\r\n}\r\n\r\n.ambm-table tbody tr:last-child td {\r\n  border-bottom: 0;\r\n}\r\n\r\n.ambm-table tbody tr {\r\n  transition:\r\n    background 0.2s ease,\r\n    transform 0.2s ease;\r\n}\r\n\r\n.ambm-table tbody tr:nth-child(even) {\r\n  background: #fbfdff;\r\n}\r\n\r\n.ambm-table tbody tr:hover {\r\n  background: #f0f8fa;\r\n}\r\n\r\n\/* CODE *\/\r\n\r\n.ambm-code {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 75px;\r\n  padding: 7px 10px;\r\n\r\n  border:\r\n    1px solid rgba(7, 95, 143, 0.14);\r\n  border-radius: 8px;\r\n\r\n  background: #eaf4f8;\r\n  color: var(--ambm-blue);\r\n\r\n  font-weight: 750;\r\n  letter-spacing: 0.3px;\r\n}\r\n\r\n\/* D\u00c9SIGNATION *\/\r\n\r\n.ambm-acte-name {\r\n  color: var(--ambm-text);\r\n  font-weight: 600;\r\n}\r\n\r\n\/* CELLULES CENTR\u00c9ES *\/\r\n\r\n.ambm-center {\r\n  text-align: center;\r\n}\r\n\r\n\/* COEFFICIENT *\/\r\n\r\n.ambm-coefficient {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 65px;\r\n  padding: 7px 11px;\r\n\r\n  border-radius: 30px;\r\n\r\n  background:\r\n    rgba(95, 163, 163, 0.13);\r\n\r\n  color: #367f7f;\r\n\r\n  font-size: 14px;\r\n  font-weight: 750;\r\n  white-space: nowrap;\r\n}\r\n\r\n\/* PRIX *\/\r\n\r\n.ambm-price {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 110px;\r\n  padding: 7px 12px;\r\n\r\n  border-radius: 30px;\r\n\r\n  font-size: 14px;\r\n  font-weight: 750;\r\n  white-space: nowrap;\r\n}\r\n\r\n.ambm-price-covered {\r\n  background: #e8f7ef;\r\n  color: var(--ambm-green);\r\n}\r\n\r\n.ambm-price-uncovered {\r\n  background: #fff1e5;\r\n  color: var(--ambm-orange);\r\n}\r\n\r\n\/* =========================================================\r\n   SURBRILLANCE DE LA RECHERCHE\r\n========================================================= *\/\r\n\r\n.ambm-highlight {\r\n  padding: 1px 3px;\r\n\r\n  border-radius: 3px;\r\n\r\n  background: #ffe49a;\r\n  color: inherit;\r\n\r\n  box-shadow:\r\n    0 0 0 1px rgba(185, 135, 0, 0.08);\r\n}\r\n\r\n\/* =========================================================\r\n   CHARGEMENT\r\n========================================================= *\/\r\n\r\n.ambm-loading {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  gap: 13px;\r\n\r\n  min-height: 180px;\r\n\r\n  color: var(--ambm-muted);\r\n\r\n  font-size: 15px;\r\n}\r\n\r\n.ambm-loader {\r\n  width: 26px;\r\n  height: 26px;\r\n\r\n  border: 3px solid #dce8ee;\r\n  border-top-color: var(--ambm-blue);\r\n  border-radius: 50%;\r\n\r\n  animation:\r\n    ambmLoaderRotation 0.8s linear infinite;\r\n}\r\n\r\n@keyframes ambmLoaderRotation {\r\n  to {\r\n    transform: rotate(360deg);\r\n  }\r\n}\r\n\r\n\/* =========================================================\r\n   AUCUN R\u00c9SULTAT \/ ERREUR\r\n========================================================= *\/\r\n\r\n.ambm-no-results,\r\n.ambm-error {\r\n  padding: 55px 25px;\r\n  text-align: center;\r\n}\r\n\r\n.ambm-no-results-icon {\r\n  display: grid;\r\n  place-items: center;\r\n\r\n  width: 60px;\r\n  height: 60px;\r\n  margin: 0 auto 15px;\r\n\r\n  border-radius: 50%;\r\n\r\n  background: #edf5f8;\r\n  color: var(--ambm-blue);\r\n\r\n  font-size: 32px;\r\n}\r\n\r\n.ambm-no-results h3,\r\n.ambm-error h3 {\r\n  margin: 0 0 8px;\r\n\r\n  color: var(--ambm-navy);\r\n\r\n  font-size: 21px;\r\n}\r\n\r\n.ambm-no-results p,\r\n.ambm-error p {\r\n  margin: 0;\r\n  color: var(--ambm-muted);\r\n}\r\n\r\n.ambm-error {\r\n  background: #fff7f8;\r\n}\r\n\r\n\/* =========================================================\r\n   PAGINATION\r\n========================================================= *\/\r\n\r\n.ambm-pagination-wrapper {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 20px;\r\n\r\n  margin-top: 22px;\r\n}\r\n\r\n.ambm-pagination-info {\r\n  color: var(--ambm-muted);\r\n  font-size: 14px;\r\n}\r\n\r\n.ambm-pagination {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  justify-content: flex-end;\r\n  gap: 7px;\r\n}\r\n\r\n.ambm-page-button {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 41px;\r\n  height: 41px;\r\n  padding: 0 12px;\r\n\r\n  border: 1px solid var(--ambm-border);\r\n  border-radius: 9px;\r\n\r\n  background: #ffffff;\r\n  color: var(--ambm-navy);\r\n\r\n  font-family: inherit;\r\n  font-size: 14px;\r\n  font-weight: 700;\r\n\r\n  cursor: pointer;\r\n\r\n  transition:\r\n    color 0.2s ease,\r\n    background 0.2s ease,\r\n    border-color 0.2s ease,\r\n    transform 0.2s ease;\r\n}\r\n\r\n.ambm-page-button:hover:not(:disabled) {\r\n  border-color: var(--ambm-blue);\r\n\r\n  background: var(--ambm-blue);\r\n  color: #ffffff;\r\n\r\n  transform: translateY(-1px);\r\n}\r\n\r\n.ambm-page-button.active {\r\n  border-color: var(--ambm-navy);\r\n\r\n  background: var(--ambm-navy);\r\n  color: #ffffff;\r\n}\r\n\r\n.ambm-page-button:disabled {\r\n  opacity: 0.4;\r\n  cursor: not-allowed;\r\n}\r\n\r\n.ambm-pagination-dots {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n\r\n  min-width: 30px;\r\n\r\n  color: var(--ambm-muted);\r\n}\r\n\r\n\/* =========================================================\r\n   TABLETTE\r\n========================================================= *\/\r\n\r\n@media (max-width: 800px) {\r\n\r\n  .ambm-nomenclature {\r\n    padding: 45px 14px;\r\n  }\r\n\r\n  .ambm-nomenclature-header {\r\n    padding: 32px 25px;\r\n    border-radius: 18px;\r\n  }\r\n\r\n  .ambm-search-panel {\r\n    align-items: stretch;\r\n    flex-direction: column;\r\n  }\r\n\r\n  .ambm-search-field {\r\n    max-width: none;\r\n  }\r\n\r\n  .ambm-search-information {\r\n    padding-left: 4px;\r\n  }\r\n\r\n  .ambm-pagination-wrapper {\r\n    align-items: flex-start;\r\n    flex-direction: column;\r\n  }\r\n\r\n  .ambm-pagination {\r\n    justify-content: flex-start;\r\n  }\r\n\r\n}\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n========================================================= *\/\r\n\r\n@media (max-width: 600px) {\r\n\r\n  .ambm-nomenclature-header h2 {\r\n    font-size: 30px;\r\n  }\r\n\r\n  .ambm-nomenclature-header p {\r\n    font-size: 15px;\r\n  }\r\n\r\n  .ambm-table {\r\n    min-width: 0;\r\n  }\r\n\r\n  .ambm-table thead {\r\n    display: none;\r\n  }\r\n\r\n  .ambm-table,\r\n  .ambm-table tbody,\r\n  .ambm-table tr,\r\n  .ambm-table td {\r\n    display: block;\r\n    width: 100%;\r\n  }\r\n\r\n  .ambm-table tbody {\r\n    padding: 10px;\r\n  }\r\n\r\n  .ambm-table tbody tr {\r\n    margin-bottom: 12px;\r\n    padding: 14px;\r\n\r\n    border: 1px solid var(--ambm-border);\r\n    border-radius: 13px;\r\n\r\n    background: #ffffff;\r\n  }\r\n\r\n  .ambm-table tbody tr:last-child {\r\n    margin-bottom: 0;\r\n  }\r\n\r\n  .ambm-table td {\r\n    display: grid;\r\n    grid-template-columns: 140px 1fr;\r\n    gap: 12px;\r\n\r\n    padding: 9px 0;\r\n    border: 0;\r\n\r\n    text-align: left;\r\n  }\r\n\r\n  .ambm-table td::before {\r\n    color: var(--ambm-muted);\r\n\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    letter-spacing: 0.3px;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ambm-table td:nth-child(1)::before {\r\n    content: \"Code\";\r\n  }\r\n\r\n  .ambm-table td:nth-child(2)::before {\r\n    content: \"Acte\";\r\n  }\r\n\r\n  .ambm-table td:nth-child(3)::before {\r\n    content: \"Coefficient\";\r\n  }\r\n\r\n  .ambm-table td:nth-child(4)::before {\r\n    content: \"Prix avec couverture\";\r\n  }\r\n\r\n  .ambm-table td:nth-child(5)::before {\r\n    content: \"Prix sans couverture\";\r\n  }\r\n\r\n  .ambm-center {\r\n    text-align: left;\r\n  }\r\n\r\n  .ambm-coefficient,\r\n  .ambm-price {\r\n    justify-self: start;\r\n  }\r\n\r\n  .ambm-pagination-info {\r\n    width: 100%;\r\n  }\r\n\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n\r\n  \/* =======================================================\r\n     FICHIER JSON\r\n  ======================================================= *\/\r\n\r\n  const jsonUrl =\r\n    \"https:\/\/ambmmaroc.com\/wp-content\/uploads\/2026\/07\/actes-biologie.json\";\r\n\r\n  \/* Nombre d\u2019actes par page *\/\r\n  const rowsPerPage = 20;\r\n\r\n  \/*\r\n   * Calcul des prix :\r\n   * Prix avec couverture = coefficient \u00d7 1,10\r\n   * Prix sans couverture = coefficient \u00d7 1,34\r\n   *\/\r\n  const multiplicateurAvecCouverture = 1.10;\r\n  const multiplicateurSansCouverture = 1.34;\r\n\r\n  let allActes = [];\r\n  let filteredActes = [];\r\n  let currentPage = 1;\r\n\r\n  \/* =======================================================\r\n     \u00c9L\u00c9MENTS HTML\r\n  ======================================================= *\/\r\n\r\n  const root =\r\n    document.getElementById(\"ambmNomenclature\");\r\n\r\n  if (!root) {\r\n    return;\r\n  }\r\n\r\n  const searchInput =\r\n    root.querySelector(\"#searchActes\");\r\n\r\n  const resetButton =\r\n    root.querySelector(\"#resetSearch\");\r\n\r\n  const tableBody =\r\n    root.querySelector(\"#actesBody\");\r\n\r\n  const tableWrapper =\r\n    root.querySelector(\"#actesTableWrapper\");\r\n\r\n  const pagination =\r\n    root.querySelector(\"#pagination\");\r\n\r\n  const paginationWrapper =\r\n    root.querySelector(\"#paginationWrapper\");\r\n\r\n  const paginationInfo =\r\n    root.querySelector(\"#paginationInfo\");\r\n\r\n  const resultCount =\r\n    root.querySelector(\"#actesCount\");\r\n\r\n  const loadingBlock =\r\n    root.querySelector(\"#actesLoading\");\r\n\r\n  const noResults =\r\n    root.querySelector(\"#noResults\");\r\n\r\n  const errorBlock =\r\n    root.querySelector(\"#actesError\");\r\n\r\n  \/* =======================================================\r\n     S\u00c9CURISER LE TEXTE HTML\r\n  ======================================================= *\/\r\n\r\n  function escapeHtml(value) {\r\n\r\n    return String(value ?? \"\")\r\n      .replaceAll(\"&\", \"&amp;\")\r\n      .replaceAll(\"<\", \"&lt;\")\r\n      .replaceAll(\">\", \"&gt;\")\r\n      .replaceAll('\"', \"&quot;\")\r\n      .replaceAll(\"'\", \"&#039;\");\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     NORMALISER LE TEXTE POUR LA RECHERCHE\r\n  ======================================================= *\/\r\n\r\n  function normalizeText(value) {\r\n\r\n    return String(value ?? \"\")\r\n      .normalize(\"NFD\")\r\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\r\n      .toLowerCase()\r\n      .trim();\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     R\u00c9CUP\u00c9RER LE NOM DE L\u2019ACTE\r\n  ======================================================= *\/\r\n\r\n  function getActName(acte) {\r\n\r\n    return (\r\n      acte.acte ||\r\n      acte.nom ||\r\n      acte.designation ||\r\n      \"\"\r\n    );\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     CONVERTIR LE COEFFICIENT EN NOMBRE\r\n  ======================================================= *\/\r\n\r\n  function parseCoefficient(value) {\r\n\r\n    const normalizedValue =\r\n      String(value ?? \"\")\r\n        .replace(\/\\s\/g, \"\")\r\n        .replace(\",\", \".\")\r\n        .replace(\/[^\\d.-]\/g, \"\");\r\n\r\n    const coefficient =\r\n      Number.parseFloat(normalizedValue);\r\n\r\n    return Number.isFinite(coefficient)\r\n      ? coefficient\r\n      : null;\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     CALCULER LES DEUX PRIX\r\n  ======================================================= *\/\r\n\r\n  function calculatePrices(acte) {\r\n\r\n    const coefficient =\r\n      parseCoefficient(\r\n        acte.coefficient\r\n      );\r\n\r\n    if (coefficient === null) {\r\n\r\n      return {\r\n        avecCouverture: null,\r\n        sansCouverture: null\r\n      };\r\n\r\n    }\r\n\r\n    return {\r\n      avecCouverture:\r\n        coefficient *\r\n        multiplicateurAvecCouverture,\r\n\r\n      sansCouverture:\r\n        coefficient *\r\n        multiplicateurSansCouverture\r\n    };\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     AFFICHER LE PRIX EN DIRHAMS\r\n  ======================================================= *\/\r\n\r\n  function formatPrice(value) {\r\n\r\n    if (!Number.isFinite(value)) {\r\n      return \"\u2014\";\r\n    }\r\n\r\n    return new Intl.NumberFormat(\r\n      \"fr-FR\",\r\n      {\r\n        minimumFractionDigits: 2,\r\n        maximumFractionDigits: 2\r\n      }\r\n    ).format(value) + \" DH\";\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     METTRE LE MOT RECHERCH\u00c9 EN SURBRILLANCE\r\n  ======================================================= *\/\r\n\r\n  function highlightText(\r\n    value,\r\n    searchTerm\r\n  ) {\r\n\r\n    const safeValue =\r\n      escapeHtml(value);\r\n\r\n    if (!searchTerm) {\r\n      return safeValue;\r\n    }\r\n\r\n    const escapedSearch =\r\n      searchTerm.replace(\r\n        \/[.*+?^${}()|[\\]\\\\]\/g,\r\n        \"\\\\$&\"\r\n      );\r\n\r\n    const expression =\r\n      new RegExp(\r\n        \"(\" + escapedSearch + \")\",\r\n        \"gi\"\r\n      );\r\n\r\n    return safeValue.replace(\r\n      expression,\r\n      '<mark class=\"ambm-highlight\">$1<\/mark>'\r\n    );\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     AFFICHER LE TABLEAU\r\n  ======================================================= *\/\r\n\r\n  function displayTable() {\r\n\r\n    tableBody.innerHTML = \"\";\r\n\r\n    const startIndex =\r\n      (currentPage - 1) *\r\n      rowsPerPage;\r\n\r\n    const endIndex =\r\n      startIndex +\r\n      rowsPerPage;\r\n\r\n    const pageData =\r\n      filteredActes.slice(\r\n        startIndex,\r\n        endIndex\r\n      );\r\n\r\n    const searchTerm =\r\n      searchInput.value.trim();\r\n\r\n    noResults.hidden =\r\n      pageData.length !== 0;\r\n\r\n    tableWrapper.hidden =\r\n      pageData.length === 0;\r\n\r\n    pageData.forEach(\r\n      function (acte) {\r\n\r\n        const prices =\r\n          calculatePrices(acte);\r\n\r\n        const prixAvecCouverture =\r\n          formatPrice(\r\n            prices.avecCouverture\r\n          );\r\n\r\n        const prixSansCouverture =\r\n          formatPrice(\r\n            prices.sansCouverture\r\n          );\r\n\r\n        const row =\r\n          document.createElement(\"tr\");\r\n\r\n        row.innerHTML = `\r\n          <td>\r\n            <span class=\"ambm-code\">\r\n              ${highlightText(\r\n                acte.code || \"\u2014\",\r\n                searchTerm\r\n              )}\r\n            <\/span>\r\n          <\/td>\r\n\r\n          <td>\r\n            <span class=\"ambm-acte-name\">\r\n              ${highlightText(\r\n                getActName(acte) ||\r\n                \"Non renseign\u00e9\",\r\n                searchTerm\r\n              )}\r\n            <\/span>\r\n          <\/td>\r\n\r\n          <td class=\"ambm-center\">\r\n            <span class=\"ambm-coefficient\">\r\n              ${highlightText(\r\n                acte.coefficient ?? \"\u2014\",\r\n                searchTerm\r\n              )}\r\n            <\/span>\r\n          <\/td>\r\n\r\n          <td class=\"ambm-center\">\r\n            <span class=\"ambm-price ambm-price-covered\">\r\n              ${highlightText(\r\n                prixAvecCouverture,\r\n                searchTerm\r\n              )}\r\n            <\/span>\r\n          <\/td>\r\n\r\n          <td class=\"ambm-center\">\r\n            <span class=\"ambm-price ambm-price-uncovered\">\r\n              ${highlightText(\r\n                prixSansCouverture,\r\n                searchTerm\r\n              )}\r\n            <\/span>\r\n          <\/td>\r\n        `;\r\n\r\n        tableBody.appendChild(row);\r\n\r\n      }\r\n    );\r\n\r\n    updateInformation();\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     NOMBRE DE R\u00c9SULTATS\r\n  ======================================================= *\/\r\n\r\n  function updateInformation() {\r\n\r\n    const total =\r\n      filteredActes.length;\r\n\r\n    const start =\r\n      total\r\n        ? (\r\n            currentPage - 1\r\n          ) * rowsPerPage + 1\r\n        : 0;\r\n\r\n    const end =\r\n      Math.min(\r\n        currentPage *\r\n        rowsPerPage,\r\n        total\r\n      );\r\n\r\n    resultCount.textContent =\r\n      total +\r\n      (\r\n        total > 1\r\n          ? \" actes trouv\u00e9s\"\r\n          : \" acte trouv\u00e9\"\r\n      );\r\n\r\n    paginationInfo.textContent =\r\n      total > 0\r\n        ? `Affichage de ${start} \u00e0 ${end} sur ${total} actes`\r\n        : \"\";\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     CR\u00c9ER UN BOUTON DE PAGINATION\r\n  ======================================================= *\/\r\n\r\n  function createPageButton(\r\n    label,\r\n    page,\r\n    options = {}\r\n  ) {\r\n\r\n    const button =\r\n      document.createElement(\r\n        \"button\"\r\n      );\r\n\r\n    button.type = \"button\";\r\n\r\n    button.className =\r\n      \"ambm-page-button\";\r\n\r\n    button.textContent =\r\n      label;\r\n\r\n    if (options.active) {\r\n\r\n      button.classList.add(\r\n        \"active\"\r\n      );\r\n\r\n      button.setAttribute(\r\n        \"aria-current\",\r\n        \"page\"\r\n      );\r\n\r\n    }\r\n\r\n    if (options.disabled) {\r\n\r\n      button.disabled =\r\n        true;\r\n\r\n    }\r\n\r\n    button.addEventListener(\r\n      \"click\",\r\n      function () {\r\n\r\n        if (!button.disabled) {\r\n          changePage(page);\r\n        }\r\n\r\n      }\r\n    );\r\n\r\n    return button;\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     POINTS DE SUSPENSION\r\n  ======================================================= *\/\r\n\r\n  function createDots() {\r\n\r\n    const dots =\r\n      document.createElement(\r\n        \"span\"\r\n      );\r\n\r\n    dots.className =\r\n      \"ambm-pagination-dots\";\r\n\r\n    dots.textContent =\r\n      \"\u2026\";\r\n\r\n    return dots;\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     CR\u00c9ER LA PAGINATION\r\n  ======================================================= *\/\r\n\r\n  function setupPagination() {\r\n\r\n    pagination.innerHTML =\r\n      \"\";\r\n\r\n    const pageCount =\r\n      Math.ceil(\r\n        filteredActes.length \/\r\n        rowsPerPage\r\n      );\r\n\r\n    paginationWrapper.hidden =\r\n      pageCount <= 1;\r\n\r\n    if (pageCount <= 1) {\r\n      return;\r\n    }\r\n\r\n    \/* Page pr\u00e9c\u00e9dente *\/\r\n\r\n    pagination.appendChild(\r\n      createPageButton(\r\n        \"\u2039\",\r\n        currentPage - 1,\r\n        {\r\n          disabled:\r\n            currentPage === 1\r\n        }\r\n      )\r\n    );\r\n\r\n    const visiblePages =\r\n      [];\r\n\r\n    if (pageCount <= 7) {\r\n\r\n      for (\r\n        let page = 1;\r\n        page <= pageCount;\r\n        page++\r\n      ) {\r\n\r\n        visiblePages.push(\r\n          page\r\n        );\r\n\r\n      }\r\n\r\n    } else {\r\n\r\n      visiblePages.push(1);\r\n\r\n      if (currentPage > 4) {\r\n        visiblePages.push(\r\n          \"dots\"\r\n        );\r\n      }\r\n\r\n      const startPage =\r\n        Math.max(\r\n          2,\r\n          currentPage - 1\r\n        );\r\n\r\n      const endPage =\r\n        Math.min(\r\n          pageCount - 1,\r\n          currentPage + 1\r\n        );\r\n\r\n      for (\r\n        let page = startPage;\r\n        page <= endPage;\r\n        page++\r\n      ) {\r\n\r\n        visiblePages.push(\r\n          page\r\n        );\r\n\r\n      }\r\n\r\n      if (\r\n        currentPage <\r\n        pageCount - 3\r\n      ) {\r\n\r\n        visiblePages.push(\r\n          \"dots\"\r\n        );\r\n\r\n      }\r\n\r\n      visiblePages.push(\r\n        pageCount\r\n      );\r\n\r\n    }\r\n\r\n    visiblePages.forEach(\r\n      function (page) {\r\n\r\n        if (\r\n          page === \"dots\"\r\n        ) {\r\n\r\n          pagination.appendChild(\r\n            createDots()\r\n          );\r\n\r\n          return;\r\n\r\n        }\r\n\r\n        pagination.appendChild(\r\n          createPageButton(\r\n            String(page),\r\n            page,\r\n            {\r\n              active:\r\n                page ===\r\n                currentPage\r\n            }\r\n          )\r\n        );\r\n\r\n      }\r\n    );\r\n\r\n    \/* Page suivante *\/\r\n\r\n    pagination.appendChild(\r\n      createPageButton(\r\n        \"\u203a\",\r\n        currentPage + 1,\r\n        {\r\n          disabled:\r\n            currentPage ===\r\n            pageCount\r\n        }\r\n      )\r\n    );\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     CHANGER DE PAGE\r\n  ======================================================= *\/\r\n\r\n  function changePage(page) {\r\n\r\n    const pageCount =\r\n      Math.ceil(\r\n        filteredActes.length \/\r\n        rowsPerPage\r\n      );\r\n\r\n    if (pageCount === 0) {\r\n      return;\r\n    }\r\n\r\n    currentPage =\r\n      Math.min(\r\n        Math.max(\r\n          page,\r\n          1\r\n        ),\r\n        pageCount\r\n      );\r\n\r\n    displayTable();\r\n    setupPagination();\r\n\r\n    root.scrollIntoView({\r\n      behavior: \"smooth\",\r\n      block: \"start\"\r\n    });\r\n\r\n  }\r\n\r\n  \/* =======================================================\r\n     RECHERCHE\r\n  ======================================================= *\/\r\n\r\n  function filterActes() {\r\n\r\n    const searchValue =\r\n      normalizeText(\r\n        searchInput.value\r\n      );\r\n\r\n    resetButton.hidden =\r\n      !searchValue;\r\n\r\n    filteredActes =\r\n      allActes.filter(\r\n        function (acte) {\r\n\r\n          const prices =\r\n            calculatePrices(\r\n              acte\r\n            );\r\n\r\n          const searchableContent =\r\n            normalizeText(\r\n              [\r\n                acte.code,\r\n                getActName(acte),\r\n                acte.coefficient,\r\n                formatPrice(\r\n                  prices.avecCouverture\r\n                ),\r\n                formatPrice(\r\n                  prices.sansCouverture\r\n                )\r\n              ].join(\" \")\r\n            );\r\n\r\n          return searchableContent\r\n            .includes(\r\n              searchValue\r\n            );\r\n\r\n        }\r\n      );\r\n\r\n    currentPage = 1;\r\n\r\n    displayTable();\r\n    setupPagination();\r\n\r\n  }\r\n\r\n  \/* Temporisation pendant la saisie *\/\r\n\r\n  let searchTimer;\r\n\r\n  searchInput.addEventListener(\r\n    \"input\",\r\n    function () {\r\n\r\n      clearTimeout(\r\n        searchTimer\r\n      );\r\n\r\n      searchTimer =\r\n        setTimeout(\r\n          filterActes,\r\n          180\r\n        );\r\n\r\n    }\r\n  );\r\n\r\n  \/* Effacer la recherche *\/\r\n\r\n  resetButton.addEventListener(\r\n    \"click\",\r\n    function () {\r\n\r\n      searchInput.value =\r\n        \"\";\r\n\r\n      resetButton.hidden =\r\n        true;\r\n\r\n      searchInput.focus();\r\n\r\n      filterActes();\r\n\r\n    }\r\n  );\r\n\r\n  \/* =======================================================\r\n     CHARGER LE FICHIER JSON\r\n  ======================================================= *\/\r\n\r\n  fetch(\r\n    jsonUrl,\r\n    {\r\n      cache: \"no-store\"\r\n    }\r\n  )\r\n\r\n    .then(\r\n      function (response) {\r\n\r\n        if (!response.ok) {\r\n\r\n          throw new Error(\r\n            \"Erreur HTTP : \" +\r\n            response.status\r\n          );\r\n\r\n        }\r\n\r\n        return response.json();\r\n\r\n      }\r\n    )\r\n\r\n    .then(\r\n      function (data) {\r\n\r\n        if (\r\n          !Array.isArray(data)\r\n        ) {\r\n\r\n          throw new Error(\r\n            \"Le fichier JSON ne contient pas une liste valide.\"\r\n          );\r\n\r\n        }\r\n\r\n        allActes =\r\n          data;\r\n\r\n        filteredActes =\r\n          data;\r\n\r\n        loadingBlock.hidden =\r\n          true;\r\n\r\n        errorBlock.hidden =\r\n          true;\r\n\r\n        displayTable();\r\n        setupPagination();\r\n\r\n      }\r\n    )\r\n\r\n    .catch(\r\n      function (error) {\r\n\r\n        console.error(\r\n          \"Erreur de chargement de la nomenclature :\",\r\n          error\r\n        );\r\n\r\n        loadingBlock.hidden =\r\n          true;\r\n\r\n        tableWrapper.hidden =\r\n          true;\r\n\r\n        paginationWrapper.hidden =\r\n          true;\r\n\r\n        noResults.hidden =\r\n          true;\r\n\r\n        errorBlock.hidden =\r\n          false;\r\n\r\n        resultCount.textContent =\r\n          \"Nomenclature indisponible\";\r\n\r\n      }\r\n    );\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-23533f3 e-flex e-con-boxed e-con e-parent\" data-id=\"23533f3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bd639bc e-con-full e-flex e-con e-child\" data-id=\"bd639bc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Nomenclature des actes de Biologie M\u00e9dicale Nomenclature des actes Actes de biologie<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1946,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_rtcl_gb_attr":"","footnotes":""},"class_list":["post-6335","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/pages\/6335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/comments?post=6335"}],"version-history":[{"count":8,"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/pages\/6335\/revisions"}],"predecessor-version":[{"id":6345,"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/pages\/6335\/revisions\/6345"}],"up":[{"embeddable":true,"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/pages\/1946"}],"wp:attachment":[{"href":"https:\/\/ambmmaroc.com\/en_us\/wp-json\/wp\/v2\/media?parent=6335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}