SuperAPI AI Directory

emergency-card

Office & productivity

View repository

Updated 10-15 22:15

About this skill

Emergency Medical Information Card Generator

Generate a medical information summary for quick access in emergencies, for first aid or medical visits.

Core Features

1. Emergency Information Extraction

Extract the most critical information from the user's health data:

  • Severe Allergies: Prioritize extraction of grade 4 (anaphylactic shock) and grade 3 allergies
  • Current Medications: Names, dosages, and frequencies of active medications
  • Acute Conditions: Medical conditions requiring emergency treatment
  • Implants: Pacemakers, stents, etc. (affecting examinations and treatment)
  • Emergency Contacts: Family member information for quick contact

2. Information Prioritization

Sort information by medical urgency:

  1. P0 - Critical Information: Anaphylactic shock, severe drug allergies, life-threatening diseases
  2. P1 - Important Information: Current medications, chronic diseases, implants
  3. P2 - General Information: Blood type, age, weight, recent examinations

3. Multi-format Output

Support multiple output formats to suit different scenarios:

  • HTML Format: Printable webpage, using Tailwind CSS and Lucide icons (recommended)
  • JSON Format: Structured data, convenient for system integration
  • Text Format: Concise and readable, suitable for printing and carrying
  • PDF Format: Professional printing, suitable for long-term storage

HTML Format (New)

Generate a standalone HTML file, including:

  • Tailwind CSS styles (via CDN)
  • Lucide icons (via CDN)
  • Responsive design
  • Print optimization
  • Multiple size variants (A4, wallet card, large-print version)
  • Automatic card type detection (standard, children, elderly, severe allergies)

How to Use:

# 生成标准卡片
python scripts/generate_emergency_card.py

# 指定卡片类型
python scripts/generate_emergency_card.py standard
python scripts/generate_emergency_card.py child
python scripts/generate_emergency_card.py elderly
python scripts/generate_emergency_card.py severe

# 指定打印尺寸
python scripts/generate_emergency_card.py standard a4       # A4标准
python scripts/generate_emergency_card.py standard wallet   # 钱包卡
python scripts/generate_emergency_card.py standard large    # 大字版(老年)

Output files:emergency-cards/emergency-card-{variant}-{YYYY-MM-DD}.html

4. Offline Availability

  • Supports mobile saving (photo album, files)
  • Supports printing and carrying (wallet, bag)
  • Supports cloud backup (optional)

Usage Instructions

Trigger Conditions

Use this skill when users mention the following scenarios:

  • ✅ "Generate an emergency medical information card"
  • ✅ "I need to travel, how can I quickly provide medical information"
  • ✅ "Organize my allergy information into a card"
  • ✅ "Emergency first aid information"
  • ✅ "Medical visit preparation materials"
  • ✅ "Medical information summary"

Execution Steps

Step 1: Read the user's basic data

Read information from the following data sources:

// 1. 用户档案
const profile = readFile('data/profile.json');

// 2. 过敏史
const allergies = readFile('data/allergies.json');

// 3. 当前用药
const medications = readFile('data/medications/medications.json');

// 4. 辐射记录
const radiation = readFile('data/radiation-records.json');

// 5. 手术记录(查找植入物)
const surgeries = glob('data/手术记录/**/*.json');

// 6. 出院小结(查找急症)
const dischargeSummaries = glob('data/出院小结/**/*.json');

Step 2: Extract key information

2.1 Basic Information
const basicInfo = {
  name: profile.basic_info?.name || "未设置",
  age: calculateAge(profile.basic_info?.birth_date),
  gender: profile.basic_info?.gender || "未设置",
  blood_type: profile.basic_info?.blood_type || "未知",
  weight: `${profile.basic_info?.weight} ${profile.basic_info?.weight_unit}`,
  height: `${profile.basic_info?.height} ${profile.basic_info?.height_unit}`,
  bmi: profile.calculated?.bmi,
  emergency_contacts: profile.emergency_contacts || []
};

2.2 Severe Allergies

// 过滤出3-4级严重过敏
const criticalAllergies = allergies.allergies
  .filter(a => a.severity_level >= 3 && a.current_status.status === 'active')
  .map(a => ({
    allergen: a.allergen.name,
    severity: `过敏${getSeverityLabel(a.severity_level)}(${a.severity_level}级)`,
    reaction: a.reaction_description,
    diagnosed_date: a.diagnosis_date
  }));

2.3 Chronic Disease Diagnoses (New)

// 从慢性病管理数据中提取诊断信息
const chronicConditions = [];

// 高血压
try {
  const hypertensionData = readFile('data/hypertension-tracker.json');
  if (hypertensionData.hypertension_management?.diagnosis_date) {
    chronicConditions.push({
      condition: '高血压',
      diagnosis_date: hypertensionData.hypertension_management.diagnosis_date,
      classification: hypertensionData.hypertension_management.classification,
      current_bp: hypertensionData.hypertension_management.average_bp,
      risk_level: hypertensionData.hypertension_management.cardiovascular_risk?.risk_level
    });
  }
} catch (e) {
  // 文件不存在或读取失败,跳过
}

// 糖尿病
try {
  const diabetesData = readFile('data/diabetes-tracker.json');
  if (diabetesData.diabetes_management?.diagnosis_date) {
    chronicConditions.push({
      condition: diabetesData.diabetes_management.type === 'type_1' ? '1型糖尿病' : '2型糖尿病',
      diagnosis_date: diabetesData.diabetes_management.diagnosis_date,
      duration_years: diabetesData.diabetes_management.duration_years,
      hba1c: diabetesData.diabetes_management.hba1c?.history?.[0]?.value,
      control_status: diabetesData.diabetes_management.hba1c?.achievement ? '控制良好' : '需改善'
    });
  }
} catch (e) {
  // 文件不存在或读取失败,跳过
}

// COPD
try {
  const copdData = readFile('data/copd-tracker.json');
  if (copdData.copd_management?.diagnosis_date) {
    chronicConditions.push({
      condition: '慢阻肺(COPD)',
      diagnosis_date: copdData.copd_management.diagnosis_date,
      gold_grade: `GOLD ${copdData.copd_management.gold_grade}级`,
      cat_score: copdData.copd_management.symptom_assessment?.cat_score?.total_score,
      exacerbations_last_year: copdData.copd_management.exacerbations?.last_year
    });
  }
} catch (e) {
  // 文件不存在或读取失败,跳过
}

2.4 Current Medications

// 只包含活跃的药物
const currentMedications = medications.medications
  .filter(m => m.active === true)
  .map(m => ({
    name: m.name,
    dosage: `${m.dosage.value}${m.dosage.unit}`,
    frequency: getFrequencyLabel(m.frequency),
    instructions: m.instructions,
    warnings: m.warnings || []
  }));
2.4 Medical Conditions

Extract diagnosis information from the discharge summary:

const medicalConditions = dischargeSummaries
  .flatMap(ds => {
    const data = readFile(ds.file_path);
    return data.diagnoses || [];
  })
  .map(d => ({
    condition: d.condition,
    diagnosis_date: d.date,
    status: d.status || "随访中"
  }));
2.5 Implants

Extract implant information from the surgical records:

const implants = surgeries
  .flatMap(s => {
    const data = readFile(s.file_path);
    return data.procedure?.implants || [];
  })
  .map(i => ({
    type: i.type,
    implant_date: i.date,
    hospital: i.hospital,
    notes: i.notes
  }));
2.6 Recent Radiation Exposure
const recentRadiation = {
  total_dose_last_year: calculateTotalDose(radiation.records, 'last_year'),
  last_exam: radiation.records[radiation.records.length - 1]
};

Step 3: Generate Information Card

Organize information by priority:

const emergencyCard = {
  version: "1.0",
  generated_at: new Date().toISOString(),
  basic_info: basicInfo,
  critical_allergies: criticalAllergies.sort(bySeverityDesc),
  current_medications: currentMedications,
  medical_conditions: [...medicalConditions, ...chronicConditions], // 合并急症和慢性病
  implants: implants,
  recent_radiation_exposure: recentRadiation,
  disclaimer: "此信息卡仅供参考,不替代专业医疗诊断",
  data_source: "my-his个人健康信息系统",
  chronic_conditions: chronicConditions // 单独字段便于访问
};

Step 4: Format Output

JSON Format

Directly output structured JSON data.

Text Format

Generate a readable text card:

╔═══════════════════════════════════════════════════════════╗
║                  紧急医疗信息卡                          ║
╠═══════════════════════════════════════════════════════════╣
║ 姓名:张三                      年龄:35岁               ║
║ 血型:A+                       体重:70kg                ║
╠═══════════════════════════════════════════════════════════╣
║ 🆘 严重过敏                                              ║
║ ─────────────────────────────────────────────────────── ║
║ • 青霉素 - 过敏性休克(4级)🆘                          ║
║   反应:呼吸困难、喉头水肿、意识丧失                     ║
╠═══════════════════════════════════════════════════════════╣
║ 💊 当前用药                                              ║
║ ─────────────────────────────────────────────────────── ║
║ • 氨氯地平 5mg - 每日1次(高血压)                      ║
║ • 二甲双胍 1000mg - 每日2次(糖尿病)                    ║
╠═══════════════════════════════════════════════════════════╣
║ 🏥 慢性疾病                                              ║
║ ─────────────────────────────────────────────────────── ║
║ • 高血压(2023-01-01诊断,1级,控制中)                 ║
║   平均血压:132/82 mmHg                                 ║
║ • 2型糖尿病(2022-05-10诊断,HbA1c 6.8%)              ║
║   控制状态:良好                                        ║
║ • 慢阻肺(2020-03-15诊断,GOLD 2级)                    ║
║   CAT评分:18分                                        ║
╠═══════════════════════════════════════════════════════════╣
║ 🏥 其他疾病                                              ║
║ ─────────────────────────────────────────────────────── ║
║ (其他急症或手术诊断,如有)                            ║
╠═══════════════════════════════════════════════════════════╣
║ 📿 植入物                                                ║
║ ─────────────────────────────────────────────────────── ║
║ • 心脏起搏器(2022-06-10植入)                           ║
║   医院:XX医院                                           ║
║   注意:定期复查,避免MRI检查                            ║
╠═══════════════════════════════════════════════════════════╣
║ 📞 紧急联系人                                            ║
║ ─────────────────────────────────────────────────────── ║
║ • 李四(配偶)- 138****1234                              ║
╠═══════════════════════════════════════════════════════════╣
║ ⚠️  免责声明                                            ║
║ 此信息卡仅供参考,不替代专业医疗诊断                     ║
║ 生成时间:2025-12-31 12:34:56                            ║
╚═══════════════════════════════════════════════════════════╝
QR Code Format

Convert JSON data into a QR code image:

const qrCode = generateQRCode(JSON.stringify(emergencyCard));
emergencyCard.qr_code = qrCode;

Step 5: Save File

Save the file according to the format selected by the user:

// JSON格式
saveFile('emergency-card.json', JSON.stringify(emergencyCard, null, 2));

// 文本格式
saveFile('emergency-card.txt', generateTextCard(emergencyCard));

// 二维码格式
saveFile('emergency-card-qr.png', emergencyCard.qr_code);

Step 6: Output Confirmation Information

✅ 紧急医疗信息卡已生成

文件位置:data/emergency-cards/emergency-card-2025-12-31.json
生成时间:2025-12-31 12:34:56

包含信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ 基础信息(姓名、年龄、血型)
✓ 严重过敏(1项4级过敏)
✓ 当前用药(2种药物)
✓ 医疗状况(2种疾病)
✓ 植入物(1项)
✓ 紧急联系人(1人)

💡 使用建议:
━━━━━━━━━━━━━━━━━━━━━━━━━━
• 将JSON文件保存到手机云盘
• 将二维码保存到手机相册
• 打印文本版随身携带
• 旅行前更新信息

⚠️  注意事项:
━━━━━━━━━━━━━━━━━━━━━━━━━━
• 此信息卡仅供参考,不替代专业医疗诊断
• 定期更新(建议每3个月或健康信息变化后)
• 如有严重过敏,请随身携带过敏急救卡

Data Sources

Primary Data Sources

  • data/profile.json: User basic information, blood type, emergency contacts
  • data/allergies.json: Allergy history and severity grading
  • data/medications/medications.json: Current medication plan and dosage

Chronic Disease Data Sources (New)

  • data/hypertension-tracker.json: Hypertension management data (diagnosis date, grading, blood pressure control, target organ damage, cardiovascular risk)
  • data/diabetes-tracker.json: Diabetes management data (type, HbA1c, blood glucose control, complication screening)
  • data/copd-tracker.json: COPD management data (GOLD grading, CAT score, history of acute exacerbations, pulmonary function)

Auxiliary Data Sources

  • data/radiation-records.json: Recent radiation exposure records
  • data/surgical records//*.json**: Surgical implant information
  • data/discharge summaries//*.json**: Medical diagnosis information

Optional Data Sources

  • data/index.json: Global data index

Safety Principles

Must Follow

  • ❌ Do not add medication recommendations (only list current medications)
  • ❌ Do not provide diagnostic conclusions (only list known diagnoses)
  • ❌ Do not give treatment recommendations (does not replace a doctor)
  • ❌ Include a disclaimer (for reference only)

Information Accuracy

  • ✅ Only extract recorded information (do not speculate or infer)
  • ✅ Indicate the information source and update time
  • ✅ Recommend regularly updating information

Privacy Protection

  • ✅ Sensitive information can be optionally hidden
  • ✅ Partially hide phone numbers (e.g., 138****1234)
  • ✅ All data is stored locally only

Error Handling

Missing Data

  • Missing allergy data: Output "No allergy history recorded"
  • Missing medication data: Output "No current medications recorded"
  • Missing implant data: Output "No implants"

File Read Failure

  • Unable to read profile.json: Use default values (Name: Not set)
  • Unable to read allergies.json: Skip allergy information
  • Continue generating other information: Do not interrupt due to a single file failure

QR Code Generation Failed

  • Degrade to text format output
  • Prompt the user to manually record information

Example Output

For a complete example, please refer to examples.md。

Test Data

The test data files are located in test-data/emergency-example.json。

Format Description

For detailed output format instructions, please refer to formats.md。