PsyTAR Query Skill
SkillDev toolsQuery the PsyTAR psychiatric adverse-reaction corpus. Use when the user asks about patient-reported ADRs, withdrawal symptoms, drug indications, or effectiveness for Zoloft, Lexapro, Cymbalta, or Effexor XR. Accepts drug names (brand or generic), symptom terms, or UMLS CUIs.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the PsyTAR Query Skill skill
What this skill tells your AI
The instructions your AI receives, as published by qsong-github/drugclaw in skills/drug_nlp/psytar/SKILL.md and read by ahel’s review.
891 patient reviews → 6 009 annotated sentences → extracted ADR / WD / SSI / DI entities → mapped to 918 UMLS + 755 SNOMED CT concepts.
Entity Detection & Routing
| Input Pattern | Detected As | Targets |
|---|---|---|
C0917801 | UMLS CUI | *_Mapped sheets only (UMLS1/UMLS2 cols) |
Zoloft / sertraline | Drug name | drug_id or drug columns (alias-aware) |
nausea, insomnia … | Free text | substring across all cell values |
Generic ↔ brand aliases: sertraline↔Zoloft, escitalopram↔Lexapro, duloxetine↔Cymbalta, venlafaxine↔Effexor.
API
| Function | Input | Returns |
|---|---|---|
search(entity, sheet?, label?) | single string | {sheet: [row_dict]} |
search_batch(entities, sheet?, label?) | list of strings | {entity: {sheet: [row_dict]}} |
summarize(results, entity) | result dict + label | compact text |
to_json(results) | result dict | list[dict] (flat, adds _sheet) |
describe() | — | dataset overview text |
Parameters
sheet— restrict to one sheet (fuzzy-matched:"ADR"→ADR_Identified).label— when onSentence_Labeling, keep only rows where the named label column (ADR / WD / EF / INF / SSI / DI) equals 1.
Sheet Schema
| Sheet | Description | Key Columns |
|---|---|---|
Sample | Original posts | drug_id, rating, indication, side-effect, comment, gender, age, duration |
Sentence_Labeling | 6 009 sentences, binary labels | drug_id, sentence_index, sentences, ADR, WD, EF, INF, SSI, DI, Findings, others, rating, category |
ADR_Identified | Extracted ADR mentions | drug_id, sentence_index, sentences, ADR1 … ADRn |
WD_Identified | Extracted WD mentions | drug_id, sentence_index, sentences, WD1 … WDn |
SSI_Identified | Extracted SSI mentions | drug_id, sentence_index, sentences, SSI1 … SSIn |
DI_Identified | Extracted DI mentions | drug_id, sentence_index, sentences, DI1 … DIn |
ADR_Mapped | ADR → UMLS/SNOMED | drug_id, sentence_index, ADR/ADRs, UMLS1, UMLS2, SNOMED-CT, mild, moderate, severe, persistent, not-persistent, body-site, rating, drug, class, type, entity_type |
WD_Mapped | WD → UMLS/SNOMED | (same structure as ADR_Mapped) |
SSI_Mapped | SSI → UMLS/SNOMED | (same structure) |
DI_Mapped | DI → UMLS/SNOMED | (same structure) |
Mapped-sheet qualifier columns
mild, moderate, severe — severity descriptors;
persistent, not-persistent — duration; body-site — anatomical site;
entity_type — Cognitive / Physiological / Psychological / Functional.
Usage
from importlib.machinery import SourceFileLoader
m = SourceFileLoader("psytar", "36_PSYTAR.py").load_module()
# overview
print(m.describe())
# drug → ADR mappings
res = m.search("Zoloft", sheet="ADR_Mapped")
print(m.summarize(res, "Zoloft"))
# generic name works too
res = m.search("sertraline", sheet="ADR_Mapped")
# symptom in one Identified sheet
res = m.search("nausea", sheet="ADR_Identified")
# symptom across all sheets
res = m.search("insomnia")
# UMLS CUI (auto-scoped to Mapped sheets)
res = m.search("C0917801")
# withdrawal sentences for Effexor
res = m.search("Effexor", sheet="Sentence_Labeling", label="WD")
# batch
batch = m.search_batch(["Lexapro", "insomnia", "C0917801"])
# JSON for pipeline
flat = m.to_json(m.search("Cymbalta"))
Data Source
- Corpus: PsyTAR v1.0 — CC BY 4.0
- File:
PsyTAR_dataset.xlsx— set viaDATA_PATHor envPSYTAR_XLSX - Paper: Zolnoori et al., Data in Brief 24, 103838 (2019). https://doi.org/10.1016/j.dib.2019.103838
- Stats: 891 reviews, 6 009 sentences, 4 813 ADR + 590 WD + 1 219 SSI
- 792 DI mentions, 918 UMLS / 755 SNOMED concepts
Signals
- GitHub stars
- 116
- Forks
- 3
- Last commit
- Aug 2026
ahel review
K1binfo
installs-packages (in example.py)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
psytar-query- Source
- github.com/qsong-github/drugclaw
github.com/qsong-github/drugclaw
Related picks
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonxlsx
Skill · anthropics
The pick for Excelrseng-notebooks
Skill · fdiblen
The pick for Notebooksnotebook.fix_logging
Skill · causify-ai
The pick for Notebooksspreadsheet
Skill · davila7
The pick for Pandas