Mond & gezondheid
/* =========================================================
(0) STARTUP-WRAPPER
========================================================= */
document.addEventListener("DOMContentLoaded", () => {
/* =========================================================
(1) HELPERS & FORMULIERVALIDATIE
========================================================= */
const qs = s => document.querySelector(s);
const qa = s => Array.from(document.querySelectorAll(s));
const valR = n => Number((qs(`input[name="${n}"]:checked`) || {value:0}).value);
const valC = n => qa(`input[name="${n}"]:checked`).map(x => x.value);
function valideerFormulier() {
let isValid = true;
let eersteFout = null;
qa(".foutInjectie").forEach(m => m.remove());
const toonFout = (el, tekst) => {
const div = document.createElement("div");
div.className = "foutMelding foutInjectie";
div.textContent = tekst;
el.insertAdjacentElement("afterend", div);
if (!eersteFout) eersteFout = el;
isValid = false;
};
if (!qs("#patiëntnummer").value.trim()) toonFout(qs("#patiëntnummer"), "Vul uw patiëntnummer in");
if (!qs("#geboortedatum").value.trim()) toonFout(qs("#geboortedatum"), "Vul uw geboortedatum in");
const verplichte = ["stress","poetsen","interdentaal","reiniging","suiker","familie","droge_mond","gezondheid","roken"];
verplichte.forEach(n => { if (!qs(`input[name="${n}"]:checked`)) toonFout(qs(`input[name="${n}"]`).closest(".opt"), "Maak een keuze"); });
if (valC("problemen").length === 0) toonFout(qs('.vraag[data-vraag="7"]'), "Maak minstens één keuze");
if (!isValid && eersteFout) eersteFout.scrollIntoView({behavior:"smooth",block:"center"});
return isValid;
}
/* =========================================================
(2) “GEEN PROBLEMEN” LOGICA
========================================================= */
const cbGeen = qs('input[name="problemen"][value="geen"]');
const cbAndere = qa('input[name="problemen"]:not([value="geen"])');
if (cbGeen) cbGeen.addEventListener("change", () => { if (cbGeen.checked) cbAndere.forEach(x => x.checked = false); });
cbAndere.forEach(x => x.addEventListener("change", () => { if (x.checked) cbGeen.checked = false; }));
/* =========================================================
(3) RENDER RESULTATEN
========================================================= */
function renderResultaten(data) {
const div = qs("#resultaten");
div.innerHTML = `
Resultaten
${JSON.stringify(data, null, 2)}
`;
}
/* =========================================================
(4) VERZENDEN NAAR GOOGLE APPS SCRIPT
========================================================= */
qs("#deelKnop").addEventListener("click", async () => {
if (!valideerFormulier()) return;
const payload = {
api_key: "X20", // zelfde sleutel als in Code.gs
patientnummer: qs("#patiëntnummer").value.trim(),
geboortedatum: qs("#geboortedatum").value.trim(),
stress: valR("stress"),
poetsen: valR("poetsen"),
interdentaal: valR("interdentaal"),
reiniging: valR("reiniging"),
suiker: valR("suiker"),
familie: valR("familie"),
droge_mond: valR("droge_mond"),
gezondheid: valR("gezondheid"),
roken: valR("roken"),
problemen: valC("problemen"),
slaapapneu: valC("slaapapneu"),
bonus: valC("bonus")
};
const endpoint = "https://script.google.com/macros/s/AKfycb.../exec"; // jouw GAS-URL
const btn = qs("#deelKnop");
const melding = qs("#verzendMelding");
btn.disabled = true;
btn.textContent = "Verzenden…";
try {
const resp = await fetch(endpoint, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
});
const data = await resp.json();
renderResultaten(data);
btn.textContent = "✔ Verzonden!";
melding.textContent = "Uw resultaten zijn veilig gedeeld.";
melding.style.color = "#2e7d32";
} catch (err) {
console.error(err);
melding.textContent = "Verzenden mislukt, probeer opnieuw.";
melding.style.color = "#b71c1c";
btn.disabled = false;
btn.textContent = "Deel met tandarts";
}
});
/* =========================================================
(5) AUTO-INVULLEN UIT URL
========================================================= */
const p = new URLSearchParams(window.location.search);
if (p.get("pt")) qs("#patiëntnummer").value = p.get("pt");
if (p.get("dob")) qs("#geboortedatum").value = p.get("dob");
}); // einde DOMContentLoadedHet doel van deze vragenlijst is om het risico in te schatten of uw gebit problemen krijgt zoals gaatjes of tandvleesproblemen.
Beantwoord de vragen zo eerlijk mogelijk. Beschermende gewoonten verlagen uw score.
Na invullen ziet u uw persoonlijke resultaat en kunt u dit delen met ons.
Gebaseerd op richtlijnen van: NVVP, KIMO, UZLeuven