forge-openclaw-plugin 0.2.24 → 0.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/assets/{board-_C6oMy5w.js → board-ta0rUHOf.js} +3 -3
- package/dist/assets/{board-_C6oMy5w.js.map → board-ta0rUHOf.js.map} +1 -1
- package/dist/assets/index-Ro0ZF_az.css +1 -0
- package/dist/assets/index-ytlpSj23.js +79 -0
- package/dist/assets/index-ytlpSj23.js.map +1 -0
- package/dist/assets/{motion-D4sZgCHd.js → motion-fBKPB6yw.js} +3 -3
- package/dist/assets/motion-fBKPB6yw.js.map +1 -0
- package/dist/assets/{table-BWzTaky1.js → table-C-IGTQni.js} +2 -2
- package/dist/assets/{table-BWzTaky1.js.map → table-C-IGTQni.js.map} +1 -1
- package/dist/assets/{ui-BzK4azQb.js → ui-DInOpaYF.js} +2 -2
- package/dist/assets/{ui-BzK4azQb.js.map → ui-DInOpaYF.js.map} +1 -1
- package/dist/assets/vendor-lE3tZJcC.js +876 -0
- package/dist/assets/vendor-lE3tZJcC.js.map +1 -0
- package/dist/index.html +7 -8
- package/dist/openclaw/local-runtime.d.ts +3 -1
- package/dist/openclaw/local-runtime.js +51 -15
- package/dist/openclaw/parity.d.ts +1 -1
- package/dist/openclaw/parity.js +29 -0
- package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
- package/dist/openclaw/plugin-entry-shared.js +31 -6
- package/dist/openclaw/plugin-sdk-types.d.ts +29 -0
- package/dist/openclaw/routes.js +236 -0
- package/dist/openclaw/session-bootstrap.d.ts +78 -0
- package/dist/openclaw/session-bootstrap.js +240 -0
- package/dist/openclaw/tools.js +279 -6
- package/dist/server/server/migrations/001_core.sql +411 -0
- package/dist/server/server/migrations/002_psyche.sql +392 -0
- package/dist/server/server/migrations/003_habits.sql +30 -0
- package/dist/server/server/migrations/004_habit_links.sql +8 -0
- package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
- package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
- package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
- package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
- package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
- package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
- package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
- package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
- package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
- package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
- package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
- package/dist/server/server/migrations/016_health_companion.sql +158 -0
- package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
- package/dist/server/server/migrations/017_preferences.sql +131 -0
- package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
- package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
- package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
- package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
- package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
- package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
- package/dist/server/server/migrations/024_questionnaires.sql +96 -0
- package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
- package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
- package/dist/server/server/migrations/027_ai_processors.sql +31 -0
- package/dist/server/server/migrations/028_movement_domain.sql +136 -0
- package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
- package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
- package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
- package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
- package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/dist/server/{app.js → server/src/app.js} +992 -25
- package/dist/server/server/src/connectors/box-registry.js +188 -0
- package/dist/server/{db.js → server/src/db.js} +6 -0
- package/dist/server/server/src/debug.js +19 -0
- package/dist/server/server/src/discovery-advertiser.js +114 -0
- package/dist/server/{health.js → server/src/health.js} +39 -11
- package/dist/server/{index.js → server/src/index.js} +4 -0
- package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +40 -4
- package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +129 -19
- package/dist/server/server/src/movement.js +2935 -0
- package/dist/server/{openapi.js → server/src/openapi.js} +628 -5
- package/dist/server/{psyche-types.js → server/src/psyche-types.js} +15 -1
- package/dist/server/server/src/questionnaire-flow.js +552 -0
- package/dist/server/server/src/questionnaire-seeds.js +853 -0
- package/dist/server/server/src/questionnaire-types.js +340 -0
- package/dist/server/server/src/repositories/ai-connectors.js +1207 -0
- package/dist/server/server/src/repositories/ai-processors.js +547 -0
- package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
- package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +9 -1
- package/dist/server/{repositories → server/src/repositories}/habits.js +69 -5
- package/dist/server/server/src/repositories/model-settings.js +216 -0
- package/dist/server/{repositories → server/src/repositories}/notes.js +57 -15
- package/dist/server/{repositories → server/src/repositories}/preferences.js +124 -0
- package/dist/server/server/src/repositories/questionnaires.js +1338 -0
- package/dist/server/{repositories → server/src/repositories}/settings.js +156 -12
- package/dist/server/server/src/repositories/surface-layouts.js +76 -0
- package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +5 -1
- package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
- package/dist/server/{services → server/src/services}/entity-crud.js +81 -2
- package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
- package/dist/server/server/src/services/openai-codex-oauth.js +153 -0
- package/dist/server/server/src/services/psyche-observation-calendar.js +46 -0
- package/dist/server/{types.js → server/src/types.js} +621 -14
- package/dist/server/server/src/watch-mobile.js +562 -0
- package/dist/server/{web.js → server/src/web.js} +30 -4
- package/dist/server/src/components/customization/utility-widgets.js +330 -0
- package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
- package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
- package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
- package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
- package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
- package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
- package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
- package/dist/server/src/lib/api-error.js +37 -0
- package/dist/server/src/lib/api.js +1859 -0
- package/dist/server/src/lib/calendar-name-deduper.js +144 -0
- package/dist/server/src/lib/diagnostics.js +67 -0
- package/dist/server/src/lib/psyche-types.js +1 -0
- package/dist/server/src/lib/questionnaire-types.js +1 -0
- package/dist/server/src/lib/runtime-paths.js +24 -0
- package/dist/server/src/lib/schemas.js +234 -0
- package/dist/server/src/lib/snapshot-normalizer.js +374 -0
- package/dist/server/src/lib/theme-system.js +319 -0
- package/dist/server/src/lib/types.js +1 -0
- package/dist/server/src/lib/utils.js +22 -0
- package/dist/server/src/lib/workbench/boxes.js +16 -0
- package/dist/server/src/lib/workbench/nodes.js +15 -0
- package/dist/server/src/lib/workbench/registry.js +73 -0
- package/dist/server/src/lib/workbench/runtime.js +181 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +6 -1
- package/server/index.js +68 -0
- package/server/migrations/024_questionnaires.sql +96 -0
- package/server/migrations/025_ai_model_connections.sql +26 -0
- package/server/migrations/026_custom_theme_settings.sql +2 -0
- package/server/migrations/027_ai_processors.sql +31 -0
- package/server/migrations/028_movement_domain.sql +136 -0
- package/server/migrations/029_watch_micro_capture.sql +23 -0
- package/server/migrations/030_surface_layouts.sql +5 -0
- package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/server/migrations/032_ai_connectors.sql +44 -0
- package/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/server/migrations/034_movement_segment_sync.sql +49 -0
- package/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/skills/forge-openclaw/SKILL.md +15 -1
- package/skills/forge-openclaw/entity_conversation_playbooks.md +523 -87
- package/skills/forge-openclaw/psyche_entity_playbooks.md +331 -221
- package/dist/assets/index-DTCwBWAs.js +0 -65
- package/dist/assets/index-DTCwBWAs.js.map +0 -1
- package/dist/assets/index-DttXlAgi.css +0 -1
- package/dist/assets/motion-D4sZgCHd.js.map +0 -1
- package/dist/assets/vendor-De38P6YR.js +0 -729
- package/dist/assets/vendor-De38P6YR.js.map +0 -1
- package/dist/assets/viz-C6hfyqzu.js +0 -34
- package/dist/assets/viz-C6hfyqzu.js.map +0 -1
- package/skills/forge-openclaw/cron_jobs.md +0 -395
- /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
- /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
- /package/dist/server/{errors.js → server/src/errors.js} +0 -0
- /package/dist/server/{managers → server/src/managers}/base.js +0 -0
- /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
- /package/dist/server/{managers → server/src/managers}/runtime.js +0 -0
- /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
- /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
- /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
- /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/tasks.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
- /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
- /package/dist/server/{services → server/src/services}/context.js +0 -0
- /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
- /package/dist/server/{services → server/src/services}/gamification.js +0 -0
- /package/dist/server/{services → server/src/services}/insights.js +0 -0
- /package/dist/server/{services → server/src/services}/projects.js +0 -0
- /package/dist/server/{services → server/src/services}/psyche.js +0 -0
- /package/dist/server/{services → server/src/services}/relations.js +0 -0
- /package/dist/server/{services → server/src/services}/reviews.js +0 -0
- /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
- /package/dist/server/{services → server/src/services}/tagging.js +0 -0
- /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
- /package/dist/server/{services → server/src/services}/work-time.js +0 -0
|
@@ -0,0 +1,853 @@
|
|
|
1
|
+
const RETRIEVAL_DATE = "2026-04-06";
|
|
2
|
+
function option(key, label, value, description = "") {
|
|
3
|
+
return { key, label, value, description };
|
|
4
|
+
}
|
|
5
|
+
function item(id, prompt, options, extra = {}) {
|
|
6
|
+
return {
|
|
7
|
+
id,
|
|
8
|
+
prompt,
|
|
9
|
+
shortLabel: "",
|
|
10
|
+
description: "",
|
|
11
|
+
helperText: "",
|
|
12
|
+
required: true,
|
|
13
|
+
visibility: null,
|
|
14
|
+
tags: [],
|
|
15
|
+
options,
|
|
16
|
+
...extra
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function buildDefinition(options) {
|
|
20
|
+
return {
|
|
21
|
+
locale: "en",
|
|
22
|
+
instructions: options.instructions,
|
|
23
|
+
completionNote: options.completionNote ?? "",
|
|
24
|
+
presentationMode: options.presentationMode,
|
|
25
|
+
responseStyle: options.responseStyle,
|
|
26
|
+
itemIds: options.items.map((entry) => entry.id),
|
|
27
|
+
items: options.items,
|
|
28
|
+
sections: options.sections.map((section) => ({
|
|
29
|
+
id: section.id,
|
|
30
|
+
title: section.title,
|
|
31
|
+
description: section.description ?? "",
|
|
32
|
+
visibility: null,
|
|
33
|
+
itemIds: section.itemIds
|
|
34
|
+
})),
|
|
35
|
+
pageSize: options.pageSize ?? null
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function buildProvenance(options) {
|
|
39
|
+
return {
|
|
40
|
+
retrievalDate: RETRIEVAL_DATE,
|
|
41
|
+
sourceClass: options.sourceClass,
|
|
42
|
+
scoringNotes: options.scoringNotes,
|
|
43
|
+
sources: options.sources.map((source) => ({
|
|
44
|
+
label: source.label,
|
|
45
|
+
url: source.url,
|
|
46
|
+
citation: source.citation,
|
|
47
|
+
notes: source.notes ?? ""
|
|
48
|
+
}))
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const PHQ_OPTIONS = [
|
|
52
|
+
option("not_at_all", "Not at all", 0),
|
|
53
|
+
option("several_days", "Several days", 1),
|
|
54
|
+
option("more_than_half", "More than half the days", 2),
|
|
55
|
+
option("nearly_every_day", "Nearly every day", 3)
|
|
56
|
+
];
|
|
57
|
+
const GAD_OPTIONS = PHQ_OPTIONS;
|
|
58
|
+
const WHO5_OPTIONS = [
|
|
59
|
+
option("all_of_time", "All of the time", 5),
|
|
60
|
+
option("most_of_time", "Most of the time", 4),
|
|
61
|
+
option("more_than_half", "More than half of the time", 3),
|
|
62
|
+
option("less_than_half", "Less than half of the time", 2),
|
|
63
|
+
option("some_of_time", "Some of the time", 1),
|
|
64
|
+
option("at_no_time", "At no time", 0)
|
|
65
|
+
];
|
|
66
|
+
const PCL_OPTIONS = [
|
|
67
|
+
option("not_at_all", "Not at all", 0),
|
|
68
|
+
option("a_little_bit", "A little bit", 1),
|
|
69
|
+
option("moderately", "Moderately", 2),
|
|
70
|
+
option("quite_a_bit", "Quite a bit", 3),
|
|
71
|
+
option("extremely", "Extremely", 4)
|
|
72
|
+
];
|
|
73
|
+
const AUDIT_FREQUENCY_OPTIONS = [
|
|
74
|
+
option("never", "Never", 0),
|
|
75
|
+
option("monthly_or_less", "Monthly or less", 1),
|
|
76
|
+
option("two_to_four_month", "2 to 4 times a month", 2),
|
|
77
|
+
option("two_to_three_week", "2 to 3 times a week", 3),
|
|
78
|
+
option("four_or_more_week", "4 or more times a week", 4)
|
|
79
|
+
];
|
|
80
|
+
const AUDIT_QUANTITY_OPTIONS = [
|
|
81
|
+
option("one_or_two", "1 or 2", 0),
|
|
82
|
+
option("three_or_four", "3 or 4", 1),
|
|
83
|
+
option("five_or_six", "5 or 6", 2),
|
|
84
|
+
option("seven_to_nine", "7 to 9", 3),
|
|
85
|
+
option("ten_plus", "10 or more", 4)
|
|
86
|
+
];
|
|
87
|
+
const AUDIT_CONSEQUENCE_OPTIONS = [
|
|
88
|
+
option("never", "Never", 0),
|
|
89
|
+
option("less_than_monthly", "Less than monthly", 1),
|
|
90
|
+
option("monthly", "Monthly", 2),
|
|
91
|
+
option("weekly", "Weekly", 3),
|
|
92
|
+
option("daily_or_almost_daily", "Daily or almost daily", 4)
|
|
93
|
+
];
|
|
94
|
+
const AUDIT_REFERRAL_OPTIONS = [
|
|
95
|
+
option("no", "No", 0),
|
|
96
|
+
option("yes_not_last_year", "Yes, but not in the last year", 2),
|
|
97
|
+
option("yes_last_year", "Yes, during the last year", 4)
|
|
98
|
+
];
|
|
99
|
+
const YES_NO_OPTIONS = [
|
|
100
|
+
option("no", "No", 0),
|
|
101
|
+
option("yes", "Yes", 1)
|
|
102
|
+
];
|
|
103
|
+
const YSQ_OPTIONS = [
|
|
104
|
+
option("1", "1 · Completely untrue of me", 1),
|
|
105
|
+
option("2", "2 · Mostly untrue of me", 2),
|
|
106
|
+
option("3", "3 · Slightly more true than untrue", 3),
|
|
107
|
+
option("4", "4 · Moderately true of me", 4),
|
|
108
|
+
option("5", "5 · Mostly true of me", 5),
|
|
109
|
+
option("6", "6 · Describes me perfectly", 6)
|
|
110
|
+
];
|
|
111
|
+
function numericScore(key, label, expression, extra = {}) {
|
|
112
|
+
return {
|
|
113
|
+
key,
|
|
114
|
+
label,
|
|
115
|
+
description: "",
|
|
116
|
+
valueType: "number",
|
|
117
|
+
expression,
|
|
118
|
+
dependsOnItemIds: [],
|
|
119
|
+
missingPolicy: { mode: "require_all" },
|
|
120
|
+
bands: [],
|
|
121
|
+
roundTo: null,
|
|
122
|
+
unitLabel: "",
|
|
123
|
+
...extra
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const PHQ_ITEMS = [
|
|
127
|
+
item("phq_1", "Little interest or pleasure in doing things", PHQ_OPTIONS),
|
|
128
|
+
item("phq_2", "Feeling down, depressed, or hopeless", PHQ_OPTIONS),
|
|
129
|
+
item("phq_3", "Trouble falling or staying asleep, or sleeping too much", PHQ_OPTIONS),
|
|
130
|
+
item("phq_4", "Feeling tired or having little energy", PHQ_OPTIONS),
|
|
131
|
+
item("phq_5", "Poor appetite or overeating", PHQ_OPTIONS),
|
|
132
|
+
item("phq_6", "Feeling bad about yourself — or that you are a failure or have let yourself or your family down", PHQ_OPTIONS),
|
|
133
|
+
item("phq_7", "Trouble concentrating on things, such as reading the newspaper or watching television", PHQ_OPTIONS),
|
|
134
|
+
item("phq_8", "Moving or speaking so slowly that other people could have noticed? Or the opposite — being so fidgety or restless that you have been moving around a lot more than usual", PHQ_OPTIONS),
|
|
135
|
+
item("phq_9", "Thoughts that you would be better off dead or of hurting yourself in some way", PHQ_OPTIONS)
|
|
136
|
+
];
|
|
137
|
+
const GAD_ITEMS = [
|
|
138
|
+
item("gad_1", "Feeling nervous, anxious or on edge", GAD_OPTIONS),
|
|
139
|
+
item("gad_2", "Not being able to stop or control worrying", GAD_OPTIONS),
|
|
140
|
+
item("gad_3", "Worrying too much about different things", GAD_OPTIONS),
|
|
141
|
+
item("gad_4", "Trouble relaxing", GAD_OPTIONS),
|
|
142
|
+
item("gad_5", "Being so restless that it is hard to sit still", GAD_OPTIONS),
|
|
143
|
+
item("gad_6", "Becoming easily annoyed or irritable", GAD_OPTIONS),
|
|
144
|
+
item("gad_7", "Feeling afraid as if something awful might happen", GAD_OPTIONS)
|
|
145
|
+
];
|
|
146
|
+
const WHO5_ITEMS = [
|
|
147
|
+
item("who5_1", "I have felt cheerful and in good spirits", WHO5_OPTIONS),
|
|
148
|
+
item("who5_2", "I have felt calm and relaxed", WHO5_OPTIONS),
|
|
149
|
+
item("who5_3", "I have felt active and vigorous", WHO5_OPTIONS),
|
|
150
|
+
item("who5_4", "I woke up feeling fresh and rested", WHO5_OPTIONS),
|
|
151
|
+
item("who5_5", "My daily life has been filled with things that interest me", WHO5_OPTIONS)
|
|
152
|
+
];
|
|
153
|
+
const PCL_ITEMS = [
|
|
154
|
+
item("pcl_1", "Repeated, disturbing, and unwanted memories of the stressful experience?", PCL_OPTIONS),
|
|
155
|
+
item("pcl_2", "Repeated, disturbing dreams of the stressful experience?", PCL_OPTIONS),
|
|
156
|
+
item("pcl_3", "Suddenly feeling or acting as if the stressful experience were actually happening again (as if you were actually back there reliving it)?", PCL_OPTIONS),
|
|
157
|
+
item("pcl_4", "Feeling very upset when something reminded you of the stressful experience?", PCL_OPTIONS),
|
|
158
|
+
item("pcl_5", "Having strong physical reactions when something reminded you of the stressful experience (for example, heart pounding, trouble breathing, sweating)?", PCL_OPTIONS),
|
|
159
|
+
item("pcl_6", "Avoiding memories, thoughts, or feelings related to the stressful experience?", PCL_OPTIONS),
|
|
160
|
+
item("pcl_7", "Avoiding external reminders of the stressful experience (for example, people, places, conversations, activities, objects, or situations)?", PCL_OPTIONS),
|
|
161
|
+
item("pcl_8", "Trouble remembering important parts of the stressful experience?", PCL_OPTIONS),
|
|
162
|
+
item("pcl_9", "Having strong negative beliefs about yourself, other people, or the world?", PCL_OPTIONS),
|
|
163
|
+
item("pcl_10", "Blaming yourself or someone else for the stressful experience or what happened after it?", PCL_OPTIONS),
|
|
164
|
+
item("pcl_11", "Having strong negative feelings such as fear, horror, anger, guilt, or shame?", PCL_OPTIONS),
|
|
165
|
+
item("pcl_12", "Loss of interest in activities that you used to enjoy?", PCL_OPTIONS),
|
|
166
|
+
item("pcl_13", "Feeling distant or cut off from other people?", PCL_OPTIONS),
|
|
167
|
+
item("pcl_14", "Trouble experiencing positive feelings (for example, being unable to feel happiness or have loving feelings for people close to you)?", PCL_OPTIONS),
|
|
168
|
+
item("pcl_15", "Irritable behavior, angry outbursts, or acting aggressively?", PCL_OPTIONS),
|
|
169
|
+
item("pcl_16", "Taking too many risks or doing things that could cause you harm?", PCL_OPTIONS),
|
|
170
|
+
item("pcl_17", "Being “superalert” or watchful or on guard?", PCL_OPTIONS),
|
|
171
|
+
item("pcl_18", "Feeling jumpy or easily startled?", PCL_OPTIONS),
|
|
172
|
+
item("pcl_19", "Having difficulty concentrating?", PCL_OPTIONS),
|
|
173
|
+
item("pcl_20", "Trouble falling or staying asleep?", PCL_OPTIONS)
|
|
174
|
+
];
|
|
175
|
+
const AUDIT_ITEMS = [
|
|
176
|
+
item("audit_1", "How often do you have a drink containing alcohol?", AUDIT_FREQUENCY_OPTIONS),
|
|
177
|
+
item("audit_2", "How many drinks containing alcohol do you have on a typical day when you are drinking?", AUDIT_QUANTITY_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
178
|
+
item("audit_3", "How often do you have six or more drinks on one occasion?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
179
|
+
item("audit_4", "During the last year, how often have you found that you were not able to stop drinking once you had started?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
180
|
+
item("audit_5", "During the last year, how often have you failed to do what was normally expected from you because of drinking?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
181
|
+
item("audit_6", "During the last year, how often have you needed a first drink in the morning to get yourself going after a heavy drinking session?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
182
|
+
item("audit_7", "During the last year, how often have you had a feeling of guilt or remorse after drinking?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
183
|
+
item("audit_8", "During the last year, how often have you been unable to remember what happened the night before because of your drinking?", AUDIT_CONSEQUENCE_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
184
|
+
item("audit_9", "Have you or someone else been injured because of your drinking?", AUDIT_REFERRAL_OPTIONS, { visibility: { script: "audit_1 > 0" } }),
|
|
185
|
+
item("audit_10", "Has a relative or friend or a doctor or another health worker been concerned about your drinking or suggested you cut down?", AUDIT_REFERRAL_OPTIONS, { visibility: { script: "audit_1 > 0" } })
|
|
186
|
+
];
|
|
187
|
+
const SRQ_ITEMS = [
|
|
188
|
+
item("srq_1", "Do you often have headaches?", YES_NO_OPTIONS),
|
|
189
|
+
item("srq_2", "Is your appetite poor?", YES_NO_OPTIONS),
|
|
190
|
+
item("srq_3", "Do you sleep badly?", YES_NO_OPTIONS),
|
|
191
|
+
item("srq_4", "Are you easily frightened?", YES_NO_OPTIONS),
|
|
192
|
+
item("srq_5", "Do your hands shake?", YES_NO_OPTIONS),
|
|
193
|
+
item("srq_6", "Do you feel nervous, tense or worried?", YES_NO_OPTIONS),
|
|
194
|
+
item("srq_7", "Is your digestion poor?", YES_NO_OPTIONS),
|
|
195
|
+
item("srq_8", "Do you have trouble thinking clearly?", YES_NO_OPTIONS),
|
|
196
|
+
item("srq_9", "Do you feel unhappy?", YES_NO_OPTIONS),
|
|
197
|
+
item("srq_10", "Do you cry more than usual?", YES_NO_OPTIONS),
|
|
198
|
+
item("srq_11", "Do you find it difficult to enjoy your daily activities?", YES_NO_OPTIONS),
|
|
199
|
+
item("srq_12", "Do you find it difficult to make decisions?", YES_NO_OPTIONS),
|
|
200
|
+
item("srq_13", "Is your daily work suffering?", YES_NO_OPTIONS),
|
|
201
|
+
item("srq_14", "Are you unable to play a useful part in life?", YES_NO_OPTIONS),
|
|
202
|
+
item("srq_15", "Have you lost interest in things?", YES_NO_OPTIONS),
|
|
203
|
+
item("srq_16", "Do you feel that you are a worthless person?", YES_NO_OPTIONS),
|
|
204
|
+
item("srq_17", "Has the thought of ending your life been on your mind?", YES_NO_OPTIONS),
|
|
205
|
+
item("srq_18", "Do you feel tired all the time?", YES_NO_OPTIONS),
|
|
206
|
+
item("srq_19", "Do you have uncomfortable feelings in your stomach?", YES_NO_OPTIONS),
|
|
207
|
+
item("srq_20", "Are you easily tired?", YES_NO_OPTIONS)
|
|
208
|
+
];
|
|
209
|
+
const YSQ_ITEM_TEXTS = [
|
|
210
|
+
"I haven't gotten enough love and attention.",
|
|
211
|
+
"For the most part, I haven't had someone to depend on for advice and emotional support.",
|
|
212
|
+
"For much of my life, I haven't had someone who wanted to get close to me and spend a lot of time with me.",
|
|
213
|
+
"For much of my life, I haven't felt that I am special to someone.",
|
|
214
|
+
"I have rarely had a strong person to give me sound advice or direction when I'm not sure what to do. *(ed)",
|
|
215
|
+
"I worry that people I feel close to will leave me or abandon me.",
|
|
216
|
+
"I don't feel that important relationships will last; I expect them to end.",
|
|
217
|
+
"I feel addicted to partners who can't be there for me in a committed way.",
|
|
218
|
+
"I become upset when someone leaves me alone, even for a short period of time.",
|
|
219
|
+
"I can't let myself get very close to other people, because I can't be sure they'll always be there.",
|
|
220
|
+
"People close to me have been very unpredictable: one moment they're available and nice; the next, they're angry, upset, self-absorbed, fighting, etc.",
|
|
221
|
+
"I need other people so much that I worry about losing them.",
|
|
222
|
+
"I can't be myself or express what I really feel, or people will leave me. *(ab)",
|
|
223
|
+
"I feel that I can't let my guard down in the presence of other people, or else they will intentionally hurt me.",
|
|
224
|
+
"It is only a matter of time before someone betrays me.",
|
|
225
|
+
"I have a great deal of difficulty trusting people.",
|
|
226
|
+
"I set up \"tests\" for other people, to see if they are telling me the truth and are well-intentioned.",
|
|
227
|
+
"I subscribe to the belief: \"Control or be controlled.\" *(ma)",
|
|
228
|
+
"I'm fundamentally different from other people.",
|
|
229
|
+
"I don't belong; I'm a loner.",
|
|
230
|
+
"I always feel on the outside of groups.",
|
|
231
|
+
"No one really understands me.",
|
|
232
|
+
"I sometimes feel as if I'm an alien. *(si)",
|
|
233
|
+
"No one I desire would want to stay close to me if he/she knew the real me.",
|
|
234
|
+
"I am inherently flawed and defective.",
|
|
235
|
+
"I feel that I'm not lovable.",
|
|
236
|
+
"I am too unacceptable in very basic ways to reveal myself to other people.",
|
|
237
|
+
"When people like me, I feel I am fooling them.",
|
|
238
|
+
"I cannot understand how anyone could love me. *(de)",
|
|
239
|
+
"Almost nothing I do at work (or school) is as good as other people can do.",
|
|
240
|
+
"Most other people are more capable than I am in areas of work (or school) and achievement.",
|
|
241
|
+
"I'm a failure.",
|
|
242
|
+
"I'm not as talented as most people are at their work (or at school).",
|
|
243
|
+
"I often feel embarrassed around other people, because I don't measure up to them in terms of my accomplishments.",
|
|
244
|
+
"I often compare my accomplishments with others and feel that they are much more successful. *(fa)",
|
|
245
|
+
"I do not feel capable of getting by on my own in everyday life.",
|
|
246
|
+
"I believe that other people can take care of me better than I can take care of myself.",
|
|
247
|
+
"I have trouble tackling new tasks outside of work unless I have someone to guide me.",
|
|
248
|
+
"I screw up everything I try, even outside of work (or school).",
|
|
249
|
+
"If I trust my own judgment in everyday situations, I'll make the wrong decision.",
|
|
250
|
+
"I feel that I need someone I can rely on to give me advice about practical issues.",
|
|
251
|
+
"I feel more like a child than an adult when it comes to handling everyday responsibilities.",
|
|
252
|
+
"I find the responsibilities of everyday life overwhelming. *(di)",
|
|
253
|
+
"I feel that a disaster (natural, criminal, financial, or medical) could strike at any moment.",
|
|
254
|
+
"I worry about being attacked.",
|
|
255
|
+
"I take great precautions to avoid getting sick or hurt.",
|
|
256
|
+
"I worry that I'm developing a serious illness, even though nothing serious has been diagnosed by a doctor.",
|
|
257
|
+
"I worry a lot about the bad things happening in the world: crime, pollution, etc.",
|
|
258
|
+
"I feel that the world is a dangerous place. *(vh)",
|
|
259
|
+
"My parent(s) and I tend to be overinvolved in each other's lives and problems.",
|
|
260
|
+
"It is very difficult for my parent(s) and me to keep intimate details from each other, without feeling betrayed or guilty.",
|
|
261
|
+
"My parent(s) and I must speak to each other almost every day, or else one of us feels guilty, hurt, disappointed, or alone.",
|
|
262
|
+
"I often feel that I do not have a separate identity from my parents or partner.",
|
|
263
|
+
"It is very difficult for me to maintain any distance from the people I am intimate with; I have trouble keeping any separate sense of myself.",
|
|
264
|
+
"I often feel that I have no privacy when it comes to my parent(s) or partner.",
|
|
265
|
+
"I feel that my parent(s) are, or would be, very hurt about my living on my own, away from them. *(em)",
|
|
266
|
+
"I believe that if I do what I want, I'm only asking for trouble.",
|
|
267
|
+
"In relationships, I let the other person have the upper hand.",
|
|
268
|
+
"I've always let others make choices for me, so I really don't know what I want for myself.",
|
|
269
|
+
"I worry a lot about pleasing other people, so they won't reject me.",
|
|
270
|
+
"I will go to much greater lengths than most people to avoid confrontations. *(sb)",
|
|
271
|
+
"I give more to other people than I get back in return.",
|
|
272
|
+
"I'm the one who usually ends up taking care of the people I'm close to.",
|
|
273
|
+
"No matter how busy I am, I can always find time for others.",
|
|
274
|
+
"I've always been the one who listens to everyone else's problems.",
|
|
275
|
+
"Other people see me as doing too much for others and not enough for myself.",
|
|
276
|
+
"No matter how much I give; I feel it is never enough. *(ss)",
|
|
277
|
+
"I worry about losing control of my actions.",
|
|
278
|
+
"I worry that I might seriously harm someone physically or emotionally if my anger gets out of control.",
|
|
279
|
+
"I feel that I must control my emotions and impulses, or something bad is likely to happen.",
|
|
280
|
+
"A lot of anger and resentment build up inside of me that I don't express. *(flc)",
|
|
281
|
+
"I am too self-conscious to show positive feelings to others (e.g., affection, showing I care).",
|
|
282
|
+
"I find it embarrassing to express my feelings to others.",
|
|
283
|
+
"I find it hard to be warm and spontaneous.",
|
|
284
|
+
"I control myself so much that people think I am unemotional.",
|
|
285
|
+
"People see me as uptight emotionally. *(ec)",
|
|
286
|
+
"I must be the best at most of what I do; I can't accept second best.",
|
|
287
|
+
"I strive to keep almost everything in perfect order.",
|
|
288
|
+
"I have so much to accomplish that there is almost no time to really relax.",
|
|
289
|
+
"I must meet all my responsibilities.",
|
|
290
|
+
"I often sacrifice pleasure and happiness to meet my own standards.",
|
|
291
|
+
"I can't let myself off the hook easily or make excuses for my mistakes.",
|
|
292
|
+
"I always must be Number One, in terms of my performance. *(us)",
|
|
293
|
+
"I have a lot of trouble accepting \"no\" for an answer when I want something from other people.",
|
|
294
|
+
"I hate to be constrained or kept from doing what I want.",
|
|
295
|
+
"I feel that I shouldn't have to follow the normal rules and conventions other people do.",
|
|
296
|
+
"I often find that I am so involved in my own priorities that I don't have time to give to friends or family.",
|
|
297
|
+
"People often tell me I am very controlling about the ways things are done.",
|
|
298
|
+
"I can't tolerate other people telling me what to do. *(et)",
|
|
299
|
+
"I can't seem to discipline myself to complete routine or boring tasks.",
|
|
300
|
+
"Often I allow myself to carry through on impulses and express emotions that get me into trouble or hurt other people.",
|
|
301
|
+
"I get bored very easily.",
|
|
302
|
+
"When tasks become difficult, I usually cannot persevere and complete them.",
|
|
303
|
+
"I can't force myself to do things I don't enjoy, even when I know it's for my own good.",
|
|
304
|
+
"I have rarely been able to stick to my resolutions.",
|
|
305
|
+
"I often do things impulsively that I later regret. *(is)",
|
|
306
|
+
"It is important to me to be liked by almost everyone I know.",
|
|
307
|
+
"I change myself depending on the people I’m with, so they’ll like me more.",
|
|
308
|
+
"My self-esteem is based mostly on how other people view me.",
|
|
309
|
+
"Even if I don’t like someone, I still want him or her to like me.",
|
|
310
|
+
"Unless I get a lot of attention from others, I feel less important. *(as)",
|
|
311
|
+
"You can’t be too careful; something will almost always go wrong.",
|
|
312
|
+
"I worry that a wrong decision could lead to disaster.",
|
|
313
|
+
"I often obsess over minor decisions, because the consequences of making a mistake seem so serious.",
|
|
314
|
+
"I feel better assuming things will not work out for me, so that I don’t feel disappointed if things go wrong.",
|
|
315
|
+
"I tend to be pessimistic.",
|
|
316
|
+
"If people get too enthusiastic about something, I become uncomfortable and feel like warning them of what could go wrong. *(np)",
|
|
317
|
+
"If I make a mistake, I deserve to be punished.",
|
|
318
|
+
"There is no excuse if I make a mistake.",
|
|
319
|
+
"If I don’t do the job, I should suffer the consequences.",
|
|
320
|
+
"It doesn’t matter why I make a mistake; I should pay the price when I do something wrong.",
|
|
321
|
+
"I’m a bad person who deserves to be punished. *(pu-s)",
|
|
322
|
+
"People who don’t “pull their own weight” should get punished in some way.",
|
|
323
|
+
"Most of the time, I don’t accept the excuses other people make. They’re just not willing to accept responsibility and pay the consequences.",
|
|
324
|
+
"I hold grudges, even after someone has apologised.",
|
|
325
|
+
"I get angry when people make excuses for themselves or blame other people for their problems. *(pu-o)"
|
|
326
|
+
];
|
|
327
|
+
const YSQ_SCHEMA_GROUPS = [
|
|
328
|
+
{ key: "emotional_deprivation", title: "Emotional Deprivation", start: 1, end: 5 },
|
|
329
|
+
{ key: "abandonment", title: "Abandonment", start: 6, end: 13 },
|
|
330
|
+
{ key: "mistrust", title: "Mistrust", start: 14, end: 18 },
|
|
331
|
+
{ key: "social_isolation", title: "Social Isolation", start: 19, end: 23 },
|
|
332
|
+
{ key: "defectiveness", title: "Defectiveness", start: 24, end: 29 },
|
|
333
|
+
{ key: "failure", title: "Failure", start: 30, end: 35 },
|
|
334
|
+
{ key: "dependence", title: "Dependence", start: 36, end: 43 },
|
|
335
|
+
{ key: "vulnerability_to_harm", title: "Vulnerability to Harm", start: 44, end: 49 },
|
|
336
|
+
{ key: "enmeshment", title: "Enmeshment", start: 50, end: 56 },
|
|
337
|
+
{ key: "subjugation", title: "Subjugation", start: 57, end: 61 },
|
|
338
|
+
{ key: "self_sacrifice", title: "Self-Sacrifice", start: 62, end: 67 },
|
|
339
|
+
{ key: "fear_of_losing_control", title: "Fear of Losing Control", start: 68, end: 71 },
|
|
340
|
+
{ key: "emotional_constriction", title: "Emotional Constriction", start: 72, end: 76 },
|
|
341
|
+
{ key: "unrelenting_standards", title: "Unrelenting Standards", start: 77, end: 83 },
|
|
342
|
+
{ key: "entitlement", title: "Entitlement", start: 84, end: 89 },
|
|
343
|
+
{ key: "insufficient_self_control", title: "Insufficient Self-Control", start: 90, end: 96 },
|
|
344
|
+
{ key: "approval_seeking", title: "Approval-Seeking", start: 97, end: 101 },
|
|
345
|
+
{ key: "negativity", title: "Negativity", start: 102, end: 107 },
|
|
346
|
+
{ key: "punitiveness_self", title: "Punitiveness (Self)", start: 108, end: 112 },
|
|
347
|
+
{ key: "punitiveness_other", title: "Punitiveness (Other)", start: 113, end: 116 }
|
|
348
|
+
];
|
|
349
|
+
const YSQ_ITEMS = YSQ_ITEM_TEXTS.map((prompt, index) => item(`ysq_${index + 1}`, prompt, YSQ_OPTIONS));
|
|
350
|
+
function rangeIds(prefix, start, end) {
|
|
351
|
+
const result = [];
|
|
352
|
+
for (let value = start; value <= end; value += 1) {
|
|
353
|
+
result.push(`${prefix}_${value}`);
|
|
354
|
+
}
|
|
355
|
+
return result;
|
|
356
|
+
}
|
|
357
|
+
function scoreBands(...bands) {
|
|
358
|
+
return bands.map(([label, min, max, severity]) => ({
|
|
359
|
+
label,
|
|
360
|
+
min: typeof min === "number" ? min : null,
|
|
361
|
+
max: typeof max === "number" ? max : null,
|
|
362
|
+
severity: severity ?? ""
|
|
363
|
+
}));
|
|
364
|
+
}
|
|
365
|
+
const QUESTIONNAIRE_SEEDS = [
|
|
366
|
+
{
|
|
367
|
+
key: "phq_9",
|
|
368
|
+
slug: "phq-9",
|
|
369
|
+
title: "PHQ-9",
|
|
370
|
+
subtitle: "Patient Health Questionnaire",
|
|
371
|
+
description: "Nine-item self-report depression screener covering the past two weeks.",
|
|
372
|
+
aliases: ["Patient Health Questionnaire-9"],
|
|
373
|
+
symptomDomains: ["depression", "mood"],
|
|
374
|
+
tags: ["core", "depression", "self-report"],
|
|
375
|
+
sourceClass: "free_use",
|
|
376
|
+
availability: "open",
|
|
377
|
+
isSelfReport: true,
|
|
378
|
+
definition: buildDefinition({
|
|
379
|
+
presentationMode: "single_question",
|
|
380
|
+
responseStyle: "four_point_frequency",
|
|
381
|
+
instructions: "Over the last 2 weeks, how often have you been bothered by any of the following problems?",
|
|
382
|
+
completionNote: "Higher scores indicate greater depressive symptom burden over the last two weeks.",
|
|
383
|
+
items: PHQ_ITEMS,
|
|
384
|
+
sections: [
|
|
385
|
+
{
|
|
386
|
+
id: "phq_section",
|
|
387
|
+
title: "PHQ-9",
|
|
388
|
+
itemIds: PHQ_ITEMS.map((entry) => entry.id)
|
|
389
|
+
}
|
|
390
|
+
]
|
|
391
|
+
}),
|
|
392
|
+
scoring: {
|
|
393
|
+
scores: [
|
|
394
|
+
numericScore("phq9_total", "PHQ-9 total", { kind: "sum", itemIds: PHQ_ITEMS.map((entry) => entry.id) }, {
|
|
395
|
+
dependsOnItemIds: PHQ_ITEMS.map((entry) => entry.id),
|
|
396
|
+
bands: scoreBands(["Minimal", 0, 4], ["Mild", 5, 9], ["Moderate", 10, 14], ["Moderately severe", 15, 19], ["Severe", 20, 27])
|
|
397
|
+
}),
|
|
398
|
+
numericScore("phq9_item9", "Item 9", { kind: "answer", itemId: "phq_9" }, {
|
|
399
|
+
dependsOnItemIds: ["phq_9"]
|
|
400
|
+
})
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
provenance: buildProvenance({
|
|
404
|
+
sourceClass: "free_use",
|
|
405
|
+
scoringNotes: "Sum items 1 through 9. Standard total bands are stored on the total score.",
|
|
406
|
+
sources: [
|
|
407
|
+
{
|
|
408
|
+
label: "PHQ Screeners",
|
|
409
|
+
url: "https://www.phqscreeners.com/images/sites/g/files/g10060481/f/201412/PHQ-9_English.pdf",
|
|
410
|
+
citation: "Spitzer RL, Williams JBW, Kroenke K, et al. Patient Health Questionnaire-9 (PHQ-9), English form.",
|
|
411
|
+
notes: "Official downloadable PDF notes that reproduction and distribution do not require permission."
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
})
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
key: "gad_7",
|
|
418
|
+
slug: "gad-7",
|
|
419
|
+
title: "GAD-7",
|
|
420
|
+
subtitle: "Generalized Anxiety Disorder",
|
|
421
|
+
description: "Seven-item self-report anxiety screener covering the past two weeks.",
|
|
422
|
+
aliases: ["Generalized Anxiety Disorder-7"],
|
|
423
|
+
symptomDomains: ["anxiety"],
|
|
424
|
+
tags: ["core", "anxiety", "self-report"],
|
|
425
|
+
sourceClass: "free_use",
|
|
426
|
+
availability: "open",
|
|
427
|
+
isSelfReport: true,
|
|
428
|
+
definition: buildDefinition({
|
|
429
|
+
presentationMode: "single_question",
|
|
430
|
+
responseStyle: "four_point_frequency",
|
|
431
|
+
instructions: "Over the last 2 weeks, how often have you been bothered by the following problems?",
|
|
432
|
+
completionNote: "Higher scores indicate greater anxiety symptom burden over the last two weeks.",
|
|
433
|
+
items: GAD_ITEMS,
|
|
434
|
+
sections: [
|
|
435
|
+
{
|
|
436
|
+
id: "gad_section",
|
|
437
|
+
title: "GAD-7",
|
|
438
|
+
itemIds: GAD_ITEMS.map((entry) => entry.id)
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
}),
|
|
442
|
+
scoring: {
|
|
443
|
+
scores: [
|
|
444
|
+
numericScore("gad7_total", "GAD-7 total", { kind: "sum", itemIds: GAD_ITEMS.map((entry) => entry.id) }, {
|
|
445
|
+
dependsOnItemIds: GAD_ITEMS.map((entry) => entry.id),
|
|
446
|
+
bands: scoreBands(["Minimal", 0, 4], ["Mild", 5, 9], ["Moderate", 10, 14], ["Severe", 15, 21])
|
|
447
|
+
})
|
|
448
|
+
]
|
|
449
|
+
},
|
|
450
|
+
provenance: buildProvenance({
|
|
451
|
+
sourceClass: "free_use",
|
|
452
|
+
scoringNotes: "Sum items 1 through 7. Standard total bands are stored on the total score.",
|
|
453
|
+
sources: [
|
|
454
|
+
{
|
|
455
|
+
label: "PHQ Screeners",
|
|
456
|
+
url: "https://www.phqscreeners.com/images/sites/g/files/g10060481/f/201412/GAD-7_English.pdf",
|
|
457
|
+
citation: "Spitzer RL, Williams JBW, Kroenke K, et al. Generalized Anxiety Disorder-7 (GAD-7), English form.",
|
|
458
|
+
notes: "Official downloadable PDF notes that reproduction and distribution do not require permission."
|
|
459
|
+
}
|
|
460
|
+
]
|
|
461
|
+
})
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
key: "who_5",
|
|
465
|
+
slug: "who-5",
|
|
466
|
+
title: "WHO-5",
|
|
467
|
+
subtitle: "Well-Being Index",
|
|
468
|
+
description: "Five-item self-report well-being index covering the past two weeks.",
|
|
469
|
+
aliases: ["WHO-5 Well-Being Index"],
|
|
470
|
+
symptomDomains: ["well-being", "mood"],
|
|
471
|
+
tags: ["well-being", "self-report"],
|
|
472
|
+
sourceClass: "open_noncommercial",
|
|
473
|
+
availability: "open",
|
|
474
|
+
isSelfReport: true,
|
|
475
|
+
definition: buildDefinition({
|
|
476
|
+
presentationMode: "single_question",
|
|
477
|
+
responseStyle: "six_point_frequency",
|
|
478
|
+
instructions: "Please indicate for each statement which is closest to how you have been feeling over the last two weeks.",
|
|
479
|
+
completionNote: "Higher scores indicate better mental well-being. The percentage score is the raw score multiplied by four.",
|
|
480
|
+
items: WHO5_ITEMS,
|
|
481
|
+
sections: [
|
|
482
|
+
{
|
|
483
|
+
id: "who5_section",
|
|
484
|
+
title: "WHO-5",
|
|
485
|
+
itemIds: WHO5_ITEMS.map((entry) => entry.id)
|
|
486
|
+
}
|
|
487
|
+
]
|
|
488
|
+
}),
|
|
489
|
+
scoring: {
|
|
490
|
+
scores: [
|
|
491
|
+
numericScore("who5_raw", "WHO-5 raw score", { kind: "sum", itemIds: WHO5_ITEMS.map((entry) => entry.id) }, {
|
|
492
|
+
dependsOnItemIds: WHO5_ITEMS.map((entry) => entry.id),
|
|
493
|
+
bands: scoreBands(["Very low well-being", 0, 7], ["Poor well-being", 8, 12], ["Positive well-being", 13, 25])
|
|
494
|
+
}),
|
|
495
|
+
numericScore("who5_percent", "WHO-5 percentage score", {
|
|
496
|
+
kind: "multiply",
|
|
497
|
+
values: [
|
|
498
|
+
{ kind: "score", scoreKey: "who5_raw" },
|
|
499
|
+
{ kind: "const", value: 4 }
|
|
500
|
+
]
|
|
501
|
+
}, {
|
|
502
|
+
valueType: "percent",
|
|
503
|
+
roundTo: 0
|
|
504
|
+
})
|
|
505
|
+
]
|
|
506
|
+
},
|
|
507
|
+
provenance: buildProvenance({
|
|
508
|
+
sourceClass: "open_noncommercial",
|
|
509
|
+
scoringNotes: "Raw score is the sum of the five items from 0 to 25. Percentage score is raw multiplied by four. Raw scores below 13 indicate poor mental well-being.",
|
|
510
|
+
sources: [
|
|
511
|
+
{
|
|
512
|
+
label: "World Health Organization",
|
|
513
|
+
url: "https://www.who.int/publications/m/item/WHO-UCN-MSD-MHE-2024.01",
|
|
514
|
+
citation: "World Health Organization. The World Health Organization-Five Well-Being Index (WHO-5). Geneva: WHO; 2024.",
|
|
515
|
+
notes: "WHO republishes the tool as open access under CC BY-NC-SA 3.0 IGO."
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
label: "WHO-5 English PDF",
|
|
519
|
+
url: "https://cdn.who.int/media/docs/default-source/mental-health/who-5_english-original4da539d6ed4b49389e3afe47cda2326a.pdf?download=true&sfvrsn=ed43f352_11",
|
|
520
|
+
citation: "World Health Organization. WHO-5 English original form, 2024.",
|
|
521
|
+
notes: "Question text and scoring details verified from the WHO-hosted PDF."
|
|
522
|
+
}
|
|
523
|
+
]
|
|
524
|
+
})
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
key: "pcl_5",
|
|
528
|
+
slug: "pcl-5",
|
|
529
|
+
title: "PCL-5",
|
|
530
|
+
subtitle: "PTSD Checklist for DSM-5",
|
|
531
|
+
description: "Twenty-item self-report PTSD symptom checklist covering the past month.",
|
|
532
|
+
aliases: ["PTSD Checklist for DSM-5"],
|
|
533
|
+
symptomDomains: ["trauma", "ptsd"],
|
|
534
|
+
tags: ["trauma", "self-report", "ptsd"],
|
|
535
|
+
sourceClass: "public_domain",
|
|
536
|
+
availability: "open",
|
|
537
|
+
isSelfReport: true,
|
|
538
|
+
definition: buildDefinition({
|
|
539
|
+
presentationMode: "single_question",
|
|
540
|
+
responseStyle: "five_point_severity",
|
|
541
|
+
instructions: "Keeping your worst event in mind, please read each problem carefully and indicate how much you have been bothered by that problem in the past month.",
|
|
542
|
+
completionNote: "The total is the sum of all 20 items. Cluster subscores are stored for intrusion, avoidance, negative alterations, and arousal/reactivity.",
|
|
543
|
+
items: PCL_ITEMS,
|
|
544
|
+
sections: [
|
|
545
|
+
{
|
|
546
|
+
id: "intrusion",
|
|
547
|
+
title: "Intrusion",
|
|
548
|
+
itemIds: rangeIds("pcl", 1, 5)
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
id: "avoidance",
|
|
552
|
+
title: "Avoidance",
|
|
553
|
+
itemIds: rangeIds("pcl", 6, 7)
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
id: "negative_alterations",
|
|
557
|
+
title: "Negative alterations in cognition and mood",
|
|
558
|
+
itemIds: rangeIds("pcl", 8, 14)
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
id: "arousal",
|
|
562
|
+
title: "Arousal and reactivity",
|
|
563
|
+
itemIds: rangeIds("pcl", 15, 20)
|
|
564
|
+
}
|
|
565
|
+
]
|
|
566
|
+
}),
|
|
567
|
+
scoring: {
|
|
568
|
+
scores: [
|
|
569
|
+
numericScore("pcl5_total", "PCL-5 total", { kind: "sum", itemIds: PCL_ITEMS.map((entry) => entry.id) }, {
|
|
570
|
+
dependsOnItemIds: PCL_ITEMS.map((entry) => entry.id),
|
|
571
|
+
bands: scoreBands(["Below typical provisional threshold", 0, 30], ["At threshold range", 31, 32], ["Above threshold range", 33, 80])
|
|
572
|
+
}),
|
|
573
|
+
numericScore("pcl5_intrusion", "Intrusion", { kind: "sum", itemIds: rangeIds("pcl", 1, 5) }, {
|
|
574
|
+
dependsOnItemIds: rangeIds("pcl", 1, 5)
|
|
575
|
+
}),
|
|
576
|
+
numericScore("pcl5_avoidance", "Avoidance", { kind: "sum", itemIds: rangeIds("pcl", 6, 7) }, {
|
|
577
|
+
dependsOnItemIds: rangeIds("pcl", 6, 7)
|
|
578
|
+
}),
|
|
579
|
+
numericScore("pcl5_negative_alterations", "Negative alterations", { kind: "sum", itemIds: rangeIds("pcl", 8, 14) }, {
|
|
580
|
+
dependsOnItemIds: rangeIds("pcl", 8, 14)
|
|
581
|
+
}),
|
|
582
|
+
numericScore("pcl5_arousal", "Arousal/reactivity", { kind: "sum", itemIds: rangeIds("pcl", 15, 20) }, {
|
|
583
|
+
dependsOnItemIds: rangeIds("pcl", 15, 20)
|
|
584
|
+
})
|
|
585
|
+
]
|
|
586
|
+
},
|
|
587
|
+
provenance: buildProvenance({
|
|
588
|
+
sourceClass: "public_domain",
|
|
589
|
+
scoringNotes: "Total score is the sum of the 20 items. Cluster subscores follow the DSM-5 symptom clusters. The National Center for PTSD describes the instrument as public domain.",
|
|
590
|
+
sources: [
|
|
591
|
+
{
|
|
592
|
+
label: "National Center for PTSD",
|
|
593
|
+
url: "https://www.ptsd.va.gov/professional/assessment/adult-sr/ptsd-checklist.asp",
|
|
594
|
+
citation: "National Center for PTSD. PTSD Checklist for DSM-5 (PCL-5), accessed 2026-04-06.",
|
|
595
|
+
notes: "Official overview page states the measure is public domain."
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
label: "PCL-5 Standard form PDF",
|
|
599
|
+
url: "https://www.ptsd.va.gov/PTSD/professional/assessment/documents/PCL5_Standard_form.pdf",
|
|
600
|
+
citation: "Weathers FW, Litz BT, Keane TM, Palmieri PA, Marx BP, Schnurr PP. PTSD Checklist for DSM-5 (PCL-5), standard form.",
|
|
601
|
+
notes: "Question text verified against the official PDF."
|
|
602
|
+
}
|
|
603
|
+
]
|
|
604
|
+
})
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
key: "audit",
|
|
608
|
+
slug: "audit",
|
|
609
|
+
title: "AUDIT",
|
|
610
|
+
subtitle: "Alcohol Use Disorders Identification Test",
|
|
611
|
+
description: "Ten-item self-report alcohol screening questionnaire.",
|
|
612
|
+
aliases: ["Alcohol Use Disorders Identification Test"],
|
|
613
|
+
symptomDomains: ["substance use", "alcohol"],
|
|
614
|
+
tags: ["alcohol", "self-report"],
|
|
615
|
+
sourceClass: "open_noncommercial",
|
|
616
|
+
availability: "open",
|
|
617
|
+
isSelfReport: true,
|
|
618
|
+
definition: buildDefinition({
|
|
619
|
+
presentationMode: "single_question",
|
|
620
|
+
responseStyle: "mixed_frequency_quantity",
|
|
621
|
+
instructions: "These questions refer to alcohol use. Select the option that best matches your experience.",
|
|
622
|
+
completionNote: "The total is the sum of all ten items, with items 9 and 10 scored 0, 2, or 4.",
|
|
623
|
+
items: AUDIT_ITEMS,
|
|
624
|
+
sections: [
|
|
625
|
+
{
|
|
626
|
+
id: "audit_section",
|
|
627
|
+
title: "AUDIT",
|
|
628
|
+
itemIds: AUDIT_ITEMS.map((entry) => entry.id)
|
|
629
|
+
}
|
|
630
|
+
]
|
|
631
|
+
}),
|
|
632
|
+
scoring: {
|
|
633
|
+
scores: [
|
|
634
|
+
numericScore("audit_total", "AUDIT total", { kind: "sum", itemIds: AUDIT_ITEMS.map((entry) => entry.id) }, {
|
|
635
|
+
dependsOnItemIds: AUDIT_ITEMS.map((entry) => entry.id),
|
|
636
|
+
bands: scoreBands(["Zone I · Low risk", 0, 7], ["Zone II · Hazardous", 8, 15], ["Zone III · Harmful", 16, 19], ["Zone IV · Possible dependence", 20, 40])
|
|
637
|
+
})
|
|
638
|
+
]
|
|
639
|
+
},
|
|
640
|
+
provenance: buildProvenance({
|
|
641
|
+
sourceClass: "open_noncommercial",
|
|
642
|
+
scoringNotes: "Items 1 through 8 are scored 0 to 4. Items 9 and 10 are scored 0, 2, or 4. Total zones follow the WHO manual.",
|
|
643
|
+
sources: [
|
|
644
|
+
{
|
|
645
|
+
label: "World Health Organization publication page",
|
|
646
|
+
url: "https://www.who.int/publications/i/item/WHO-MSD-MSB-01.6a",
|
|
647
|
+
citation: "Babor TF, Higgins-Biddle JC, Saunders JB, Monteiro MG. AUDIT: The Alcohol Use Disorders Identification Test. WHO; 2001.",
|
|
648
|
+
notes: "WHO publication page for the manual and self-report questionnaire appendix."
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
label: "WHO AUDIT manual PDF",
|
|
652
|
+
url: "https://iris.who.int/server/api/core/bitstreams/c57d9855-5450-4c46-84b1-c88a6df4192c/content",
|
|
653
|
+
citation: "World Health Organization. AUDIT manual and self-report questionnaire appendix.",
|
|
654
|
+
notes: "WHO manual permits free review, reproduction, and translation for non-commercial use."
|
|
655
|
+
}
|
|
656
|
+
]
|
|
657
|
+
})
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
key: "srq_20",
|
|
661
|
+
slug: "srq-20",
|
|
662
|
+
title: "SRQ-20",
|
|
663
|
+
subtitle: "Self-Reporting Questionnaire",
|
|
664
|
+
description: "Twenty-item self-report screening questionnaire for common mental health symptoms.",
|
|
665
|
+
aliases: ["Self Reporting Questionnaire-20", "WHO SRQ-20"],
|
|
666
|
+
symptomDomains: ["common mental disorders", "distress"],
|
|
667
|
+
tags: ["screening", "self-report", "who"],
|
|
668
|
+
sourceClass: "secondary_verified",
|
|
669
|
+
availability: "open",
|
|
670
|
+
isSelfReport: true,
|
|
671
|
+
definition: buildDefinition({
|
|
672
|
+
presentationMode: "single_question",
|
|
673
|
+
responseStyle: "yes_no",
|
|
674
|
+
instructions: "Answer yes or no for each symptom based on your recent experience.",
|
|
675
|
+
completionNote: "The SRQ-20 total is the count of “Yes” responses. Cutoffs vary by study context, so the raw total is stored directly.",
|
|
676
|
+
items: SRQ_ITEMS,
|
|
677
|
+
sections: [
|
|
678
|
+
{
|
|
679
|
+
id: "srq_section",
|
|
680
|
+
title: "SRQ-20",
|
|
681
|
+
itemIds: SRQ_ITEMS.map((entry) => entry.id)
|
|
682
|
+
}
|
|
683
|
+
]
|
|
684
|
+
}),
|
|
685
|
+
scoring: {
|
|
686
|
+
scores: [
|
|
687
|
+
numericScore("srq20_total", "SRQ-20 total", { kind: "sum", itemIds: SRQ_ITEMS.map((entry) => entry.id) }, {
|
|
688
|
+
dependsOnItemIds: SRQ_ITEMS.map((entry) => entry.id),
|
|
689
|
+
bands: scoreBands(["Lower symptom count", 0, 7], ["Elevated symptom count", 8, 20])
|
|
690
|
+
})
|
|
691
|
+
]
|
|
692
|
+
},
|
|
693
|
+
provenance: buildProvenance({
|
|
694
|
+
sourceClass: "secondary_verified",
|
|
695
|
+
scoringNotes: "Total score is the count of yes responses across the 20 items. The item wording was verified against accessible secondary tables because the WHO archival PDF is OCR-poor in this environment.",
|
|
696
|
+
sources: [
|
|
697
|
+
{
|
|
698
|
+
label: "WHO IRIS archival record",
|
|
699
|
+
url: "https://iris.who.int/handle/10665/61113",
|
|
700
|
+
citation: "World Health Organization. A user's guide to the Self Reporting Questionnaire (SRQ). Geneva: WHO; 1994.",
|
|
701
|
+
notes: "Archival WHO source used for provenance and scoring intent."
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
label: "MHPSS Knowledge Hub",
|
|
705
|
+
url: "https://mhpssknowledgehub.sph.cuny.edu/measures/self-reporting-questionnaire-srq/",
|
|
706
|
+
citation: "MHPSS Knowledge Hub. Self-Reporting Questionnaire (SRQ) measure summary.",
|
|
707
|
+
notes: "Accessible secondary reference confirming SRQ-20 format and public availability."
|
|
708
|
+
}
|
|
709
|
+
]
|
|
710
|
+
})
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
key: "ysq_r",
|
|
714
|
+
slug: "ysq-r",
|
|
715
|
+
title: "YSQ-R",
|
|
716
|
+
subtitle: "Young Schema Questionnaire Revised",
|
|
717
|
+
description: "Long-form schema questionnaire with schema-level mean and elevation scoring.",
|
|
718
|
+
aliases: ["Young Schema Questionnaire - Revised"],
|
|
719
|
+
symptomDomains: ["schemas", "personality patterns"],
|
|
720
|
+
tags: ["schema therapy", "self-report", "clinician"],
|
|
721
|
+
sourceClass: "free_clinician",
|
|
722
|
+
availability: "free_clinician",
|
|
723
|
+
isSelfReport: true,
|
|
724
|
+
definition: buildDefinition({
|
|
725
|
+
presentationMode: "batched_likert",
|
|
726
|
+
responseStyle: "six_point_schema_rating",
|
|
727
|
+
instructions: "Listed below are statements that someone might use to describe themselves. Decide how well each statement describes you and choose the highest rating from 1 to 6.",
|
|
728
|
+
completionNote: "Each schema stores a mean score, the proportion of 5 and 6 responses, the proportion of 4, 5, and 6 responses, and an elevation label that matches the distributed scorer workbook.",
|
|
729
|
+
items: YSQ_ITEMS,
|
|
730
|
+
sections: YSQ_SCHEMA_GROUPS.map((group) => ({
|
|
731
|
+
id: group.key,
|
|
732
|
+
title: group.title,
|
|
733
|
+
itemIds: rangeIds("ysq", group.start, group.end)
|
|
734
|
+
})),
|
|
735
|
+
pageSize: 8
|
|
736
|
+
}),
|
|
737
|
+
scoring: {
|
|
738
|
+
scores: YSQ_SCHEMA_GROUPS.flatMap((group) => {
|
|
739
|
+
const itemIds = rangeIds("ysq", group.start, group.end);
|
|
740
|
+
return [
|
|
741
|
+
numericScore(`${group.key}_mean`, `${group.title} mean`, { kind: "average", itemIds }, {
|
|
742
|
+
dependsOnItemIds: itemIds,
|
|
743
|
+
missingPolicy: { mode: "allow_partial" },
|
|
744
|
+
roundTo: 2
|
|
745
|
+
}),
|
|
746
|
+
numericScore(`${group.key}_pct_56`, `${group.title} % of 5s and 6s`, {
|
|
747
|
+
kind: "round",
|
|
748
|
+
digits: 4,
|
|
749
|
+
value: {
|
|
750
|
+
kind: "divide",
|
|
751
|
+
left: {
|
|
752
|
+
kind: "count_if",
|
|
753
|
+
itemIds,
|
|
754
|
+
comparator: "gt",
|
|
755
|
+
target: 4
|
|
756
|
+
},
|
|
757
|
+
right: {
|
|
758
|
+
kind: "const",
|
|
759
|
+
value: itemIds.length
|
|
760
|
+
},
|
|
761
|
+
zeroValue: 0
|
|
762
|
+
}
|
|
763
|
+
}, {
|
|
764
|
+
dependsOnItemIds: itemIds,
|
|
765
|
+
missingPolicy: { mode: "allow_partial" },
|
|
766
|
+
valueType: "percent"
|
|
767
|
+
}),
|
|
768
|
+
numericScore(`${group.key}_pct_456`, `${group.title} % of 4s, 5s and 6s`, {
|
|
769
|
+
kind: "round",
|
|
770
|
+
digits: 4,
|
|
771
|
+
value: {
|
|
772
|
+
kind: "divide",
|
|
773
|
+
left: {
|
|
774
|
+
kind: "count_if",
|
|
775
|
+
itemIds,
|
|
776
|
+
comparator: "gt",
|
|
777
|
+
target: 3
|
|
778
|
+
},
|
|
779
|
+
right: {
|
|
780
|
+
kind: "const",
|
|
781
|
+
value: itemIds.length
|
|
782
|
+
},
|
|
783
|
+
zeroValue: 0
|
|
784
|
+
}
|
|
785
|
+
}, {
|
|
786
|
+
dependsOnItemIds: itemIds,
|
|
787
|
+
missingPolicy: { mode: "allow_partial" },
|
|
788
|
+
valueType: "percent"
|
|
789
|
+
}),
|
|
790
|
+
{
|
|
791
|
+
key: `${group.key}_elevation`,
|
|
792
|
+
label: `${group.title} elevation`,
|
|
793
|
+
description: "",
|
|
794
|
+
valueType: "text",
|
|
795
|
+
expression: {
|
|
796
|
+
kind: "if",
|
|
797
|
+
condition: {
|
|
798
|
+
kind: "compare",
|
|
799
|
+
comparator: "gte",
|
|
800
|
+
left: { kind: "score", scoreKey: `${group.key}_mean` },
|
|
801
|
+
right: { kind: "const", value: 4 }
|
|
802
|
+
},
|
|
803
|
+
then: { kind: "const", value: "Elevated" },
|
|
804
|
+
else: {
|
|
805
|
+
kind: "if",
|
|
806
|
+
condition: {
|
|
807
|
+
kind: "compare",
|
|
808
|
+
comparator: "gte",
|
|
809
|
+
left: { kind: "score", scoreKey: `${group.key}_pct_56` },
|
|
810
|
+
right: { kind: "const", value: 0.5 }
|
|
811
|
+
},
|
|
812
|
+
then: { kind: "const", value: "Elevated" },
|
|
813
|
+
else: { kind: "const", value: "Not Elevated" }
|
|
814
|
+
}
|
|
815
|
+
},
|
|
816
|
+
dependsOnItemIds: [],
|
|
817
|
+
missingPolicy: { mode: "allow_partial" },
|
|
818
|
+
bands: [],
|
|
819
|
+
roundTo: null,
|
|
820
|
+
unitLabel: ""
|
|
821
|
+
}
|
|
822
|
+
];
|
|
823
|
+
})
|
|
824
|
+
},
|
|
825
|
+
provenance: buildProvenance({
|
|
826
|
+
sourceClass: "free_clinician",
|
|
827
|
+
scoringNotes: "Schema means and elevation logic mirror the downloadable YSQ-R scorer workbook. The resource is free for research and trained-clinician assessment use but is not openly licensed.",
|
|
828
|
+
sources: [
|
|
829
|
+
{
|
|
830
|
+
label: "Anima Schema Therapy resources",
|
|
831
|
+
url: "https://www.anima.com.au/schema",
|
|
832
|
+
citation: "Anima. YSQ-R clinician resource hub, accessed 2026-04-06.",
|
|
833
|
+
notes: "Public page linking the questionnaire workbook, scorer workbook, and instructions."
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
label: "YSQ-R questionnaire workbook",
|
|
837
|
+
url: "https://www.anima.com.au/s/YSQ-R-Questionniare-V-452-23122025-Finalpro.xlsx",
|
|
838
|
+
citation: "Yalcin O, Marais I, Lee C, Correia H. YSQ-R questionnaire workbook, version 4.5.",
|
|
839
|
+
notes: "Item wording transcribed from the downloadable workbook."
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
label: "YSQ-R scorer workbook",
|
|
843
|
+
url: "https://www.anima.com.au/s/YSQ-R-Scorer-Version-452-Finalpro-231225.xlsx",
|
|
844
|
+
citation: "Yalcin O. YSQ-R scorer workbook, version 4.52.",
|
|
845
|
+
notes: "Schema mean, percentage, and elevation formulae mirrored from the scorer workbook."
|
|
846
|
+
}
|
|
847
|
+
]
|
|
848
|
+
})
|
|
849
|
+
}
|
|
850
|
+
];
|
|
851
|
+
export function getQuestionnaireSeeds() {
|
|
852
|
+
return QUESTIONNAIRE_SEEDS;
|
|
853
|
+
}
|