Install
openclaw skills install medical-priority-scorerScore medical messages using urgency, sentiment, and patient context to produce priority rankings (P1/P2/P3).
openclaw skills install medical-priority-scorerProduce deterministic priority scores for medical messages without mutating any state.
medical-triage -> medical-priority-scorer -> medical-entity-extractor
urgency_score in range [0, 1] (based on triage category)sentiment_score in range [-1, 1] (anxiety, distress, frustration)recency_score in range [0, 1] (how recent the message is)patient_context_score in range [0, 1] (chronic conditions, known patient)priority_score on a 0-100 scale:
priority_score = 100 * (0.50*urgency_score + 0.25*sentiment_score_risk + 0.15*recency_score + 0.10*patient_context_score)sentiment_score_risk = max(0, -sentiment_score) (negative sentiment = higher risk)P1 for priority_score >= 75 (immediate attention)P2 for priority_score >= 50 and < 75 (same-day)P3 for < 50 (routine)evidence tokens that explain the score[
{
"id": "msg-123",
"category": "urgent",
"subject": "Medication side effects",
"from": "patient@example.com",
"date": "2026-02-27T10:30:00Z",
"body": "I've been feeling dizzy since starting the new medication..."
}
]
[
{
"id": "msg-123",
"priority_score": 78,
"priority_bucket": "P1",
"urgency_score": 0.8,
"sentiment_score": -0.4,
"recency_score": 1.0,
"patient_context_score": 0.6,
"evidence": "Urgent triage category + negative sentiment (concern) + very recent message + known patient"
}
]
This skill can be invoked via the OpenClaw CLI:
openclaw skill run medical-priority-scorer --input '[{"id":"msg-1","category":"urgent",...}]' --json
Or programmatically:
const result = await execFileAsync('openclaw', [
'skill', 'run', 'medical-priority-scorer',
'--input', JSON.stringify(triagedMessages),
'--json'
]);
Recommended Model: Claude Sonnet 4.5 (openclaw models set anthropic/claude-sonnet-4-5)