Manages vaccine inoculation records and plans: add schedules, record doses, view due/upcoming/history/stats, and perform safety checks via subcommands.
npx claudepluginhub joshuarweaver/cascade-ai-ml-engineering --plugin huifer-wellally-health# ç«èæ¥ç§ç®¡ç 管çç«èæ¥ç§è®°åœå计åïŒæ¯æå€å次ç«èè¿œèžªãæ¥ç§è®¡å管çãäžè¯ååºè®°åœåå®å 𿣿¥ã ## æäœç±»å ### 1. æ·»å ç«èæ¥ç§è®¡å - `add` æ·»å æ°çç«èæ¥ç§è®¡åæè®°åœå·²æ¥ç§ç«èã **åæ°è¯ŽæïŒ** - `info`: ç«èä¿¡æ¯ïŒå¿ å¡«ïŒïŒäœ¿çšèªç¶è¯èšæè¿° - `date`: æ¥ç§æ¥æïŒå¯éïŒïŒæ ŒåŒïŒYYYY-MM-DDïŒé»è®€ä»å€© **瀺äŸïŒ** **æ¯æçæè¿°æ ŒåŒïŒ** - ç«èåç§° + æ¥ç§çšåºïŒ0-1-6ã2-6çïŒ - å·²æ¥ç§ä¿¡æ¯ïŒç¬¬å éãæ¥ç§æ¥æãéšäœãæ¥ç§åäœïŒ - 计åä¿¡æ¯ïŒåç»å次çè®¡åæ¥æïŒ - 诊ç»ä¿¡æ¯ïŒåå®¶ãæ¹å·ãå»ççïŒ ### 2. è®°åœç«èæ¥ç§ - `record` è®°åœå®é ç«èæ¥ç§æ åµã **åæ°è¯ŽæïŒ** - `info`: æ¥ç§ä¿¡æ¯ïŒå¿ å¡«ïŒïŒäœ¿çšèªç¶è¯èšæè¿° - `date`: æ¥ç§æ¥æïŒå¯éïŒïŒæ ŒåŒïŒYYYY-MM-DDïŒé»è®€ä»å€© **瀺äŸïŒ** **æ¯æçæè¿°æ ŒåŒïŒ** - ç«èåç§° + 忬¡ + æ¥æ + æ¥ç§éšäœ - ç«èåç§° + æ¥æ + æ¥ç§åäœ - ç«èåç§° + 忬¡ + 诊ç»ä¿¡æ¯ ### 3. æ¥çæ¥ç§è®¡å - `schedule` æ¥çç«èæ¥ç§è®¡ååå³å°æ¥ç§çç«èã **瀺äŸïŒ** ### 4. æ¥çåŸ æ¥ç§ç«è - `due` å¿«éæ¥çåŸ æ¥ç§åéŸæçç«èã *...
管çç«èæ¥ç§è®°åœå计åïŒæ¯æå€å次ç«èè¿œèžªãæ¥ç§è®¡å管çãäžè¯ååºè®°åœåå®å 𿣿¥ã
addæ·»å æ°çç«èæ¥ç§è®¡åæè®°åœå·²æ¥ç§ç«èã
åæ°è¯ŽæïŒ
info: ç«èä¿¡æ¯ïŒå¿
å¡«ïŒïŒäœ¿çšèªç¶è¯èšæè¿°date: æ¥ç§æ¥æïŒå¯éïŒïŒæ ŒåŒïŒYYYY-MM-DDïŒé»è®€ä»å€©ç€ºäŸïŒ
/vaccine add ä¹èç«è 0-1-6çšåº 第äžéå·²ææšå€©
/vaccine add HPVç«è 第äžé2025-10-15 第äºé计å2025-12-15
/vaccine add æµæç«è 2025-10-01å·²æ¥ç§
/vaccine add COVID-19ç«è 第äžåä»å€©æ¥ç§
æ¯æçæè¿°æ ŒåŒïŒ
recordè®°åœå®é ç«èæ¥ç§æ åµã
åæ°è¯ŽæïŒ
info: æ¥ç§ä¿¡æ¯ïŒå¿
å¡«ïŒïŒäœ¿çšèªç¶è¯èšæè¿°date: æ¥ç§æ¥æïŒå¯éïŒïŒæ ŒåŒïŒYYYY-MM-DDïŒé»è®€ä»å€©ç€ºäŸïŒ
/vaccine record ä¹èç«è 第2é ä»å€©å·Šäžè
/vaccine record æµæç«è ä»å€©ç€Ÿåºå«çæå¡äžå¿
/vaccine record HPV第2é 2025-12-15 å³äžè æå»ç
æ¯æçæè¿°æ ŒåŒïŒ
scheduleæ¥çç«èæ¥ç§è®¡ååå³å°æ¥ç§çç«èã
瀺äŸïŒ
/vaccine schedule
/vaccine schedule 2025-12
/vaccine schedule 2026-01
dueå¿«éæ¥çåŸ æ¥ç§åéŸæçç«èã
瀺äŸïŒ
/vaccine due
/vaccine due overdue
/vaccine due upcoming
historyæ¥çç«èæ¥ç§åå²è®°åœã
åæ°è¯ŽæïŒ
date: æä»œïŒYYYY-MMæ ŒåŒïŒç€ºäŸïŒ
/vaccine history
/vaccine history 2025-10
/vaccine history 2025-12
statusæ¥çç«èæ¥ç§ç»è®¡åèŠççã
瀺äŸïŒ
/vaccine status
/vaccine status coverage
checkåšæ¥ç§åè¿è¡å šé¢å®å 𿣿¥ã
åæ°è¯ŽæïŒ
info: ç«èåç§°ïŒå¿
å¡«ïŒç€ºäŸïŒ
/vaccine check ä¹èç«è
/vaccine check æµæç«è
/vaccine check HPVç«è
ä»èªç¶è¯èšäžæåïŒ
åºæ¬ä¿¡æ¯ïŒ
诊ç»ä¿¡æ¯ïŒå¯éïŒïŒ
ä» data/vaccine-database.json äžå¹é
ç«èïŒ
å¹é è§åïŒ
éèŠïŒåšä¿åç«èä¿¡æ¯ä¹åïŒå¿ é¡»è¿è¡å šé¢å®å 𿣿¥ã
æ£æ¥æµçšïŒ
// 䌪代ç 瀺äŸ
function checkVaccineAllergies(vaccine) {
const allergies = loadAllergies('data/allergies.json');
const warnings = [];
for (const allergy of allergies.allergies) {
if (allergy.current_status.status !== 'active') continue;
// æ£æ¥ç«èçŠå¿çäžçè¿æå
const isContraindication = vaccine.contraindications.some(c =>
c.type === 'allergy' && c.allergen === allergy.allergen.name
);
if (isContraindication) {
warnings.push({
allergen: allergy.allergen.name,
severity: allergy.severity.level,
reactions: allergy.reactions,
recommendation: getRecommendation(allergy.severity.level)
});
}
}
return warnings;
}
function getRecommendation(severityLevel) {
const recommendations = {
'mild': '坿¥ç§ïŒéè§å¯',
'moderate': 'è°šæ
æ¥ç§ïŒå»ºè®®åšè¯¢å»ç',
'severe': 'äžå»ºè®®æ¥ç§ïŒæåšè¯¢äžç§å»ç',
'anaphylaxis': 'ç»å¯¹çŠå¿ïŒçŠæ¢æ¥ç§'
};
return recommendations[severityLevel];
}
èŠç€ºèŸåºæ ŒåŒïŒ
ð ç«èæ¥ç§åå®å
𿣿¥
ç«èïŒä¹åèçç«èïŒéç»ïŒ
ââââââââââââââââââââââââââ
1ïžâ£ è¿æå²æ£æ¥
ââââââââââââââââââââââââââ
â
éè¿
æ£æ¥ç»æïŒ
⢠æ çžå
³è¿æå²
⢠ç«èæåïŒéç»HBsAgãæ°¢æ°§åéãç¡«æ³æ±
⢠æ å¹é
è¿æå
2ïžâ£ 幎éŸé宿§æ£æ¥
ââââââââââââââââââââââââââ
â
éè¿
åœå幎éŸïŒ35å²
æšè幎éŸïŒä»»äœå¹ŽéŸå坿¥ç§
è¯äŒ°ïŒé宿¥ç§
3ïžâ£ åœåå¥åº·ç¶åµæ£æ¥
ââââââââââââââââââââââââââ
â ïž éæ³šæ
è¿æçç¶è®°åœïŒ
⢠åçïŒ2025-12-28ïŒ- å·²æ¢å€3倩
è¯äŒ°ïŒå·²çæïŒå¯æ¥ç§
4ïžâ£ è¯ç©çžäºäœç𿣿¥
ââââââââââââââââââââââââââ
â ïž åç°1项æœåšåœ±å
åœåçšè¯ïŒ
⢠ç¯å¢çŽ 100mg æ¯æ¥2次ïŒå
ç«æå¶åïŒ
圱åïŒå¯èœéäœç«èå
ç«ææ
建议ïŒ
⢠æ¥ç§å2-3äžªææ£æµæäœæ»ŽåºŠ
â¢ åŠæäœæ»ŽåºŠäžè¶³ïŒèèå 区æ¥ç§
⢠åšè¯¢äžç§å»çæè§
5ïžâ£ ç«èæ¥ç§å²æ£æ¥
ââââââââââââââââââââââââââ
ð å·²ææ¥ç§è®°åœ
ä¹èç«èæ¥ç§å²ïŒ
⢠第1éïŒ2025-11-15 â
⢠第2éïŒ2025-12-15 â
⢠第3éïŒåŸ
ç§ïŒè®¡å2026-05-15ïŒ
æ¬æ¬¡ææ¥ç§ïŒç¬¬3é
6ïžâ£ çŠå¿çæ£æ¥
ââââââââââââââââââââââââââ
â
æ çŠå¿
æ£æ¥é¡¹ç®ïŒ
â¢ äž¥éæ¥æ§åçæ§çŸç
ïŒâ æ
⢠对ç«èæåè¿æïŒâ æ
⢠æ¢åŸäž¥éè¿æå²ïŒâ æ
⢠åŠåš æïŒâ åŠ
ââââââââââââââââââââââââââ
绌åè¯äŒ°ïŒâ
å¯ä»¥æ¥ç§
ââââââââââââââââââââââââââ
泚æäºé¡¹ïŒ
⢠æ¥ç§åçè§30åé
⢠åŠåºç°äžè¯ååºïŒåæ¶è®°åœ
⢠建议æ¥ç§å2äžªææ£æµæäœ
â¢ ä¿ææ¥ç§éšäœæž
æŽå¹²ç¥
æ¯åŠç»§ç»æ·»å ç«è计åïŒ
A. ç»§ç»æ·»å
B. åæ¶
å€çæµçšïŒ
function checkAgeAppropriateness(vaccine, birthDate) {
const age = calculateAge(birthDate);
const recommendation = vaccine.age_recommendations;
if (age < recommendation.min_age) {
return {
appropriate: false,
reason: `幎éŸäžè¶³ïŒå»ºè®®${recommendation.min_age}å忥ç§`
};
}
if (recommendation.max_age && age > recommendation.max_age) {
return {
appropriate: false,
reason: `è¶
è¿æšè幎éŸäžé`
};
}
return {
appropriate: true,
recommended_age: recommendation.recommended_age
};
}
function checkVaccineInteractions(vaccine) {
const medications = loadMedications();
const interactions = [];
for (const vaccineInteraction of vaccine.interactions) {
const matchingMeds = medications.filter(med =>
med.active && med.category === vaccineInteraction.drug_category
);
if (matchingMeds.length > 0) {
interactions.push({
drugs: matchingMeds.map(m => m.name),
interaction: vaccineInteraction
});
}
}
return interactions;
}
æ ¹æ®ç«èç±»åçææ¥ç§è®¡åïŒ
å€å次ç«èïŒåŠä¹è0-1-6ïŒïŒ
幎床ç«èïŒåŠæµæïŒïŒ
忬¡ç«èïŒ
计åçæç®æ³ïŒ
function generateVaccineSchedule(vaccine, firstDoseDate) {
const schedule = [];
const scheduleTypes = {
'0-1-6': [
{ dose: 1, offset: 0, unit: 'months' },
{ dose: 2, offset: 1, unit: 'months' },
{ dose: 3, offset: 6, unit: 'months' }
],
'0-2-6': [
{ dose: 1, offset: 0, unit: 'months' },
{ dose: 2, offset: 2, unit: 'months' },
{ dose: 3, offset: 6, unit: 'months' }
],
'2-6': [
{ dose: 1, offset: 2, unit: 'months' },
{ dose: 2, offset: 6, unit: 'months' }
],
'annual': [
{ dose: 1, offset: 1, unit: 'years' }
],
'single': [
{ dose: 1, offset: 0, unit: 'days' }
]
};
const pattern = scheduleTypes[vaccine.standard_schedule];
for (const doseInfo of pattern) {
const scheduledDate = addOffset(firstDoseDate, doseInfo.offset, doseInfo.unit);
const isFirstDose = doseInfo.dose === 1;
schedule.push({
dose_number: doseInfo.dose,
scheduled_date: formatDate(scheduledDate),
administered_date: isFirstDose && firstDoseDate <= new Date() ? formatDate(firstDoseDate) : null,
status: isFirstDose && firstDoseDate <= new Date() ? 'completed' : 'scheduled'
});
}
return schedule;
}
æä»¶è·¯åŸïŒ
data/vaccinations.json
JSON æ°æ®ç»æïŒ
{
"created_at": "2025-12-31T12:34:56.789Z",
"last_updated": "2025-12-31T12:34:56.789Z",
"vaccination_records": [
{
"id": "vax_20251231123456789",
"vaccine_info": {
"name": "ä¹åèçç«è",
"type": "recombinant",
"trade_name": "éç»ä¹åèçç«è",
"manufacturer": "å京çç©å¶åç ç©¶æ",
"batch_number": "202512001",
"dose_form": "injection",
"dose_volume": {
"value": 0.5,
"unit": "ml"
},
"route": "intramuscular",
"route_name": "èèæ³šå°"
},
"series_info": {
"is_series": true,
"series_type": "primary",
"total_doses": 3,
"current_dose": 2,
"schedule_type": "0-1-6",
"schedule_name": "0-1-6æçšåº"
},
"doses": [
{
"dose_number": 1,
"scheduled_date": "2025-11-15",
"administered_date": "2025-11-15",
"administration_time": "2025-11-15T10:30:00",
"site": "left_arm",
"site_name": "å·Šäžèäžè§è",
"facility": "瀟åºå«çæå¡äžå¿",
"provider": "çå»ç",
"lot_number": "202512001",
"status": "completed"
},
{
"dose_number": 2,
"scheduled_date": "2025-12-15",
"administered_date": "2025-12-16",
"administration_time": "2025-12-16T09:00:00",
"site": "right_arm",
"site_name": "å³äžèäžè§è",
"facility": "瀟åºå«çæå¡äžå¿",
"provider": "ææ€å£«",
"lot_number": "202512045",
"status": "completed"
},
{
"dose_number": 3,
"scheduled_date": "2026-05-15",
"administered_date": null,
"administration_time": null,
"site": null,
"site_name": null,
"facility": null,
"provider": null,
"lot_number": null,
"status": "scheduled"
}
],
"adverse_reactions": [
{
"dose_number": 1,
"reactions": [
{
"reaction": "泚å°éšäœçŒç",
"severity": "mild",
"onset_time": "æ¥ç§å6å°æ¶",
"duration": "2倩",
"treatment": "æ éå€ç"
}
]
}
],
"safety_checks": {
"allergy_warnings": [],
"drug_interactions": [],
"age_appropriate": true,
"contraindications": []
},
"status": {
"series_status": "in_progress",
"completion_percentage": 66.7,
"next_dose_due": "2026-05-15",
"is_overdue": false
},
"metadata": {
"created_at": "2025-11-15T10:30:00.000Z",
"last_updated": "2025-12-16T09:00:00.000Z",
"notes": ""
}
}
],
"statistics": {
"total_vaccination_records": 15,
"total_doses_administered": 42,
"series_completed": 8,
"series_in_progress": 4,
"single_doses": 3,
"overdue_count": 1,
"upcoming_30_days": 3,
"adverse_reactions_count": 5,
"severe_reactions_count": 0,
"last_updated": "2025-12-31T12:34:56.789Z"
}
}
â
ç«èæ¥ç§è®¡å已添å
ç«èä¿¡æ¯ïŒ
ââââââââââââââââââââââââââ
ç«èåç§°ïŒä¹åèçç«èïŒéç»ïŒ
æ¥ç§çšåºïŒ0-1-6æçšåº
å·²æ¥ç§å次ïŒ
ââââââââââââââââââââââââââ
第1éïŒ2025-11-15 â
å·Šäžèäžè§è
第2éïŒ2025-12-16 â
å³äžèäžè§è
åŸ
æ¥ç§å次ïŒ
ââââââââââââââââââââââââââ
第3éïŒ2026-05-15ïŒè®¡åäžïŒ
è¿åºŠïŒ2/3 (66.7%)
ð¡ æç€ºïŒ
⢠第3é建议åš2026-05-15å忥ç§
â¢ å¯æå2åšæå»¶å1äžªææ¥ç§
⢠æ¥ç§å坿£æµæäœç¡®è®€å
ç«ææ
ä»èªç¶è¯èšäžæåïŒ
æ ¹æ®ç«èåç§°å忬¡æ¥æŸå¯¹åºçæ¥ç§è®¡åè®°åœã
æŽæ°å¯¹åºå次ç诊ç»ä¿¡æ¯ïŒ
administered_dateadministration_timesiteãfacilityãprovider`status 䞺 "completed"ð æ¥ç§åååºè®°åœ
ç«èïŒä¹åèçç«è - 第2é
æ¥ç§æ¶éŽïŒ2025-12-31 10:30
æ¯åŠæäžè¯ååºïŒ
ââââââââââââââââââââââââââ
1. æ äžè¯ååº
2. 泚å°éšäœçŒç/红è¿
3. åç
4. ç®ç¹/çç
5. å
¶ä»ååº
è¯·éæ©ææè¿°ååºïŒ
æ ¹æ®çšæ·éæ©è®°åœäžè¯ååºä¿¡æ¯ã
current_doseâ
æ¥ç§è®°åœå·²æŽæ°
ç«èïŒä¹åèçç«è
忬¡ïŒç¬¬2é
æ¥ç§æ¶éŽïŒ2025-12-31 10:30
æ¥ç§éšäœïŒå·Šäžèäžè§è
æ¥ç§åäœïŒç€Ÿåºå«çæå¡äžå¿
è¿åºŠïŒ2/3 (66.7%)
äžäžå次ïŒç¬¬3éïŒè®¡å2026-05-15
ð¡ æç€ºïŒ
⢠äžäžåæ¬¡å¯æå2åšæå»¶å1äžªææ¥ç§
⢠建议åš2026-04-15è³2026-06-15ä¹éŽå®ææ¥ç§
ä» data/vaccinations.json è¯»åææè®°åœã
ð
ç«èæ¥ç§è®¡å
ââââââââââââââââââââââââââ
ðŽ å·²éŸæïŒ1项ïŒ
ââââââââââââââââââââââââââ
ä¹åèçç«è - 第3é
ââââââââââââââââââââââââââ
åºç§æ¥æïŒ2025-12-20ïŒå·²éŸæ11倩ïŒ
ç¶æïŒðŽ éŸæ
建议ïŒ
⢠尜快补ç§ïŒäžå¿
éæ°åŒå§çšåº
⢠èç³»æ¥ç§ç¹é¢çºŠæ¶éŽ
ââââââââââââââââââââââââââ
â° è¿æåŸ
ç§ïŒ30倩å
ïŒ2项ïŒ
ââââââââââââââââââââââââââ
1. HPVç«è - 第2é
ââââââââââââââââââââââââââ
åºç§æ¥æïŒ2026-01-15ïŒè¿æ15倩ïŒ
æ¥ç§éšäœïŒå»ºè®®å³è
é¢çºŠå»ºè®®ïŒæå1åšé¢çºŠ
2. æµæç«èïŒå¹ŽåºŠå 区ïŒ
ââââââââââââââââââââââââââ
åºç§æ¥æïŒ2026-01-30ïŒè¿æ30倩ïŒ
倿³šïŒæµæå£èåæ¥ç§æææäœ³
ââââââââââââââââââââââââââ
ð åç»è®¡å
ââââââââââââââââââââââââââ
⢠ä¹èç«è - 第3éïŒéŸæåŸ
è¡¥ç§
⢠HPVç«è - 第3éïŒè®¡å2026-04-15
⢠Tdapå 区éïŒè®¡å2026-06-01
å¿«éæ¥çåŸ æ¥ç§åéŸæç«èçç®åè§åŸã
èŸåºæ ŒåŒïŒ
â ïž åŸ
æ¥ç§æé
ââââââââââââââââââââââââââ
ðŽ çŽ§æ¥ïŒå·²éŸæïŒ
ââââââââââââââââââââââââââ
1. ä¹èç«è第3é
éŸæïŒ11倩ïŒåºç§ïŒ2025-12-20ïŒ
ð¡ 建议尜快补ç§
ââââââââââââââââââââââââââ
â ïž å³å°å°æïŒ7倩å
ïŒ
ââââââââââââââââââââââââââ
æ
ââââââââââââââââââââââââââ
ð
è¿æåŸ
ç§ïŒ30倩å
ïŒ
ââââââââââââââââââââââââââ
1. HPVç«è第2é - è¿æ15倩
2. æµæç«è - è¿æ30倩
ââââââââââââââââââââââââââ
è¡åšå»ºè®®ïŒ
⢠ç«å³èç³»æ¥ç§ç¹è¡¥ç§éŸæç«è
⢠䞺å³å°å°æçç«èé¢çºŠæ¥ç§æ¶éŽ
è¯»åææå·²å®æçæ¥ç§è®°åœã
ææ¥ç§æ¥æååºæåã
ð ç«èæ¥ç§åå²
ââââââââââââââââââââââââââ
2025幎12æïŒ2次ïŒ
ââââââââââââââââââââââââââ
12-31 HPVç«è 第2é â
éšäœïŒå³äžèäžè§è
å°ç¹ïŒç€Ÿåºå«çæå¡äžå¿
ååºïŒæ³šå°éšäœèœ»åºŠçŒçïŒ1倩ïŒ
12-15 ä¹èç«è 第2é â
æ¹å·ïŒ202512045
å°ç¹ïŒç€Ÿåºå«çæå¡äžå¿
ââââââââââââââââââââââââââ
2025幎11æïŒ1次ïŒ
ââââââââââââââââââââââââââ
11-15 ä¹èç«è 第1é â
æ¹å·ïŒ202512001
å°ç¹ïŒç€Ÿåºå«çæå¡äžå¿
ââââââââââââââââââââââââââ
2025幎10æïŒ2次ïŒ
ââââââââââââââââââââââââââ
10-15 HPVç«è 第1é â
æ¹å·ïŒ202510012
10-01 æµæç«è â
æ¹å·ïŒ202509088
ââââââââââââââââââââââââââ
æ»è®¡ïŒ42忬¡
ç³»å宿ïŒ8䞪
è¿è¡äžïŒ4䞪
ð ç«èæ¥ç§ç»è®¡
æ»äœæ
åµïŒ
ââââââââââââââââââââââââââ
环计æ¥ç§ïŒ42忬¡
ç«èç§ç±»ïŒ15ç§
å®æç³»åïŒ8䞪
è¿è¡äžïŒ4䞪
忬¡ç«èïŒ3ç§
ââââââââââââââââââââââââââ
ç³»åè¿åºŠ
ââââââââââââââââââââââââââ
â
ä¹èç«èïŒ3/3ïŒ100%
宿ïŒ2025-11-15
â
HPVç«èïŒ2/3ïŒ66.7%
äžæ¬¡ïŒ2026-01-15
â ïž çŸçœç Žç«èïŒ1/3ïŒ33.3%
ç¶æïŒå·²éŸæïŒé尜快补ç§
ââââââââââââââââââââââââââ
äžè¯ååºç»è®¡
ââââââââââââââââââââââââââ
æ»ååºæ°ïŒ5次
⢠蜻床ïŒ5次
⢠äžåºŠïŒ0次
⢠é床ïŒ0次
åžžè§ååºïŒ
⢠泚å°éšäœçŒçïŒ3次
⢠åçïŒ1次
⢠ç²ä¹ïŒ1次
ââââââââââââââââââââââââââ
æ¥ç§åæ¶æ§
ââââââââââââââââââââââââââ
ææ¶æ¥ç§ïŒ38次ïŒ90.5%ïŒ
å»¶è¿æ¥ç§ïŒ4次ïŒ9.5%ïŒ
éŸææªç§ïŒ1忬¡
ââââââââââââââââââââââââââ
å
ç«èŠçè¯äŒ°
ââââââââââââââââââââââââââ
â
å¿ç«¥åºç¡å
ç«ïŒå®æ
â
æäººåžžè§å
ç«ïŒè¯å¥œ
â ïž æšèç«èïŒéšå猺倱
⢠垊ç¶ç±ç¹ç«èïŒæªæ¥ç§ïŒ50å²ä»¥äžæšèïŒ
⢠èºççèç«èïŒæªæ¥ç§ïŒ65å²ä»¥äžæšèïŒ
ð¡ 建议ïŒ
ââââââââââââââââââââââââââ
⢠äŒå
è¡¥ç§éŸæççŸçœç Žç«è
⢠èèæ¥ç§åžŠç¶ç±ç¹ç«èïŒåŠç¬Šåå¹ŽéŸæ¡ä»¶ïŒ
â¢ æµæç«èæ¯å¹Žç§å£æ¥ç§
仿°æ®åºäžè·åç«è诊ç»ä¿¡æ¯ã
ïŒåè§åé¢ç"æ¥ç§åå®å 𿣿¥"瀺äŸèŸåºïŒ
æä»¶è·¯åŸïŒ data/vaccine-database.json
{
"version": "1.0.0",
"created_at": "2025-12-31T12:34:56.789Z",
"last_updated": "2025-12-31T12:34:56.789Z",
"vaccines": [
{
"id": "hepb",
"name": "ä¹åèçç«è",
"english_name": "Hepatitis B Vaccine",
"aliases": ["ä¹èç«è", "HepB", "éç»ä¹åèçç«è"],
"type": "recombinant",
"manufacturers": ["å京çç©", "康泰çç©", "èå
°çŽ å²å
"],
"schedule": {
"is_series": true,
"series_type": "primary",
"standard_schedule": "0-1-6",
"doses": [
{
"dose_number": 1,
"timing": "birth",
"timing_description": "åºçæ¶24å°æ¶å
",
"recommended_age": "0æéŸ",
"min_age": "0æ",
"max_age": null
},
{
"dose_number": 2,
"timing": "1_month_after_dose1",
"timing_description": "第1åå1䞪æ",
"interval_after_previous_dose": {
"value": 1,
"unit": "months"
},
"recommended_age": "1æéŸ",
"min_interval": "4åš"
},
{
"dose_number": 3,
"timing": "6_months_after_dose1",
"timing_description": "第1åå6䞪æ",
"interval_after_previous_dose": {
"value": 5,
"unit": "months"
},
"recommended_age": "6æéŸ",
"min_interval": "16åš",
"grace_period": "4åš"
}
],
"booster": {
"required": false,
"indications": ["é«å±äººçŸ€", "å
ç«åèœäœäž"],
"interval": "5幎"
}
},
"contraindications": [
{
"type": "allergy",
"allergen": "é
µæ¯",
"severity": "severe",
"description": "对ç«èä»»äœæåïŒå
æ¬é
µæ¯ïŒäž¥éè¿æè
"
},
{
"type": "disease",
"condition": "äž¥éæ¥æ§åçæ§çŸç
",
"severity": "temporary",
"description": "åçæåºæçŒæ¥ç§"
}
],
"age_recommendations": {
"recommended_age": "åºçæ¶",
"min_age": "0æ",
"max_age": null,
"catch_up_schedule": "ä»»äœå¹ŽéŸåå¯åŒå§æ¥ç§"
},
"interactions": [
{
"drug_category": "å
ç«æå¶å",
"interaction_type": "reduced_efficacy",
"severity": "moderate",
"description": "å
ç«æå¶åå¯èœéäœç«èå
ç«ææ"
}
],
"common_adverse_reactions": [
{
"reaction": "泚å°éšäœçŒç",
"frequency": "common",
"severity": "mild",
"onset": "æ¥ç§å24å°æ¶å
",
"duration": "1-3倩"
},
{
"reaction": "åç",
"frequency": "occasional",
"severity": "mild_to_moderate",
"onset": "æ¥ç§å6-24å°æ¶",
"duration": "1-2倩"
}
],
"special_populations": {
"pregnancy": {
"recommendation": "safe",
"notes": "åŠåš æå¯å®å
šæ¥ç§"
},
"lactation": {
"recommendation": "safe",
"notes": "åºä¹³æå¯å®å
šæ¥ç§"
},
"immunocompromised": {
"recommendation": "recommended",
"notes": "å
ç«åèœäœäžè
æŽéæ¥ç§"
}
}
}
],
"categories": {
"routine_childhood": ["hepb", "bcg", "polio", "dpt", "mmr", "varicella"],
"routine_adult": ["influenza", "tdap", "pneumococcal", "shingles", "covid"],
"travel": ["hepa", "typhoid", "yellow_fever", "japanese_encephalitis"],
"high_risk": ["pneumococcal", "meningococcal", "hib"]
}
}
åžžè§ç«èïŒ
| çšæ·èŸå ¥ | æ åå |
|---|---|
| 第1éã第äžéã第1åã第äžå | dose_number: 1 |
| 第2éã第äºéã第2åã第äºå | dose_number: 2 |
| 第3éã第äžéã第3åã第äžå | dose_number: 3 |
| çšæ·èŸå ¥ | æ åå | æ»å次 |
|---|---|---|
| 0-1-6ã016çšåº | 0-1-6 | 3å |
| 0-2-6ã026çšåº | 0-2-6 | 3å |
| 2åã2次 | 2-dose | 2å |
| 3åã3次 | 3-dose | 3å |
| 忬¡ã1次 | single | 1å |
| çšæ·èŸå ¥ | æ åå |
|---|---|
| å·Šäžèãå·Šè | left_arm |
| å³äžèãå³è | right_arm |
| å·Šå€§è ¿ | left_thigh |
| å³å€§è ¿ | right_thigh |
| èéšãèéšæ³šå° | buttock |
| çšæ·èŸå ¥ | æ åå |
|---|---|
| ä»å€©ãåœæ¥ | åœæ¥æ¥æ |
| æšå€©ãæšæ¥ | åœæ¥-1倩 |
| æå€©ãææ¥ | åœæ¥+1倩 |
| YYYY-MM-DD | æ åæ¥ææ ŒåŒ |
| XæXæ¥ | åœå¹Žçè¯¥æ¥æ |
| XåšåãX䞪æå | è®¡ç®æ¥æ |
åšå
šå±çŽ¢åŒ data/index.json äžæ·»å ïŒ
{
"vaccination_records": "data/vaccinations.json",
"vaccine_database": "data/vaccine-database.json",
"statistics": {
"vaccination_count": 0
}
}
ç«èæ¥ç§åèªå𿣿¥ data/allergies.jsonïŒ
ä» data/profile.json è·ååºçæ¥æçšäºïŒ
æ£æ¥åœåçšè¯äžç«èççžäºäœçšïŒ
completion_percentage = (current_dose / total_doses) * 100
is_overdue = (scheduled_date < today) && (status === 'scheduled')
timeliness_rate = (on_time_doses / total_doses) * 100
reaction_rate = (doses_with_reactions / total_doses) * 100
# æ·»å ä¹èç«èæ¥ç§è®¡å
/vaccine add ä¹èç«è 0-1-6çšåº 第äžéå·²ææšå€©
# æ·»å HPVç«è计å
/vaccine add HPVç«è 第äžé2025-10-15 第äºé计å2025-12-15
# è®°åœå®é
æ¥ç§
/vaccine record ä¹èç«è 第2é ä»å€©å·Šäžè
/vaccine record æµæç«è ä»å€©ç€Ÿåºå«çæå¡äžå¿
# æ¥çæ¥ç§è®¡å
/vaccine schedule
# æ¥çåŸ
æ¥ç§ç«è
/vaccine due
# æ¥çæ¥ç§åå²
/vaccine history
/vaccine history 2025-10
# æ¥çæ¥ç§ç»è®¡
/vaccine status
# æ¥ç§åå®å
𿣿¥
/vaccine check ä¹èç«è