Open-source caregiver social-determinants assessment and scoring toolkit
GiveCare Tools provides a small, public-safe TypeScript SDK for caregiver SDOH screening and domain-based scoring. It is intentionally narrower than GiveCare's internal production care-domain package: no Mira runtime, no benefits catalog, no filing workflow, and no proprietary turn-planning logic.
| Area | Included | Why |
|---|---|---|
| Caregiver SDOH | GC-SDOH-6, EMA-3, GC-SDOH-30, targeted deep dive | Main open-source contribution |
| Scoring | Six-domain model, composite score, bands, trend/spike helpers | Helps teams operationalize caregiver pressure signals |
| Basic SMS utilities | STOP/START/HELP parsing, quiet-hours helpers | Safe interoperability primitives |
| Geo helpers | ZIP → state, phone area code → timezone | Useful for state/resource routing |
Not included: production benefits data, eligibility filing flows, Mira prompt/runtime, memory, identity, resource orchestration, crisis operations, or clinical decision support.
| Instrument | Questions | Purpose | Time |
|---|---|---|---|
| GC-SDOH-6 | 6 (1 per domain) | Baseline and structural remeasurement | ~2 min |
| EMA-3 | 3 | Momentary reading (stress/mood/coping) | ~1 min |
| GC-SDOH-30 | 30-item bank | Four additional questions in one flagged domain | ~1-2 min |
All use a 0-4 response scale. SDOH items are deficit-framed; EMA mood and coping are positively framed. The six caregiver load domains are Social Support (GC1), Physical Health (GC2), Housing & Environment (GC3), Financial Resources (GC4), Navigation (GC5), and Emotional Wellbeing (GC6).
Documentation: See GC-SDOH.md for complete questions, scoring, and implementation details.
This repo is the canonical owner of the public SDOH instrument definition — the instrument ids, question prompts, domains, and scale. npm run export:instruments emits that shared definition to data/instruments-export.json; public distribution copies (e.g. the givecare-evals dataset) regenerate or parity-check against it rather than hand-syncing.
The GiveCare Score is a GC1-GC6 weighted composite. GC-SDOH-6 supplies the structural baseline, a completed targeted GC-SDOH-30 branch refines its matching domain, and EMA-3 updates the current health and emotional-wellbeing domains after that baseline exists. EMA-3 also retains its native reading. Higher values mean lower caregiver pressure.
Not yet published to the npm registry. Install from source:
git clone https://github.com/givecareapp/givecare-tools
cd givecare-tools
npm ci && npm run buildimport {
scoreInstrument,
getInstrument,
getSdoh30QuestionsForDomains,
computeGiveCareScoreFromInstruments,
computeEmaReading,
flaggedDomains,
} from '@givecare/tools'
// Score GC-SDOH-6
const sdoh6 = scoreInstrument('gc_sdoh6', 'v2', {
financial: 3,
social: 2,
health: 1,
housing: 0,
navigation: 2,
burnout: 3,
})
// Compute composite GiveCare Score (0-100; higher = lower pressure)
const composite = computeGiveCareScoreFromInstruments([
{ instrument: 'gc_sdoh6', subscores: sdoh6.subscores },
])
const emaReading = computeEmaReading({ stress: 2, mood: 3, coping: 2 })
// Adaptive deep-dive: find flagged domains and get remaining targeted questions
const flagged = flaggedDomains(composite.domains) // e.g. ['GC4', 'GC6']
const deepDiveQuestions = getSdoh30QuestionsForDomains(flagged)import { scoreInstrument } from '@givecare/tools/assessments'
import { computeGiveCareScore } from '@givecare/tools/scoring'
import { parseRegulatoryKeyword } from '@givecare/tools/sms'
import { inferTimezoneFromAreaCode, zipToState } from '@givecare/tools/geo'
import { zipToState as zipToStateOnly } from '@givecare/tools/geo/zip-to-state'src/
index.ts # Public barrel
assessments/instruments.ts # GC-SDOH-6, EMA-3, GC-SDOH-30 definitions + scoreInstrument()
assessments/instrumentExport.ts# buildInstrumentExport() — canonical shared snapshot builder
scoring/givecareScore.ts # Domain model, composite scoring, trending, spike detection
sms/regulatory.ts # STOP/START/HELP parsing
sms/quietHours.ts # Quiet hours enforcement
geo/timezone.ts # Area code → timezone inference
geo/zipToState.ts # ZIP → US state lookup
lib/time.ts # days() helper
data/
instruments-export.json # Canonical shared instrument snapshot (npm run export:instruments)
scripts/
sync-care-domain.mjs # Optional public-safe helper drift check
This public repo owns its runtime surface. The optional sync script only runs when GIVECARE_CARE_DOMAIN_SRC points at a reviewed source tree, and it is limited to files that are safe and intentionally open:
geo/timezone.tsgeo/zipToState.tslib/time.tssms/regulatory.ts
sms/quietHours.ts is locally owned in this public package; it is not currently mirrored from care-domain.
Run only when comparing against an explicit source tree:
GIVECARE_CARE_DOMAIN_SRC=/path/to/care-domain/src npm run check:care-domain
GIVECARE_CARE_DOMAIN_SRC=/path/to/care-domain/src npm run sync:care-domainIf GIVECARE_CARE_DOMAIN_SRC is unset, the drift check skips so the public repo remains usable standalone.
- Healthcare organizations — add caregiver SDOH screening to care coordination
- Non-profits — identify caregiver pressure domains and route support
- Research — study caregiver-specific social determinants patterns
- Technology platforms — build caregiver support workflows without adopting GiveCare infra
- PRAPARE — Protocol for Responding to and Assessing Patients' Assets, Risks, and Experiences
- AHC Screening Tool — Accountable Health Communities Health-Related Social Needs Screening
- NAM Framework — National Academy of Medicine Social Determinants of Health recommendations
This toolkit is not a medical device, diagnostic instrument, crisis service, or eligibility determination engine.
Originally created by Ali Madad (@amadad).
@misc{madad_givecare_tools_2026,
author = {Ali Madad},
title = {{GiveCare Tools}: Open-source frameworks for caregiving support and social determinants of health assessment},
note = {GC-SDOH-30 v3.0},
howpublished = {\url{https://github.com/givecareapp/givecare-tools}},
year = {2026}
}MIT. Attribution is requested, not required: credit "GiveCare Tools" and link to this repository when practical.