Anxiety screen
Status:
stableCategory:psychosocialAdded:2026-04-20Last reviewed:2026-04-21
Summary
The Generalized Anxiety Disorder-7 (GAD-7) is Trinity's anxiety-
symptom screening instrument. Seven items, each scored 0–3,
summing to 0–21 and mapping to four severity bands. GAD-7 is
commonly co-administered with
depression_screen to cover
both anxiety and depression in a single psychosocial screen.
Resource identity
| Field | Value |
|---|---|
| Category | psychosocial |
| Resource | anxiety_screen |
| Instrument ID | anxiety_screen |
| Rubric version | 1.0.0 |
| Path prefix | /api/psychosocial/anxiety_screen |
Operations
| Operation | Method | Path | Contract |
|---|---|---|---|
| Questions | GET | /api/psychosocial/anxiety_screen/questions | patterns-questions.md |
| Score | POST | /api/psychosocial/anxiety_screen/score | patterns-score.md |
Items
Seven items, each on a 0–3 scale.
| ID | Prompt (paraphrased) |
|---|---|
item_1 | Feeling nervous, anxious, or on edge. |
item_2 | Not being able to stop or control worrying. |
item_3 | Worrying too much about different things. |
item_4 | Trouble relaxing. |
item_5 | Being so restless that it is hard to sit still. |
item_6 | Becoming easily annoyed or irritable. |
item_7 | Feeling afraid, as if something awful might happen. |
Answer choices per item:
| Value | Label |
|---|---|
0 | Not at all |
1 | Several days |
2 | More than half the days |
3 | Nearly every day |
Scoring
| Field | Value |
|---|---|
| Method | simple_sum over all seven items. |
| Score range | 0 – 21. |
Bands
| Band | Range (inclusive) | Clinical meaning |
|---|---|---|
minimal | 0 – 4 | Minimal or no anxiety symptoms. |
mild | 5 – 9 | Mild anxiety symptoms. |
moderate | 10 – 14 | Moderate anxiety symptoms. |
severe | 15 – 21 | Severe anxiety symptoms. |
Cutoffs match the widely-published GAD-7 thresholds.
Required items
All seven items are required for a strict /score call.
Worked example
Every item answered with 2. See quickstart.md for
per-language scaffolding and patterns-score.md
for the shared /score contract.
Send:
POST /api/psychosocial/anxiety_screen/score HTTP/1.1
Host: engine.tripod-health.com
apikey: $ENGINE_API_KEY
Content-Type: application/json
X-Request-ID: docs-anxiety_screen-score-basic
{
"responses": {
"item_1": 2, "item_2": 2, "item_3": 2, "item_4": 2,
"item_5": 2, "item_6": 2, "item_7": 2
}
}
Receive (200 OK):
{
"instrument": "anxiety_screen",
"category": "psychosocial",
"finding": {
"algorithm_id": "anxiety_screen",
"algorithm_version": "1.0.0",
"score": 14,
"band": "moderate",
"raw": {
"rubric_version": "1.0.0",
"responded_items": 7
},
"context": null,
"imputed": false,
"sd": null,
"prior_source": null
},
"confidence": {
"overall": 1,
"tier": "high",
"breakdown": {
"input_completeness": 1,
"imputation_variance": null,
"model_certainty": null
}
},
"recommendations": null,
"depth": "basic",
"catalog_version": "0.13.0",
"request_id": "docs-anxiety_screen-score-basic",
"timestamp": "2026-04-21T23:14:58.422456+00:00"
}
Computation: sum = 2 × 7 = 14 → band moderate (10–14). A more
mixed response like {2,2,2,1,0,1,1} sums to 9 → band mild
(5–9).
Calling in your language
curl
curl -sS -X POST "https://engine.tripod-health.com/api/psychosocial/anxiety_screen/score" \
-H "apikey: $ENGINE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"responses":{"item_1":2,"item_2":2,"item_3":2,"item_4":2,"item_5":2,"item_6":2,"item_7":2}}'
Python (requests)
# Uses the call() helper from quickstart.md.
responses = {f"item_{i}": 2 for i in range(1, 8)}
result = call("POST", "/api/psychosocial/anxiety_screen/score",
{"responses": responses})
print(result["finding"]["score"], result["finding"]["band"])
Node.js (native fetch)
// Uses the call() helper from quickstart.md.
const responses = Object.fromEntries(
Array.from({ length: 7 }, (_, i) => [`item_${i + 1}`, 2]),
);
const result = await call("POST",
"/api/psychosocial/anxiety_screen/score", { responses });
console.log(result.finding.score, result.finding.band);
TypeScript
// Uses the typed call<T>() helper from quickstart.md.
const responses = Object.fromEntries(
Array.from({ length: 7 }, (_, i) => [`item_${i + 1}`, 2]),
);
const result = await call<ScoreResponse>(
"POST",
"/api/psychosocial/anxiety_screen/score",
{ responses },
);
Go
// Uses the call() helper from quickstart.md.
responses := make(map[string]int, 7)
for i := 1; i <= 7; i++ {
responses[fmt.Sprintf("item_%d", i)] = 2
}
result, err := call("POST", "/api/psychosocial/anxiety_screen/score",
map[string]any{"responses": responses}, 3)
if err != nil {
panic(err)
}
finding := result["finding"].(map[string]any)
fmt.Printf("GAD-7: %v (%v)\n", finding["score"], finding["band"])
Java
// Uses the call() helper from quickstart.md.
StringBuilder body = new StringBuilder("{\"responses\":{");
for (int i = 1; i <= 7; i++) {
if (i > 1) body.append(",");
body.append("\"item_").append(i).append("\":2");
}
body.append("}}");
String result = call("POST",
"/api/psychosocial/anxiety_screen/score", body.toString(), 3);
System.out.println(result);
C# (.NET HttpClient)
// Uses the Call() helper from quickstart.md.
var responses = Enumerable.Range(1, 7)
.ToDictionary(i => $"item_{i}", _ => 2);
var result = await Call(HttpMethod.Post,
"/api/psychosocial/anxiety_screen/score",
new { responses });
var finding = result.GetProperty("finding");
Console.WriteLine($"GAD-7: {finding.GetProperty("score").GetDouble()} ({finding.GetProperty("band").GetString()})");
PowerShell
# Uses the Invoke-Engine helper from quickstart.md.
$responses = @{}
1..7 | ForEach-Object { $responses["item_$_"] = 2 }
$result = Invoke-Engine -Method Post -Path "/api/psychosocial/anxiety_screen/score" -Body @{ responses = $responses }
"GAD-7: $($result.finding.score) ($($result.finding.band))"
Clinical interpretation
- What it screens. Generalized anxiety symptom frequency over the past two weeks.
- Not a diagnosis. Like PHQ-9, GAD-7 is a screen. A
moderateor higher band prompts a clinical follow-up conversation; the Trinity does not make a clinical determination. - Threshold. A score
≥ 10(bandmoderateor worse) is the commonly-used threshold for further assessment of generalized anxiety.
Intended use
- Domain-specific follow-up after an elevated psychosocial
signal (for example a
highband onorebro). - Paired co-administration with PHQ-9 as the standard brief psychosocial screen. The two instruments tap partially distinct constructs; administering both is standard practice.
- Feeding the CDRI composite as the canonical anxiety signal in the psychosocial domain.
Mistaken use
- Do not use the GAD-7 as a general distress measure. It is specific to generalized anxiety; it will not flag depression or pain-related distress on its own.
- Do not interpret
severeas panic disorder, PTSD, or another anxiety subtype. The GAD-7 does not differentiate among anxiety disorders. - Do not swap GAD-7 for PHQ-9 or vice versa. They address different constructs despite sharing a similar shape. Pick the one (or both) that matches what you want to screen for.
- Do not compare totals across rubric versions without checking
version— band cutoffs and item wording can change between releases.
Debugging
- Capture
request_id. Present in every response body. 400 ValidationErrorwithmissing_items. Send all seven items.- Score seems high compared to presentation. Re-check the
answer-choice range;
3is"Nearly every day", not"Not at all". An inverted UI that mis-maps labels to values is the most common source of inflated GAD-7 scores.
Related
- patterns-questions.md, patterns-score.md — shared contracts.
- instruments-depression_screen.md — PHQ-9; the standard co-administered depression screen.
- instruments-orebro.md — yellow-flag
screen whose
elevatedband often motivates targeted GAD-7 + PHQ-9 administration. - composite-cdri-compute.md — where GAD-7 feeds the psychosocial domain signal.
Change history
| Date | Change |
|---|---|
| 2026-04-20 | Initial publication. |