Loading documentation

Access required

Your account doesn't have access to the documentation. Contact your administrator.

Sign out
Skip to main content

Anxiety screen

Status: stable Category: psychosocial Added: 2026-04-20 Last reviewed: 2026-04-21

Summary

The Generalized Anxiety Disorder-7 (GAD-7) is Trinity's anxiety- symptom screening instrument. Seven items, each scored 03, 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

FieldValue
Categorypsychosocial
Resourceanxiety_screen
Instrument IDanxiety_screen
Rubric version1.0.0
Path prefix/api/psychosocial/anxiety_screen

Operations

OperationMethodPathContract
QuestionsGET/api/psychosocial/anxiety_screen/questionspatterns-questions.md
ScorePOST/api/psychosocial/anxiety_screen/scorepatterns-score.md

Items

Seven items, each on a 0–3 scale.

IDPrompt (paraphrased)
item_1Feeling nervous, anxious, or on edge.
item_2Not being able to stop or control worrying.
item_3Worrying too much about different things.
item_4Trouble relaxing.
item_5Being so restless that it is hard to sit still.
item_6Becoming easily annoyed or irritable.
item_7Feeling afraid, as if something awful might happen.

Answer choices per item:

ValueLabel
0Not at all
1Several days
2More than half the days
3Nearly every day

Scoring

FieldValue
Methodsimple_sum over all seven items.
Score range021.

Bands

BandRange (inclusive)Clinical meaning
minimal04Minimal or no anxiety symptoms.
mild59Mild anxiety symptoms.
moderate1014Moderate anxiety symptoms.
severe1521Severe 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 moderate or higher band prompts a clinical follow-up conversation; the Trinity does not make a clinical determination.
  • Threshold. A score ≥ 10 (band moderate or 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 high band on orebro).
  • 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 severe as 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

  1. Capture request_id. Present in every response body.
  2. 400 ValidationError with missing_items. Send all seven items.
  3. Score seems high compared to presentation. Re-check the answer-choice range; 3 is "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.

Change history

DateChange
2026-04-20Initial publication.