Loading documentation

Access required

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

Sign out
Skip to main content

Depression screen

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

Summary

The Patient Health Questionnaire-9 (PHQ-9) is Trinity's depression-symptom screening instrument. Nine items, each scored 0 (not at all) to 3 (nearly every day), summing to 0–27 and mapping to five severity bands from minimal to severe.

⚠ Safety-critical note: item 9 and self-harm

PHQ-9 item 9 asks about thoughts of self-harm or being better off dead. Trinity scores this item in the total just like the other eight, and reports the total score and band. Trinity does not surface a separate alert, recommendation, or crisis-escalation flag when a non-zero response is reported on item 9.

If your integration administers this instrument to real users, you are responsible for your own safety-escalation pathway. A common pattern: inspect the item-9 value in your client before submitting to /score, and branch on a non-zero value to display crisis resources (for example in the United States, 988 Suicide and Crisis Lifeline) regardless of the final score or band. Do not rely on Trinity's band to trigger such a pathway — minimal and mild bands can coexist with a non-zero item-9 response.

Resource identity

FieldValue
Categorypsychosocial
Resourcedepression_screen
Instrument IDdepression_screen
Rubric version1.0.0
Path prefix/api/psychosocial/depression_screen

Operations

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

Items

Nine items, each on a 0–3 scale.

IDPrompt (paraphrased)
item_1Little interest or pleasure in doing things.
item_2Feeling down, depressed, or hopeless.
item_3Trouble falling or staying asleep, or sleeping too much.
item_4Feeling tired or having little energy.
item_5Poor appetite or overeating.
item_6Feeling bad about yourself, or that you are a failure.
item_7Trouble concentrating on things.
item_8Moving or speaking slowly — or the opposite — noticeably.
item_9Thoughts that you would be better off dead or of hurting yourself.

Answer choices per item:

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

Scoring

FieldValue
Methodsimple_sum over all nine items.
Score range027.

Bands

BandRange (inclusive)Clinical meaning
minimal04Minimal or no depression symptoms.
mild59Mild depression symptoms.
moderate1014Moderate depression symptoms.
moderately_severe1519Moderately severe depression symptoms.
severe2027Severe depression symptoms.

Cutoffs match the widely-published PHQ-9 thresholds.

Required items

Every item (item_1 through item_9) is required, including item_9. A strict /score call that omits any item returns 400 ValidationError naming the missing ids.

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/depression_screen/score HTTP/1.1
Host: engine.tripod-health.com
apikey: $ENGINE_API_KEY
Content-Type: application/json
X-Request-ID: docs-depression_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, "item_8": 2, "item_9": 2
}
}

Receive (200 OK):

{
"instrument": "depression_screen",
"category": "psychosocial",
"finding": {
"algorithm_id": "depression_screen",
"algorithm_version": "1.0.0",
"score": 18,
"band": "moderately_severe",
"raw": {
"rubric_version": "1.0.0",
"responded_items": 9
},
"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-depression_screen-score-basic",
"timestamp": "2026-04-21T23:14:57.589123+00:00"
}

Computation: sum = 2 × 9 = 18 → band moderately_severe (15–19). A more mixed response like {2,2,1,2,1,2,1,1,0} sums to 12 → band moderate (10–14).

Note on item 9. Item 9 contributes to the total score like any other item, so finding.score and finding.band alone do not tell you whether item 9 was flagged by the respondent. Two different request paths expose this detail:

  • At ?depth=full, Trinity's rule pack emits an urgent-priority recommendation in recommendations.items[] whenever item_9 >= 1, independent of the total band. Callers using depth=full therefore receive the signal automatically. See patterns-score.md.
  • At ?depth=basic or ?depth=contextual, the recommendations block is null and this signal is not surfaced. Callers on the lighter depths must inspect responses["item_9"] client-side before relying on finding.band alone.

Pick the depth that matches your workflow's safety posture.

Calling in your language

curl

curl -sS -X POST "https://engine.tripod-health.com/api/psychosocial/depression_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,"item_8":2,"item_9":2}}'

Python (requests)

# Uses the call() helper from quickstart.md.
responses = {f"item_{i}": 2 for i in range(1, 10)}
result = call("POST", "/api/psychosocial/depression_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: 9 }, (_, i) => [`item_${i + 1}`, 2]),
);
const result = await call("POST",
"/api/psychosocial/depression_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: 9 }, (_, i) => [`item_${i + 1}`, 2]),
);
const result = await call<ScoreResponse>(
"POST",
"/api/psychosocial/depression_screen/score",
{ responses },
);

Go

// Uses the call() helper from quickstart.md.
responses := make(map[string]int, 9)
for i := 1; i <= 9; i++ {
responses[fmt.Sprintf("item_%d", i)] = 2
}
result, err := call("POST", "/api/psychosocial/depression_screen/score",
map[string]any{"responses": responses}, 3)
if err != nil {
panic(err)
}
finding := result["finding"].(map[string]any)
fmt.Printf("PHQ-9: %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 <= 9; i++) {
if (i > 1) body.append(",");
body.append("\"item_").append(i).append("\":2");
}
body.append("}}");
String result = call("POST",
"/api/psychosocial/depression_screen/score", body.toString(), 3);
System.out.println(result);

C# (.NET HttpClient)

// Uses the Call() helper from quickstart.md.
var responses = Enumerable.Range(1, 9)
.ToDictionary(i => $"item_{i}", _ => 2);
var result = await Call(HttpMethod.Post,
"/api/psychosocial/depression_screen/score",
new { responses });
var finding = result.GetProperty("finding");
Console.WriteLine($"PHQ-9: {finding.GetProperty("score").GetDouble()} ({finding.GetProperty("band").GetString()})");

PowerShell

# Uses the Invoke-Engine helper from quickstart.md.
$responses = @{}
1..9 | ForEach-Object { $responses["item_$_"] = 2 }
$result = Invoke-Engine -Method Post -Path "/api/psychosocial/depression_screen/score" -Body @{ responses = $responses }
"PHQ-9: $($result.finding.score) ($($result.finding.band))"

Clinical interpretation

  • What it screens. Depression symptom frequency over the past two weeks. Used to identify likely depression for further clinical assessment.
  • Not a diagnosis. A PHQ-9 score is a screen, not a DSM-5 depression diagnosis. A moderate or higher band warrants a clinical conversation; Trinity does not prescribe it.
  • Thresholds. Commonly, ≥ 10 (band moderate or worse) is treated as the threshold for considering a depression diagnosis in a clinical workflow.

Intended use

  • Domain-specific follow-up after an elevated psychosocial signal (for example a high band on orebro).
  • Baseline and recurrence tracking. Repeat administration produces a time-series of depression symptom burden.
  • Feeding the CDRI composite as the canonical depression signal in the psychosocial domain.

Mistaken use

  • Do not use band alone to dismiss an item-9 response. A minimal total with a non-zero item-9 still warrants attention in a clinical workflow.
  • Do not administer this to populations outside its validation. PHQ-9 is validated in adult general populations; interpretation shifts for adolescents, perinatal, or other specialized contexts.
  • Do not confuse with GAD-7. anxiety_screen is the anxiety companion; the two are often co-administered and report distinct constructs.
  • Do not reuse a single PHQ-9 response as a long-running severity signal. Symptoms fluctuate; the PHQ-9 asks about the last two weeks. Repeat before inferring change.

Debugging

  1. Capture request_id. Present in every response body.
  2. 400 ValidationError with missing_items. Send all nine items; every one is required. Confirm item_9 specifically — a UI may have deliberately omitted it for safety, but Trinity does not accept partial submissions.
  3. Score appears correct but band wrong. Compare your score against the band table above; the bands are inclusive-on-both- ends, so 5 is mild, not minimal.

Change history

DateChange
2026-04-20Initial publication.