emergency-card
ð¯Skillfrom huifer/wellally-health
emergency-card skill from huifer/wellally-health
Part of
huifer/wellally-health(15 items)
Installation
python scripts/generate_emergency_card.pypython scripts/generate_emergency_card.py standardpython scripts/generate_emergency_card.py childpython scripts/generate_emergency_card.py elderlypython scripts/generate_emergency_card.py severe+ 3 more commands
Skill Details
çæçŽ§æ¥æ åµäžå¿«é访é®çå»çä¿¡æ¯æèŠå¡çãåœçšæ·éèŠæ è¡ãå°±è¯åå€ãçŽ§æ¥æ åµæè¯¢é®"玧æ¥ä¿¡æ¯"ã"å»çå¡ç"ã"æ¥æä¿¡æ¯"æ¶äœ¿ç𿀿èœãæåå ³é®ä¿¡æ¯ïŒè¿æãçšè¯ãæ¥çãæ€å ¥ç©ïŒïŒæ¯æå€æ ŒåŒèŸåºïŒJSONãææ¬ãäºç»Žç ïŒïŒçšäºæ¥ææå¿«éå°±å»ã
Overview
# 玧æ¥å»çä¿¡æ¯å¡çæåš
çæçŽ§æ¥æ åµäžå¿«é访é®çå»çä¿¡æ¯æèŠïŒçšäºæ¥ææå°±å»ã
æ žå¿åèœ
1. 玧æ¥ä¿¡æ¯æå
ä»çšæ·çå¥åº·æ°æ®äžæåæå ³é®çä¿¡æ¯ïŒ
- 䞥éè¿æïŒäŒå æå4级ïŒè¿ææ§äŒå ïŒå3çº§è¿æ
- åœåçšè¯ïŒæŽ»è·è¯ç©çåç§°ãåéãé¢ç
- æ¥çæ åµïŒéèŠçާæ¥å€ççå»çç¶åµ
- æ€å ¥ç©ïŒå¿èèµ·æåšãæ¯æ¶çïŒåœ±åæ£æ¥åæ²»çïŒ
- 玧æ¥è系人ïŒå¿«éèç³»çå®¶å±ä¿¡æ¯
2. ä¿¡æ¯äŒå 级æåº
æç §å»ç玧æ¥çšåºŠå¯¹ä¿¡æ¯æåºïŒ
- P0 - 屿¥ä¿¡æ¯ïŒè¿ææ§äŒå ã䞥éè¯ç©è¿æãå±åçåœççŸç
- P1 - éèŠä¿¡æ¯ïŒåœåçšè¯ãæ ¢æ§ç ãæ€å ¥ç©
- P2 - äžè¬ä¿¡æ¯ïŒè¡åã幎éŸãäœéãæè¿æ£æ¥
3. 倿 ŒåŒèŸåº
æ¯æå€ç§èŸåºæ ŒåŒä»¥éåºäžååºæ¯ïŒ
- HTMLæ ŒåŒïŒå¯æå°çœé¡µïŒäœ¿çšTailwind CSSåLucideåŸæ ïŒæšèïŒ
- JSONæ ŒåŒïŒç»æåæ°æ®ïŒäŸ¿äºç³»ç»éæ
- ææ¬æ ŒåŒïŒç®æŽå¯è¯»ïŒéåæå°æºåžŠ
- PDFæ ŒåŒïŒäžäžæå°ïŒéåé¿æä¿å
#### HTMLæ ŒåŒïŒæ°å¢ïŒ
çæç¬ç«çHTMLæä»¶ïŒå å«ïŒ
- Tailwind CSSæ ·åŒïŒéè¿CDNïŒ
- LucideåŸæ ïŒéè¿CDNïŒ
- ååºåŒè®Ÿè®¡
- æå°äŒå
- å€ç§å°ºå¯žåäœïŒA4ãé±å å¡ã倧åçïŒ
- èªåšå¡çç±»åæ£æµïŒæ åãå¿ç«¥ãè幎ã䞥éè¿æïŒ
äœ¿çšæ¹åŒïŒ
```bash
# çææ åå¡ç
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 # 倧åçïŒè幎ïŒ
```
èŸåºæä»¶ïŒemergency-cards/emergency-card-{variant}-{YYYY-MM-DD}.html
4. 犻线å¯çš
- æ¯æææºä¿åïŒçžåãæä»¶ïŒ
- æ¯ææå°æºåžŠïŒé±å ãå ïŒ
- æ¯æäºç«¯å€ä»œïŒå¯éïŒ
䜿çšè¯Žæ
è§Šåæ¡ä»¶
åœçšæ·æå°ä»¥äžåºæ¯æ¶ïŒäœ¿ç𿀿èœïŒ
- â "çæçާæ¥å»çä¿¡æ¯å¡"
- â "æéèŠæ è¡ïŒåŠäœå¿«éæäŸå»çä¿¡æ¯"
- â "ææçè¿æä¿¡æ¯æŽçæå¡ç"
- â "çŽ§æ¥æ 嵿¥æä¿¡æ¯"
- â "å°±å»åå€èµæ"
- â "å»çä¿¡æ¯æèŠ"
æ§è¡æ¥éª€
#### æ¥éª€ 1: 读åçšæ·åºç¡æ°æ®
ä»ä»¥äžæ°æ®æºè¯»åä¿¡æ¯ïŒ
```javascript
// 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');
```
#### æ¥éª€ 2: æåå ³é®ä¿¡æ¯
##### 2.1 åºç¡ä¿¡æ¯
```javascript
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 䞥éè¿æ
```javascript
// è¿æ»€åº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 æ ¢æ§çŸç è¯æïŒæ°å¢ïŒ
```javascript
// 仿 ¢æ§ç ç®¡çæ°æ®äžæåè¯æä¿¡æ¯
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 åœåçšè¯
```javascript
// åªå 嫿޻è·çè¯ç©
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 å»çç¶åµ
ä»åºé¢å°ç»äžæåè¯æä¿¡æ¯ïŒ
```javascript
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 æ€å ¥ç©
仿æ¯è®°åœäžæåæ€å ¥ç©ä¿¡æ¯ïŒ
```javascript
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 è¿æèŸå°æŽé²
```javascript
const recentRadiation = {
total_dose_last_year: calculateTotalDose(radiation.records, 'last_year'),
last_exam: radiation.records[radiation.records.length - 1]
};
```
#### æ¥éª€ 3: çæä¿¡æ¯å¡ç
æç §äŒå 级ç»ç»ä¿¡æ¯ïŒ
```javascript
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 // åç¬å段䟿äºè®¿é®
};
```
#### æ¥éª€ 4: æ ŒåŒåèŸåº
##### JSONæ ŒåŒ
çŽæ¥èŸåºç»æåJSONæ°æ®ã
##### ææ¬æ ŒåŒ
çææè¯»çææ¬å¡çïŒ
```
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 玧æ¥å»çä¿¡æ¯å¡ â
â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ£
â å§åïŒåŒ äž å¹ŽéŸïŒ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 â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
```
##### äºç»Žç æ ŒåŒ
å°JSONæ°æ®èœ¬æ¢äžºäºç»Žç åŸçïŒ
```javascript
const qrCode = generateQRCode(JSON.stringify(emergencyCard));
emergencyCard.qr_code = qrCode;
```
#### æ¥éª€ 5: ä¿åæä»¶
æ ¹æ®çšæ·éæ©çæ ŒåŒä¿åæä»¶ïŒ
```javascript
// JSONæ ŒåŒ
saveFile('emergency-card.json', JSON.stringify(emergencyCard, null, 2));
// ææ¬æ ŒåŒ
saveFile('emergency-card.txt', generateTextCard(emergencyCard));
// äºç»Žç æ ŒåŒ
saveFile('emergency-card-qr.png', emergencyCard.qr_code);
```
#### æ¥éª€ 6: èŸåºç¡®è®€ä¿¡æ¯
```
â 玧æ¥å»çä¿¡æ¯å¡å·²çæ
æä»¶äœçœ®ïŒdata/emergency-cards/emergency-card-2025-12-31.json
çææ¶éŽïŒ2025-12-31 12:34:56
å å«ä¿¡æ¯ïŒ
ââââââââââââââââââââââââââ
â åºç¡ä¿¡æ¯ïŒå§åã幎éŸãè¡åïŒ
â 䞥éè¿æïŒ1项4çº§è¿æïŒ
â åœåçšè¯ïŒ2ç§è¯ç©ïŒ
â å»çç¶åµïŒ2ç§çŸç ïŒ
â æ€å ¥ç©ïŒ1项ïŒ
â 玧æ¥è系人ïŒ1人ïŒ
ð¡ 䜿çšå»ºè®®ïŒ
ââââââââââââââââââââââââââ
⢠å°JSONæä»¶ä¿åå°ææºäºç
⢠å°äºç»Žç ä¿åå°ææºçžå
⢠æå°ææ¬çé身æºåžŠ
⢠æ è¡åæŽæ°ä¿¡æ¯
â ïž æ³šæäºé¡¹ïŒ
ââââââââââââââââââââââââââ
⢠æ€ä¿¡æ¯å¡ä» äŸåèïŒäžæ¿ä»£äžäžå»çè¯æ
â¢ å®ææŽæ°ïŒå»ºè®®æ¯3䞪ææå¥åº·ä¿¡æ¯åååïŒ
â¢ åŠæäž¥éè¿æïŒè¯·é身æºåžŠè¿ææ¥æå¡
```
æ°æ®æº
äž»èŠæ°æ®æº
- data/profile.jsonïŒçšæ·åºç¡ä¿¡æ¯ãè¡åã玧æ¥è系人
- data/allergies.jsonïŒè¿æå²å䞥éçšåºŠå级
- data/medications/medications.jsonïŒåœåçšè¯è®¡åååé
æ ¢æ§ç æ°æ®æºïŒæ°å¢ïŒ
- data/hypertension-tracker.jsonïŒé«è¡åç®¡çæ°æ®ïŒè¯ææ¥æãå级ãè¡åæ§å¶ãé¶åšå®æå®³ãå¿è¡ç®¡é£é©ïŒ
- data/diabetes-tracker.jsonïŒç³å°¿ç ç®¡çæ°æ®ïŒç±»åãHbA1cãè¡ç³æ§å¶ãå¹¶åççæ¥ïŒ
- data/copd-tracker.jsonïŒCOPDç®¡çæ°æ®ïŒGOLDå级ãCATè¯åãæ¥æ§å éå²ãèºåèœïŒ
èŸ å©æ°æ®æº
- data/radiation-records.jsonïŒè¿æèŸå°æŽé²è®°åœ
- data/ææ¯è®°åœ//.json*ïŒææ¯æ€å ¥ç©ä¿¡æ¯
- data/åºé¢å°ç»//.json*ïŒå»çè¯æä¿¡æ¯
å¯éæ°æ®æº
- data/index.jsonïŒå šå±æ°æ®çŽ¢åŒ
å®å šæ§åå
å¿ é¡»éµåŸª
- â äžæ·»å çšè¯å»ºè®®ïŒä» ååºåœåçšè¯ïŒ
- â äžæäŸè¯æç»è®ºïŒä» ååºå·²ç¥è¯æïŒ
- â äžç»åºæ²»ç建议ïŒäžæ¿ä»£å»çïŒ
- â æ 泚å 莣声æïŒä» äŸåèïŒ
ä¿¡æ¯å确床
- â ä» æå已记åœçä¿¡æ¯ïŒäžæšæµææšæïŒ
- â æ æ³šä¿¡æ¯æ¥æºåæŽæ°æ¶éŽ
- â å»ºè®®å®ææŽæ°ä¿¡æ¯
éç§ä¿æ€
- â ææä¿¡æ¯å¯ééè
- â çµè¯å·ç éšåéèïŒåŠïŒ138****1234ïŒ
- â æææ°æ®ä» ä¿ååšæ¬å°
é误å€ç
æ°æ®çŒºå€±
- è¿ææ°æ®çŒºå€±ïŒèŸåº"æªè®°åœè¿æå²"
- çšè¯æ°æ®çŒºå€±ïŒèŸåº"æªè®°åœåœåçšè¯"
- æ€å ¥ç©æ°æ®çŒºå€±ïŒèŸåº"æ æ€å ¥ç©"
æä»¶è¯»å倱莥
- æ æ³è¯»åprofile.jsonïŒäœ¿çšé»è®€åŒïŒå§åïŒæªè®Ÿçœ®ïŒ
- æ æ³è¯»åallergies.jsonïŒè·³è¿è¿æä¿¡æ¯
- ç»§ç»çæå ¶ä»ä¿¡æ¯ïŒäžå å䞪æä»¶å€±èŽ¥èäžæ
äºç»Žç çæå€±èŽ¥
- éçº§äžºææ¬æ ŒåŒèŸåº
- æç€ºçšæ·æåšè®°åœä¿¡æ¯
瀺äŸèŸåº
宿Žç€ºäŸè¯·åè [examples.md](examples.md)ã
æµè¯æ°æ®
æµè¯æ°æ®æä»¶äœäº [test-data/emergency-example.json](test-data/emergency-example.json)ã
æ ŒåŒè¯Žæ
诊ç»çèŸåºæ ŒåŒè¯Žæè¯·åè [formats.md](formats.md)ã
More from this repository10
wellally-tech skill from huifer/wellally-health
goal-analyzer skill from huifer/wellally-health
mental-health-analyzer skill from huifer/wellally-health
rehabilitation-analyzer skill from huifer/wellally-health
health-trend-analyzer skill from huifer/wellally-health
travel-health-analyzer skill from huifer/wellally-health
Analyzes sleep data to identify patterns, assess quality, and provide personalized recommendations for improving sleep health.
tcm-constitution-analyzer skill from huifer/wellally-health
fitness-analyzer skill from huifer/wellally-health
nutrition-analyzer skill from huifer/wellally-health