initial prototype based on nat-as-server
Some checks failed
PHPUnit / test (push) Has been cancelled

This commit is contained in:
tom.hempel
2026-06-29 12:39:55 +02:00
commit f1caa9e681
148 changed files with 34905 additions and 0 deletions

View File

@ -0,0 +1,158 @@
{
"meta": {
"_comment": "Diese Zeiel erklärt im folgenden wie die einzelnen Fragetypen definiert werden können und was für features diese mit sich bringen.",
"id": "questionnaire_0_readme"
},
"questions": [
{
"id": "q1",
"_comment": "Frage mit Radio Buttons. In diesem Fragetypen kann man maximal eine Antwort wählen. Über nextQuestionId kann man die nächste Frage definieren., Über pointsMap kann man die Punkte für die Antwort der Frage festlegen.",
"layout": "radio_question",
"question": "consent_instruction",
"options": [
{ "key": "consent_signed"},
{ "key": "consent_not_signed",
"nextQuestionId": "last_page"}
],
"pointsMap": {
"consent_signed": 0,
"consent_not_signed": 0
}
},
{
"id": "q2",
"_comment": "Client- und Coach-Code (z. B. wenn Einwilligung nicht unterschrieben).",
"layout": "client_coach_code_question",
"question": "no_consent_entered",
"hint1": "client_code",
"hint2": "coach_code"
},
{
"id": "q3",
"_comment": "Frage mit Spinner, dessen Antwortmöglichkeiten über options selbst definiert werden können.",
"layout": "string_spinner",
"question": "other_accommodation",
"options": ["Unterkunft 1", "Unterkunft 2", "Unterkunft 3"]
},
{
"id": "q3b",
"_comment": "Freitext-Eingabe (einzeilig oder mehrzeilig). maxLength und hint sind optional. Eingaben werden gegen SQL-Injection-Muster gefiltert.",
"layout": "free_text",
"question": "other_accommodation",
"hint": "enter_text_to_continue",
"maxLength": 500,
"multiline": true
},
{
"id": "q4",
"_comment": "Datumsfrage. precision: full (YYYY-MM-DD), year_month (YYYY-MM), year (YYYY).",
"layout": "date_spinner",
"question": "departure_country",
"precision": "year_month"
},
{
"id": "q5",
"_comment": "Datumsfrage mit constraints. precision steuert Tag/Monat/Jahr-Spinner.",
"layout": "date_spinner",
"question": "since_in_germany",
"precision": "year_month",
"constraints": {
"notBefore": "departure_country",
"notAfter": "departure_country"
}
},
{
"id": "q5b",
"_comment": "Glas-Skala (Symptome als Zeilen, 5 Stufen). scaleType: glass (Standard) oder thermometer.",
"layout": "glass_scale_question",
"question": "example_symptom_scale",
"scaleType": "thermometer",
"symptoms": ["symptom_a", "symptom_b"]
},
{
"id": "q6",
"_comment": "Frage mit Spinner, dessen Antwortmöglichkeiten über range selbst definiert werden können.",
"layout": "value_spinner",
"question": "number_family_members",
"range": {
"min": 1,
"max": 15
}
},
{
"id": "q7",
"_comment": "Frage nach dem Code des Klienten und den Code des Coaches.",
"layout": "client_coach_code_question",
"question": "client_code_entry_question",
"hint1": "client_code",
"hint2": "coach_code"
},
{
"id": "q8",
"_comment": "Frage mit Checkboxen, dessen Antwortmöglichkeiten über options selbst definiert werden können. Über pointsMap können die Punkte für die jeweiligen Antworten festgelegt werden. Über minSelection kann die minimal Anzahl an auszufüllenden Antworten festgelegt werden.",
"layout": "multi_check_box_question",
"question": "languages_spoken",
"options": [
{ "key": "language_albanian" },
{ "key": "language_pashto" },
{ "key": "language_russian" },
{ "key": "language_other"}
],
"pointsMap": {
"language_albanian": 1,
"language_pashto": 1,
"language_russian": 1,
"language_other": 1
},
"minSelection": 1
},
{
"id": "q9",
"_comment":"Glass scale frage, bei der es für jede Frage, welche über symptoms festgelegt werden kann eine Antwort festgelegt werden muss. Die Antwort ganz links gibt immer 0 Punkte und die Antwort ganz rechts gibt immer 4 Punkte.",
"layout": "glass_scale_question",
"question": "glass_explanation",
"symptoms": [
"q1_symptom",
"q2_symptom",
"q3_symptom",
"q4_symptom",
"q5_symptom",
"q6_symptom",
"q7_symptom",
"q8_symptom",
"q9_symptom"
]
},
{
"id": "last_page",
"_comment":"Letzte Seite, welche den Abschluss des Fragebogens markiert.",
"layout": "last_page",
"textKey": "finish_data_entry",
"question": "data_final_warning"
}
]
}