{"id":285,"date":"2026-08-19T15:22:50","date_gmt":"2026-08-19T13:22:50","guid":{"rendered":"https:\/\/emilemartinpsychologue.fr\/?page_id=285"},"modified":"2026-08-19T16:16:31","modified_gmt":"2026-08-19T14:16:31","slug":"prise-de-rendez-vous","status":"publish","type":"page","link":"https:\/\/emilemartinpsychologue.fr\/index.php\/prise-de-rendez-vous\/","title":{"rendered":"Prise de rendez-vous"},"content":{"rendered":"\n<div class=\"psy-site-container\">\n  \n  <!-- Zone d'alerte indisponibilit\u00e9 (pilot\u00e9e par G4 = FALSE) -->\n  <div id=\"psy-booking-alert\"><\/div>\n\n  <header>\n    <div class=\"psy-badge-convention\">\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n      Planning en temps r\u00e9el\n    <\/div>\n    <h1>Cr\u00e9neaux disponibles<\/h1>\n    <p class=\"psy-lead\">\n      Planning actualis\u00e9 pour un suivi r\u00e9gulier d&rsquo;adultes (rythme bimensuel ou hebdomadaire selon disponibilit\u00e9s).\n      <br><strong>La prise de rendez-vous s&rsquo;effectue exclusivement par t\u00e9l\u00e9phone.<\/strong>\n    <\/p>\n    <div id=\"psy-last-update\" class=\"psy-update-tag\">Chargement des disponibilit\u00e9s&#8230;<\/div>\n  <\/header>\n\n  <!-- Zone dynamique : Filtres et Grille -->\n  <div id=\"psy-slots-main-area\">\n    <div class=\"psy-filters\" id=\"psy-filters\">\n      <button class=\"psy-btn-filter active\" data-day=\"Tous\">Tous les jours<\/button>\n      <button class=\"psy-btn-filter\" data-day=\"Lundi\">Lundi<\/button>\n      <button class=\"psy-btn-filter\" data-day=\"Mardi\">Mardi<\/button>\n      <button class=\"psy-btn-filter\" data-day=\"Mercredi\">Mercredi<\/button>\n      <button class=\"psy-btn-filter\" data-day=\"Jeudi\">Jeudi<\/button>\n    <\/div>\n\n    <div id=\"psy-grid\" class=\"psy-grid\">\n      <div class=\"psy-loading\">R\u00e9cup\u00e9ration des disponibilit\u00e9s en cours&#8230;<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Bloc d'action \/ Contact t\u00e9l\u00e9phonique -->\n  <section class=\"psy-cta-section\">\n    <div>\n      <h3 style=\"margin-top:0;\">Un cr\u00e9neau correspond \u00e0 vos disponibilit\u00e9s ?<\/h3>\n      <p style=\"margin: 4px 0 16px; font-size: 0.95rem; color: #475569;\">\n        Un premier \u00e9change t\u00e9l\u00e9phonique court (5 \u00e0 10 min) permet de faire le point sur votre d\u00e9marche avant de valider ensemble le cr\u00e9neau.\n      <\/p>\n    <\/div>\n    <div class=\"psy-cta-group\">\n      <a href=\"tel:0661144715\" class=\"psy-btn-primary\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>\n        Appeler le cabinet : 06 61 14 47 15\n      <\/a>\n      <a href=\"\/tarifs-modalites\" class=\"psy-btn-secondary\">\n        Tarifs &#038; Conventionnement\n      <\/a>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n<style>\n\/* --- Styles int\u00e9gr\u00e9s d\u00e9di\u00e9s au module de r\u00e9servation --- *\/\n.psy-update-tag {\n  display: inline-block;\n  font-size: 0.82rem;\n  color: var(--psy-slate-500, #64748b);\n  background: var(--psy-slate-100, #f1f5f9);\n  padding: 5px 12px;\n  border-radius: 4px;\n  margin-bottom: 24px;\n  border: 1px solid var(--psy-slate-200, #e2e8f0);\n}\n\n.psy-filters {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n  margin-bottom: 20px;\n}\n\n.psy-btn-filter {\n  background: #ffffff;\n  border: 1px solid var(--psy-slate-200, #cbd5e1);\n  color: var(--psy-slate-700, #334155);\n  padding: 7px 16px;\n  border-radius: 20px;\n  font-size: 0.88rem;\n  font-weight: 500;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.psy-btn-filter.active, \n.psy-btn-filter:hover {\n  background: var(--psy-slate-900, #0f172a);\n  color: #ffffff;\n  border-color: var(--psy-slate-900, #0f172a);\n}\n\n.psy-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));\n  gap: 14px;\n  margin-bottom: 28px;\n}\n\n.psy-card {\n  background: #ffffff;\n  border: 1px solid var(--psy-slate-200, #e2e8f0);\n  border-left: 4px solid var(--psy-emerald, #059669);\n  border-radius: 8px;\n  padding: 14px 16px;\n  box-shadow: 0 1px 3px rgba(0,0,0,0.03);\n}\n\n.psy-card-day {\n  font-weight: 700;\n  font-size: 0.95rem;\n  color: var(--psy-slate-900, #0f172a);\n  margin-bottom: 3px;\n}\n\n.psy-card-time {\n  font-size: 0.95rem;\n  color: var(--psy-slate-700, #334155);\n  font-weight: 500;\n}\n\n.psy-card-badge {\n  display: inline-block;\n  margin-top: 8px;\n  font-size: 0.75rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.02em;\n  padding: 3px 8px;\n  border-radius: 4px;\n  background: var(--psy-emerald-bg, #ecfdf5);\n  color: var(--psy-emerald, #047857);\n  border: 1px solid #a7f3d0;\n}\n\n.psy-loading, \n.psy-no-slot {\n  grid-column: 1 \/ -1;\n  padding: 18px;\n  border-radius: 8px;\n  font-size: 0.92rem;\n}\n\n.psy-loading {\n  background: var(--psy-slate-50, #f8fafc);\n  color: var(--psy-slate-600, #475569);\n  border: 1px solid var(--psy-slate-200, #e2e8f0);\n}\n\n.psy-no-slot {\n  background: #fffbeb;\n  color: #92400e;\n  border: 1px solid #fef08a;\n}\n\n.psy-alert-unavailable {\n  background: #fef2f2;\n  border: 1.5px solid #ef4444;\n  color: #991b1b;\n  border-radius: 8px;\n  padding: 16px 20px;\n  margin-bottom: 24px;\n  font-size: 0.95rem;\n  font-weight: 500;\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  box-shadow: 0 2px 6px rgba(239, 68, 68, 0.08);\n}\n\n.psy-alert-unavailable svg {\n  flex-shrink: 0;\n  color: #dc2626;\n}\n<\/style>\n\n<script>\n(function() {\n  const API_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbyUj77MbmKty4mHbyv77bGJt2Z4eL1bO_cmcGwO1qoCfMwtkATCsPXLeLVl2k7lR4v01w\/exec\";\n  let allSlots = [];\n\n  async function fetchSlots() {\n    const grid = document.getElementById('psy-grid');\n    const updateLabel = document.getElementById('psy-last-update');\n    const mainArea = document.getElementById('psy-slots-main-area');\n    const alertBox = document.getElementById('psy-booking-alert');\n    \n    try {\n      const response = await fetch(API_URL);\n      const data = await response.json();\n      \n      if (data.status === 'success') {\n        updateLabel.textContent = `Planning synchronis\u00e9 (${data.slots.length} cr\u00e9neau${data.slots.length > 1 ? 's' : ''} disponible${data.slots.length > 1 ? 's' : ''})`;\n\n        \/\/ V\u00e9rification de la case G4\n        if (data.acceptingNewPatients === false) {\n          mainArea.style.display = 'none';\n          alertBox.innerHTML = `\n            <div class=\"psy-alert-unavailable\">\n              <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"><\/line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"><\/line><\/svg>\n              <div>Malheureusement, je n'ai pas la possibilit\u00e9 de prendre en charge de nouveaux patients pour le moment.<\/div>\n            <\/div>\n          `;\n          return;\n        }\n\n        \/\/ Si G4 = TRUE\n        mainArea.style.display = 'block';\n        alertBox.innerHTML = '';\n        allSlots = data.slots;\n        renderSlots('Tous');\n      } else {\n        grid.innerHTML = '<div class=\"psy-no-slot\">Impossible de charger le planning actuellement. Contactez directement le cabinet par t\u00e9l\u00e9phone.<\/div>';\n      }\n    } catch (e) {\n      grid.innerHTML = '<div class=\"psy-no-slot\">Information temporairement indisponible. Contactez directement le cabinet par t\u00e9l\u00e9phone.<\/div>';\n    }\n  }\n\n  function renderSlots(dayFilter) {\n    const grid = document.getElementById('psy-grid');\n    grid.innerHTML = '';\n    \n    const filtered = (dayFilter === 'Tous') \n      ? allSlots \n      : allSlots.filter(s => s.jour === dayFilter);\n      \n    if (filtered.length === 0) {\n      grid.innerHTML = `<div class=\"psy-no-slot\">Aucun cr\u00e9neau libre r\u00e9pertori\u00e9 pour ${dayFilter === 'Tous' ? 'le moment' : dayFilter}. N'h\u00e9sitez pas \u00e0 appeler pour vous inscrire sur liste d'attente.<\/div>`;\n      return;\n    }\n    \n    filtered.forEach(slot => {\n      const card = document.createElement('div');\n      card.className = 'psy-card';\n      card.innerHTML = `\n        <div class=\"psy-card-day\">${slot.jour}<\/div>\n        <div class=\"psy-card-time\">${slot.horaire}<\/div>\n        <div class=\"psy-card-badge\">${slot.type}<\/div>\n      `;\n      grid.appendChild(card);\n    });\n  }\n\n  document.querySelectorAll('.psy-btn-filter').forEach(btn => {\n    btn.addEventListener('click', function() {\n      document.querySelectorAll('.psy-btn-filter').forEach(b => b.classList.remove('active'));\n      this.classList.add('active');\n      renderSlots(this.getAttribute('data-day'));\n    });\n  });\n\n  fetchSlots();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Planning en temps r\u00e9el Cr\u00e9neaux disponibles Planning actualis\u00e9 pour un suivi r\u00e9gulier d&rsquo;adultes (rythme bimensuel ou hebdomadaire selon disponibilit\u00e9s). La prise de rendez-vous s&rsquo;effectue exclusivement par t\u00e9l\u00e9phone. Chargement des disponibilit\u00e9s&#8230; Tous les jours Lundi Mardi Mercredi Jeudi R\u00e9cup\u00e9ration des disponibilit\u00e9s en cours&#8230; Un cr\u00e9neau correspond \u00e0 vos disponibilit\u00e9s ? Un premier \u00e9change t\u00e9l\u00e9phonique court (5&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-285","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/pages\/285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/comments?post=285"}],"version-history":[{"count":2,"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/pages\/285\/revisions"}],"predecessor-version":[{"id":329,"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/pages\/285\/revisions\/329"}],"wp:attachment":[{"href":"https:\/\/emilemartinpsychologue.fr\/index.php\/wp-json\/wp\/v2\/media?parent=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}