{"id":36848,"date":"2024-07-02T11:03:37","date_gmt":"2024-07-02T15:03:37","guid":{"rendered":"https:\/\/dormalab.com\/?page_id=36848"},"modified":"2026-02-16T11:56:25","modified_gmt":"2026-02-16T16:56:25","slug":"test-a-domicile-pour-lapnee-du-sommeil","status":"publish","type":"page","link":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/","title":{"rendered":"Acheter un test \u00e0 domicile pour l&rsquo;apn\u00e9e du sommeil"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"36848\" class=\"elementor elementor-36848 elementor-36845\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ecbf78 e-flex e-con-boxed e-con e-parent\" data-id=\"9ecbf78\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e01025c e-con-full e-flex e-con e-child\" data-id=\"e01025c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f02f03e elementor-widget elementor-widget-heading\" data-id=\"f02f03e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Prix : 550 $<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4438be6 elementor-widget elementor-widget-heading\" data-id=\"4438be6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Le WatchPAT ONE est un test de sommeil \u00e0 domicile innovant qui permet de d\u00e9terminer l'apn\u00e9e du sommeil.<\/h2>\t\t\t\t<\/div>\n\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-8f2e0ba e-flex e-con-boxed e-con e-parent\" data-id=\"8f2e0ba\" 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-55e07a1 e-con-full e-flex e-con e-child\" data-id=\"55e07a1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b1e42e3 e-con-full e-flex e-con e-child\" data-id=\"b1e42e3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d089597 elementor-widget elementor-widget-heading\" data-id=\"d089597\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Comment \u00e7a fonctionne\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8458681 elementor-widget elementor-widget-text-editor\" data-id=\"8458681\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>1. Mise en place<\/strong>: Suivez les instructions fournies pour pr\u00e9parer correctement l&rsquo;appareil avant le coucher.<\/p><p><strong>2. Synchronisation<\/strong>: T\u00e9l\u00e9chargez et configurez l&rsquo;application sur votre t\u00e9l\u00e9phone pour la synchroniser avec l&rsquo;appareil.<\/p><p><strong>3. Suivi<\/strong>: Tout au long de la nuit, l&rsquo;appareil surveille les param\u00e8tres du sommeil, notamment la fr\u00e9quence cardiaque, la saturation en oxyg\u00e8ne et les mouvements du corps.<\/p><p><strong>4. Transmission des donn\u00e9es<\/strong>: Apr\u00e8s votre nuit de sommeil, l&rsquo;application envoie automatiquement les donn\u00e9es collect\u00e9es pour que notre \u00e9quipe m\u00e9dicale puisse les analyser.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-29ebb39 elementor-widget elementor-widget-heading\" data-id=\"29ebb39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Questions fr\u00e9quemment pos\u00e9es\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-99105c3 elementor-widget elementor-widget-elementskit-accordion\" data-id=\"99105c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementskit-accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\n        <div class=\"elementskit-accordion accoedion-primary\" id=\"accordion-69e073c16e42c\">\n\n            \n                <div class=\"elementskit-card active\">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-0-99105c3\">\n                        <a href=\"#collapse-f4cb03b69e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-f4cb03b69e073c16e42c\" aria-expanded=\"true\" aria-controls=\"Collapse-f4cb03b69e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Si j&#039;ai un stimulateur cardiaque, puis-je effectuer le test ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-f4cb03b69e073c16e42c\" class=\" show collapse\" aria-labelledby=\"primaryHeading-0-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Malheureusement non, le WatchPAT ne peut pas \u00eatre utilis\u00e9 par les patients porteurs de stimulateurs cardiaques. Cependant, Dorma peut proposer d'autres options aux patients porteurs de stimulateurs cardiaques.<\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-1-99105c3\">\n                        <a href=\"#collapse-b608e3b69e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-b608e3b69e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-b608e3b69e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Combien co\u00fbte le test ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-b608e3b69e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-1-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Le test co\u00fbte 550 $, ce qui comprend l'envoi de l'appareil, le transfert des donn\u00e9es et l'analyse de votre \u00e9tude du sommeil par notre \u00e9quipe m\u00e9dicale. La plupart des assureurs priv\u00e9s du Qu\u00e9bec couvrent le co\u00fbt du test. Veuillez v\u00e9rifier aupr\u00e8s de votre assureur avant d'acheter le test.  <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-2-99105c3\">\n                        <a href=\"#collapse-6a6d52569e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-6a6d52569e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-6a6d52569e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">La WatchPAT est-elle disponible pour les r\u00e9sidents de l&#039;Ontario ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-6a6d52569e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-2-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Bien que l'appareil WatchPat offre un diagnostic d'apn\u00e9e du sommeil reconnu par des organisations telles que l'AASM, il n'est pas reconnu par la province de l'Ontario. Par cons\u00e9quent, ce test ne peut pas \u00eatre rembours\u00e9 par les assureurs priv\u00e9s ou publics. Pour b\u00e9n\u00e9ficier d'une aide gouvernementale \u00e0 l'achat d'un appareil CPAP, les r\u00e9sidents de l'Ontario doivent obtenir un diagnostic aupr\u00e8s d'un laboratoire agr\u00e9\u00e9 par l'Independent Health Facilities (IHF).  <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-3-99105c3\">\n                        <a href=\"#collapse-34529fd69e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-34529fd69e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-34529fd69e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Qu&#039;est-ce que le WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-34529fd69e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-3-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Le WatchPAT ONE est un appareil de test d'apn\u00e9e du sommeil \u00e0 domicile con\u00e7u pour \u00eatre simple, pr\u00e9cis et fiable. Il utilise une application smartphone pour transmettre les donn\u00e9es du sommeil au cloud, ce qui permet \u00e0 un clinicien d'examiner les r\u00e9sultats de l'\u00e9tude automatis\u00e9e. <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-4-99105c3\">\n                        <a href=\"#collapse-150d46969e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-150d46969e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-150d46969e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Comment fonctionne WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-150d46969e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-4-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Le WatchPAT ONE mesure divers param\u00e8tres du sommeil par le biais de sept canaux. Il calcule l'indice d'apn\u00e9e-hypopn\u00e9e (IAH) et l'indice de perturbation respiratoire (IDR) en utilisant le temps de sommeil r\u00e9el du patient, ce qui permet un diagnostic plus pr\u00e9cis. <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-5-99105c3\">\n                        <a href=\"#collapse-264bfe069e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-264bfe069e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-264bfe069e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Quelles sont les principales caract\u00e9ristiques de WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-264bfe069e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-5-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p><b>Temps de sommeil r\u00e9el :<\/b> utilise le temps de sommeil r\u00e9el du patient au lieu du temps d'enregistrement total.<\/p>\n<p><b>Architecture du sommeil :<\/b> Fournit des informations sur les stades du sommeil, y compris l'efficacit\u00e9 du sommeil, la latence du sommeil et la latence du sommeil paradoxal.<\/p>\n<p><b>D\u00e9tection du sommeil paradoxal :<\/b> Identifie l'apn\u00e9e du sommeil li\u00e9e aux mouvements oculaires rapides.<\/p>\n<p><b>D\u00e9tection de l'apn\u00e9e :<\/b> D\u00e9tecte avec pr\u00e9cision tous les types d'apn\u00e9e, y compris l'apn\u00e9e centrale du sommeil (ACS) et la respiration de Cheyne-Stokes.<\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-6-99105c3\">\n                        <a href=\"#collapse-e89001b69e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-e89001b69e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-e89001b69e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Qui peut utiliser WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-e89001b69e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-6-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Le WatchPAT ONE convient aux adultes qui ont besoin d'un test d'apn\u00e9e du sommeil \u00e0 domicile. Il doit \u00eatre utilis\u00e9 sous la supervision d'un professionnel de la sant\u00e9.  Veuillez noter que nous ne pouvons pas accepter les patients de moins de 18 ans.<\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-7-99105c3\">\n                        <a href=\"#collapse-dceff4269e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-dceff4269e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-dceff4269e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Quelle est la pr\u00e9cision de WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-dceff4269e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-7-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Le WatchPAT ONE est cliniquement valid\u00e9 et il a \u00e9t\u00e9 prouv\u00e9 qu'il permet une d\u00e9tection pr\u00e9cise des \u00e9v\u00e9nements d'apn\u00e9e du sommeil et de l'architecture du sommeil. Il r\u00e9duit le risque d'erreur de diagnostic en utilisant le temps de sommeil r\u00e9el. <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-8-99105c3\">\n                        <a href=\"#collapse-fd1b7b969e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-fd1b7b969e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-fd1b7b969e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Comment acheter et utiliser WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-fd1b7b969e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-8-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Vous pouvez acheter le WatchPAT ONE sur le site web de Dorma Lab en utilisant le formulaire \u00e0 droite. Apr\u00e8s avoir re\u00e7u l'appareil, t\u00e9l\u00e9chargez l'application pour smartphone, suivez les instructions de configuration et commencez l'\u00e9tude du sommeil. L'application transmettra les donn\u00e9es au nuage pour examen par le clinicien.  <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-9-99105c3\">\n                        <a href=\"#collapse-35fc14269e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-35fc14269e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-35fc14269e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Quels sont les services offerts par Dorma Lab avec le WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-35fc14269e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-9-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Dorma Lab propose les services suivants :<\/p>\n<p><b>Interpr\u00e9tation du test :<\/b> Un neurologue interpr\u00e9tera les r\u00e9sultats du test.<\/p>\n<p><b>Rapport d'examen :<\/b> Vous recevrez un rapport d\u00e9taill\u00e9 de votre \u00e9tude du sommeil.<\/p>\n<p><b>Consultation gratuite :<\/b> Une consultation gratuite pour discuter des r\u00e9sultats du test et des prochaines \u00e9tapes en fonction des r\u00e9sultats.<\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-10-99105c3\">\n                        <a href=\"#collapse-4510e7169e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-4510e7169e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-4510e7169e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Que dois-je faire si je rencontre des probl\u00e8mes avec WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-4510e7169e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-10-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Si vous rencontrez des probl\u00e8mes, consultez le manuel d'utilisation pour obtenir des conseils de d\u00e9pannage. Vous pouvez \u00e9galement contacter le service client\u00e8le de Dorma Lab pour obtenir de l'aide. <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                \n                <div class=\"elementskit-card \">\n                    <div class=\"elementskit-card-header\" id=\"primaryHeading-11-99105c3\">\n                        <a href=\"#collapse-f2ec65069e073c16e42c\" class=\"ekit-accordion--toggler elementskit-btn-link collapsed\" data-ekit-toggle=\"collapse\" data-target=\"#Collapse-f2ec65069e073c16e42c\" aria-expanded=\"false\" aria-controls=\"Collapse-f2ec65069e073c16e42c\">\n                            \n                            <span class=\"ekit-accordion-title\">Comment puis-je obtenir de l&#039;aide ou plus d&#039;informations sur WatchPAT ONE ?<\/span>\n\n                            \n                                <div class=\"ekit_accordion_icon_group\">\n                                    <div class=\"ekit_accordion_normal_icon\">\n                                        <!-- Normal Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-down-arrow1\"><\/i>                                    <\/div>\n\n                                    <div class=\"ekit_accordion_active_icon\">\n                                        <!-- Active Icon -->\n\t\t\t\t\t\t\t\t\t\t<i class=\"icon icon-up-arrow\"><\/i>                                    <\/div>\n                                <\/div>\n\n                            \n                                                    <\/a>\n                    <\/div>\n\n                    <div id=\"Collapse-f2ec65069e073c16e42c\" class=\" collapse\" aria-labelledby=\"primaryHeading-11-99105c3\" data-parent=\"#accordion-69e073c16e42c\">\n\n                        <div class=\"elementskit-card-body ekit-accordion--content\">\n                            <p>Pour plus d'informations ou d'assistance, visitez le site Web de Dorma Lab ou contactez notre \u00e9quipe d'assistance \u00e0 la client\u00e8le. Nos prestataires de soins de sant\u00e9 peuvent \u00e9galement vous guider et r\u00e9pondre \u00e0 vos questions sur l'utilisation de WatchPAT ONE. <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                <\/div><!-- .elementskit-card END -->\n\n                                        <\/div>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d2cb376 elementor-widget elementor-widget-image\" data-id=\"d2cb376\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dormalab.com\/fr\/financement-flexible-avec-affirm\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9d74121 e-con-full e-flex e-con e-child\" data-id=\"9d74121\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cf273c0 elementor-widget elementor-widget-heading\" data-id=\"cf273c0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Commencez<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f3c5398 elementor-widget elementor-widget-html\" data-id=\"f3c5398\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Acheter un Test de Sommeil \u00e0 Domicile<\/title>\n  <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n  <script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyB5DtRtOTmliqRm1yRgblVnEVDTxJTxdV8&libraries=places\"><\/script>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0\/dist\/js\/bootstrap.bundle.min.js\"><\/script>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/sweetalert2@11\"><\/script>\n  <script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/browser-image-compression@2.0.2\/dist\/browser-image-compression.js\"><\/script>\n  <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-datepicker@1.9.0\/dist\/css\/bootstrap-datepicker.min.css\" \/>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-datepicker@1.9.0\/dist\/js\/bootstrap-datepicker.min.js\"><\/script>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-datepicker@1.9.0\/dist\/locales\/bootstrap-datepicker.fr.min.js\"><\/script>\n  <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-icons@1.10.5\/font\/bootstrap-icons.css\">\n\n  <style>\n    \/**start of the form styling to fix the dorma wordpress theme **\/\n    form input[type=\"text\"],\n    form input[type=\"email\"],\n    form input[type=\"password\"],\n    form input[type=\"tel\"],\n    form input[type=\"phone\"],\n    \/* Targets your specific case *\/\n    form input[type=\"number\"],\n    form input[type=\"url\"],\n    form input[type=\"search\"],\n    form input[type=\"date\"],\n    form input[type=\"datetime-local\"],\n    form input[type=\"month\"],\n    form input[type=\"week\"],\n    form input[type=\"time\"],\n    form input[type=\"color\"],\n    form select,\n    form textarea {\n      background-color: white !important;\n      color: black;\n      border: 1px solid #ccc;\n      \/* Optional: Adds a subtle border *\/\n      padding: 10px;\n      \/* Optional: Adds padding for better usability *\/\n      border-radius: 4px;\n      \/* Optional: Adds rounded corners *\/\n      box-shadow: none;\n      \/* Removes any default shadow *\/\n      padding: 10px !important;\n    }\n\n    input[disabled],\n    select[disabled],\n    textarea[disabled] {\n      background-color: #e9ecef;\n      \/* Light gray background for disabled fields *\/\n      color: #6c757d;\n      \/* Muted text color *\/\n      opacity: 1;\n      \/* Ensure full opacity for consistent styling *\/\n      cursor: not-allowed;\n      \/* Change cursor to indicate it's disabled *\/\n    }\n\n    #submitButton {\n      background-color: #173560;\n      border: 0px;\n    }\n\n    body {\n      background-color: #f8f9fa;\n    }\n\n    form {\n      background-color: #d9e6f2;\n      border: 1px solid #dee2e6;\n      border-radius: 8px;\n      padding: 15px;\n      margin-bottom: 20px;\n    }\n\n    .section {\n      border: none;\n      padding: 0;\n      margin: 0;\n      background-color: transparent;\n      margin-bottom: 40px;\n    }\n\n    .section-title {\n      font-weight: bold;\n      margin-bottom: 10px;\n    }\n\n    .is-invalid~.invalid-feedback {\n      display: block;\n    }\n\n    .loading-spinner {\n      display: none;\n      position: fixed;\n      top: 0;\n      left: 0;\n      right: 0;\n      bottom: 0;\n      background: rgba(255, 255, 255, 0.8); \n      z-index: 9999; \n      flex-direction: column;\n      justify-content: center;\n      align-items: center;\n    }\n\n    .datepicker table tr td.day.active,\n    .datepicker table tr td.day.active:hover,\n    .datepicker table tr td.day.active.active,\n    .datepicker table tr td.day.active.active:hover,\n    .datepicker table tr td.day.active.disabled,\n    .datepicker table tr td.day.active.disabled:hover,\n    .datepicker table tr td.day.active:focus {\n      background-color: #ccc !important;\n      background-image: none !important; \n      border-color: #ccc !important;\n      text-shadow: none !important;\n      filter: none !important; \n      color: #000 !important;\n    }\n\n    .datepicker table tr td.day.today,\n    .datepicker table tr td.day.today:hover {\n      background-color: #ccc !important;\n      background-image: none !important;\n      border-color: #ccc !important;\n      filter: none !important;\n      text-shadow: none !important;\n      color: #000 !important;\n    }\n\n    .datepicker {\n      font-size: 14px;\n    }\n\n    .datepicker table tr td,\n    .datepicker table tr th {\n      width: 2.5em;\n      height: 2.0em;\n      text-align: center;\n      vertical-align: middle;\n      border-radius: 0 !important;\n    }\n\n    .datepicker-dropdown {\n      min-width: 200px;\n      padding: 6px;\n    }\n\n    #thankMessage {\n      display: none; \n      position: fixed; \n      top: 0; \n      left: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(255, 255, 255); \n      z-index: 10000;\n\n      display: flex; \n      flex-direction: column;\n      justify-content: center; \n      align-items: center; \n      text-align: center; \n      padding: 60px;\n    }\n\n    #questionnaireLink {\n      margin-left: 0.25rem;\n    }\n\n    #birthdateContainer {\n      position: relative;\n    }\n\n    #birthdateContainer.is-invalid .invalid-feedback {\n      display: block;\n    }\n\n    select {\n      -webkit-appearance: none;\n      -moz-appearance: none; \n      appearance: none;\n\n      font-size: 1rem; \n      padding-right: 2.5rem;\n      background-color: #fff;\n\n      background-image: url(\"data:image\/svg+xml,%3Csvg fill='%23000000' height='18' viewBox='0 0 24 24' width='18' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M7 10l5 5 5-5H7z'\/%3E%3C\/svg%3E\");\n      background-repeat: no-repeat;\n      background-position: right 0.75rem center;\n      background-size: 1rem 1rem;\n    }\n  <\/style>\n\n<\/head>\n\n<body>\n  <div class=\"container mt-5\">\n    <form id=\"apiForm\" novalidate onsubmit=\"handleFormSubmit(event)\" autocomplete=\"on\">\n      <!-- Personal Information Section -->\n      <div class=\"section\">\n        <div class=\"section-title\">Informations Personnelles<\/div>\n        <p class=\"subtitle\">Veuillez nous en dire un peu plus sur vous-m\u00eame ainsi que sur l'adresse o\u00f9 vous souhaitez\n          que votre test de sommeil soit envoy\u00e9.<\/p>\n        <div class=\"row\">\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"firstName\" class=\"form-label\">Pr\u00e9nom<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"firstName\" name=\"firstName\" required\n              onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le pr\u00e9nom est requis.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"lastName\" class=\"form-label\">Nom de famille<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"lastName\" name=\"lastName\" required onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le nom de famille est requis.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\" id=\"birthdateContainer\">\n            <label class=\"form-label\">Date de naissance<\/label>\n            <div class=\"input-group\">\n              <select class=\"form-control\" id=\"birthYear\" name=\"birthYear\" required>\n                <option value=\"\">AAAA<\/option>\n              <\/select>\n              <select class=\"form-control\" id=\"birthMonth\" name=\"birthMonth\" required>\n                <option value=\"\">MM<\/option>\n              <\/select>\n              <select class=\"form-control\" id=\"birthDay\" name=\"birthDay\" required>\n                <option value=\"\">JJ<\/option>\n              <\/select>\n              <div class=\"invalid-feedback\">La date de naissance est requise.<\/div>\n            <\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"gender\" class=\"form-label\">Sexe<\/label>\n            <select class=\"form-control\" id=\"gender\" name=\"gender\" required>\n              <option value=\"\">S\u00e9lectionner...<\/option>\n              <option value=\"Male\">Homme<\/option>\n              <option value=\"Female\">Femme<\/option>\n            <\/select>\n            <div class=\"invalid-feedback\">Veuillez s\u00e9lectionner votre sexe.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"email\" class=\"form-label\">Courriel<\/label>\n            <input type=\"email\" class=\"form-control\" id=\"email\" name=\"email\" required onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">L'adresse e-mail doit \u00eatre valide.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"phone\" class=\"form-label\">T\u00e9l\u00e9phone<\/label>\n            <input type=\"tel\" class=\"form-control\" id=\"phone\" name=\"phone\" required\n              onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le num\u00e9ro de t\u00e9l\u00e9phone doit comporter 10 chiffres.<\/div>\n          <\/div>\n          <div class=\"col-12 mb-3\">\n            <label for=\"fullAddress\" class=\"form-label\">Adresse de Livraison<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"fullAddress\" name=\"fullAddress\"\n              placeholder=\"Commencez \u00e0 taper votre adresse...\" required>\n            <div class=\"invalid-feedback\">Veuillez s\u00e9lectionner une adresse valide parmi les suggestions.<\/div>\n          <\/div>\n        <\/div>\n        <!-- Hidden fields for the address components -->\n        <input type=\"hidden\" id=\"shippingStreet\" name=\"shippingStreet\" required>\n        <input type=\"hidden\" id=\"shippingCity\" name=\"shippingCity\" required>\n        <input type=\"hidden\" id=\"shippingProvince\" name=\"shippingProvince\" required>\n        <input type=\"hidden\" id=\"shippingPostalCode\" name=\"shippingPostalCode\" required>\n      <\/div>\n\n      <!-- Referring Doctor Section -->\n      <div class=\"section\">\n        <div class=\"section-title\">Informations de R\u00e9f\u00e9rence<\/div>\n        <p class=\"subtitle\">Si vous avez \u00e9t\u00e9 r\u00e9f\u00e9r\u00e9 par votre m\u00e9decin ou dentiste, veuillez fournir leurs informations\n          afin que nous puissions leur transmettre directement vos r\u00e9sultats. Si vous n'avez pas \u00e9t\u00e9 r\u00e9f\u00e9r\u00e9 mais\n          souhaitez que nous leur envoyions vos r\u00e9sultats, veuillez remplir leur nom et nous serons ravis d'accepter\n          votre demande.<\/p>\n        <div class=\"row\">\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"doctorFirstName\" class=\"form-label\">Pr\u00e9nom du M\u00e9decin<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"doctorFirstName\" name=\"doctorFirstName\">\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"doctorLastName\" class=\"form-label\">Nom de Famille du M\u00e9decin<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"doctorLastName\" name=\"doctorLastName\"\n              onblur=\"handleSearch('Doctor')\">\n          <\/div>\n        <\/div>\n        <div class=\"row\">\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"dentistFirstName\" class=\"form-label\">Pr\u00e9nom du Dentiste<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"dentistFirstName\" name=\"dentistFirstName\">\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"dentistLastName\" class=\"form-label\">Nom de Famille du Dentiste<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"dentistLastName\" name=\"dentistLastName\"\n              onblur=\"handleSearch('Dentist')\">\n          <\/div>\n        <\/div>\n        <div class=\"mb-3\">\n          <label for=\"fileUpload\" class=\"form-label\">T\u00e9l\u00e9chargez votre prescription (facultatif)<\/label>\n          <input type=\"file\" class=\"form-control\" id=\"fileUpload\" name=\"fileUpload\" accept=\".pdf,.jpg,.jpeg,.png\">\n        <\/div>\n      <\/div>\n\n      <div class=\"section\">\n        <div class=\"section-title\">Code Promo<\/div>\n        <p class=\"subtitle\">Les codes peuvent \u00eatre fournis par une organisation pour offrir des r\u00e9ductions pour l'achat d'une \u00e9tude du sommeil.<\/p>\n        <div class=\"col-md-6 mb-3\">\n          <div class=\"d-flex align-items-center\">\n            <input type=\"text\" class=\"form-control me-2\" id=\"promoCode\" name=\"promoCode\">\n            <button type=\"button\" id=\"applyPromoBtn\" class=\"btn btn-secondary\"\n              onclick=\"validatePromoCode()\">Appliquer<\/button>\n          <\/div>\n\n          <div class=\"invalid-feedback\">Veuillez saisir un code promo valide<\/div>\n          <div id=\"promoCodeMessage\" style=\"margin-top: 5px; font-size: 14px;\"><\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Payment Information Section -->\n      <div class=\"section\" id=\"paymentSection\">\n        <div class=\"section-title\">Informations de Paiement<\/div>\n        <p class=\"subtitle\">Un re\u00e7u pour votre test de sommeil de 550,00 $ vous sera envoy\u00e9 par courriel ainsi qu'une\n          facture que vous pourrez soumettre \u00e0 votre assureur priv\u00e9, si vous en avez un.<\/p>\n        <div class=\"row\">\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"creditCardName\" class=\"form-label\">Nom sur la Carte de Cr\u00e9dit<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"creditCardName\" name=\"creditCardName\" required autocomplete=\"cc-name\" onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le nom du titulaire de la carte est requis.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"creditCardNumber\" class=\"form-label\">Num\u00e9ro de Carte de Cr\u00e9dit<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"creditCardNumber\" name=\"creditCardNumber\" required autocomplete=\"cc-number\" inputmode=\"numeric\" onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le num\u00e9ro de carte de cr\u00e9dit est requis.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"creditCardExpirationMonth\" class=\"form-label\">Mois d'Expiration<\/label>\n            <select class=\"form-control\" id=\"creditCardExpirationMonth\" name=\"creditCardExpirationMonth\" required>\n              <option value=\"\">MM<\/option>\n              <!-- Options 01..12 seront ajout\u00e9es en JS -->\n            <\/select>\n            <div class=\"invalid-feedback\">Veuillez s\u00e9lectionner un mois valide.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"creditCardExpirationYear\" class=\"form-label\">Ann\u00e9e d'Expiration<\/label>\n            <select class=\"form-control\" id=\"creditCardExpirationYear\" name=\"creditCardExpirationYear\" required>\n              <option value=\"\">YYYY<\/option>\n              <!-- Options ann\u00e9e courante..+12 seront ajout\u00e9es en JS -->\n            <\/select>\n            <div class=\"invalid-feedback\">Veuillez s\u00e9lectionner une ann\u00e9e valide.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"creditCardCVV\" class=\"form-label\">CVV<\/label>\n            <input type=\"text\" class=\"form-control\" id=\"creditCardCVV\" name=\"creditCardCVV\" required pattern=\"^\\d{3,4}$\" inputmode=\"numeric\" autocomplete=\"cc-csc\" maxlength=\"4\" oninput=\"this.value=this.value.replace(\/\\D\/g,'').slice(0,4); this.setCustomValidity(''); this.classList.remove('is-invalid');\" onblur=\"validateField(this)\">\n            <div class=\"invalid-feedback\">Le CVV est requis.<\/div>\n          <\/div>\n          <div class=\"col-md-6 mb-3\">\n            <label for=\"amount\" class=\"form-label\">Montant<\/label>\n            <input type=\"text\" id=\"amount\" class=\"form-control\" disabled value=\"550,00\">\n            <div class=\"invalid-feedback\">Le CVV est requis.<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Terms and Conditions Section -->\n      <div class=\"section\">\n        <div class=\"mb-3\">\n          <input type=\"checkbox\" id=\"termsCheckbox\" required>\n          <label for=\"termsCheckbox\">\n            Je reconnais avoir lu et compris les <a href=\"https:\/\/dormalab.com\/fr\/conditions-generales-de-watchpat\/\"\n              target=\"_blank\">termes et conditions<\/a> de l'\u00e9tude de sommeil \u00e0 domicile r\u00e9alis\u00e9e par Dorma Lab.\n          <\/label>\n          <div class=\"invalid-feedback\">Vous devez accepter les termes et conditions pour continuer.<\/div>\n        <\/div>\n      <\/div>\n\n      <button type=\"submit\" id=\"submitButton\" class=\"btn btn-primary\">Soumettre<\/button>\n      <div class=\"loading-spinner\" id=\"loadingSpinner\">\n        <div class=\"spinner-border text-primary\" role=\"status\">\n          <span class=\"visually-hidden\">Envoi en cours...<\/span>\n        <\/div>\n        <p>Envoi de votre formulaire, veuillez patienter...<\/p>\n      <\/div>\n    <\/form>\n  <\/div>\n  \n  <div id=\"thankMessage\" style=\"display:none\">\n    <h1><strong>Nous examinons votre commande<\/strong><\/h1>\n    <p style=\"font-size: 16px;\">\n      Nous vous remercions d'avoir achet\u00e9 votre test de sommeil \u00e0 domicile. Notre \u00e9quipe \u00e9tudie votre demande \n      et vous contactera tr\u00e8s prochainement pour vous communiquer les d\u00e9tails de l'exp\u00e9dition. Si vous avez besoin de parler \u00e0 un membre de notre \n      \u00e9quipe de toute urgence, n'h\u00e9sitez pas \u00e0 nous appeler au\n      <strong>1-(855)-218-5186<\/strong> du lundi au vendredi de 8h \u00e0 17h. \n    <\/p>\n    <p id=\"questionnaireMessage\" style=\"font-size: 16px; display:none\">\n      Merci pour votre achat, veuillez remplir votre \n      <a id=\"questionnaireLink\" href=\"#\" target=\"_blank\"> questionnaire m\u00e9dical<\/a>!\n    <\/p>\n    <button id=\"closeThankMessageBtn\" class=\"btn btn-secondary\" onclick=\"closeThankMessage()\">Fermer<\/button>\n  <\/div>\n\n  <!-- Success card for GTM tracking -->\n  <div id=\"successCard\" style=\"display:none\"><\/div>\n\n  <!-- Modal for Selection -->\n  <div class=\"modal fade\" id=\"selectionModal\" tabindex=\"-1\" aria-hidden=\"true\">\n    <div class=\"modal-dialog modal-lg\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <div>\n            <h5 class=\"modal-title\">Veuillez sp\u00e9cifier votre r\u00e9f\u00e9rent<\/h5>\n            <p class=\"subtitle\">Veuillez s\u00e9lectionner votre r\u00e9f\u00e9rent dans la liste ci-dessous afin que nous puissions\n              lui envoyer vos r\u00e9sultats une fois votre test termin\u00e9.<\/p>\n          <\/div>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><\/button>\n        <\/div>\n        <div class=\"modal-body\">\n          <div id=\"professionalOptions\"><\/div>\n        <\/div>\n        <div class=\"modal-footer\">\n          <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Enregistrer et fermer<\/button>\n          <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">Mon r\u00e9f\u00e9rent n'est pas dans la\n            liste<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    const API_URL = 'https:\/\/api.summittravelhealthdev.com\/v1\/questionnaire\/getReferringProfessionals';\n    const BACKEND_API = 'https:\/\/api.summittravelhealthdev.com\/v1\/sleepStudy\/newSleepStudyPurchase';\n    const RECORD_TYPE = '012OJ000001de9uYAA';\n    let selectedDoctorId;\n    let selectedDentistId;\n\n    \/\/ Google Places Autocomplete\n    function initAutocomplete() {\n      const fullAddressInput = document.getElementById('fullAddress');\n      const streetInput = document.getElementById('shippingStreet');\n      const cityInput = document.getElementById('shippingCity');\n      const provinceInput = document.getElementById('shippingProvince');\n      const postalCodeInput = document.getElementById('shippingPostalCode');\n\n      const autocomplete = new google.maps.places.Autocomplete(fullAddressInput, {\n        types: ['address'],\n        componentRestrictions: { country: 'ca' },\n      });\n\n      autocomplete.addListener('place_changed', function () {\n        const place = autocomplete.getPlace();\n        if (place.address_components) {\n          const street = place.address_components.find((comp) => comp.types.includes('route'));\n          const streetNumber = place.address_components.find((comp) => comp.types.includes('street_number'));\n          const city = place.address_components.find((comp) => comp.types.includes('locality'));\n          const province = place.address_components.find((comp) =>\n            comp.types.includes('administrative_area_level_1')\n          );\n          const postalCode = place.address_components.find((comp) => comp.types.includes('postal_code'));\n\n          if (street && streetNumber) streetInput.value = `${streetNumber.long_name} ${street.long_name}`;\n          if (city) cityInput.value = city.long_name;\n          if (province) provinceInput.value = province.long_name;\n          if (postalCode) postalCodeInput.value = postalCode.long_name;\n\n          fullAddressInput.setCustomValidity('');\n          fullAddressInput.classList.remove('is-invalid');\n        } else {\n          fullAddressInput.setCustomValidity('Veuillez s\u00e9lectionner une adresse valide.');\n          fullAddressInput.classList.add('is-invalid');\n        }\n      });\n    }\n\n    function validateEmail(email) {\n      const emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/;\n      return emailRegex.test(email);\n    }\n\n    function validateField(field) {\n      if (field.name === 'phone') {\n        const digits = field.value.replace(\/\\D\/g, '');\n        if (digits.length !== 10) {\n          field.classList.add('is-invalid');\n          return;\n        }\n      }\n      if (!field.checkValidity()) {\n        field.classList.add('is-invalid');\n        console.log(`Field invalid: ${field.name}`);\n      } else {\n        field.classList.remove('is-invalid');\n      }\n    }\n\n    function handleSearch(professionalType) {\n      const firstName = document.getElementById(`${professionalType.toLowerCase()}FirstName`).value.trim();\n      const lastName = document.getElementById(`${professionalType.toLowerCase()}LastName`).value.trim();\n\n      if (!lastName) return;\n\n      fetch(API_URL, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({\n          firstName,\n          lastName,\n          recordType: RECORD_TYPE,\n          professionalType,\n        }),\n      })\n        .then((response) => response.json())\n        .then((data) => displayProfessionalOptions(data, professionalType))\n        .catch((error) => console.error(`Error fetching ${professionalType}s:`, error));\n    }\n\n    function displayProfessionalOptions(professionals, professionalType) {\n      const optionsContainer = document.getElementById('professionalOptions');\n      optionsContainer.innerHTML = '';\n\n      const modalTitle = document.querySelector('.modal-title');\n      const notInListButton = document.querySelector('#selectionModal .btn-secondary:last-of-type');\n      const saveCloseButton = document.querySelector('#selectionModal .btn-secondary:first-of-type');\n\n      \/\/ Update modal title\n      \/\/ Update modal title with correct translation\n      modalTitle.textContent = `Veuillez sp\u00e9cifier votre ${professionalType === 'Doctor' ? 'M\u00e9decin' : professionalType}`;\n\n      \/\/ Update \"Not in List\" button text\n      notInListButton.textContent = `Mon ${professionalType} n'est pas dans la liste`;\n\n      if (professionals.length === 0) {\n        optionsContainer.innerHTML = `<p>Aucun ${professionalType} trouv\u00e9. Le formulaire sera soumis sans ID.<\/p>`;\n      } else {\n        professionals.forEach((professional, index) => {\n          const isChecked = index === 0 ? 'checked' : ''; \/\/ Default the first option\n          const professionalOption = `\n            <div class=\"mb-3\">\n              <input type=\"radio\" id=\"${professional.id}\" name=\"${professionalType.toLowerCase()}Selection\" value=\"${professional.id}\" ${isChecked}>\n              <label for=\"${professional.id}\">\n                ${professional.firstName} ${professional.lastName} - ${professional.billingAddress.street}, ${professional.billingAddress.city}, ${professional.billingAddress.state}, ${professional.billingAddress.postalCode}\n              <\/label>\n            <\/div>\n          `;\n          optionsContainer.innerHTML += professionalOption;\n        });\n\n        \/\/ Default the first professional ID if available\n        if (professionals.length > 0) {\n          const firstProfessionalId = professionals[0].id;\n          if (professionalType === 'Doctor') {\n            document.getElementById('doctorFirstName').dataset.id = firstProfessionalId;\n          } else if (professionalType === 'Dentist') {\n            document.getElementById('dentistFirstName').dataset.id = firstProfessionalId;\n          }\n        }\n      }\n\n      \/\/ Attach behavior for \"Save & Close\"\n      saveCloseButton.onclick = () => {\n        const selectedProfessionalId = document.querySelector(`input[name=\"${professionalType.toLowerCase()}Selection\"]:checked`)?.value || null;\n        console.log(`selected ${professionalType} ID:`, selectedProfessionalId)\n        if (selectedProfessionalId) {\n          if (professionalType === 'Doctor') {\n            document.getElementById('doctorFirstName').dataset.id = selectedProfessionalId;\n            selectedDoctorId = selectedProfessionalId;\n          } else {\n            document.getElementById('dentistFirstName').dataset.id = selectedProfessionalId;\n            selectedDentistId = selectedProfessionalId;\n          }\n        }\n      };\n\n      \/\/ Attach behavior for \"My [ProfessionalType] Is Not In The List\"\n      notInListButton.onclick = () => {\n        \/\/ Clear the selected professional ID\n        if (professionalType === 'Doctor') {\n          document.getElementById('doctorFirstName').dataset.id = null;\n        } else if (professionalType === 'Dentist') {\n          document.getElementById('dentistFirstName').dataset.id = null;\n        }\n      };\n\n      const modal = new bootstrap.Modal(document.getElementById('selectionModal'));\n\n      if (professionals.length != 0) {\n        modal.show();\n      }\n\n    }\n\n    function checkAge() {\n      const yearSelect = document.getElementById('birthYear');\n      const monthSelect = document.getElementById('birthMonth');\n      const daySelect = document.getElementById('birthDay');\n      const errorMessage = \"Vous devez avoir 18 ans ou plus.\";\n      const feedback = document.querySelector('#birthdateContainer .invalid-feedback');\n\n      if (yearSelect.value && monthSelect.value && daySelect.value) {\n        const birthdate = new Date(`${yearSelect.value}-${monthSelect.value}-${daySelect.value}`);\n        const today = new Date();\n        let age = today.getFullYear() - birthdate.getFullYear();\n        const m = today.getMonth() - birthdate.getMonth();\n        if (m < 0 || (m === 0 && today.getDate() < birthdate.getDate())) {\n          age--;\n        }\n        \n        if (age < 18) {\n          Swal.fire({\n            icon: 'error',\n            title: 'Alerte sur l\\'\u00e2ge du patient',\n            html: `<p>Il est important de noter que vous devez avoir 18 ans ou plus pour acheter un test de sommeil.<\/p>`,\n            confirmButtonText: 'OK'\n          });\n\n          yearSelect.setCustomValidity(errorMessage);\n          monthSelect.setCustomValidity(errorMessage);\n          daySelect.setCustomValidity(errorMessage);\n          \n          yearSelect.classList.add('is-invalid');\n          monthSelect.classList.add('is-invalid');\n          daySelect.classList.add('is-invalid');\n          \n          if (feedback) {\n            feedback.innerText = errorMessage;\n          }\n        } else {\n          yearSelect.setCustomValidity('');\n          monthSelect.setCustomValidity('');\n          daySelect.setCustomValidity('');\n          \n          yearSelect.classList.remove('is-invalid');\n          monthSelect.classList.remove('is-invalid');\n          daySelect.classList.remove('is-invalid');\n          \n          if (feedback) {\n            feedback.innerText = \"\";\n          }\n        }\n      }\n    }\n\n    document.addEventListener('DOMContentLoaded', function() {\n      const daySelect = document.getElementById('birthDay');\n      for (let i = 1; i <= 31; i++) {\n        const option = document.createElement('option');\n        const dayValue = i < 10 ? '0' + i : i;\n        option.value = dayValue;\n        option.text = dayValue;\n        daySelect.appendChild(option);\n      }\n\n      const monthSelect = document.getElementById('birthMonth');\n      for (let i = 1; i <= 12; i++) {\n        const option = document.createElement('option');\n        const monthValue = i < 10 ? '0' + i : i;\n        option.value = monthValue;\n        option.text = monthValue;\n        monthSelect.appendChild(option);\n      }\n      \n      const yearSelect = document.getElementById('birthYear');\n      const currentYear = new Date().getFullYear();\n      const startYear = currentYear - 100;\n      for (let year = currentYear; year >= startYear; year--) {\n        const option = document.createElement('option');\n        option.value = year;\n        option.text = year;\n        yearSelect.appendChild(option);\n      }\n\n      document.getElementById('birthDay').addEventListener('change', checkAge);\n      document.getElementById('birthMonth').addEventListener('change', checkAge);\n      document.getElementById('birthYear').addEventListener('change', checkAge);\n\n      \/\/ Remplir les listes d\u00e9roulantes d'expiration de carte et g\u00e9rer la validation\n      const expMonthSelect = document.getElementById('creditCardExpirationMonth');\n      const expYearSelect = document.getElementById('creditCardExpirationYear');\n      if (expMonthSelect && expMonthSelect.options.length <= 1) {\n        for (let i = 1; i <= 12; i++) {\n          const opt = document.createElement('option');\n          const val = i < 10 ? '0' + i : '' + i;\n          opt.value = val;\n          opt.text = val;\n          expMonthSelect.appendChild(opt);\n        }\n      }\n      if (expYearSelect && expYearSelect.options.length <= 1) {\n        const now = new Date();\n        const startYear = now.getFullYear();\n        const endYear = startYear + 12; \/\/ horizon 12 ans\n        for (let y = startYear; y <= endYear; y++) {\n          const opt = document.createElement('option');\n          opt.value = '' + y;\n          opt.text = '' + y;\n          expYearSelect.appendChild(opt);\n        }\n      }\n      const clearSelectInvalid = (el) => {\n        el.classList.remove('is-invalid');\n        el.setCustomValidity('');\n      };\n      expMonthSelect?.addEventListener('change', () => clearSelectInvalid(expMonthSelect));\n      expYearSelect?.addEventListener('change', () => clearSelectInvalid(expYearSelect));\n    });\n\n    document.getElementById('creditCardNumber').addEventListener('input', function(e) {\n      let value = e.target.value.replace(\/\\D\/g, '');\n      value = value.replace(\/(\\d{4})(?=\\d)\/g, '$1 ');\n      e.target.value = value;\n    });\n    \n    function validatePromoCode() {\n      const promoCodeInput = document.getElementById('promoCode');\n      const promoCodeMessage = document.getElementById('promoCodeMessage');\n      const amountInput = document.getElementById('amount');\n      const paymentSection = document.getElementById('paymentSection');\n\n      promoCodeMessage.innerHTML = \"\";\n      promoCodeMessage.style.color = \"inherit\";\n\n      const promoCode = promoCodeInput.value.trim();\n\n      const URL_PROMO_CODE = 'https:\/\/api.summittravelhealthdev.com\/v1\/appointment';\n      const endpoint = `${URL_PROMO_CODE}\/validatePromoCode?code=${promoCode}`;\n\n      fetch(endpoint)\n        .then(response => {\n          if (!response.ok) {\n            throw new Error('Code promo invalide ou expir\u00e9');\n          }\n          return response.json();\n        })\n        .then(data => {\n          const promoInfo = data[0];\n          const discountType = promoInfo.Discount_Type__c;\n          const discountValue = parseFloat(promoInfo.Promo_Amount__c);\n          let baseAmount = parseFloat(amountInput.value);\n          let discountApplied = 0;\n\n          if (discountType === 'Percentage') {\n            discountApplied = baseAmount * (discountValue \/ 100);\n          } else {\n            discountApplied = discountValue;\n          }\n\n          let newAmount = baseAmount - discountApplied;\n          if (newAmount < 0) newAmount = 0;\n          amountInput.value = newAmount.toFixed(2);\n\n          promoCodeMessage.style.color = \"green\";\n          promoCodeMessage.innerHTML = `Promo de $${discountApplied.toFixed(2)} appliqu\u00e9!`;\n\n          \/\/ Store the validated promo Id on the input for submission\n          promoCodeInput.dataset.promoId = promoInfo.Id;\n\n          if (newAmount === 0) {\n            document.getElementById('creditCardName').disabled = true;\n            document.getElementById('creditCardNumber').disabled = true;\n            document.getElementById('creditCardExpirationMonth').disabled = true;\n            document.getElementById('creditCardExpirationYear').disabled = true;\n            document.getElementById('creditCardCVV').disabled = true;\n            paymentSection.style.display = 'none';\n          } else {\n            document.getElementById('creditCardName').disabled = false;\n            document.getElementById('creditCardNumber').disabled = false;\n            document.getElementById('creditCardExpirationMonth').disabled = false;\n            document.getElementById('creditCardExpirationYear').disabled = false;\n            document.getElementById('creditCardCVV').disabled = false;\n            paymentSection.style.display = 'block';\n          }\n        })\n        .catch(error => {\n          promoCodeMessage.style.color = \"red\";\n          promoCodeMessage.innerHTML = error.message;\n          console.error(\"Promo code error:\", error);\n          \/\/ Clear any stored promo Id on error\n          const promoCodeInput = document.getElementById('promoCode');\n          if (promoCodeInput && promoCodeInput.dataset) {\n            delete promoCodeInput.dataset.promoId;\n          }\n        });\n    }\n\n    document.getElementById('promoCode').addEventListener('input', function () {\n      if (this.value.trim() === \"\") {\n        const baseAmount = 550.00;\n        document.getElementById('amount').value = baseAmount.toFixed(2);\n        document.getElementById('paymentSection').style.display = 'block';\n        document.getElementById('promoCodeMessage').innerHTML = \"\";\n        document.getElementById('creditCardExpirationMonth').classList.remove('is-invalid');\n        document.getElementById('creditCardExpirationMonth').setCustomValidity('');\n        document.getElementById('creditCardExpirationYear').classList.remove('is-invalid');\n        document.getElementById('creditCardExpirationYear').setCustomValidity('');\n        \/\/ Clear stored promo Id when input is cleared\n        if (this.dataset) {\n          delete this.dataset.promoId;\n        }\n      }\n    });\n\n    async function handleFormSubmit(event) {\n      event.preventDefault();\n\n      const form = document.getElementById('apiForm');\n      const submitButton = document.getElementById('submitButton');\n      const loadingSpinner = document.getElementById('loadingSpinner');\n\n      if (!form.checkValidity()) {\n        const invalidElements = form.querySelectorAll(':invalid');\n        invalidElements.forEach(elem => {\n          console.log(`${elem.name || elem.id} is invalid`);\n        });\n        console.log(\"Form is invalid, stopping submission.\");\n        form.classList.add('was-validated');\n        return;\n      }\n      console.log(\"Form is valid, preparing formData...\");\n\n      \/\/ Disable button and show spinner\n      submitButton.disabled = true;\n      loadingSpinner.style.display = 'flex';\n      document.body.style.overflow = 'hidden';\n\n      const formData = {\n        firstName: document.getElementById('firstName').value.trim(),\n        lastName: document.getElementById('lastName').value.trim(),\n        birthdate: `${document.getElementById('birthYear').value}-${document.getElementById('birthMonth').value}-${document.getElementById('birthDay').value}`,\n        gender: document.getElementById('gender').value.trim(),\n        email: document.getElementById('email').value.trim(),\n        phone: document.getElementById('phone').value.replace(\/\\D\/g, '').trim(),\n        shippingStreet: document.getElementById('shippingStreet').value.trim(),\n        shippingCity: document.getElementById('shippingCity').value.trim(),\n        shippingProvince: document.getElementById('shippingProvince').value.trim(),\n        shippingPostalCode: document.getElementById('shippingPostalCode').value.trim(),\n        creditCardName: document.getElementById('creditCardName').value.trim(),\n        creditCardNumber: document.getElementById('creditCardNumber').value.trim(),\n        creditCardExpirationMonth: document.getElementById('creditCardExpirationMonth').value.trim(),\n        creditCardExpirationYear: document.getElementById('creditCardExpirationYear').value.trim(),\n        creditCardCVV: document.getElementById('creditCardCVV').value.trim(),\n        stopBang: document.getElementById('stopBang')?.value.trim(),\n        referringDoctorFirstName: document.getElementById('doctorFirstName')?.value.trim(),\n        referringDoctorLastName: document.getElementById('doctorLastName')?.value.trim(),\n        referringDentistFirstName: document.getElementById('dentistFirstName')?.value.trim(),\n        referringDentistLastName: document.getElementById('dentistLastName')?.value.trim(),\n        referringDoctorId: selectedDoctorId,\n        referringDentistId: selectedDentistId,\n        promoId: (document.getElementById('promoCode').dataset && document.getElementById('promoCode').dataset.promoId) || \"\",\n        totalPaidAmount: document.getElementById('amount').value.trim(),\n        language: \"French\",\n      };\n\n      if (parseFloat(formData.totalPaidAmount) === 0) {\n        delete formData.creditCardName;\n        delete formData.creditCardNumber;\n        delete formData.creditCardExpirationMonth;\n        delete formData.creditCardExpirationYear;\n        delete formData.creditCardCVV;\n      }\n\n      console.log(\"Form data prepared:\", formData);\n\n      \/\/ Handle file upload with compression and PDF logic\n      const fileInput = document.getElementById('fileUpload');\n      if (fileInput.files.length > 0) {\n        const file = fileInput.files[0];\n        const isImage = file.type.startsWith('image\/');\n        const isPdf = file.type === 'application\/pdf';\n        let fileToUpload = file;\n\n        if (isPdf && file.size > 5 * 1024 * 1024) {\n          loadingSpinner.style.display = 'none';\n          submitButton.disabled = false;\n\n          await Swal.fire({\n            icon: 'warning',\n            title: 'Fichier trop volumineux',\n            html: 'Votre fichier PDF est trop volumineux pour \u00eatre t\u00e9l\u00e9vers\u00e9. Veuillez l\u2019envoyer par courriel \u00e0 <strong>support@dormalab.com<\/strong> apr\u00e8s avoir soumis le formulaire, en mentionnant votre nom.',\n            confirmButtonText: 'OK'\n          });\n\n          submitButton.disabled = true;\n          loadingSpinner.style.display = 'flex';\n          document.body.style.overflow = 'hidden';\n\n          delete formData.fileUpload;\n          await submitForm(formData, submitButton, loadingSpinner);\n          return;\n        }\n\n        if (isImage) {\n          try {\n            fileToUpload = await imageCompression(file, {\n              maxSizeMB: 1,\n              maxWidthOrHeight: 1000,\n              useWebWorker: true,\n            });\n\n            if (fileToUpload.size > 5 * 1024 * 1024) {\n              loadingSpinner.style.display = 'none';\n              submitButton.disabled = false;\n\n              await Swal.fire({\n                icon: 'warning',\n                title: 'Fichier trop volumineux',\n                html: 'M\u00eame apr\u00e8s compression, votre image est trop volumineuse. Veuillez l\u2019envoyer par courriel \u00e0 <strong>support@dormalab.com<\/strong> apr\u00e8s avoir soumis le formulaire, en mentionnant votre nom.',\n                confirmButtonText: 'OK'\n              });\n\n              submitButton.disabled = true;\n              loadingSpinner.style.display = 'flex';\n              document.body.style.overflow = 'hidden';\n\n              delete formData.fileUpload;\n              await submitForm(formData, submitButton, loadingSpinner);\n              return;\n            }\n          } catch (error) {\n            console.error(\"Erreur de compression d'image :\", error);\n            Swal.fire({\n              icon: 'error',\n              title: 'Erreur de fichier',\n              text: 'Impossible de traiter votre image. Veuillez essayer un fichier plus petit.',\n            });\n            submitButton.disabled = false;\n            loadingSpinner.style.display = 'none';\n            return;\n          }\n        }\n\n        const reader = new FileReader();\n        reader.onload = async () => {\n          formData.fileUpload = reader.result;\n          await submitForm(formData, submitButton, loadingSpinner);\n        };\n        reader.readAsDataURL(fileToUpload);\n      } else {\n        await submitForm(formData, submitButton, loadingSpinner);\n      }\n    }\n\n    function closeThankMessage() {\n      document.getElementById('thankMessage').style.display = 'none';\n      document.body.style.overflow = '';\n      document.getElementById('apiForm').reset();\n\n      document.getElementById('promoCode').value = \"\";\n      document.getElementById('promoCodeMessage').innerHTML = \"\";\n\n      const paymentSection = document.getElementById('paymentSection');\n      paymentSection.style.display = 'block';\n      document.getElementById('creditCardName').disabled = false;\n      document.getElementById('creditCardNumber').disabled = false;\n      document.getElementById('creditCardExpirationMonth').disabled = false;\n      document.getElementById('creditCardExpirationYear').disabled = false;\n      document.getElementById('creditCardCVV').disabled = false;\n      document.getElementById('amount').value = \"550.00\";\n      document.getElementById('creditCardExpirationMonth').classList.remove('is-invalid');\n      document.getElementById('creditCardExpirationMonth').setCustomValidity('');\n      document.getElementById('creditCardExpirationYear').classList.remove('is-invalid');\n      document.getElementById('creditCardExpirationYear').setCustomValidity('');\n      \/\/ Reset file input and spinner, enable submit button\n      document.getElementById('fileUpload').value = \"\";\n      document.getElementById('loadingSpinner').style.display = 'none';\n      document.getElementById('submitButton').disabled = false;\n    }\n\n    async function submitForm(formData, submitButton, loadingSpinner) {\n      try {\n        console.log(\"form data: \", formData);\n        const response = await fetch(BACKEND_API, {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\/json' },\n          body: JSON.stringify(formData),\n        });\n\n        if (response.ok) {\n          const result = await response.json();\n          console.log(\"Soumission r\u00e9ussie:\", result);\n          \n          \/\/ Push purchase event to dataLayer for GTM tracking\n          try {\n            window.dataLayer = window.dataLayer || [];\n            window.dataLayer.push({\n              event: \"sleepStudyPurchased\",\n              purchaseTotal: parseFloat(formData.totalPaidAmount) || 0\n            });\n            console.log(\"\u00c9v\u00e9nement d'achat envoy\u00e9 au dataLayer\");\n          } catch (e) {\n            console.log(\"Erreur lors de l'envoi au dataLayer:\", e);\n          }\n          \n          document.getElementById('thankMessage').style.display = 'flex';\n          document.getElementById('successCard').style.display = 'block'; \/\/ Show for GTM tracking\n          document.body.style.overflow = 'hidden';\n          const visitId = result.visitId; \n          const VISIT_DETAILS_URL = `https:\/\/api.summittravelhealthdev.com\/v1\/visit\/${visitId}\/getVisitDetails`;\n\n          fetch(VISIT_DETAILS_URL)\n          .then(response => response.json())\n          .then(data => {\n            console.log(\"D\u00e9tails de la visite re\u00e7us:\", data);\n            const questionnaireUrl = data.visit?.questionnaireUrl;\n            const questionnaireId = data.visit?.medicalQuestionnaireId;\n            \n            if (questionnaireUrl) {\n              const linkElement = document.getElementById('questionnaireLink');\n              linkElement.href = questionnaireUrl;\n              document.getElementById('questionnaireMessage').style.display = 'block';\n              \n              \/\/ Optionally redirect to questionnaire immediately\n              \/\/ Uncomment the line below to enable automatic redirect\n              \/\/ window.location.href = questionnaireUrl;\n            } else if (questionnaireId) {\n              \/\/ Fallback: construct URL if questionnaireUrl is not available\n              const fallbackUrl = `https:\/\/dormalab.com\/fr\/questionnaire-medical\/?formType=sleep&questionnaireId=${questionnaireId}`;\n              const linkElement = document.getElementById('questionnaireLink');\n              linkElement.href = fallbackUrl;\n              document.getElementById('questionnaireMessage').style.display = 'block';\n            }\n          })\n          .catch(error => console.error('Erreur lors de la r\u00e9cup\u00e9ration des d\u00e9tails de la visite :', error));\n\n        } else {\n          const result = await response.json();\n          let messageErreur = 'Une erreur est survenue lors du traitement de votre paiement. Veuillez v\u00e9rifier les informations fournies.';\n          if (result?.txn?.errorMessage) {\n            messageErreur = result.txn.errorMessage;\n          }\n          Swal.fire({\n            icon: 'error',\n            title: 'Erreur de Paiement',\n            text: messageErreur,\n          });\n        }\n      } catch (error) {\n        console.error('Erreur de soumission :', error);\n        console.log('Une erreur r\u00e9seau est survenue. Veuillez r\u00e9essayer plus tard.');\n      } finally {\n        submitButton.disabled = false;\n        loadingSpinner.style.display = 'none';\n      }\n    }\n\n    document.addEventListener('DOMContentLoaded', () => {\n      document.getElementById('thankMessage').style.display = 'none';\n      initAutocomplete();\n    });\n\n    document.getElementById('phone').addEventListener('blur', function (e) {\n      let value = e.target.value.replace(\/\\D\/g, '');\n      if (value.length > 10) value = value.slice(0, 10);\n      let formatted = value.replace(\/(\\d{3})(\\d{3})(\\d{0,4})\/, '($1) $2-$3').trim();\n      e.target.value = formatted;\n    });\n  <\/script>\n<\/body>\n\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Prix : 550 $ Le WatchPAT ONE est un test de sommeil \u00e0 domicile innovant qui permet de d\u00e9terminer l&rsquo;apn\u00e9e du sommeil. Comment \u00e7a fonctionne 1. Mise en place: Suivez les instructions fournies pour pr\u00e9parer correctement l&rsquo;appareil avant le coucher. 2. Synchronisation: T\u00e9l\u00e9chargez et configurez l&rsquo;application sur votre t\u00e9l\u00e9phone pour la synchroniser avec l&rsquo;appareil. 3. &#8230; <a title=\"Acheter un test \u00e0 domicile pour l&rsquo;apn\u00e9e du sommeil\" class=\"read-more\" href=\"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/\" aria-label=\"En savoir plus sur Acheter un test \u00e0 domicile pour l&rsquo;apn\u00e9e du sommeil\">Lire la suite<\/a><\/p>\n","protected":false},"author":20,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-36848","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Acheter un test \u00e0 domicile pour l&#039;apn\u00e9e du sommeil - 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\/test-a-domicile-pour-lapnee-du-sommeil\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Acheter un test \u00e0 domicile pour l&#039;apn\u00e9e du sommeil - Dorma Sleep Clinics\" \/>\n<meta property=\"og:description\" content=\"Prix : 550 $ Le WatchPAT ONE est un test de sommeil \u00e0 domicile innovant qui permet de d\u00e9terminer l&rsquo;apn\u00e9e du sommeil. Comment \u00e7a fonctionne 1. Mise en place: Suivez les instructions fournies pour pr\u00e9parer correctement l&rsquo;appareil avant le coucher. 2. Synchronisation: T\u00e9l\u00e9chargez et configurez l&rsquo;application sur votre t\u00e9l\u00e9phone pour la synchroniser avec l&rsquo;appareil. 3. ... Lire la suite\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/\" \/>\n<meta property=\"og:site_name\" content=\"Dorma Sleep Clinics\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-16T16:56:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/\",\"url\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/\",\"name\":\"Acheter un test \u00e0 domicile pour l'apn\u00e9e du sommeil - Dorma Sleep Clinics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn-assets.affirm.com\\\/images\\\/banners\\\/en\\\/AFFIRM-DSP-en_CA-B-540x2002x.jpg\",\"datePublished\":\"2024-07-02T15:03:37+00:00\",\"dateModified\":\"2026-02-16T16:56:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn-assets.affirm.com\\\/images\\\/banners\\\/en\\\/AFFIRM-DSP-en_CA-B-540x2002x.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn-assets.affirm.com\\\/images\\\/banners\\\/en\\\/AFFIRM-DSP-en_CA-B-540x2002x.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/test-a-domicile-pour-lapnee-du-sommeil\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dormalab.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Acheter un test \u00e0 domicile pour l&rsquo;apn\u00e9e du sommeil\"}]},{\"@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":"Acheter un test \u00e0 domicile pour l'apn\u00e9e du sommeil - 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\/test-a-domicile-pour-lapnee-du-sommeil\/","og_locale":"fr_FR","og_type":"article","og_title":"Acheter un test \u00e0 domicile pour l'apn\u00e9e du sommeil - Dorma Sleep Clinics","og_description":"Prix : 550 $ Le WatchPAT ONE est un test de sommeil \u00e0 domicile innovant qui permet de d\u00e9terminer l&rsquo;apn\u00e9e du sommeil. Comment \u00e7a fonctionne 1. Mise en place: Suivez les instructions fournies pour pr\u00e9parer correctement l&rsquo;appareil avant le coucher. 2. Synchronisation: T\u00e9l\u00e9chargez et configurez l&rsquo;application sur votre t\u00e9l\u00e9phone pour la synchroniser avec l&rsquo;appareil. 3. ... Lire la suite","og_url":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/","og_site_name":"Dorma Sleep Clinics","article_modified_time":"2026-02-16T16:56:25+00:00","og_image":[{"url":"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"7 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/","url":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/","name":"Acheter un test \u00e0 domicile pour l'apn\u00e9e du sommeil - Dorma Sleep Clinics","isPartOf":{"@id":"https:\/\/dormalab.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/#primaryimage"},"image":{"@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg","datePublished":"2024-07-02T15:03:37+00:00","dateModified":"2026-02-16T16:56:25+00:00","breadcrumb":{"@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/#primaryimage","url":"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg","contentUrl":"https:\/\/cdn-assets.affirm.com\/images\/banners\/en\/AFFIRM-DSP-en_CA-B-540x2002x.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/dormalab.com\/fr\/test-a-domicile-pour-lapnee-du-sommeil\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dormalab.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Acheter un test \u00e0 domicile pour l&rsquo;apn\u00e9e du sommeil"}]},{"@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\/36848","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\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/comments?post=36848"}],"version-history":[{"count":10,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages\/36848\/revisions"}],"predecessor-version":[{"id":42627,"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/pages\/36848\/revisions\/42627"}],"wp:attachment":[{"href":"https:\/\/dormalab.com\/fr\/wp-json\/wp\/v2\/media?parent=36848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}