緊急時対応プロトコル。クライアントの安全に関わる情報を優先順位付きで取得し、二次被害を防止する。禁忌事項→推奨ケア→緊急連絡先→かかりつけ医→法的代理人の順で情報を提示。
このスキルは人命に関わる情報を扱います。緊急時に支援者が迷わず適切な対応を取れるよう、 Safety Firstプロトコルに基づき厳格な優先順位で情報を提示します。
絶対原則: 禁忌事項(NgAction)を最初に表示しないと二次被害のリスクがあります。
以下のいずれかに該当する場合、即座にこのスキルを起動すること:
generate_risk_assessment() が risk_level: "high" を返した場合should_trigger_emergency: true の場合🚨 インサイト・エージェントからの自動アラート
リスクレベル「高」が検知されました。以下の緊急情報を確認してください。
検知内容: [emotion_drift / cascading_risk の概要]
情報は必ず以下の順序で提示する。順序の変更は禁止。
1. 🚫 禁忌事項(NgAction) ← 二次被害防止のため最優先
2. ✅ 推奨ケア(CarePreference) ← その場を落ち着かせるため
3. 📞 緊急連絡先(KeyPerson) ← ランク順に連絡
4. 🏥 かかりつけ医(Hospital) ← 医療が必要な場合
5. ⚖️ 法的代理人(Guardian) ← 医療同意等が必要な場合
NgActionには3段階のリスクレベルがあり、以下の順で表示する:
| レベル | 意味 | 表示 |
|---|---|---|
LifeThreatening | 命に関わる | ⚠️🔴 最優先 |
Panic | パニック誘発 | ⚠️🟡 要注意 |
Discomfort | 不快・ストレス | ⚠️🟢 配慮必要 |
ユーザーが状況キーワード(パニック、食事、入浴等)を指定した場合:
actionフィールドで関連するものをフィルタリングcategoryフィールドで関連するものをフィルタリング生年月日(dob)が取得できた場合、必ず現在の年齢を計算して併記する。
例: 1995-04-15(30歳)
このスキルは読み取り専用。緊急時にデータの書き込みは行わない。
すべてのクエリは neo4j:read_neo4j_cypher を使用する。
| ツール | 用途 |
|---|---|
neo4j:read_neo4j_cypher | すべての読み取りクエリに使用 |
注意: neo4j:write_neo4j_cypher はこのスキルでは使用禁止。
最も効率的な方法。1つのクエリで全情報を取得する。
MATCH (c:Client)
WHERE c.name CONTAINS $clientName
OPTIONAL MATCH (c)-[:MUST_AVOID|PROHIBITED]->(ng:NgAction)
OPTIONAL MATCH (ng)-[:IN_CONTEXT]->(ngCond:Condition)
WITH c, collect(DISTINCT {
action: ng.action,
reason: ng.reason,
riskLevel: ng.riskLevel,
context: ngCond.name
}) AS ngActions
OPTIONAL MATCH (c)-[:REQUIRES|PREFERS]->(cp:CarePreference)
OPTIONAL MATCH (cp)-[:ADDRESSES]->(cpCond:Condition)
WITH c, ngActions, collect(DISTINCT {
category: cp.category,
instruction: cp.instruction,
priority: cp.priority,
forCondition: cpCond.name
}) AS carePrefs
OPTIONAL MATCH (c)-[kpRel:HAS_KEY_PERSON]->(kp:KeyPerson)
WITH c, ngActions, carePrefs, collect(DISTINCT {
rank: kpRel.rank,
name: kp.name,
relationship: kp.relationship,
phone: kp.phone,
role: kp.role
}) AS keyPersons
OPTIONAL MATCH (c)-[:TREATED_AT]->(h:Hospital)
WITH c, ngActions, carePrefs, keyPersons, collect(DISTINCT {
name: h.name,
specialty: h.specialty,
phone: h.phone,
doctor: h.doctor
}) AS hospitals
OPTIONAL MATCH (c)-[:HAS_LEGAL_REP]->(g:Guardian)
RETURN
c.name AS clientName,
c.dob AS dob,
c.bloodType AS bloodType,
ngActions,
carePrefs,
keyPersons,
hospitals,
collect(DISTINCT {
name: g.name,
type: g.type,
phone: g.phone,
organization: g.organization
}) AS guardians
パラメータ: $clientName — クライアント名(部分一致)
緊急度が最も高い場合に使用。禁忌事項だけを即座に取得する。
MATCH (c:Client)-[:MUST_AVOID|PROHIBITED]->(ng:NgAction)
WHERE c.name CONTAINS $clientName
OPTIONAL MATCH (ng)-[:IN_CONTEXT]->(cond:Condition)
RETURN DISTINCT
c.name AS clientName,
ng.action AS action,
ng.reason AS reason,
ng.riskLevel AS riskLevel,
cond.name AS relatedCondition
ORDER BY
CASE ng.riskLevel
WHEN 'LifeThreatening' THEN 1
WHEN 'Panic' THEN 2
WHEN 'Discomfort' THEN 3
ELSE 4
END
特定の状況(パニック、食事、入浴等)に関連する情報のみ取得。
MATCH (c:Client)
WHERE c.name CONTAINS $clientName
// 状況に関連する禁忌事項
OPTIONAL MATCH (c)-[:MUST_AVOID|PROHIBITED]->(ng:NgAction)
WHERE ng.action CONTAINS $situation OR ng.reason CONTAINS $situation
OPTIONAL MATCH (ng)-[:IN_CONTEXT]->(ngCond:Condition)
WITH c, collect(DISTINCT {
action: ng.action,
reason: ng.reason,
riskLevel: ng.riskLevel,
context: ngCond.name
}) AS ngActions
// 状況に関連する推奨ケア
OPTIONAL MATCH (c)-[:REQUIRES|PREFERS]->(cp:CarePreference)
WHERE cp.category CONTAINS $situation OR cp.instruction CONTAINS $situation
WITH c, ngActions, collect(DISTINCT {
category: cp.category,
instruction: cp.instruction,
priority: cp.priority
}) AS carePrefs
// 緊急連絡先(常に全件取得)
OPTIONAL MATCH (c)-[kpRel:HAS_KEY_PERSON]->(kp:KeyPerson)
WITH c, ngActions, carePrefs, collect(DISTINCT {
rank: kpRel.rank,
name: kp.name,
relationship: kp.relationship,
phone: kp.phone
}) AS keyPersons
RETURN
c.name AS clientName,
c.dob AS dob,
c.bloodType AS bloodType,
ngActions,
carePrefs,
keyPersons
パラメータ: $clientName, $situation
連絡先だけが必要な場合。
MATCH (c:Client)-[r:HAS_KEY_PERSON]->(kp:KeyPerson)
WHERE c.name CONTAINS $clientName
RETURN
kp.name AS name,
kp.relationship AS relationship,
kp.phone AS phone,
kp.role AS role,
r.rank AS rank
ORDER BY r.rank
クエリ結果を取得したら、以下の形式で整形して提示する:
⚠️ 緊急対応情報: 【クライアント名】
生年月日: YYYY-MM-DD(XX歳) / 血液型: X型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚫 1. 禁忌事項(絶対にしないこと)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️🔴 【LifeThreatening】...
⚠️🟡 【Panic】...
⚠️🟢 【Discomfort】...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 2. 推奨ケア(こうすると落ち着く)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[カテゴリ] 手順...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📞 3. 緊急連絡先
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1位: 名前(続柄)TEL: XXX-XXXX-XXXX
2位: 名前(続柄)TEL: XXX-XXXX-XXXX
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🏥 4. かかりつけ医
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
病院名 / 診療科 / 担当医 / TEL: XXX-XXXX-XXXX
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚖️ 5. 法的代理人
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
名前 / 種別 / TEL: XXX-XXXX-XXXX
各セクションでデータが空(null値のみ)の場合:
actionやnameがnullのレコードは表示しない)ユーザー: 「山田健太さんがパニックを起こしています!」
手順:
1. テンプレート3(状況別フィルタ)を使用
→ $clientName = "山田健太", $situation = "パニック"
2. フィルタ結果が0件の場合 → テンプレート1(全件取得)にフォールバック
3. 出力フォーマットに従い、禁忌事項から順に提示
ユーザー: 「佐藤花子さんの緊急情報を確認したい」
手順:
1. テンプレート1(一括取得)を使用
→ $clientName = "佐藤花子"
2. 全情報を出力フォーマットに従い提示
ユーザー: 「山田健太さんの情報を救急隊に伝えたい」
手順:
1. テンプレート1(一括取得)を使用
2. 以下を簡潔にまとめて提示:
- 氏名、年齢、血液型
- 禁忌事項(医療処置に影響するもの)
- かかりつけ医
- 緊急連絡先(第1位)
クエリ結果が0件の場合:
1. 「該当するクライアントが見つかりませんでした」と通知
2. list_clients相当のクエリで候補を提示:
MATCH (c:Client)
RETURN c.name AS name
ORDER BY c.name
3. 「もしかして: 〇〇さん?」と候補を提示
| スキル | 連携タイミング |
|---|---|
insight-agent | リスク「高」判定時に本スキルを自動起動 |
neo4j-support-db | 緊急対応後の支援記録追加 |
livelihood-support | 経済的リスクの確認(生活保護受給者の場合) |
ecomap-generator | 支援ネットワーク図の生成 |
resilience-checker | 親なき後のバックアップ体制確認 |
insight-agent の generate_risk_assessment() から連動された場合、通常の緊急情報提示に加えて:
| ノード | 役割 | 主要プロパティ |
|---|---|---|
Client | 本人 | name, dob, bloodType |
NgAction | 禁忌事項 | action, reason, riskLevel |
CarePreference | 推奨ケア | category, instruction, priority |
KeyPerson | 緊急連絡先 | name, relationship, phone, role |
Hospital | かかりつけ医 | name, specialty, doctor, phone |
Guardian | 法的代理人 | name, type, phone, organization |
Condition | 特性・診断 | name, status |
| リレーション | 方向 | 備考 |
|---|---|---|
MUST_AVOID | Client → NgAction | 正式名(書き込み時はこちらを使用) |
PROHIBITED | Client → NgAction | 廃止(読み取り時のみ後方互換で対応) |
REQUIRES | Client → CarePreference | 正式名(書き込み時はこちらを使用) |
PREFERS | Client → CarePreference | 廃止(読み取り時のみ後方互換で対応) |
HAS_KEY_PERSON | Client → KeyPerson | rankプロパティで優先順位 |
TREATED_AT | Client → Hospital | — |
HAS_LEGAL_REP | Client → Guardian | — |
IN_CONTEXT | NgAction → Condition | 禁忌の文脈(関連特性) |
ADDRESSES | CarePreference → Condition | ケアの対象特性 |