{
    "uuid": "52ea8232ccd0d71f4111f3187dc3400f",
    "schema_kind": "intervention",
    "lang": "fr",
    "title": "Fiche d'intervention - Contrôle spa / jacuzzi public",
    "description": "Contrôle d'un spa ou jacuzzi public : traitement eau, pH, chlore et risque légionellose",
    "export_date": "2026-05-26 10:00:00",
    "dolibarr_version": "18.0.0",
    "extrafields": [
        {
            "name": "sp_etablissement",
            "label": "Établissement",
            "type": "varchar",
            "size": "200",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Nom et adresse",
            "pos": 100,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "sp_localisation",
            "label": "Localisation du spa",
            "type": "varchar",
            "size": "150",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Salle, niveau",
            "pos": 110,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "sp_type",
            "label": "Type de spa",
            "type": "select",
            "size": "",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": {
                "options": {
                    "spa_public": "Spa public ERP",
                    "jacuzzi_hotel": "Jacuzzi hôtel",
                    "bassin_balneo": "Bassin balnéo",
                    "spa_nordique": "Spa nordique"
                }
            },
            "help": "Catégorie",
            "pos": 120,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "spa_public",
            "alwayseditable": 0
        },
        {
            "name": "sp_volume",
            "label": "Volume (m3)",
            "type": "double",
            "size": "10,2",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Volume bassin",
            "pos": 130,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "sp_temperature",
            "label": "Température mesurée (°C)",
            "type": "double",
            "size": "5,1",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Eau du spa",
            "pos": 140,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "type_intervention",
            "label": "Type de contrôle",
            "type": "select",
            "size": "",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": {
                "options": {
                    "quotidien": "Contrôle quotidien",
                    "hebdomadaire": "Contrôle hebdomadaire",
                    "mensuel": "Contrôle mensuel",
                    "vidange": "Vidange complète",
                    "ars": "Prélèvement ARS"
                }
            },
            "help": "Nature intervention",
            "pos": 200,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "hebdomadaire",
            "alwayseditable": 0
        },
        {
            "name": "mesure_ph",
            "label": "pH mesuré",
            "type": "double",
            "size": "4,2",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Cible 6.9 à 7.7",
            "pos": 300,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "mesure_chlore_libre",
            "label": "Chlore libre (mg\/l)",
            "type": "double",
            "size": "5,2",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Cible 2 à 5 mg\/l (spa)",
            "pos": 310,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "mesure_chlore_total",
            "label": "Chlore total (mg\/l)",
            "type": "double",
            "size": "5,2",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Différence chlore lié",
            "pos": 320,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "mesure_redox",
            "label": "Potentiel redox (mV)",
            "type": "int",
            "size": "5",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Cible > 650 mV",
            "pos": 330,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "verif_filtration",
            "label": "Filtration OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Fonctionnement, pression",
            "pos": 340,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_pompe_doseuse",
            "label": "Pompe doseuse OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Injection produits",
            "pos": 350,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_buses_jets",
            "label": "Buses et jets OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Débit, étanchéité",
            "pos": 360,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_legionellose",
            "label": "Plan légionellose à jour",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Surveillance annuelle",
            "pos": 370,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_choc_chlore",
            "label": "Traitement choc chloré OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Périodique selon protocole",
            "pos": 380,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_carnet_sanitaire",
            "label": "Carnet sanitaire à jour",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Registre obligatoire",
            "pos": 390,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "verif_proprete",
            "label": "Propreté bassin OK",
            "type": "boolean",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Parois, ligne d'eau",
            "pos": 400,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "1",
            "alwayseditable": 0
        },
        {
            "name": "anomalies_constatees",
            "label": "Anomalies constatées",
            "type": "text",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 0,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Description défauts",
            "pos": 500,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "mesures_correctives",
            "label": "Mesures correctives",
            "type": "text",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 0,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Actions réalisées",
            "pos": 510,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "conclusion",
            "label": "Conclusion",
            "type": "select",
            "size": "",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": {
                "options": {
                    "apte": "APTE à l'utilisation",
                    "apte_reserve": "APTE avec réserves mineures",
                    "inapte": "INAPTE - Interdiction d'utilisation"
                }
            },
            "help": "Résultat du contrôle",
            "pos": 600,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "apte",
            "alwayseditable": 0
        },
        {
            "name": "date_prochaine_verif",
            "label": "Date prochain contrôle",
            "type": "date",
            "size": "",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Selon plan sanitaire",
            "pos": 610,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "verificateur_nom",
            "personal_data": 1,
            "label": "Nom de l'opérateur",
            "type": "varchar",
            "size": "100",
            "required": 1,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Personne habilitée",
            "pos": 700,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        },
        {
            "name": "qualification",
            "label": "Qualification",
            "type": "varchar",
            "size": "100",
            "required": 0,
            "unique": 0,
            "visible": 1,
            "totalizable": 0,
            "printable": 1,
            "param": [],
            "help": "Formation traitement eau",
            "pos": 710,
            "enabled": 1,
            "perms": "",
            "langfile": "",
            "computed": "",
            "default": "",
            "alwayseditable": 0
        }
    ],
    "pdf_layout": {
        "version": "1.0",
        "page": {
            "format": "A4",
            "orientation": "portrait",
            "margins": { "top": 20, "right": 15, "bottom": 20, "left": 15 },
            "font_family": "helvetica",
            "font_size": 10
        },
        "header": {
            "title": "Fiche de contrôle spa / jacuzzi public",
            "subtitle": "Traitement eau et surveillance légionellose",
            "logo_placeholder": "top-right",
            "show_page_number": true,
            "show_generated_date": true
        },
        "footer": {
            "text": "Document généré via schemas.cap-rel.fr",
            "legal_mentions": "Document à conserver selon le code de la santé publique"
        },
        "sections": [
            {
                "id": "identification",
                "title": "Identification du spa",
                "layout": "two_columns",
                "fields": [
                    "sp_etablissement",
                    "sp_localisation",
                    "sp_type",
                    "sp_volume",
                    "sp_temperature"
                ]
            },
            {
                "id": "intervention",
                "title": "Type de contrôle",
                "layout": "single_column",
                "fields": ["type_intervention"]
            },
            {
                "id": "mesures",
                "title": "Mesures physico-chimiques",
                "layout": "two_columns",
                "fields": [
                    "mesure_ph",
                    "mesure_chlore_libre",
                    "mesure_chlore_total",
                    "mesure_redox"
                ]
            },
            {
                "id": "equipements",
                "title": "Équipements techniques",
                "layout": "checklist",
                "fields": [
                    "verif_filtration",
                    "verif_pompe_doseuse",
                    "verif_buses_jets",
                    "verif_proprete"
                ]
            },
            {
                "id": "sanitaire",
                "title": "Volet sanitaire et légionellose",
                "layout": "checklist",
                "fields": [
                    "verif_legionellose",
                    "verif_choc_chlore",
                    "verif_carnet_sanitaire"
                ]
            },
            {
                "id": "observations",
                "title": "Anomalies et mesures correctives",
                "layout": "full_width",
                "fields": [
                    "anomalies_constatees",
                    "mesures_correctives"
                ]
            },
            {
                "id": "conclusion",
                "title": "Conclusion du contrôle",
                "layout": "highlight_box",
                "fields": ["conclusion", "date_prochaine_verif"]
            },
            {
                "id": "signatures",
                "title": "Opérateur",
                "layout": "signature_block",
                "fields": ["verificateur_nom", "qualification"],
                "signature_boxes": [
                    { "label": "Signature opérateur", "for_field": "verificateur_nom" },
                    { "label": "Signature exploitant", "for_field": null }
                ]
            }
        ],
        "field_render": {
            "sp_etablissement": { "style": "bold" },
            "conclusion": {
                "style": "highlight",
                "color_by_value": {
                    "apte": "#1f8a1f",
                    "apte_reserve": "#e69500",
                    "inapte": "#c00000"
                }
            },
            "anomalies_constatees": { "min_height": 30, "show_if_empty": false },
            "mesures_correctives": { "min_height": 30, "show_if_empty": false },
            "sp_volume": { "suffix": " m³" },
            "sp_temperature": { "suffix": " °C" },
            "mesure_chlore_libre": { "suffix": " mg/l" },
            "mesure_chlore_total": { "suffix": " mg/l" },
            "mesure_redox": { "suffix": " mV" }
        }
    }
}
