{"id":41558,"date":"2025-12-08T16:45:50","date_gmt":"2025-12-08T21:45:50","guid":{"rendered":"https:\/\/dormalab.com\/enregistrer-le-patient\/"},"modified":"2025-12-08T19:44:10","modified_gmt":"2025-12-09T00:44:10","slug":"enregistrer-le-patient","status":"publish","type":"page","link":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/","title":{"rendered":"Enregistrer le patient"},"content":{"rendered":"\n<p>    <div id=\"dorma-registration-wrapper\">\n        <style>\n            .dorma-registration-wrapper * {\n                margin: 0;\n                padding: 0;\n                box-sizing: border-box;\n            }\n            \n            .dorma-registration-wrapper {\n                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n                color: #333;\n            }\n            \n            .registration-wrapper {\n                max-width: 600px;\n                margin: 0 auto;\n                background: white;\n                border-radius: 8px;\n                box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n                padding: 40px;\n            }\n            \n            .dorma-registration-wrapper h1 {\n                color: #2c3e50;\n                margin-bottom: 10px;\n                border-bottom: 2px solid #3498db;\n                padding-bottom: 10px;\n            }\n            \n            .subtitle {\n                color: #666;\n                margin-bottom: 30px;\n                font-size: 0.95em;\n            }\n            \n            .loading {\n                text-align: center;\n                padding: 40px;\n                color: #666;\n            }\n            \n            .error {\n                background: #fee;\n                border: 1px solid #fcc;\n                color: #c33;\n                padding: 15px;\n                border-radius: 4px;\n                margin-bottom: 20px;\n            }\n            \n            .success {\n                background: #e8f5e9;\n                border: 1px solid #c8e6c9;\n                color: #2e7d32;\n                padding: 15px;\n                border-radius: 4px;\n                margin-bottom: 20px;\n            }\n            \n            .info {\n                background: #e7f3ff;\n                border: 1px solid #b3d9ff;\n                color: #004085;\n                padding: 15px;\n                border-radius: 4px;\n                margin-bottom: 20px;\n            }\n            \n            .form-group {\n                margin-bottom: 20px;\n            }\n            \n            .dorma-registration-wrapper label {\n                display: block;\n                margin-bottom: 8px;\n                font-weight: 500;\n                color: #333;\n            }\n            \n            .dorma-registration-wrapper label .required {\n                color: #e74c3c;\n            }\n            \n            .dorma-registration-wrapper input[type=\"text\"],\n            .dorma-registration-wrapper input[type=\"email\"],\n            .dorma-registration-wrapper input[type=\"tel\"],\n            .dorma-registration-wrapper input[type=\"date\"],\n            .dorma-registration-wrapper input[type=\"password\"],\n            .dorma-registration-wrapper select {\n                width: 100%;\n                padding: 12px;\n                border: 1px solid #ddd;\n                border-radius: 4px;\n                font-size: 16px;\n                transition: border-color 0.3s;\n            }\n            \n            .dorma-registration-wrapper input:focus {\n                outline: none;\n                border-color: #3498db;\n                box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n            }\n            \n            .dorma-registration-wrapper input.error-input {\n                border-color: #e74c3c;\n            }\n            \n            .field-error {\n                color: #e74c3c;\n                font-size: 0.85em;\n                margin-top: 5px;\n                display: none;\n            }\n            \n            .field-error.show {\n                display: block;\n            }\n            \n            .help-text {\n                font-size: 0.85em;\n                color: #666;\n                margin-top: 5px;\n            }\n            \n            .password-requirements {\n                font-size: 0.85em;\n                color: #666;\n                margin-top: 5px;\n                padding-left: 20px;\n            }\n            \n            .password-requirements li {\n                margin: 3px 0;\n            }\n            \n            .btn {\n                background: #3498db;\n                color: white;\n                border: none;\n                padding: 12px 24px;\n                border-radius: 4px;\n                font-size: 16px;\n                font-weight: 500;\n                cursor: pointer;\n                width: 100%;\n                transition: background 0.3s;\n            }\n            \n            .btn:hover {\n                background: #2980b9;\n            }\n            \n            .btn:disabled {\n                background: #95a5a6;\n                cursor: not-allowed;\n            }\n            \n            .btn-secondary {\n                background: #95a5a6;\n            }\n            \n            .btn-secondary:hover {\n                background: #7f8c8d;\n            }\n            \n            .login-link {\n                text-align: center;\n                margin-top: 20px;\n                color: #666;\n            }\n            \n            .login-link a {\n                color: #3498db;\n                text-decoration: none;\n            }\n            \n            .login-link a:hover {\n                text-decoration: underline;\n            }\n            \n            .verification-status {\n                text-align: center;\n                padding: 40px 20px;\n            }\n            \n            .verification-status h2 {\n                color: #2c3e50;\n                margin-bottom: 20px;\n            }\n            \n            .spinner {\n                border: 3px solid #f3f3f3;\n                border-top: 3px solid #3498db;\n                border-radius: 50%;\n                width: 40px;\n                height: 40px;\n                animation: spin 1s linear infinite;\n                margin: 20px auto;\n            }\n            \n            @keyframes spin {\n                0% { transform: rotate(0deg); }\n                100% { transform: rotate(360deg); }\n            }\n        <\/style>\n        \n        <div class=\"dorma-registration-wrapper\">\n            <div class=\"registration-wrapper\">\n                <h1 data-translate=\"createAccount\">Create Your Account<\/h1>\n                <p class=\"subtitle\" data-translate=\"registerSubtitle\">Register to access your purchase history, communicate with our team and book appointments<\/p>\n                \n                <!-- Verification Status (shown when coming from email link) -->\n                <div id=\"verificationStatus\" style=\"display: none;\">\n                    <div class=\"verification-status\">\n                        <div class=\"spinner\"><\/div>\n                        <h2 data-translate=\"verifyingEmail\">Verifying your email...<\/h2>\n                        <p data-translate=\"pleaseWait\">Please wait while we verify your email and create your account.<\/p>\n                    <\/div>\n                <\/div>\n                \n                <!-- Registration Form -->\n                <div id=\"registrationForm\">\n                    <div id=\"messages\"><\/div>\n                    \n                    <form id=\"registerForm\">\n                        <div class=\"form-group\">\n                            <label for=\"email\" data-translate=\"emailAddress\">Email Address <span class=\"required\">*<\/span><\/label>\n                            <input type=\"email\" id=\"email\" name=\"email\" required>\n                            <div class=\"field-error\" id=\"emailError\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"birthdate\" data-translate=\"dateOfBirth\">Date of Birth <span class=\"required\">*<\/span><\/label>\n                            <input type=\"date\" id=\"birthdate\" name=\"birthdate\" required>\n                            <div class=\"field-error\" id=\"birthdateError\"><\/div>\n                            <div class=\"help-text\" data-translate=\"dateFormat\">Format: YYYY-MM-DD (e.g., 1990-01-15)<\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"firstName\" data-translate=\"firstName\">First Name <span class=\"required\">*<\/span><\/label>\n                            <input type=\"text\" id=\"firstName\" name=\"firstName\" required>\n                            <div class=\"field-error\" id=\"firstNameError\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"lastName\" data-translate=\"lastName\">Last Name <span class=\"required\">*<\/span><\/label>\n                            <input type=\"text\" id=\"lastName\" name=\"lastName\" required>\n                            <div class=\"field-error\" id=\"lastNameError\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"phone\" data-translate=\"phoneNumber\">Phone Number<\/label>\n                            <input type=\"tel\" id=\"phone\" name=\"phone\">\n                            <div class=\"field-error\" id=\"phoneError\"><\/div>\n                            <div class=\"help-text\" data-translate=\"optionalRecommended\">Optional but recommended<\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"language\" data-translate=\"language\">Language \/ Langue <span class=\"required\">*<\/span><\/label>\n                            <select id=\"language\" name=\"language\" required>\n                                <option value=\"\" data-translate=\"selectLanguage\">-- Select \/ S\u00e9lectionner --<\/option>\n                                <option value=\"English\">English<\/option>\n                                <option value=\"French\">Fran\u00e7ais<\/option>\n                            <\/select>\n                            <div class=\"field-error\" id=\"languageError\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"password\" data-translate=\"password\">Password <span class=\"required\">*<\/span><\/label>\n                            <div style=\"display: flex; gap: 10px; align-items: center; margin-bottom: 8px;\">\n                                <div style=\"position: relative; flex: 1;\">\n                                    <input type=\"password\" id=\"password\" name=\"password\" required style=\"width: 100%; padding-right: 40px;\">\n                                    <button type=\"button\" id=\"togglePasswordBtn\" style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: none; border: none; cursor: pointer; color: #666; font-size: 0.9em;\" data-translate=\"show\">Show<\/button>\n                                <\/div>\n                                <button type=\"button\" id=\"generatePasswordBtn\" class=\"btn-secondary\" style=\"width: auto; padding: 12px 16px; white-space: nowrap;\" data-translate=\"generatePassword\">Generate Password<\/button>\n                            <\/div>\n                            <div id=\"generatedPasswordDisplay\" style=\"display: none; background: #f0f8ff; border: 1px solid #b3d9ff; border-radius: 4px; padding: 10px; margin-bottom: 10px; font-family: monospace; word-break: break-all;\">\n                                <strong data-translate=\"generatedPassword\">Generated Password:<\/strong> <span id=\"generatedPasswordText\"><\/span>\n                                <button type=\"button\" id=\"copyPasswordBtn\" style=\"margin-left: 10px; padding: 4px 8px; background: #3498db; color: white; border: none; border-radius: 3px; cursor: pointer; font-size: 0.85em;\" data-translate=\"copy\">Copy<\/button>\n                            <\/div>\n                            <div class=\"field-error\" id=\"passwordError\"><\/div>\n                            <ul class=\"password-requirements\">\n                                <li data-translate=\"passwordReq1\">At least 12 characters<\/li>\n                                <li data-translate=\"passwordReq2\">Uppercase and lowercase letters<\/li>\n                                <li data-translate=\"passwordReq3\">At least one symbol<\/li>\n                                <li data-translate=\"passwordReq4\">At least one number<\/li>\n                                <li data-translate=\"passwordReq5\">Avoid common words or sequences<\/li>\n                            <\/ul>\n                        <\/div>\n                        \n                        <div class=\"form-group\">\n                            <label for=\"confirmPassword\" data-translate=\"confirmPassword\">Confirm Password <span class=\"required\">*<\/span><\/label>\n                            <input type=\"password\" id=\"confirmPassword\" name=\"confirmPassword\" required>\n                            <div class=\"field-error\" id=\"confirmPasswordError\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\" style=\"display: flex; align-items: flex-start; gap: 10px;\">\n                            <input type=\"checkbox\" id=\"newsletterSubscription\" name=\"newsletterSubscription\" checked style=\"width: auto; margin-top: 4px;\">\n                            <label for=\"newsletterSubscription\" style=\"margin-bottom: 0; font-weight: 400;\" data-translate=\"newsletterSubscription\">Subscribe to the Dorma newsletter to get access to promotions and company news<\/label>\n                        <\/div>\n                        \n                        <button type=\"submit\" class=\"btn\" id=\"submitBtn\" data-translate=\"createAccountBtn\">Create Account<\/button>\n                    <\/form>\n                    \n                    <div class=\"login-link\">\n                        <span data-translate=\"alreadyHaveAccount\">Already have an account?<\/span> <a href=\"#\" id=\"loginLink\" data-translate=\"logInHere\">Log in here<\/a>\n                    <\/div>\n                <\/div>\n                \n                <!-- Success Message (shown after successful registration) -->\n                <div id=\"successMessage\" style=\"display: none;\">\n                    <div class=\"success\">\n                        <h2 style=\"margin-bottom: 15px;\" data-translate=\"registrationSuccessful\">Registration Successful!<\/h2>\n                        <p><span data-translate=\"verificationEmailSent\">We've sent a verification email to<\/span> <strong id=\"registeredEmail\"><\/strong>.<\/p>\n                        <p style=\"margin-top: 10px;\" data-translate=\"checkEmail\">Please check your email and click the verification link to activate your account.<\/p>\n                        <p style=\"margin-top: 10px; font-size: 0.9em; color: #666;\">\n                            <strong data-translate=\"note\">Note:<\/strong> <span data-translate=\"linkExpires\">The verification link will expire in 24 hours.<\/span>\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <script>\n            (function() {\n                \/\/ Configuration\n                const API_BASE_URL = \"https:\\\/\\\/api.summittravelhealthdev.com\\\/v1\";\n                const WORDPRESS_LOGIN_URL = \"https:\\\/\\\/dormalab.com\\\/wp-login.php\";\n                window.dormaPortalLanguage = \"fr\";\n                \n                \/\/ Translation objects\n                const translations = {\n                    en: {\n                        \/\/ Registration\n                        'createAccount': 'Create Your Account',\n                        'registerSubtitle': 'Register to access your purchase history, communicate with our team and book appointments',\n                        'emailAddress': 'Email Address',\n                        'dateOfBirth': 'Date of Birth',\n                        'dateFormat': 'Format: YYYY-MM-DD (e.g., 1990-01-15)',\n                        'firstName': 'First Name',\n                        'lastName': 'Last Name',\n                        'phoneNumber': 'Phone Number',\n                        'optionalRecommended': 'Optional but recommended',\n                        'language': 'Language \/ Langue',\n                        'selectLanguage': '-- Select \/ S\u00e9lectionner --',\n                        'password': 'Password',\n                        'confirmPassword': 'Confirm Password',\n                        'createAccountBtn': 'Create Account',\n                        'alreadyHaveAccount': 'Already have an account?',\n                        'logInHere': 'Log in here',\n                        'registrationSuccessful': 'Registration Successful!',\n                        'verificationEmailSent': 'We\\'ve sent a verification email to',\n                        'checkEmail': 'Please check your email and click the verification link to activate your account.',\n                        'note': 'Note:',\n                        'linkExpires': 'The verification link will expire in 24 hours.',\n                        'verifyingEmail': 'Verifying your email...',\n                        'pleaseWait': 'Please wait while we verify your email and create your account.',\n                        'emailVerified': 'Email Verified!',\n                        'accountCreated': 'Your account has been successfully created and verified.',\n                        'redirecting': 'Redirecting you to your account...',\n                        'show': 'Show',\n                        'hide': 'Hide',\n                        'generatePassword': 'Generate Password',\n                        'generatedPassword': 'Generated Password:',\n                        'copy': 'Copy',\n                        'copied': 'Copied!',\n                        'passwordReq1': 'At least 12 characters',\n                        'passwordReq2': 'Uppercase and lowercase letters',\n                        'passwordReq3': 'At least one symbol',\n                        'passwordReq4': 'At least one number',\n                        'passwordReq5': 'Avoid common words or sequences',\n                        'creatingAccount': 'Creating Account...',\n                        'newsletterSubscription': 'Subscribe to the Dorma newsletter to get access to promotions and company news',\n                        \/\/ Validation errors\n                        'validEmail': 'Please enter a valid email address',\n                        'birthdateRequired': 'Date of birth is required',\n                        'birthdateFormat': 'Date must be in YYYY-MM-DD format',\n                        'firstNameMin': 'First name must be at least 2 characters',\n                        'lastNameMin': 'Last name must be at least 2 characters',\n                        'selectLanguageError': 'Please select a language',\n                        'passwordRequired': 'Password is required',\n                        'passwordsMatch': 'Passwords do not match',\n                        \/\/ Errors\n                        'networkError': 'Network error. Please check your connection and try again.',\n                        'registrationFailed': 'Registration failed. Please try again.',\n                        'invalidVerificationLink': 'The verification link is invalid or has expired.',\n                    },\n                    fr: {\n                        \/\/ Registration\n                        'createAccount': 'Cr\u00e9er votre compte',\n                        'registerSubtitle': 'Inscrivez-vous pour acc\u00e9der \u00e0 votre historique d\\'achats, communiquer avec notre \u00e9quipe et prendre rendez-vous',\n                        'emailAddress': 'Adresse courriel',\n                        'dateOfBirth': 'Date de naissance',\n                        'dateFormat': 'Format: AAAA-MM-JJ (ex: 1990-01-15)',\n                        'firstName': 'Pr\u00e9nom',\n                        'lastName': 'Nom de famille',\n                        'phoneNumber': 'Num\u00e9ro de t\u00e9l\u00e9phone',\n                        'optionalRecommended': 'Optionnel mais recommand\u00e9',\n                        'language': 'Langue \/ Language',\n                        'selectLanguage': '-- S\u00e9lectionner \/ Select --',\n                        'password': 'Mot de passe',\n                        'confirmPassword': 'Confirmer le mot de passe',\n                        'createAccountBtn': 'Cr\u00e9er un compte',\n                        'alreadyHaveAccount': 'Vous avez d\u00e9j\u00e0 un compte?',\n                        'logInHere': 'Connectez-vous ici',\n                        'registrationSuccessful': 'Inscription r\u00e9ussie!',\n                        'verificationEmailSent': 'Nous avons envoy\u00e9 un courriel de v\u00e9rification \u00e0',\n                        'checkEmail': 'Veuillez v\u00e9rifier votre courriel et cliquer sur le lien de v\u00e9rification pour activer votre compte.',\n                        'note': 'Remarque:',\n                        'linkExpires': 'Le lien de v\u00e9rification expirera dans 24 heures.',\n                        'verifyingEmail': 'V\u00e9rification de votre courriel...',\n                        'pleaseWait': 'Veuillez patienter pendant que nous v\u00e9rifions votre courriel et cr\u00e9ons votre compte.',\n                        'emailVerified': 'Courriel v\u00e9rifi\u00e9!',\n                        'accountCreated': 'Votre compte a \u00e9t\u00e9 cr\u00e9\u00e9 et v\u00e9rifi\u00e9 avec succ\u00e8s.',\n                        'redirecting': 'Redirection vers votre compte...',\n                        'show': 'Afficher',\n                        'hide': 'Masquer',\n                        'generatePassword': 'G\u00e9n\u00e9rer un mot de passe',\n                        'generatedPassword': 'Mot de passe g\u00e9n\u00e9r\u00e9:',\n                        'copy': 'Copier',\n                        'copied': 'Copi\u00e9!',\n                        'passwordReq1': 'Au moins 12 caract\u00e8res',\n                        'passwordReq2': 'Lettres majuscules et minuscules',\n                        'passwordReq3': 'Au moins un symbole',\n                        'passwordReq4': 'Au moins un chiffre',\n                        'passwordReq5': '\u00c9viter les mots ou s\u00e9quences courants',\n                        'creatingAccount': 'Cr\u00e9ation du compte...',\n                        'newsletterSubscription': 'S\\'abonner \u00e0 l\\'infolettre Dorma pour recevoir des promotions et des nouvelles de l\\'entreprise',\n                        \/\/ Validation errors\n                        'validEmail': 'Veuillez entrer une adresse courriel valide',\n                        'birthdateRequired': 'La date de naissance est requise',\n                        'birthdateFormat': 'La date doit \u00eatre au format AAAA-MM-JJ',\n                        'firstNameMin': 'Le pr\u00e9nom doit contenir au moins 2 caract\u00e8res',\n                        'lastNameMin': 'Le nom de famille doit contenir au moins 2 caract\u00e8res',\n                        'selectLanguageError': 'Veuillez s\u00e9lectionner une langue',\n                        'passwordRequired': 'Le mot de passe est requis',\n                        'passwordsMatch': 'Les mots de passe ne correspondent pas',\n                        \/\/ Errors\n                        'networkError': 'Erreur r\u00e9seau. Veuillez v\u00e9rifier votre connexion et r\u00e9essayer.',\n                        'registrationFailed': 'L\\'inscription a \u00e9chou\u00e9. Veuillez r\u00e9essayer.',\n                        'invalidVerificationLink': 'Le lien de v\u00e9rification est invalide ou a expir\u00e9.',\n                    }\n                };\n                \n                \/\/ Translation function\n                function t(key, lang = null) {\n                    const currentLang = lang || (window.dormaPortalLanguage || 'en');\n                    return translations[currentLang]?.[key] || translations.en[key] || key;\n                }\n                \n                \/\/ Apply translations on page load\n                function applyTranslations(lang = null) {\n                    const currentLang = lang || (window.dormaPortalLanguage || 'en');\n                    \n                    \/\/ Update all elements with data-translate attribute\n                    document.querySelectorAll('[data-translate]').forEach(el => {\n                        const key = el.getAttribute('data-translate');\n                        const translated = t(key, currentLang);\n                        \/\/ Preserve HTML structure if label contains span\n                        if (el.tagName === 'LABEL' && el.querySelector('.required')) {\n                            const required = el.querySelector('.required').outerHTML;\n                            el.innerHTML = translated.replace('*', required);\n                        } else {\n                            el.textContent = translated;\n                        }\n                    });\n                    \n                    \/\/ Update placeholders\n                    document.querySelectorAll('[data-translate-placeholder]').forEach(el => {\n                        const key = el.getAttribute('data-translate-placeholder');\n                        el.placeholder = t(key, currentLang);\n                    });\n                }\n                \n                \/\/ Auto-detect API URL based on environment\n                function getApiBaseUrl() {\n                    const hostname = window.location.hostname;\n                    if (hostname === 'localhost' || hostname === '127.0.0.1') {\n                        return 'http:\/\/localhost:3000\/v1';\n                    }\n                    \/\/ Use API URL from shortcode attribute\n                    return API_BASE_URL;\n                }\n\n                const apiBaseUrl = getApiBaseUrl();\n                \n                \/\/ Language detection - check WPML first, then browser language\n                function detectLanguage() {\n                    \/\/ Use shortcode language if set\n                    if (window.dormaPortalLanguage) {\n                        return window.dormaPortalLanguage === 'fr' ? 'French' : 'English';\n                    }\n                    \n                    \/\/ Check WPML language\n                    if (typeof wpml_language !== 'undefined' && wpml_language) {\n                        const wpmlLang = wpml_language.toLowerCase();\n                        if (wpmlLang.startsWith('fr')) return 'French';\n                        if (wpmlLang.startsWith('en')) return 'English';\n                    }\n                    \n                    \/\/ Check WPML cookie\n                    const wpmlCookie = document.cookie.split('; ').find(row => row.startsWith('wp-wpml_current_language'));\n                    if (wpmlCookie) {\n                        const lang = wpmlCookie.split('=')[1]?.toLowerCase();\n                        if (lang && lang.startsWith('fr')) return 'French';\n                        if (lang && lang.startsWith('en')) return 'English';\n                    }\n                    \n                    \/\/ Check browser language\n                    const browserLang = navigator.language || navigator.userLanguage;\n                    if (browserLang) {\n                        const lang = browserLang.toLowerCase();\n                        if (lang.startsWith('fr')) return 'French';\n                        if (lang.startsWith('en')) return 'English';\n                    }\n                    \n                    \/\/ Default to English\n                    return 'English';\n                }\n                \n                \/\/ Duplicate call protection for email verification\n                let verificationInProgress = false;\n                let verificationCompleted = false;\n                \n                \/\/ Set detected language on page load and apply translations\n                document.addEventListener('DOMContentLoaded', () => {\n                    const detectedLang = detectLanguage();\n                    const languageSelect = document.getElementById('language');\n                    if (languageSelect) {\n                        languageSelect.value = detectedLang;\n                    }\n                    \/\/ Apply translations\n                    applyTranslations();\n                });\n                \n                \/\/ Check for error parameter in URL and display it\n                const urlParams = new URLSearchParams(window.location.search);\n                const errorParam = urlParams.get('error');\n                if (errorParam) {\n                    showError(decodeURIComponent(errorParam));\n                    \/\/ Clean up URL by removing error parameter\n                    const newUrl = window.location.pathname + (urlParams.get('token') ? '?token=' + urlParams.get('token') : '');\n                    window.history.replaceState({}, document.title, newUrl);\n                }\n                \n                \/\/ Check if we're coming from email verification link\n                const verificationToken = urlParams.get('token');\n                \n                if (verificationToken) {\n                    \/\/ Show verification status and process verification\n                    document.getElementById('registrationForm').style.display = 'none';\n                    document.getElementById('verificationStatus').style.display = 'block';\n                    verifyEmail(verificationToken);\n                }\n                \n                \/\/ Update login link\n                if (WORDPRESS_LOGIN_URL) {\n                    document.getElementById('loginLink').href = WORDPRESS_LOGIN_URL;\n                }\n                \n                \/\/ Generate secure password\n                function generateSecurePassword() {\n                    const lowercase = 'abcdefghijklmnopqrstuvwxyz';\n                    const uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n                    const numbers = '0123456789';\n                    const symbols = '!@#$%^&*()_+-=[]{}|;:,.<>?';\n                    const allChars = lowercase + uppercase + numbers + symbols;\n                    \n                    \/\/ Ensure we have at least one of each required character type\n                    let password = '';\n                    password += lowercase[Math.floor(Math.random() * lowercase.length)];\n                    password += uppercase[Math.floor(Math.random() * uppercase.length)];\n                    password += numbers[Math.floor(Math.random() * numbers.length)];\n                    password += symbols[Math.floor(Math.random() * symbols.length)];\n                    \n                    \/\/ Fill the rest randomly (total length 16 for extra security)\n                    for (let i = password.length; i < 16; i++) {\n                        password += allChars[Math.floor(Math.random() * allChars.length)];\n                    }\n                    \n                    \/\/ Shuffle the password to avoid predictable patterns\n                    password = password.split('').sort(() => Math.random() - 0.5).join('');\n                    \n                    return password;\n                }\n                \n                \/\/ Toggle password visibility\n                let passwordVisible = false;\n                document.getElementById('togglePasswordBtn').addEventListener('click', () => {\n                    const passwordInput = document.getElementById('password');\n                    const toggleBtn = document.getElementById('togglePasswordBtn');\n                    passwordVisible = !passwordVisible;\n                    \n                    if (passwordVisible) {\n                        passwordInput.type = 'text';\n                        toggleBtn.textContent = t('hide');\n                    } else {\n                        passwordInput.type = 'password';\n                        toggleBtn.textContent = t('show');\n                    }\n                });\n                \n                \/\/ Copy password to clipboard\n                document.getElementById('copyPasswordBtn').addEventListener('click', async () => {\n                    const passwordText = document.getElementById('generatedPasswordText').textContent;\n                    try {\n                        await navigator.clipboard.writeText(passwordText);\n                        const copyBtn = document.getElementById('copyPasswordBtn');\n                        const originalText = copyBtn.textContent;\n                        copyBtn.textContent = t('copied');\n                        copyBtn.style.background = '#27ae60';\n                        setTimeout(() => {\n                            copyBtn.textContent = originalText;\n                            copyBtn.style.background = '#3498db';\n                        }, 2000);\n                    } catch (err) {\n                        \/\/ Fallback for older browsers\n                        const textArea = document.createElement('textarea');\n                        textArea.value = passwordText;\n                        document.body.appendChild(textArea);\n                        textArea.select();\n                        document.execCommand('copy');\n                        document.body.removeChild(textArea);\n                        const copyBtn = document.getElementById('copyPasswordBtn');\n                        const originalText = copyBtn.textContent;\n                        copyBtn.textContent = t('copied');\n                        setTimeout(() => {\n                            copyBtn.textContent = originalText;\n                        }, 2000);\n                    }\n                });\n                \n                \/\/ Password generator button\n                document.getElementById('generatePasswordBtn').addEventListener('click', () => {\n                    const generatedPassword = generateSecurePassword();\n                    const passwordInput = document.getElementById('password');\n                    const confirmPasswordInput = document.getElementById('confirmPassword');\n                    \n                    \/\/ Set the password values\n                    passwordInput.value = generatedPassword;\n                    confirmPasswordInput.value = generatedPassword;\n                    \n                    \/\/ Show password in plain text and make field visible\n                    passwordInput.type = 'text';\n                    passwordVisible = true;\n                    document.getElementById('togglePasswordBtn').textContent = t('hide');\n                    \n                    \/\/ Show the generated password display\n                    document.getElementById('generatedPasswordText').textContent = generatedPassword;\n                    document.getElementById('generatedPasswordDisplay').style.display = 'block';\n                    \n                    \/\/ Clear any password errors\n                    clearErrors();\n                    \/\/ Trigger input event to validate\n                    passwordInput.dispatchEvent(new Event('input'));\n                });\n                \n                \/\/ Form submission\n                document.getElementById('registerForm').addEventListener('submit', async (e) => {\n                    e.preventDefault();\n                    \n                    \/\/ Clear previous errors\n                    clearErrors();\n                    clearMessages();\n                    \n                    \/\/ Get form data\n                    const formData = {\n                        email: document.getElementById('email').value.trim(),\n                        birthdate: document.getElementById('birthdate').value,\n                        firstName: document.getElementById('firstName').value.trim(),\n                        lastName: document.getElementById('lastName').value.trim(),\n                        phone: document.getElementById('phone').value.trim() || null,\n                        password: document.getElementById('password').value,\n                        language: document.getElementById('language').value,\n                        newsletterSubscription: document.getElementById('newsletterSubscription').checked\n                    };\n                    \n                    \/\/ Validate form\n                    if (!validateForm(formData)) {\n                        return;\n                    }\n                    \n                    \/\/ Disable submit button\n                    const submitBtn = document.getElementById('submitBtn');\n                    submitBtn.disabled = true;\n                    submitBtn.textContent = t('creatingAccount');\n                    \n                    try {\n                        const response = await fetch(`${apiBaseUrl}\/wordpress\/register`, {\n                            method: 'POST',\n                            headers: {\n                                'Content-Type': 'application\/json',\n                            },\n                            body: JSON.stringify(formData)\n                        });\n                        \n                        const data = await response.json();\n                        \n                        if (response.ok) {\n                            \/\/ Show success message\n                            document.getElementById('registrationForm').style.display = 'none';\n                            document.getElementById('registeredEmail').textContent = formData.email;\n                            document.getElementById('successMessage').style.display = 'block';\n                            \/\/ Re-apply translations to success message\n                            applyTranslations();\n                        } else {\n                            \/\/ Check if email is already in use - redirect to login\n                            let errorMessage = data.message || data.error || t('registrationFailed');\n                            const errorText = (data.message || '').toLowerCase() + ' ' + (data.error || '').toLowerCase();\n                            \n                            \/\/ Strip HTML tags from error message for cleaner display\n                            if (errorMessage) {\n                                errorMessage = errorMessage\n                                    .replace(\/<strong>ERROR<\\\/strong>:\\s*\/gi, '')\n                                    .replace(\/<[^>]*>\/g, '') \/\/ Remove HTML tags\n                                    .replace(\/\\n\/g, ' ') \/\/ Replace newlines with spaces\n                                    .trim();\n                            }\n                            \n                            \/\/ Check for various \"already exists\" indicators\n                            if (errorText.includes('already used') || \n                                errorText.includes('already exists') || \n                                errorText.includes('already registered') ||\n                                errorText.includes('d\u00e9j\u00e0') ||\n                                errorText.includes('email address is already') ||\n                                errorText.includes('that email address')) {\n                                \/\/ Account already exists, redirect to login with message\n                                const loginUrl = WORDPRESS_LOGIN_URL || 'https:\/\/dormalab.com\/my-account\/';\n                                window.location.href = loginUrl + '?registered=1&message=' + encodeURIComponent(errorMessage);\n                            } else {\n                                \/\/ Show error - if it's a password error, also highlight the password field\n                                showError(errorMessage);\n                                if (errorText.includes('password') || errorText.includes('weak') || errorText.includes('mot de passe')) {\n                                    showFieldError('password', errorMessage);\n                                }\n                                submitBtn.disabled = false;\n                                submitBtn.textContent = t('createAccountBtn');\n                            }\n                        }\n                    } catch (error) {\n                        console.error('Registration error:', error);\n                        showError(t('networkError'));\n                        submitBtn.disabled = false;\n                        submitBtn.textContent = t('createAccountBtn');\n                    }\n                });\n                \n                \/\/ Verify email function\n                async function verifyEmail(token) {\n                    \/\/ Prevent duplicate calls\n                    if (verificationInProgress) {\n                        console.log('Verification already in progress, skipping duplicate call');\n                        return;\n                    }\n                    \n                    \/\/ Prevent re-verification if already completed\n                    if (verificationCompleted) {\n                        console.log('Verification already completed, skipping duplicate call');\n                        return;\n                    }\n                    \n                    verificationInProgress = true;\n                    \n                    try {\n                        const response = await fetch(`${apiBaseUrl}\/wordpress\/verify-email?token=${encodeURIComponent(token)}`, {\n                            method: 'GET',\n                            headers: {\n                                'Content-Type': 'application\/json',\n                            }\n                        });\n                        \n                        const data = await response.json();\n                        \n                        if (response.ok) {\n                            verificationCompleted = true; \/\/ Mark as completed\n                            \n                            \/\/ Show success message briefly, then redirect\n                            document.getElementById('verificationStatus').innerHTML = `\n                                <div class=\"verification-status\">\n                                    <div class=\"success\" style=\"margin: 0 auto; max-width: 500px;\">\n                                        <h2 style=\"color: #2e7d32; margin-bottom: 15px;\">\u2713 ${t('emailVerified')}<\/h2>\n                                        <p>${t('accountCreated')}<\/p>\n                                        <p style=\"margin-top: 15px;\">${t('redirecting')}<\/p>\n                                    <\/div>\n                                <\/div>\n                            `;\n                            \/\/ Redirect to account page after 2 seconds\n                            setTimeout(() => {\n                                window.location.href = 'https:\/\/dormalab.com\/my-account\/';\n                            }, 2000);\n                        } else {\n                            \/\/ Check if account already exists - redirect to login instead\n                            let errorMessage = data.message || data.error || t('invalidVerificationLink');\n                            \n                            \/\/ Strip HTML tags from error message for cleaner display\n                            if (errorMessage) {\n                                errorMessage = errorMessage\n                                    .replace(\/<strong>ERROR<\\\/strong>:\\s*\/gi, '')\n                                    .replace(\/<[^>]*>\/g, '') \/\/ Remove HTML tags\n                                    .replace(\/\\n\/g, ' ') \/\/ Replace newlines with spaces\n                                    .trim();\n                            }\n                            \n                            if (errorMessage.includes('already registered') || errorMessage.includes('already used') || errorMessage.includes('d\u00e9j\u00e0')) {\n                                verificationCompleted = true; \/\/ Mark as completed even on \"already exists\" error\n                                \/\/ Account already exists, redirect to login\n                                const loginUrl = WORDPRESS_LOGIN_URL || 'https:\/\/dormalab.com\/my-account\/';\n                                window.location.href = loginUrl + '?registered=1';\n                            } else {\n                                \/\/ Other error - redirect to registration page with error message\n                                const currentLang = window.dormaPortalLanguage || 'en';\n                                const registrationPage = currentLang === 'fr' \n                                    ? 'https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/'\n                                    : 'https:\/\/dormalab.com\/register-patient\/';\n                                window.location.href = registrationPage + '?error=' + encodeURIComponent(errorMessage);\n                            }\n                        }\n                    } catch (error) {\n                        console.error('Verification error:', error);\n                        \/\/ Redirect to registration page with error\n                        const currentLang = window.dormaPortalLanguage || 'en';\n                        const registrationPage = currentLang === 'fr' \n                            ? 'https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/'\n                            : 'https:\/\/dormalab.com\/register-patient\/';\n                        window.location.href = registrationPage + '?error=' + encodeURIComponent(t('networkError'));\n                    } finally {\n                        verificationInProgress = false; \/\/ Reset flag (but keep verificationCompleted true)\n                    }\n                }\n                \n                \/\/ Form validation\n                function validateForm(data) {\n                    let isValid = true;\n                    \n                    \/\/ Email validation\n                    const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n                    if (!data.email || !emailRegex.test(data.email)) {\n                        showFieldError('email', t('validEmail'));\n                        isValid = false;\n                    }\n                    \n                    \/\/ Birthdate validation\n                    if (!data.birthdate) {\n                        showFieldError('birthdate', t('birthdateRequired'));\n                        isValid = false;\n                    } else {\n                        const birthdateRegex = \/^\\d{4}-\\d{2}-\\d{2}$\/;\n                        if (!birthdateRegex.test(data.birthdate)) {\n                            showFieldError('birthdate', t('birthdateFormat'));\n                            isValid = false;\n                        }\n                    }\n                    \n                    \/\/ First name validation\n                    if (!data.firstName || data.firstName.length < 2) {\n                        showFieldError('firstName', t('firstNameMin'));\n                        isValid = false;\n                    }\n                    \n                    \/\/ Last name validation\n                    if (!data.lastName || data.lastName.length < 2) {\n                        showFieldError('lastName', t('lastNameMin'));\n                        isValid = false;\n                    }\n                    \n                    \/\/ Language validation\n                    if (!data.language || (data.language !== 'English' && data.language !== 'French')) {\n                        showFieldError('language', t('selectLanguageError'));\n                        isValid = false;\n                    }\n                    \n                    \/\/ Password validation\n                    const password = data.password;\n                    if (!password) {\n                        showFieldError('password', t('passwordRequired'));\n                        isValid = false;\n                    } else {\n                        let passwordErrors = [];\n                        \n                        if (password.length < 12) {\n                            passwordErrors.push('at least 12 characters');\n                        }\n                        \n                        if (!\/[a-z]\/.test(password)) {\n                            passwordErrors.push('lowercase letter');\n                        }\n                        \n                        if (!\/[A-Z]\/.test(password)) {\n                            passwordErrors.push('uppercase letter');\n                        }\n                        \n                        if (!\/[0-9]\/.test(password)) {\n                            passwordErrors.push('number');\n                        }\n                        \n                        if (!\/[^a-zA-Z0-9]\/.test(password)) {\n                            passwordErrors.push('symbol');\n                        }\n                        \n                        \/\/ Check for common sequences - only flag if password is mostly or exactly a common word\n                        const commonWords = ['password', 'admin', 'letmein', 'welcome', 'qwerty', '123456'];\n                        const lowerPassword = password.toLowerCase();\n                        \/\/ Only flag if password is exactly a common word, or if it's short and mostly a common word\n                        const isCommonWord = commonWords.some(word => {\n                            return lowerPassword === word || \n                                   (password.length < 16 && lowerPassword.includes(word) && \n                                    lowerPassword.replace(word, '').length < 3);\n                        });\n                        if (isCommonWord) {\n                            passwordErrors.push('avoid common words or sequences');\n                        }\n                        \n                        \/\/ Check for repeated sequences (e.g., \"MedesyncMedesync\" or \"word123word\")\n                        \/\/ Look for sequences of 4+ characters that appear multiple times (more lenient for short sequences)\n                        for (let seqLen = 4; seqLen <= Math.floor(password.length \/ 2); seqLen++) {\n                            for (let i = 0; i <= password.length - seqLen * 2; i++) {\n                                const sequence = lowerPassword.substr(i, seqLen);\n                                \/\/ Check if this sequence appears again later in the password\n                                const remaining = lowerPassword.substr(i + seqLen);\n                                if (remaining.includes(sequence)) {\n                                    passwordErrors.push('avoid repeated words or sequences');\n                                    break;\n                                }\n                            }\n                            if (passwordErrors.some(err => err.includes('repeated'))) break;\n                        }\n                        \n                        if (passwordErrors.length > 0) {\n                            \/\/ Translate password errors\n                            const translatedErrors = passwordErrors.map(err => {\n                                const key = 'passwordReq' + err.match(\/\\d+\/)?.[0] || '';\n                                return t(key) || err;\n                            });\n                            showFieldError('password', t('passwordRequired') + ': ' + translatedErrors.join(', '));\n                            isValid = false;\n                        }\n                    }\n                    \n                    \/\/ Confirm password validation\n                    const confirmPassword = document.getElementById('confirmPassword').value;\n                    if (data.password !== confirmPassword) {\n                        showFieldError('confirmPassword', t('passwordsMatch'));\n                        isValid = false;\n                    }\n                    \n                    return isValid;\n                }\n                \n                \/\/ Show field error\n                function showFieldError(fieldName, message) {\n                    const field = document.getElementById(fieldName);\n                    const errorDiv = document.getElementById(fieldName + 'Error');\n                    \n                    field.classList.add('error-input');\n                    errorDiv.textContent = message;\n                    errorDiv.classList.add('show');\n                }\n                \n                \/\/ Clear all errors\n                function clearErrors() {\n                    const errorInputs = document.querySelectorAll('.error-input');\n                    errorInputs.forEach(input => input.classList.remove('error-input'));\n                    \n                    const errorMessages = document.querySelectorAll('.field-error');\n                    errorMessages.forEach(msg => {\n                        msg.classList.remove('show');\n                        msg.textContent = '';\n                    });\n                }\n                \n                \/\/ Show error message\n                function showError(message) {\n                    const messagesDiv = document.getElementById('messages');\n                    messagesDiv.innerHTML = `<div class=\"error\">${message}<\/div>`;\n                }\n                \n                \/\/ Show success message\n                function showSuccess(message) {\n                    const messagesDiv = document.getElementById('messages');\n                    messagesDiv.innerHTML = `<div class=\"success\">${message}<\/div>`;\n                }\n                \n                \/\/ Clear messages\n                function clearMessages() {\n                    document.getElementById('messages').innerHTML = '';\n                }\n            })();\n        <\/script>\n    <\/div>\n    <br\/><\/p>\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":22,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-41558","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Enregistrer le patient - Dorma Sleep Clinics<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enregistrer le patient - Dorma Sleep Clinics\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/\" \/>\n<meta property=\"og:site_name\" content=\"Dorma Sleep Clinics\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-09T00:44:10+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/enregistrer-le-patient\\\/\",\"url\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/enregistrer-le-patient\\\/\",\"name\":\"Enregistrer le patient - Dorma Sleep Clinics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#website\"},\"datePublished\":\"2025-12-08T21:45:50+00:00\",\"dateModified\":\"2025-12-09T00:44:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/enregistrer-le-patient\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dormalab.com\\\/fr\\\/enregistrer-le-patient\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/enregistrer-le-patient\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enregistrer le patient\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/\",\"name\":\"Dorma Sleep Clinics\",\"description\":\"Sleep Well Live Well\",\"publisher\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#organization\",\"name\":\"Dorma Clinique Du Sommeil\",\"url\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/dormalab.com\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Dorma-Logotype-RGB-Black-scaled-e1578787470924.png\",\"contentUrl\":\"https:\\\/\\\/dormalab.com\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/Dorma-Logotype-RGB-Black-scaled-e1578787470924.png\",\"width\":120,\"height\":25,\"caption\":\"Dorma Clinique Du Sommeil\"},\"image\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Enregistrer le patient - Dorma Sleep Clinics","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/","og_locale":"fr_FR","og_type":"article","og_title":"Enregistrer le patient - Dorma Sleep Clinics","og_url":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/","og_site_name":"Dorma Sleep Clinics","article_modified_time":"2025-12-09T00:44:10+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/","url":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/","name":"Enregistrer le patient - Dorma Sleep Clinics","isPartOf":{"@id":"https:\/\/dormalab.com\/fr\/#website"},"datePublished":"2025-12-08T21:45:50+00:00","dateModified":"2025-12-09T00:44:10+00:00","breadcrumb":{"@id":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dormalab.com\/fr\/enregistrer-le-patient\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dormalab.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Enregistrer le patient"}]},{"@type":"WebSite","@id":"https:\/\/dormalab.com\/fr\/#website","url":"https:\/\/dormalab.com\/fr\/","name":"Dorma Sleep Clinics","description":"Sleep Well Live Well","publisher":{"@id":"https:\/\/dormalab.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dormalab.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/dormalab.com\/fr\/#organization","name":"Dorma Clinique Du Sommeil","url":"https:\/\/dormalab.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/dormalab.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/dormalab.com\/wp-content\/uploads\/2019\/10\/Dorma-Logotype-RGB-Black-scaled-e1578787470924.png","contentUrl":"https:\/\/dormalab.com\/wp-content\/uploads\/2019\/10\/Dorma-Logotype-RGB-Black-scaled-e1578787470924.png","width":120,"height":25,"caption":"Dorma Clinique Du Sommeil"},"image":{"@id":"https:\/\/dormalab.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages\/41558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/comments?post=41558"}],"version-history":[{"count":1,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages\/41558\/revisions"}],"predecessor-version":[{"id":41559,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages\/41558\/revisions\/41559"}],"wp:attachment":[{"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/media?parent=41558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}