2025-12-20 22:47:58 +00:00
export type DrugCategory = 'cardiovascular' | 'respiratorio' | 'neurologico' | 'analgesia' | 'oxigenoterapia' | 'otros' ;
2025-12-17 11:12:10 +00:00
export type AdministrationRoute = 'IV' | 'IM' | 'SC' | 'IO' | 'Nebulizado' | 'SL' | 'Rectal' | 'Nasal' ;
export interface Drug {
id : string ;
genericName : string ;
tradeName : string ;
category : DrugCategory ;
presentation : string ;
adultDose : string ;
pediatricDose? : string ;
routes : AdministrationRoute [ ] ;
dilution? : string ;
indications : string [ ] ;
contraindications : string [ ] ;
sideEffects? : string [ ] ;
antidote? : string ;
notes? : string [ ] ;
criticalPoints? : string [ ] ; // Puntos TES críticos específicos
source? : string ; // Fuente del manual
}
export const drugs : Drug [ ] = [
{
id : 'oxigeno' ,
genericName : 'Oxígeno (O₂)' ,
tradeName : 'Oxígeno medicinal' ,
category : 'oxigenoterapia' ,
presentation : 'Gas medicinal. Balas de 2L, 5L, 10L, 15L. Concentración variable según dispositivo.' ,
adultDose : 'Mascarilla con reservorio: 10-15 L/min (FiO₂ ~85%). Mascarilla simple: 5-10 L/min (FiO₂ ~40-60%). Gafas nasales: 1-6 L/min (FiO₂ 24-44%).' ,
pediatricDose : 'Ajustar por respuesta. Gafas nasales: 1-4 L/min. Mascarilla simple: 5-8 L/min. En lactantes, evitar flujos >4L/min por riesgo de retinopatía.' ,
routes : [ 'Inhalatoria' ] ,
indications : [
'Hipoxia (SpO₂ <94%)' ,
'Parada cardiorrespiratoria' ,
'Ictus' ,
'Síndrome Coronario Agudo' ,
'Trauma grave' ,
] ,
contraindications : [
'En EPOC conocida con riesgo de hipercapnia: usar Venturi 28% y titular a SpO₂ 88-92%' ,
] ,
notes : [
'NO es un fármaco inocuo' ,
'Humedecer si uso prolongado >2h' ,
'En EPOC conocida: usar Venturi 28% y titular a SpO₂ 88-92%' ,
] ,
criticalPoints : [
'Terapia, no placebo. Usarlo con indicación y precaución en EPOC' ,
'En EPOC conocida con riesgo de hipercapnia, usar Venturi 28% y titular a SpO₂ 88-92%' ,
] ,
source : 'BLOQUE_06_1_VADEMECUM_OPERATIVO.md'
} ,
{
id : 'adrenalina' ,
genericName : 'Adrenalina (Epinefrina)' ,
tradeName : 'Adrenalina Braun®' ,
category : 'cardiovascular' ,
presentation : 'ANAFILAXIA: Ampolla 1 mg/1 ml (1:1000). PCR: Ampolla 1 mg/10 ml (1:10.000). ¡LEER ETIQUETA EN VOZ ALTA!' ,
adultDose : 'ANAFILAXIA: 0.5 mg IM (0.5 ml de ampolla 1:1000). Repetir a los 5 min si no mejora. PCR: 1 mg IV/IO (10 ml de ampolla 1:10.000) cada 3-5 min.' ,
pediatricDose : 'ANAFILAXIA: 0.01 mg/kg IM (Máx. 0.5 mg). Ej: 20kg → 0.2 mg = 0.2 ml. PCR: 0.01 mg/kg IV/IO (o según protocolo local).' ,
routes : [ 'IM' , 'IV' , 'IO' ] ,
dilution : 'ANAFILAXIA: Sin diluir. PCR: Sin diluir (usar ampolla 1:10.000 directamente).' ,
indications : [
'Anafilaxia grave: Reacción alérgica sistémica con afectación respiratoria (estridor, sibilancias, disnea) y/o cardiovascular (hipotensión, taquicardia, colapso)' ,
'Parada cardiorrespiratoria: Cualquier ritmo (FV/TVSP, AESP, ACR) como parte del algoritmo SVA, una vez establecida vía IV/IO' ,
] ,
contraindications : [
'No hay contraindicaciones absolutas en emergencias vitales' ,
'Paciente anciano o con cardiopatía isquémica: El beneficio en anafilaxia grave supera el riesgo. Administrar y monitorizar estrechamente' ,
] ,
sideEffects : [ 'Temblor' , 'Taquicardia' , 'Palidez' , 'HTA' , 'Arritmias' ] ,
notes : [
'⚠️ CONCENTRACIÓN CRÍTICA: 1:1000 (1 mg/ml) para Anafilaxia IM. 1:10.000 (0.1 mg/ml) para PCR IV/IO' ,
'ANAFILAXIA: Fármaco salvavidas. Administración IM precoz es la intervención más importante. No esperar' ,
'ANAFILAXIA: Sitio IM = TERCIO MEDIO DEL VASTO EXTERNO (muslo lateral). Alternativa: deltoides' ,
'ANAFILAXIA: Técnica IM: Aguja perpendicular (90º), inyección con decisión, no masajear zona' ,
'ANAFILAXIA: Efectos adversos esperados (temblor, taquicardia, palidez) NO son motivo para retener la dosis' ,
'ANAFILAXIA: Valorar respuesta a los 2-3 min. Si NO hay mejoría a los 5 MIN, preparar segunda dosis en otro muslo' ,
'PCR: La adrenalina es secundaria a RCP de alta calidad y desfibrilación temprana' ,
'PCR: Administrar durante pausa mínima en compresiones, seguido de lavado con 20 ml SSF' ,
'PCR: Reanudar compresiones inmediatamente tras administración' ,
'PCR: Repetir cada 3-5 minutos mientras persista la PCR' ,
'PEDIATRÍA: Calcular estrictamente por peso. Un error decimal es grave. Usar calculadora y verificar' ,
'EMBARAZO: La adrenalina es el tratamiento de elección. Salva a la madre y al feto. Administrar IM en vasto externo' ,
'BETABLOQUEANTES: Pueden tener respuesta atenuada o reacción bifásica. Notificar en el parte' ,
] ,
criticalPoints : [
'⚠️ ERROR CRÍTICO: Confundir 1:1000 con 1:10.000. Administrar 1 mg/ml (1:1000) por vía IV en PCR equivale a 10 mg (LETAL)' ,
'⚠️ ERROR CRÍTICO: Retrasar administración en anafilaxia por "ver si mejora". El tratamiento es URGENTE' ,
'⚠️ ERROR CRÍTICO: No preparar segunda dosis en anafilaxia cuando no hay respuesta. Es frecuentemente necesaria' ,
'⚠️ ERROR CRÍTICO: Administrar IM por vía subcutánea. La absorción es más lenta e inefectiva' ,
'⚠️ ERROR CRÍTICO: Administrar IV/IO en PCR sin asegurar RCP de alta calidad. El fármaco no circula sin compresiones efectivas' ,
'⚠️ ERROR CRÍTICO: No verificar peso pediátrico y adivinar la dosis' ,
'⚠️ ERROR CRÍTICO: Documentar "1 ampolla" en lugar de dosis exacta en mg y ml' ,
'Anafilaxia: 1:1000 IM en el MUSLO. 0.5 mg adultos, 0.01 mg/kg niños. Repetir a los 5 min si no mejora' ,
'PCR: 1:10.000 IV/IO. 1 mg adultos, 0.01 mg/kg niños. Cada 3-5 min' ,
'¡CONCENTRACIÓN! Es lo primero que compruebas al coger la ampolla. Grítala en voz alta' ,
'La vía IM para anafilaxia es segura y rápida. No temas a sus efectos adversos leves; son signo de que el fármaco actúa' ,
'En PCR, la adrenalina es un acompañante de la RCP, no su sustituto. Primero compresiones y DESA' ,
] ,
source : 'BLOQUE_06_3_ADRENALINA.md'
} ,
{
id : 'amiodarona' ,
source : 'Vademécum base' ,
genericName : 'Amiodarona' ,
tradeName : 'Trangorex®' ,
category : 'cardiovascular' ,
presentation : '150 mg/3 ml (ampolla)' ,
adultDose : 'FV/TVSP: 300mg IV en bolo | Mantenimiento: 900mg/24h' ,
pediatricDose : '5 mg/kg IV/IO (máx 300mg)' ,
routes : [ 'IV' , 'IO' ] ,
dilution : 'Diluir en SG5% (precipita con SSF)' ,
indications : [
'FV/TVSP refractaria a descargas' ,
'Taquicardia ventricular estable' ,
'Control de frecuencia en FA' ,
] ,
contraindications : [
'Bradicardia sinusal' ,
'Bloqueo AV 2º-3º grado sin marcapasos' ,
'Disfunción tiroidea severa' ,
'Hipersensibilidad al yodo' ,
] ,
sideEffects : [ 'Hipotensión' , 'Bradicardia' , 'Flebitis' ] ,
notes : [
'Segunda dosis en PCR: 150mg si persiste FV/TVSP' ,
'Usar vía central si es posible' ,
] ,
} ,
{
id : 'atropina' ,
genericName : 'Atropina' ,
tradeName : 'Atropina Braun®' ,
category : 'cardiovascular' ,
presentation : '1 mg/1 ml (ampolla)' ,
adultDose : 'Bradicardia: 0.5mg IV cada 3-5 min (máx 3mg)' ,
pediatricDose : '0.02 mg/kg IV (mín 0.1mg, máx 0.5mg)' ,
routes : [ 'IV' , 'IO' , 'IM' ] ,
indications : [
'Bradicardia sintomática' ,
'Intoxicación por organofosforados' ,
'Premedicación antes de IOT' ,
] ,
contraindications : [
'Glaucoma de ángulo estrecho' ,
'Retención urinaria' ,
'Íleo paralítico' ,
] ,
sideEffects : [ 'Taquicardia' , 'Sequedad de boca' , 'Retención urinaria' , 'Midriasis' ] ,
antidote : 'Fisostigmina' ,
notes : [
'Dosis <0.5mg pueden causar bradicardia paradójica' ,
'Ya NO se usa en PCR según guías actuales' ,
] ,
} ,
{
id : 'midazolam' ,
source : 'Vademécum base' ,
genericName : 'Midazolam' ,
tradeName : 'Dormicum®' ,
category : 'neurologico' ,
presentation : '15 mg/3 ml o 5 mg/5 ml (ampolla)' ,
adultDose : 'Sedación: 1-2.5mg IV titulando | Crisis: 10mg IM/Intranasal' ,
pediatricDose : 'Crisis: 0.2-0.3 mg/kg intranasal/bucal (máx 10mg)' ,
routes : [ 'IV' , 'IM' , 'Nasal' , 'Rectal' ] ,
dilution : 'Puede administrarse sin diluir IV lento' ,
indications : [
'Status epiléptico' ,
'Sedación para procedimientos' ,
'Premedicación anestésica' ,
'Agitación severa' ,
] ,
contraindications : [
'Miastenia gravis' ,
'Insuficiencia respiratoria severa' ,
'Shock' ,
] ,
sideEffects : [ 'Depresión respiratoria' , 'Hipotensión' , 'Amnesia' ] ,
antidote : 'Flumazenilo' ,
notes : [
'En crisis: vía intranasal con atomizador (MAD)' ,
'Inicio de acción IV: 1-2 min, IM/IN: 5-10 min' ,
] ,
} ,
{
id : 'salbutamol' ,
genericName : 'Salbutamol' ,
tradeName : 'Ventolin®' ,
category : 'respiratorio' ,
presentation : 'Nebulización: 5 mg/ml | MDI: 100 mcg/puff' ,
adultDose : 'Nebulización: 2.5-5mg | MDI: 4-8 puffs con cámara' ,
pediatricDose : 'Nebulización: 2.5mg (<20kg) o 5mg (>20kg) | MDI: 4-6 puffs' ,
routes : [ 'Nebulizado' ] ,
dilution : 'Diluir en 3ml de SSF para nebulizar' ,
indications : [
'Crisis asmática' ,
'EPOC reagudizado' ,
'Broncoespasmo' ,
'Hiperpotasemia (coadyuvante)' ,
] ,
contraindications : [
'Hipersensibilidad conocida' ,
'Usar con precaución en cardiopatía isquémica' ,
] ,
sideEffects : [ 'Taquicardia' , 'Temblor' , 'Hipopotasemia' , 'Nerviosismo' ] ,
notes : [
'En crisis grave: nebulización continua' ,
'Puede repetirse cada 20 min las primeras horas' ,
'Asociar ipratropio en crisis moderada-grave' ,
] ,
} ,
] ;
export const getDrugsByCategory = ( category : DrugCategory ) : Drug [ ] = > {
return drugs . filter ( ( d ) = > d . category === category ) ;
} ;
export const getDrugById = ( id : string ) : Drug | undefined = > {
return drugs . find ( ( d ) = > d . id === id ) ;
} ;
export const searchDrugs = ( query : string ) : Drug [ ] = > {
const lowerQuery = query . toLowerCase ( ) ;
return drugs . filter (
( d ) = >
d . genericName . toLowerCase ( ) . includes ( lowerQuery ) ||
d . tradeName . toLowerCase ( ) . includes ( lowerQuery ) ||
d . indications . some ( ( i ) = > i . toLowerCase ( ) . includes ( lowerQuery ) )
) ;
} ;