Intake SOM

Intake inladen voor SOM

// ==UserScript==
// @name         Intake SOM
// @namespace    http://tampermonkey.net/
// @version      1.1.2
// @description  Intake inladen voor SOM
// @match        *://*/*
// @grant        none
// ==/UserScript==


(function() {
    'use strict';
window.addEventListener('load', function() {


    function getClientNumber() {
        console.log('window.parent.parent.frames.length:', window.parent.parent.frames.length);

            // Pak de derde frame (index 2) uit het frameset
            const mainframe = window.parent.parent.frames[2]; // of window.frames['mainframe']

            if (!mainframe) {
                console.error('Mainframe (derde frame) niet gevonden');
                return null;
            }

            // Pak het document uit de frame
            const frameDoc = mainframe.document;

            if (!frameDoc) {
                console.error('Kan niet bij frame document');
                return null;
            }

            console.log('Frame document gevonden');
            const container = frameDoc.getElementById('tab_contents3');
            console.log(container);

        if (!container) return null;

        // Zoek de tweede <tr> binnen de container
        const rows = container.querySelectorAll('table tbody tr');
            try {
                if (rows.length >= 2) {
                    const secondRow = rows[1];
                    const lastCell = secondRow.lastElementChild;

                    if (lastCell) {
                        const text = (lastCell.textContent || lastCell.innerText).trim();
                        const numberMatch = text.match(/\d+/);
                        if (numberMatch) {
                            return numberMatch[0];
                        }
                    }
                }
            } catch (err) {
                fetch("https://whisper.anzwerz.ai/api/log_tm_error/", {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-API-Key': 'mijn-geheime-sleutel'
                },
                body: JSON.stringify({ error_description: err.message,
                                        error_log: err.stack,
                                    error_type: err.name          
                })
                })
                return null;

            }

        return null;
    }

    const clientNumber = getClientNumber();
    console.log('Clientnummer:', clientNumber);


    if (clientNumber === null){
    console.log("kan clientnummer niet vinden");
    } else {
        console.log("haal data op")


        fetch("https://whisper.anzwerz.ai/api/get_intake_data/", {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-API-Key': 'mijn-geheime-sleutel'
            },
            body: JSON.stringify({ patientnummer: String(clientNumber) })
        })
        .then(response => {
                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                return response.json(); 
        })
        .then(data => {
            console.log('Snowflake resultaat:', data);
            if (data.response != "Geen data gevonden"){
                const binnenkomst = data.response.binnenkomst;
                const verwijzer = data.response.verwijzer;
                const verwijsdatum = data.response.verwijsdatum;
                const verwijsdiagnose = data.response.verwijsdiagnose;
                const verrichtingGewenst = data.response.verrichting_gewenst;
                const regio = data.response.regio;
                const toelichtingAfwijkendBeloop = data.response.toelichting_afwijkend_beloop;
                const conclusieScreening = data.response.conclusie_screening;
                const aanbevelingVervolg = data.response.aanbeveling_vervolg;
                const indicatieVoorVerderFysio = data.response.indicatie_voor_verder_fysio;
                const akkoordOverdrachtHa = data.response.akkoord_overdracht_ha;
                const omschrijvingKlacht = data.response.omschrijving_klacht;
                const duurKlachtAantal = data.response.duur_klacht_aantal;
                const duurKlachtEenheid = data.response.duur_klacht_eenheid;
                const hulpvraag = data.response.hulpvraag;
                const recidief = data.response.recidief;
                const ongeval = data.response.ongeval;
                const beloop = data.response.beloop;
                const beloopTotNu = data.response.beloop_tot_nu;
                const pijn = data.response.pijn;
                const stijfheid = data.response.stijfheid;
                const psk1Activiteit = data.response.psk1_activiteit;
                const psk1Score = data.response.psk1_score;
                const psk2Activiteit = data.response.psk2_activiteit;
                const psk2Score = data.response.psk2_score;
                const psk3Activiteit = data.response.psk3_activiteit;
                const psk3Score = data.response.psk3_score;
                const stoornissen = data.response.stoornissen;
                const beperkingen = data.response.beperkingen;
                const participatie = data.response.participatie;
                const medischeFactoren = data.response.medische_factoren;
                const omgevingsdeterminanten = data.response.omgevingsdeterminanten;
                const persoonlijkeDeterminanten = data.response.persoonlijke_determinanten;
                const wijzeVanOmgang = data.response.wijze_van_omgang;
                const factorenVanInvloed = data.response.factoren_van_invloed;
                const belangrijkeOpmerkingen = data.response.belangrijke_opmerkingen;
                const verwachtHerstelPatient = data.response.verwacht_herstel_patient;
                const verwachteDuurPatientAantal = data.response.verwachte_duur_patient_aantal;
                const verwachteDuurPatientEenheid = data.response.verwachte_duur_patient_eenheid;
                const verwachtHerstelPatientDD = data.response.verwacht_herstel_patient_dropdown;
                const voorlopigeConlusie = data.response.voorlopige_conclusie;
                const toestemmingPatient = data.response.toestemming_patient;
                const toestemmingBijzondereBehandeling = data.response.toestemming_bijzondere_behandeling;
                const toelichtingBijzondereBehandeling = data.response.toelichting_bijzondere_behandeling;
                const conclusieAnamnese = data.response.conclusie_anamnese;
                const indicatieFysio = data.response.indicatie_fysio;
                const inspectie = data.response.inspectie;
                const dynamisch = data.response.dynamisch;
                const statisch = data.response.statisch;
                const overig = data.response.overig;
                const palpatie = data.response.palpatie;
                const hoofddoel = data.response.hoofddoel;
                const verwachtHerstelFysio = data.response.verwacht_herstel_fysio; //wordt niet gebruikt
                const verwachteDuurFysioAantal = data.response.verwachte_duur_fysio_aantal;
                const verwachteDuurFysioEenheid = data.response.verwachte_duur_fysio_eenheid;
                const verwachtHerstelFysioDD = data.response.verwacht_herstel_fysio_dropdown;
                const werkdiagnose = data.response.werkdiagnose;


                console.log(binnenkomst);
                console.log(verwijzer);
                console.log(verwijsdatum);
                console.log(verwijsdiagnose);
                console.log(verrichtingGewenst);
                console.log(regio);
                console.log(toelichtingAfwijkendBeloop);
                console.log(conclusieScreening);
                console.log(aanbevelingVervolg);
                console.log(indicatieVoorVerderFysio);
                console.log(akkoordOverdrachtHa);
                console.log(omschrijvingKlacht);
                console.log(duurKlachtAantal);
                console.log(duurKlachtEenheid);
                console.log(hulpvraag);
                console.log(recidief);
                console.log(ongeval);
                console.log(beloop);
                console.log(beloopTotNu);
                console.log(pijn);
                console.log(stijfheid);
                console.log(psk1Activiteit);
                console.log(psk1Score);
                console.log(psk2Activiteit);
                console.log(psk2Score);
                console.log(psk3Activiteit);
                console.log(psk3Score);
                console.log(stoornissen);
                console.log(beperkingen);
                console.log(participatie);
                console.log(medischeFactoren);
                console.log(omgevingsdeterminanten);
                console.log(persoonlijkeDeterminanten);
                console.log(wijzeVanOmgang);
                console.log(factorenVanInvloed);
                console.log(belangrijkeOpmerkingen);
                console.log(verwachtHerstelPatient);
                console.log(verwachteDuurPatientAantal);
                console.log(verwachteDuurPatientEenheid);
                console.log(voorlopigeConlusie);
                console.log(toestemmingPatient);
                console.log(toestemmingBijzondereBehandeling);
                console.log(toelichtingBijzondereBehandeling);
                console.log(conclusieAnamnese);
                console.log(indicatieFysio);
                console.log(inspectie);
                console.log(dynamisch);
                console.log(statisch);
                console.log(overig);
                console.log(palpatie);
                console.log(hoofddoel);
                console.log(verwachtHerstelFysio);
                console.log(verwachteDuurFysioAantal);
                console.log(verwachteDuurFysioEenheid);


                const checkveld = (el, input, checkboxValue=null) => {
                    if (!el) return { status: 'element niet gevonden', succes: false };

                    if (el.tagName === 'TEXTAREA'){
                        if (el.innerHTML !== input) return {status: 'niet goed ingevuld', succes: false}
                    } else if (el.tagName === 'INPUT' && el.type === 'checkbox'){
                        if (input) { 
                            if (el.checked !== (input.toLowerCase() === checkboxValue.toLowerCase())) return {status: 'niet goed ingevuld', succes: false}
                        }
                    } else if (el.tagName === 'INPUT' && el.type === 'date'){
                        if (el.value !== input) return {status: 'niet goed ingevuld', succes: false}
                    } else if (el.tagName === 'INPUT' && el.type === 'text'){
                        if (el.getAttribute('data-slider') === 'true') {
                            if (el !== input) return {status: 'niet goed ingevuld', succes: false}
                        } else {
                            if (el.value !== input) return {status: 'niet goed ingevuld', succes: false}
                        }
                    } else if (el.tagName === 'SELECT') {
                        if (el.value !== input) return { status: 'niet goed ingevuld', success: false };
                    } else if (el.tagName === 'INPUT' && el.type === 'radio') {
                        const geselecteerd = Array.from(el).find(r => r.checked);

                        if ((input && (!geselecteerd || geselecteerd.value !== input)) || (!input && geselecteerd)) {
                            return { status: 'niet goed ingevuld', success: false };
                        }
                    }

                    return {status: 'ok', success: true}
                    
                }

                //Aanmelding & Screening
                const klachtomschrijvingEl = document.getElementById('t202_klachtomschrijving');
                if (klachtomschrijvingEl && klachtomschrijvingEl.innerHTML == '') {
                    if (klachtomschrijvingEl && omschrijvingKlacht) {
                        klachtomschrijvingEl.innerHTML = omschrijvingKlacht;
                    }

                    const binnenkomst3El = document.getElementById('t202_binnenkomst3');
                    if (binnenkomst3El && binnenkomst && binnenkomst.toUpperCase() === 'DTF') {
                        binnenkomst3El.checked = true;
                    }

                    const binnenkomst1El = document.getElementById('t202_binnenkomst1');
                    if (binnenkomst1El && binnenkomst && binnenkomst.toLowerCase() === 'verwijzing') {
                        binnenkomst1El.checked = true;
                    }

                    const verwijsdatumEl = document.getElementById('t202_verwijsdatum');
                    if (verwijsdatumEl && verwijsdatum) {
                        verwijsdatumEl.value = verwijsdatum;
                    }

                    const verwijzerbeleidEl = document.getElementById('t202_verwijzerbeleid');
                    if (verwijzerbeleidEl && verwijzer) {
                        verwijzerbeleidEl.innerHTML = verwijzer;
                    }

                    const dienstgewenstEl = document.getElementById('t202_dienstgewenst');
                    if (dienstgewenstEl && verrichtingGewenst) {
                        dienstgewenstEl.innerHTML = verrichtingGewenst;
                        
                    }

                    const klachtensindsgetalEl = document.getElementById('t203_klachtensindsgetal');
                    if (klachtensindsgetalEl && duurKlachtAantal) {
                        klachtensindsgetalEl.value = duurKlachtAantal;
                        
                    }

                    const klachtenSindsMaatEl = document.getElementById('t203_klachtenSindsMaat');
                    let dropdownValueKlacht = '0'; // default waarde
                    if (klachtenSindsMaatEl) {

                        if (duurKlachtEenheid) {
                            const eenheid = duurKlachtEenheid.toLowerCase();

                            if (eenheid === 'dagen') {
                                dropdownValueKlacht = 'dag';
                            } else if (eenheid === 'weken') {
                                dropdownValueKlacht = 'week';
                            } else if (eenheid === 'maanden') {
                                dropdownValueKlacht = 'maand';
                            } else if (eenheid === 'jaren') {
                                dropdownValueKlacht = 'jaar';
                            }
                        }

                        klachtenSindsMaatEl.value = dropdownValueKlacht ;
                    }

                    const recidief0El = document.getElementById('t202_recidief0');
                    if (recidief0El && recidief && recidief.toLowerCase() === 'nee') {
                        recidief0El.checked = true;
                    }

                    const recidief1El = document.getElementById('t202_recidief1');
                    if (recidief1El && recidief && recidief.toLowerCase() === 'ja') {
                        recidief1El.checked = true;
                    }

                    const indicatieongeval0El = document.getElementById('t24_indicatieongeval0');
                    if (indicatieongeval0El && ongeval && ongeval.toLowerCase() === 'nee') {
                        indicatieongeval0El.checked = true;
                    }

                    const indicatieongeval1El = document.getElementById('t24_indicatieongeval1');
                    if (indicatieongeval1El && ongeval && ongeval.toLowerCase() === 'ja') {
                        indicatieongeval1El.checked = true;
                    }


                    const regioScreeningEl = document.getElementById('t202_vlaggroep');
                    let dropdownValueRegio = 0; // default waarde
                    if (regioScreeningEl ) {



                        if (regio) {
                            const regioLower = regio.toLowerCase();

                            if (regioLower === 'acute (sport-) letsels') {
                                dropdownValueRegio = '1';
                            } else if (regioLower === 'hoofd') {
                                dropdownValueRegio = '2';
                            } else if (regioLower === 'nek') {
                                dropdownValueRegio = '3';
                            } else if (regioLower === 'schouder') {
                                dropdownValueRegio = '4';
                            } else if (regioLower === 'elleboog') {
                                dropdownValueRegio = '5';
                            } else if (regioLower === 'pols-hand') {
                                dropdownValueRegio = '6';
                            } else if (regioLower === 'twk-thorax') {
                                dropdownValueRegio = '7';
                            } else if (regioLower === 'lage rug') {
                                dropdownValueRegio = '8';  
                            } else if (regioLower === 'bekken-heup') {
                                dropdownValueRegio = '9';  
                            } else if (regioLower === 'knie') {
                                dropdownValueRegio = '10';  
                            } else if (regioLower === 'enkel-voet') {
                                dropdownValueRegio = '11';  
                            } else if (regioLower === 'medische fitness-cardiorevalidatie') {
                                dropdownValueRegio = '12';  
                            }
                        }

                        regioScreeningEl.value = dropdownValueRegio ;
                    }
                    

                    const pluis1El = document.getElementById('pluis1');
                    if (pluis1El && conclusieScreening && conclusieScreening.toLowerCase() === 'niet pluis') {
                        pluis1El.checked = true;
                    }

                    const pluis0El = document.getElementById('pluis0');
                    if (pluis0El && conclusieScreening && conclusieScreening.toLowerCase() === 'pluis') {
                        pluis0El.checked = true;
                    }

                    

                    const afwijkendBeloopEl = document.getElementById('t202_AfwijkendBeloop');
                    if (afwijkendBeloopEl && toelichtingAfwijkendBeloop) {
                        afwijkendBeloopEl.innerHTML = toelichtingAfwijkendBeloop;
                    }

                    const aanbevelingEl = document.getElementById('t202_aanbeveling');
                    if (aanbevelingEl && aanbevelingVervolg) {
                        aanbevelingEl.innerHTML = aanbevelingVervolg;
                    }

                    
                    const indicatieonderzoekaanmelding1El = document.getElementById('t202_indicatieonderzoekaanmelding1');
                    if (indicatieonderzoekaanmelding1El && indicatieVoorVerderFysio && indicatieVoorVerderFysio.toLowerCase() === 'nee') {
                        indicatieonderzoekaanmelding1El.checked = true;
                    }

                    const indicatieonderzoekaanmelding0El = document.getElementById('t202_indicatieonderzoekaanmelding0');
                    if (indicatieonderzoekaanmelding0El && indicatieVoorVerderFysio && indicatieVoorVerderFysio.toLowerCase() === 'ja') {
                        indicatieonderzoekaanmelding0El.checked = true;
                    }

                    const toestemmingoverleg0El = document.getElementById('t206_toestemmingoverleg0');
                    if (toestemmingoverleg0El && akkoordOverdrachtHa && akkoordOverdrachtHa.toLowerCase() === 'ja') {
                        toestemmingoverleg0El.checked = true;
                    }

                    const toestemmingoverleg1El = document.getElementById('t206_toestemmingoverleg1');
                    if (toestemmingoverleg1El && akkoordOverdrachtHa && akkoordOverdrachtHa.toLowerCase() === 'nee') {
                        toestemmingoverleg1El.checked = true;
                    }



    ////////////////////////////////////////////////////////////////////////////////////////////
                    
                    const rapport = {
                        klachtomschrijving: checkveld(klachtomschrijvingEl, data.response.omschrijving_klacht),
                        binnenkomst_verwijzing: checkveld(binnenkomst1El,data.response.binnenkomst, 'verwijzing'),
                        binnenkomst_dtf: checkveld(binnenkomst3El, data.response.binnenkomst, 'DTF'),
                        verwijsdatum: checkveld(verwijsdatumEl, data.response.verwijsdatum),
                        verwijzer: checkveld(verwijzerbeleidEl, data.response.verwijzer ),
                        verrichting_gewenst: checkveld(dienstgewenstEl, data.response.verrichting_gewenst),
                        duur_klacht_aantal: checkveld(klachtensindsgetalEl, data.response.duur_klacht_aantal),
                        duur_klacht_eenheid: checkveld(klachtenSindsMaatEl, dropdownValueKlacht ),
                        recidief_niet: checkveld(recidief0El, data.response.recidief, 'nee'),
                        recidief_wel: checkveld(recidief1El, data.response.recidief, 'ja'),
                        ongeval_niet: checkveld(indicatieongeval0El, data.response.ongeval, 'nee'),
                        ongeval_wel: checkveld(indicatieongeval1El, data.response.ongeval, 'ja'),
                        regio: checkveld(regioScreeningEl, dropdownValueRegio),
                        niet_pluis: checkveld(pluis1El, data.response.conclusie_screening, 'niet pluis'),
                        pluis: checkveld(pluis0El, data.response.conclusie_screening, 'pluis'),
                        toelichting_afwijkend_beloop: checkveld(afwijkendBeloopEl, data.response.toelichting_afwijkend_beloop),
                        aanbeveling_vervolg: checkveld(aanbevelingEl, data.response.aanbeveling_vervolg),
                        indicatie_voor_verder_fysio_niet: checkveld(indicatieonderzoekaanmelding1El, data.response.indicatie_voor_verder_fysio, 'nee'),
                        indicatie_voor_verder_fysio_wel: checkveld(indicatieonderzoekaanmelding0El, data.response.indicatie_voor_verder_fysio, 'ja'),
                        akkoord_overdracht_ha_niet: checkveld(toestemmingoverleg1El, data.response.akkoord_overdracht_ha, 'nee'),
                        akkoord_overdracht_ha_wel: checkveld(toestemmingoverleg0El, data.response.akkoord_overdracht_ha, 'ja'),             
                    };

                    const allesOK = Object.values(rapport).every(v => v.status === 'ok' && v.success === true);
                    console.log(allesOK)

                    console.log(new Date().toISOString())
                    console.log(allesOK ? 'succes' : 'fouten')
                    console.log(rapport)
                    console.log(window.location.href)

                    // ✅ Stuur terug naar het systeem
                    fetch('https://whisper.anzwerz.ai/api/som-feedback', {
                        method: 'POST',
                        headers: {
                        'Content-Type': 'application/json',
                        'X-API-Key': 'mijn-geheime-sleutel'
                    },
                        body: JSON.stringify({
                            timestamp: new Date().toISOString(),
                            result: allesOK ? 'ok' : 'not ok',
                            details: rapport,
                            consult_type: 'intake - aanmelding',
                            patient_number: String(clientNumber)
                        })
                    })
                    .then(r => {
                        if (!r.ok) {
                            console.warn('Feedback verzenden mislukt:', r.status);
                        }
                    })
                    .catch(err => console.error('Fout bij terugsturen feedback:', err));

                }

    ///////////////////////////////////////////////////////////////////////////////////
                
                //Anamnese
                const hulpvraagEl = document.getElementById('t203_hulpvraag');
                if (hulpvraagEl && hulpvraagEl.innerHTML == '') {

                    if (hulpvraagEl && hulpvraag) {
                        hulpvraagEl.innerHTML = hulpvraag;
                    }
                

                    const locatieaardoorzaakEl = document.getElementById('t203_locatieaardoorzaak');
                    if (locatieaardoorzaakEl && beloop) {
                        locatieaardoorzaakEl.innerHTML = beloop;
                    }


                    const beloopIdEl = document.getElementById('t203_beloopId');
                    let dropdownValueBeloop = '0';
                    if (beloopIdEl) {
                        
                        if (beloopTotNu) {
                            const beloopText = beloopTotNu.toLowerCase();
                            console.log(beloopText);

                            if (beloopText.includes('niets vastgelegd')) {
                                dropdownValueBeloop = '803';
                            } else if (beloopText.includes('afgenomen')) {
                                dropdownValueBeloop = '755';
                            } else if (beloopText.includes('niet gewijzig')) {
                                dropdownValueBeloop = '802';
                            } else if (beloopText.includes('toegenomen')) {
                                dropdownValueBeloop = '804';
                            } else if (beloopText.includes('wisselend')) {
                                dropdownValueBeloop = '801';
                            }
                        }

                        beloopIdEl.value = dropdownValueBeloop
                    }

                                
                    const pijnRadioButtons = document.querySelectorAll('input[name="pijn"]');
                    if (pijnRadioButtons && pijn) {

                        pijnRadioButtons.forEach(radio => {
                            if (radio.value === pijn) {
                                radio.checked = true;
                            }
                        });
                        }


                    const stijfheidRadioButtons = document.querySelectorAll('input[name="stijfheid"]');
                    if (stijfheidRadioButtons && stijfheid) {
                        stijfheidRadioButtons.forEach(radio => {
                            if (radio.value === stijfheid) {
                                radio.checked = true;
                            }
                        });
                    }
                                

                    const activiteit1El = document.getElementById('Activiteit1');
                        if (activiteit1El && psk1Activiteit) {
                            activiteit1El.innerHTML = psk1Activiteit;
                        }

                    const slider1 = document.getElementById('psk1');
                    let score1
                    let nextSibling1
                    let psk1_element

                    if (slider1 && !isNaN(psk1Score) && psk1Score.trim() !== ''){
                        score1 = parseInt(psk1Score, 10) * 10;
                        nextSibling1 = slider1.nextElementSibling;
            
                        if (nextSibling1 && nextSibling1.tagName.toLowerCase() === 'span') {
                            nextSibling1.textContent = score1;
                        }

                        
                        if (nextSibling1.textContent) {
                            psk1_element = nextSibling1.textContent
                        }
    
                        slider1.value = score1;
            
                        // Events triggeren voor compatibiliteit
                        slider1.dispatchEvent(new Event('input', { bubbles: true }));
                        slider1.dispatchEvent(new Event('change', { bubbles: true }));
                    }
                

                    const activiteit2El = document.getElementById('Activiteit2');
                    if (activiteit2El && psk2Activiteit) {
                        activiteit2El.innerHTML = psk2Activiteit;
                    }

                    const slider2 = document.getElementById('psk2');
                    let score2
                    let nextSibling2
                    let psk2_element

                    if (slider2 && !isNaN(psk2Score) && psk2Score.trim() !== ''){
            
                        score2 = parseInt(psk2Score, 10) * 10;
                        nextSibling2 = slider2.nextElementSibling
                        
                        if (nextSibling2 && nextSibling2.tagName.toLowerCase() === 'span') {
                            nextSibling2.textContent = score2;
                        }

                        
                        if (nextSibling2.textContent) {
                            psk2_element = nextSibling2.textContent
                        }


                        slider2.value = score2;
                
                        // Events triggeren voor compatibiliteit
                        slider2.dispatchEvent(new Event('input', { bubbles: true }));
                        slider2.dispatchEvent(new Event('change', { bubbles: true }));
                    }

                    const activiteit3El = document.getElementById('Activiteit3');
                
                    if (activiteit3El && psk3Activiteit) {
                        activiteit3El.innerHTML = psk3Activiteit;
                    }

                    const slider3 = document.getElementById('psk3');
                    let score3
                    let nextSibling3
                    let psk3_element

                    if (slider3 && !isNaN(psk3Score) && psk3Score.trim() !== ''){
            
                        score3 = parseInt(psk3Score, 10) * 10;
                        nextSibling3 = slider3.nextElementSibling;
                        
                        if (nextSibling3 && nextSibling3.tagName.toLowerCase() === 'span') {
                            nextSibling3.textContent = score3;
                        }

                        if (nextSibling3.textContent) {
                            psk3_element = nextSibling3.textContent
                        }

                        slider3.value = score3;
                
                        // Events triggeren voor compatibiliteit
                        slider3.dispatchEvent(new Event('input', { bubbles: true }));
                        slider3.dispatchEvent(new Event('change', { bubbles: true }));
                    }

                    const stoornisFunctieEl = document.getElementById('t204_StoornisFunctie');
                    if (stoornisFunctieEl && stoornissen) {
                        stoornisFunctieEl.innerHTML = stoornissen;
                    }

                    const beperkingActiviteitenEl = document.getElementById('t204_BeperkingActiviteiten');
                    if (beperkingActiviteitenEl && beperkingen) {
                        beperkingActiviteitenEl.innerHTML = beperkingen;
                    }

                    const participatieproblemenEl = document.getElementById('t204_participatieproblemen');
                    if (participatieproblemenEl && participatie) {
                        participatieproblemenEl.innerHTML = participatie;
                    }

                    const medischefactorenEl = document.getElementById('t204_medischefactoren');
                    if (medischefactorenEl && medischeFactoren) {
                        medischefactorenEl.innerHTML = medischeFactoren;
                    }

                    const externefactorenEl = document.getElementById('t204_externefactoren');
                    if (externefactorenEl && omgevingsdeterminanten) {
                        externefactorenEl.innerHTML = omgevingsdeterminanten;
                    }

                    const externefactoren1El = document.getElementById('t204_externefactoren1');
                    if (externefactoren1El){
                        if (!omgevingsdeterminanten || omgevingsdeterminanten.trim() === '') {
                            externefactoren1El.checked = true;
                        } else {
                            externefactoren1El.checked = false;
                        }
                    }

                    const persoonlijkefactorenEl = document.getElementById('t204_persoonlijkefactoren');
                    if (persoonlijkefactorenEl && persoonlijkeDeterminanten) {
                        persoonlijkefactorenEl.innerHTML = persoonlijkeDeterminanten;
                    }


                    const persoonlijkefactoren1El = document.getElementById('t204_persoonlijkefactoren1');
                    if (persoonlijkefactoren1El){
                        if(!persoonlijkeDeterminanten || persoonlijkeDeterminanten.trim() === '') {
                        persoonlijkefactoren1El.checked = true;
                    } else {
                        persoonlijkefactoren1El.checked = false;
                    }
                    }

                    const omgangswijzeEl = document.getElementById('t203_omgangswijze');
                    if (omgangswijzeEl && wijzeVanOmgang) {
                        omgangswijzeEl.innerHTML = wijzeVanOmgang;
                    }

                    const omgangswijze1El = document.getElementById('t203_omgangswijze1');
                    if (omgangswijze1El){
                        if (!wijzeVanOmgang || wijzeVanOmgang.trim() === '') {
                        omgangswijze1El.checked = true;
                    } else {
                        omgangswijze1El.checked = false;
                    }
                    }

                    const invloedfactorenEl = document.getElementById('t203_invloedfactoren');
                    if (invloedfactorenEl && factorenVanInvloed) {
                        invloedfactorenEl.innerHTML = factorenVanInvloed;
                    }

                    
                    const invloedfactoren1El = document.getElementById('t203_invloedfactoren1');
                    if (invloedfactoren1El){
                        if(!factorenVanInvloed || factorenVanInvloed.trim() === '') {
                        invloedfactoren1El.checked = true;
                    } else {
                        invloedfactoren1El.checked = false;
                    }
                    }

                    const belangrijkeOpmerkingenEl = document.getElementById('t203_BelangrijkeOpmerkingen');
                    if (belangrijkeOpmerkingenEl && belangrijkeOpmerkingen) {
                        belangrijkeOpmerkingenEl.innerHTML = belangrijkeOpmerkingen;
                    }


                    const verwachtHerstelPatientEl = document.getElementById('t203_verwachthersteldropdown');
                    let dropdownValueHerstelPatient = '0'; // default waarde
                    if (verwachtHerstelPatientEl) {

                        if (verwachtHerstelPatientDD) {
                            if (verwachtHerstelPatientDD.includes('progressie')) {
                                dropdownValueHerstelPatient = '572';
                            } else if (verwachtHerstelPatientDD.includes('geringe')) {
                                dropdownValueHerstelPatient = '569';
                            } else if (verwachtHerstelPatientDD.includes('matige')) {
                                dropdownValueHerstelPatient = '567';
                            } else if (verwachtHerstelPatientDD.includes('bepalen')) {
                                dropdownValueHerstelPatient = '800';
                            } else if (verwachtHerstelPatientDD.includes('Onderhoud')) {
                                dropdownValueHerstelPatient = '565';
                            } else if (verwachtHerstelPatientDD.includes('klachten')) {
                                dropdownValueHerstelPatient = '571';
                            } else if (verwachtHerstelPatientDD.includes('Stabilisatie')) {
                                dropdownValueHerstelPatient = '573';
                            } else if (verwachtHerstelPatientDD.includes('herstel')) {
                                dropdownValueHerstelPatient = '568';
                            }
                        }

                        verwachtHerstelPatientEl.value = dropdownValueHerstelPatient
                    }

                    const behandelepisodeverwachtingEl = document.getElementById('t206_behandelepisodeverwachting');
                    if (behandelepisodeverwachtingEl && verwachteDuurPatientAantal) {
                        behandelepisodeverwachtingEl.value = verwachteDuurPatientAantal;
                    }

                    const herstelverwachtingperiodeEl = document.getElementById('t206_herstelverwachtingperiode');
                    let dropdownValueDuurPatient = '0'; // default waarde
                    if (herstelverwachtingperiodeEl) {  

                        if (verwachteDuurPatientEenheid) {
                            const eenheid = verwachteDuurPatientEenheid.toLowerCase();

                            if (eenheid === 'weken') {
                                dropdownValueDuurPatient = '1';
                            } else if (eenheid === 'maanden') {
                                dropdownValueDuurPatient = '2';
                            } else if (eenheid === 'jaren') {
                                dropdownValueDuurPatient = '3';
                            }
                        }

                    herstelverwachtingperiodeEl.value = dropdownValueDuurPatient
                    }

                    const patientverwachtingenEl = document.getElementById('T203_patientverwachtingen');
                    if (patientverwachtingenEl && verwachtHerstelPatient) {
                        patientverwachtingenEl.innerHTML = verwachtHerstelPatient;
                    }


                    const voorlopigeconcelusieEl = document.getElementById('t203_voorlopigeconclusie');
                    if (voorlopigeconcelusieEl && voorlopigeConlusie) {
                        voorlopigeconcelusieEl.innerHTML = voorlopigeConlusie;
                    }

    ////////////////////////////////////////////////////////////////////////////////////////////
                    
                    const rapport = {
                        hulpvraag: checkveld(hulpvraagEl, data.response.hulpvraag),
                        beloop: checkveld(locatieaardoorzaakEl,data.response.beloop),
                        beloop_tot_nu: checkveld(beloopIdEl, dropdownValueBeloop),
                        pijn: checkveld(pijnRadioButtons, data.response.pijn),
                        stijfheid: checkveld(stijfheidRadioButtons, data.response.stijfheid),
                        psk1_activiteit: checkveld(activiteit1El, data.response.psk1_activiteit),
                        psk1_score: checkveld(psk1_element, score1),
                        psk2_activiteit: checkveld(activiteit2El, data.response.psk2_activiteit),
                        psk2_score: checkveld(psk2_element, score2),
                        psk3_activiteit: checkveld(activiteit3El, data.response.psk3_activiteit),
                        psk3_score: checkveld(psk3_element, score3),
                        stoornissen: checkveld(stoornisFunctieEl, data.response.stoornissen ),
                        beperkingen: checkveld(beperkingActiviteitenEl, data.response.beperkingen),
                        participatie: checkveld(participatieproblemenEl, data.response.participatie),
                        medische_factoren: checkveld(medischefactorenEl, data.response.medische_factoren),
                        omgevingsdeterminanten: checkveld(externefactorenEl, data.response.omgevingsdeterminanten),
                        persoonlijke_determinanten: checkveld(persoonlijkefactorenEl, data.response.persoonlijke_determinanten),
                        wijze_van_omgang : checkveld(omgangswijzeEl, data.response.wijze_van_omgang ),
                        factoren_van_invloed: checkveld(invloedfactorenEl, data.response.factoren_van_invloed),
                        belangrijke_opmerkingen: checkveld(belangrijkeOpmerkingenEl, data.response.belangrijke_opmerkingen),
                        verwacht_herstel_patient_dropdown: checkveld(verwachtHerstelPatientEl,dropdownValueHerstelPatient),
                        verwachte_duur_patient_aantal: checkveld(behandelepisodeverwachtingEl, data.response.verwachte_duur_patient_aantal),
                        verwachte_duur_patient_eenheid: checkveld(herstelverwachtingperiodeEl, dropdownValueDuurPatient),
                        verwacht_herstel_patient: checkveld(patientverwachtingenEl, data.response.verwacht_herstel_patient),
                        voorlopige_conclusie: checkveld(voorlopigeconcelusieEl, data.response.voorlopige_conclusie),
                    };



                    const allesOK = Object.values(rapport).every(v => v.status === 'ok' && v.success === true);
                    console.log(allesOK)

                    console.log(new Date().toISOString())
                    console.log(allesOK ? 'succes' : 'fouten')
                    console.log(rapport)
                    console.log(window.location.href)

                    // ✅ Stuur terug naar het systeem
                    fetch('https://whisper.anzwerz.ai/api/som-feedback', {
                        method: 'POST',
                        headers: {
                        'Content-Type': 'application/json',
                        'X-API-Key': 'mijn-geheime-sleutel'
                    },
                        body: JSON.stringify({
                            timestamp: new Date().toISOString(),
                            result: allesOK ? 'ok' : 'not ok',
                            details: rapport,
                            consult_type: 'intake - anamnese',
                            patient_number: String(clientNumber)
                        })
                    })
                    .then(r => {
                        if (!r.ok) {
                            console.warn('Feedback verzenden mislukt:', r.status);
                        }
                    })
                    .catch(err => console.error('Fout bij terugsturen feedback:', err));
                }

    ///////////////////////////////////////////////////////////////////////////////////
                        
                //Onderzoek
                const conclusieEl = document.getElementById('t204_conclusie');
                if (conclusieEl && conclusieEl.innerHTML == '') {

                    if (conclusieEl && conclusieAnamnese) {
                        conclusieEl.innerHTML = conclusieAnamnese;
                    }
                

                    const indicatieonderzoekaanmelding1El = document.getElementById('t202_indicatieonderzoekaanmelding1');
                    if (indicatieonderzoekaanmelding1El && toestemmingPatient && toestemmingPatient.toLowerCase() === 'nee') {
                        indicatieonderzoekaanmelding1El.checked = true;
                    }

                    const indicatieonderzoekaanmelding0El = document.getElementById('t202_indicatieonderzoekaanmelding0');
                    if (indicatieonderzoekaanmelding0El && toestemmingPatient && toestemmingPatient.toLowerCase() === 'ja') {
                        indicatieonderzoekaanmelding0El.checked = true;
                    }

                    const handelingtoestemmingjn1El = document.getElementById('t204_handelingtoestemmingjn1');
                    if (handelingtoestemmingjn1El && toestemmingBijzondereBehandeling && toestemmingBijzondereBehandeling.toLowerCase() === 'nee') {
                        handelingtoestemmingjn1El.checked = true;
                    }

                    const handelingtoestemmingjn0El = document.getElementById('t204_handelingtoestemmingjn0');
                    if (handelingtoestemmingjn0El && toestemmingBijzondereBehandeling && toestemmingBijzondereBehandeling.toLowerCase() === 'ja') {
                        handelingtoestemmingjn0El.checked = true;
                    }


                    const toelichtingBijzondereBehandelingEl = document.getElementById('t204_handelingtoestemming');
                    if (toelichtingBijzondereBehandelingEl && toelichtingBijzondereBehandeling){
                        toelichtingBijzondereBehandelingEl.innerHTML = toelichtingBijzondereBehandeling;
                    }

                    const inspectieEl = document.getElementById('t204_inspectie');
                    if (inspectieEl && inspectie) {
                        inspectieEl.innerHTML = inspectie;
                    }

                    const inspectiedynamischEl = document.getElementById('t204_inspectiedynamisch');
                    if (inspectiedynamischEl && dynamisch) {
                        inspectiedynamischEl.innerHTML = dynamisch;
                    }

                    const inspectiestatischEl = document.getElementById('t204_inspectiestatisch');
                    if (inspectiestatischEl && statisch) {
                        inspectiestatischEl.innerHTML = statisch;
                    }

                    const inspectieobservatieEl = document.getElementById('t204_inspectieobservatie');
                    if (inspectieobservatieEl && overig) {
                        inspectieobservatieEl.innerHTML = overig;
                    }

                    const inspectiepelpatieEl = document.getElementById('t204_inspectiepalpatie');
                    if (inspectiepelpatieEl && palpatie) {
                        inspectiepelpatieEl.innerHTML = palpatie;
                    }

    ////////////////////////////////////////////////////////////////////////////////////////////
                    
                    const rapport = {
                        conclusie_anamnese: checkveld(conclusieEl, data.response.conclusie_anamnese),
                        toestemming_patinet_niet: checkveld(indicatieonderzoekaanmelding1El,data.response.toestemming_patient,"nee"),
                        toestemming_patinet_wel: checkveld(indicatieonderzoekaanmelding0El,data.response.toestemming_patient,"ja"),
                        toestemming_bijzondere_behandeling_niet: checkveld(handelingtoestemmingjn1El,data.response.toestemming_bijzondere_behandeling,"nee"),
                        toestemming_bijzondere_behandeling_wel: checkveld(handelingtoestemmingjn0El,data.response.toestemming_bijzondere_behandeling,"ja"),
                        toelichting_bijzondere_behandeling: checkveld(toelichtingBijzondereBehandelingEl,data.response.toelichting_bijzondere_behandeling),
                        inspectie: checkveld(inspectieEl, data.response.inspectie),
                        dynamisch: checkveld(inspectiedynamischEl, data.response.dynamisch),
                        statisch: checkveld(inspectiestatischEl, data.response.statisch),
                        overig: checkveld(inspectieobservatieEl, data.response.overig),
                        palpatie: checkveld(inspectiepelpatieEl, data.response.palpatie),
                    };


                    const allesOK = Object.values(rapport).every(v => v.status === 'ok' && v.success === true);
                    console.log(allesOK)

                    console.log(new Date().toISOString())
                    console.log(allesOK ? 'succes' : 'fouten')
                    console.log(rapport)
                    console.log(window.location.href)

                    // ✅ Stuur terug naar het systeem
                    fetch('https://whisper.anzwerz.ai/api/som-feedback', {
                        method: 'POST',
                        headers: {
                        'Content-Type': 'application/json',
                        'X-API-Key': 'mijn-geheime-sleutel'
                    },
                        body: JSON.stringify({
                            timestamp: new Date().toISOString(),
                            result: allesOK ? 'ok' : 'not ok',
                            details: rapport,
                            consult_type: 'intake - onderzoek',
                            patient_number: String(clientNumber)
                        })
                    })
                    .then(r => {
                        if (!r.ok) {
                            console.warn('Feedback verzenden mislukt:', r.status);
                        }
                    })
                    .catch(err => console.error('Fout bij terugsturen feedback:', err));

                } 

    ///////////////////////////////////////////////////////////////////////////////////

                //Analyse
                const werkdiagnoseEl = document.getElementById('t205_FysTherapeutDiag');

                if (werkdiagnoseEl && werkdiagnoseEl.innerHTML == ''){

                    if (werkdiagnoseEl && werkdiagnose){
                        werkdiagnoseEl.innerHTML = werkdiagnose;
                    }

                    //TODO: aanvulling

                    // Wordt deze wel gebruikt?
                    // const overigeEl = document.getElementById('t203_overige');
                    // if (overigeEl) {
                    //     overigeEl.innerHTML = overig;
                    // }

                    

                    const janee0El = document.getElementById('t205_janee0');
                    if (janee0El && indicatieFysio && indicatieFysio.toLowerCase() === 'ja') {
                        janee0El.checked = true;
                    }

                    const janee1El = document.getElementById('t205_janee1');
                    if (janee1El && indicatieFysio && indicatieFysio.toLowerCase() === 'nee') {
                        janee1El.checked = true;
                    }

                ////////////////////////////////////////////////////////////////////////////////////////////
                    

                    const rapport = {
                        werkdiagnose: checkveld(werkdiagnoseEl, data.response.werkdiagnose),
                        indicatie_fysio_niet: checkveld(janee1El,data.response.indicatie_fysio,"nee"),
                        indicatie_fysio_wel: checkveld(janee0El,data.response.indicatie_fysio,"ja"),
                    };


                    const allesOK = Object.values(rapport).every(v => v.status === 'ok' && v.success === true);
                    console.log(allesOK)

                    console.log(new Date().toISOString())
                    console.log(allesOK ? 'succes' : 'fouten')
                    console.log(rapport)
                    console.log(window.location.href)

                    // ✅ Stuur terug naar het systeem
                    fetch('https://whisper.anzwerz.ai/api/som-feedback', {
                        method: 'POST',
                        headers: {
                        'Content-Type': 'application/json',
                        'X-API-Key': 'mijn-geheime-sleutel'
                    },
                        body: JSON.stringify({
                            timestamp: new Date().toISOString(),
                            result: allesOK ? 'ok' : 'not ok',
                            details: rapport,
                            consult_type: 'intake - analyse',
                            patient_number: String(clientNumber)
                        })
                    })
                    .then(r => {
                        if (!r.ok) {
                            console.warn('Feedback verzenden mislukt:', r.status);
                        }
                    })
                    .catch(err => console.error('Fout bij terugsturen feedback:', err));

                } 

    ///////////////////////////////////////////////////////////////////////////////////

                //Behandelplan
                const consultatieConcelusieEl = document.getElementById('t206_ConsultatieConclusie');
                if (consultatieConcelusieEl && consultatieConcelusieEl.innerHTML == '') {

                    if (consultatieConcelusieEl && hoofddoel) {
                        consultatieConcelusieEl.innerHTML = hoofddoel;
                    }

                    const verwachtHerstelFysioEl = document.getElementById('t206_verwachthersteltherapeut');
                    let dropdownValueHerstelFysio = '0'; // default waarde
                    if (verwachtHerstelFysioEl) {

                        if (verwachtHerstelFysioDD) {
                            
                            if (verwachtHerstelFysioDD.includes('progressie')) {
                                dropdownValueHerstelFysio = '572';
                            } else if (verwachtHerstelFysioDD.includes('geringe')) {
                                dropdownValueHerstelFysio = '569';
                            } else if (verwachtHerstelFysioDD.includes('matige')) {
                                dropdownValueHerstelFysio = '567';
                            } else if (verwachtHerstelFysioDD.includes('bepalen')) {
                                dropdownValueHerstelFysio = '800';
                            } else if (verwachtHerstelFysioDD.includes('Onderhoud')) {
                                dropdownValueHerstelFysio = '565';
                            } else if (verwachtHerstelFysioDD.includes('klachten')) {
                                dropdownValueHerstelFysio = '571';
                            } else if (verwachtHerstelFysioDD.includes('Stabilisatie')) {
                                dropdownValueHerstelFysio = '573';
                            } else if (verwachtHerstelFysioDD.includes('herstel')) {
                                dropdownValueHerstelFysio = '568';
                            }
                        }

                        verwachtHerstelFysioEl.value = dropdownValueHerstelFysio;
                    }

                    const behandelepisodeverwachtingEl = document.getElementById('t206_behandelepisodeverwachting');
                        if (behandelepisodeverwachtingEl && verwachteDuurFysioAantal) {
                                behandelepisodeverwachtingEl.value = verwachteDuurFysioAantal;
                        }


                    const herstelverwachtingperiodeEl = document.getElementById('t206_herstelverwachtingperiode');
                    let dropdownValueDuurFysio = '0'; // default waarde
                    if (herstelverwachtingperiodeEl) {
                        
                        if (verwachteDuurFysioEenheid) {
                            const eenheid = verwachteDuurFysioEenheid.toLowerCase();

                            if (eenheid === 'weken') {
                                dropdownValueDuurFysio = '1';
                            } else if (eenheid === 'maanden') {
                                dropdownValueDuurFysio = '2';
                            } else if (eenheid === 'jaren') {
                                dropdownValueDuurFysio = '3';
                            }
                        }

                    herstelverwachtingperiodeEl.value = dropdownValueDuurFysio;
                    }
                    
    ////////////////////////////////////////////////////////////////////////////////////////////
                    
                    const rapport = {
                        hoofddoel: checkveld(consultatieConcelusieEl, data.response.hoofddoel),
                        verwacht_herstel_fysio: checkveld(verwachtHerstelFysioEl,dropdownValueHerstelFysio),
                        verwacht_herstel_fysio_aantal:checkveld(behandelepisodeverwachtingEl, data.response.verwachte_duur_fysio_aantal),
                        verwacht_herstel_fysio_eenheid: checkveld(herstelverwachtingperiodeEl,dropdownValueDuurFysio),
                    };


                    const allesOK = Object.values(rapport).every(v => v.status === 'ok' && v.success === true);
                    console.log(allesOK)

                    console.log(new Date().toISOString())
                    console.log(allesOK ? 'succes' : 'fouten')
                    console.log(rapport)
                    console.log(window.location.href)

                    // ✅ Stuur terug naar het systeem
                    fetch('https://whisper.anzwerz.ai/api/som-feedback', {
                        method: 'POST',
                        headers: {
                        'Content-Type': 'application/json',
                        'X-API-Key': 'mijn-geheime-sleutel'
                    },
                        body: JSON.stringify({
                            timestamp: new Date().toISOString(),
                            result: allesOK ? 'ok' : 'not ok',
                            details: rapport,
                            consult_type: 'intake - behandelplan',
                            patient_number: String(clientNumber)
                        })
                    })
                    .then(r => {
                        if (!r.ok) {
                            console.warn('Feedback verzenden mislukt:', r.status);
                        }
                    })
                    .catch(err => console.error('Fout bij terugsturen feedback:', err));

                } 
            }

///////////////////////////////////////////////////////////////////////////////////

        })
        .catch(err => {
            console.error("❌ Fout bij ophalen of verwerken van data:", err);
            alert("Er ging iets mis. Ons team is hiervan op de hoogte gesteld en gaat ermee aan de slag om in de toekomst te voorkomen.");

            fetch("https://whisper.anzwerz.ai/api/log_tm_error/", {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-API-Key': 'mijn-geheime-sleutel'
            },
            body: JSON.stringify({ error_description: err.message,
                                    error_log: err.stack,
                                    error_type: err.name
            })
        })
        });

    }
    
}, false);
})();