| Title: | International Classification of Diseases 'ICD-10'/'ICD-11' for Chile |
|---|---|
| Description: | Tools for working with the International Classification of Diseases ('ICD-10' Chile official 'MINSAL'/'DEIS' v2018). Includes optimized 'SQL' search with 'SQLite', fuzzy matching of medical terms ('Jaro-Winkler'), Charlson and Elixhauser comorbidity calculation, 'WHO' 'ICD-11' 'API' integration, and hierarchical code validation. Data from Centro FIC Chile 'DEIS' <https://deis.minsal.cl/centrofic/>. |
| Authors: | Rodolfo Tasso Suazo [aut, cre] (ORCID: <https://orcid.org/0000-0002-1264-4933>, Grupo de Ciencia de Datos para Salud Pública, Escuela de Salud Pública, U. de Chile), Francisca Jofre [ctb] (Package logo design) |
| Maintainer: | Rodolfo Tasso Suazo <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.9.8 |
| Built: | 2026-05-26 05:46:27 UTC |
| Source: | https://github.com/rodotasso/ciecl |
Calcular comorbilidades Charlson/Elixhauser para Chile
cie_comorbid(data, id, code, map = c("charlson", "elixhauser"), assign0 = TRUE)cie_comorbid(data, id, code, map = c("charlson", "elixhauser"), assign0 = TRUE)
data |
data.frame con columnas id paciente + codigos CIE-10 |
id |
String nombre columna identificador paciente |
code |
String nombre columna con codigos CIE-10 (uno por fila) |
map |
Character, esquema comorbilidad ("charlson" o "elixhauser") |
assign0 |
Logical, asignar 0 si sin comorbilidad (default TRUE) |
data.frame ancho con scores comorbilidad por paciente
cie_map_comorbid(), cie_norm()
Other comorbilidades:
cie_map_comorbid()
# Ver documentacion de parametros args(cie_comorbid) df <- data.frame( id_pac = c(1, 1, 2, 2), diag = c("E11.0", "I21.0", "C50.9", "E10.9") ) cie_comorbid(df, id = "id_pac", code = "diag", map = "charlson")# Ver documentacion de parametros args(cie_comorbid) df <- data.frame( id_pac = c(1, 1, 2, 2), diag = c("E11.0", "I21.0", "C50.9", "E10.9") ) cie_comorbid(df, id = "id_pac", code = "diag", map = "charlson")
Devuelve un vector character con la descripcion de cada codigo,
pensado para usar dentro de dplyr::mutate() sin necesidad de
un left_join contra cie10_cl.
cie_describe( codes, normalize = FALSE, default = NA_character_, codigos = lifecycle::deprecated() )cie_describe( codes, normalize = FALSE, default = NA_character_, codigos = lifecycle::deprecated() )
codes |
Character vector de codigos CIE-10 (ej. "E11.0", c("E11.0", "I10")). |
normalize |
Logical, ¿intentar normalizar los codigos antes de buscar la descripcion? (default FALSE). Usar TRUE para limpiar formatos (ej. "E110" -> "E11.0"); usar FALSE para auditar la calidad original del registro. |
default |
Valor devuelto cuando un codigo no se encuentra
en el catalogo. Default |
codigos |
Character vector del mismo largo que codes con la
descripcion oficial MINSAL/DEIS. NA_character_ (o default)
para codigos sin match.
cie_lookup() para resultado como tibble con todas
las columnas; cie_norm() para normalizacion.
Other busqueda:
cie_guia_busqueda(),
cie_guide(),
cie_lookup(),
cie_search(),
cie_short(),
cie_siglas()
# Auditoria: buscar tal cual (E110 no existe sin punto) cie_describe("E110", normalize = FALSE) # Rescate: normalizar antes de buscar cie_describe("E110", normalize = TRUE) # Uso tipico en auditoria VIU (contar fallos de origen) diags <- c("E11.0", "E110", "I10X", "INVALIDO") descripciones <- cie_describe(diags, normalize = FALSE) sum(is.na(descripciones)) # Detecta 3 errores de registro# Auditoria: buscar tal cual (E110 no existe sin punto) cie_describe("E110", normalize = FALSE) # Rescate: normalizar antes de buscar cie_describe("E110", normalize = TRUE) # Uso tipico en auditoria VIU (contar fallos de origen) diags <- c("E11.0", "E110", "I10X", "INVALIDO") descripciones <- cie_describe(diags, normalize = FALSE) sum(is.na(descripciones)) # Detecta 3 errores de registro
Expandir codigo jerarquico (ej. E11 -> E11.0-E11.9)
Expandir codigo jerarquico (ej. E11 -> E11.0-E11.9)
cie_expand(code, codigo = lifecycle::deprecated()) cie_expand(code, codigo = lifecycle::deprecated())cie_expand(code, codigo = lifecycle::deprecated()) cie_expand(code, codigo = lifecycle::deprecated())
code |
String codigo padre (ej. "E11") |
codigo |
Character vector con todos los codigos hijos del codigo padre. Vector vacio si el codigo no existe en la base de datos.
Character vector con todos los codigos hijos del codigo padre. Vector vacio si el codigo no existe en la base de datos.
Other validacion:
cie_norm(),
cie_normalizar(),
cie_validate_vector()
Other validacion:
cie_norm(),
cie_normalizar(),
cie_validate_vector()
cie_expand("E11") cie_expand("E11")cie_expand("E11") cie_expand("E11")
Muestra tabla comparativa de cuando usar cada funcion de busqueda.
cie_guide()cie_guide()
tibble con guia comparativa de funciones de busqueda
cie_search(),
cie_lookup(), cie_short()
Other busqueda:
cie_describe(),
cie_guia_busqueda(),
cie_lookup(),
cie_search(),
cie_short(),
cie_siglas()
cie_guide()cie_guide()
Busqueda exacta por codigo CIE-10
cie_lookup( code, expand = FALSE, normalize = TRUE, full_description = FALSE, extract = FALSE, check_siglas = FALSE, codigo = lifecycle::deprecated(), expandir = lifecycle::deprecated(), normalizar = lifecycle::deprecated(), descripcion_completa = lifecycle::deprecated() )cie_lookup( code, expand = FALSE, normalize = TRUE, full_description = FALSE, extract = FALSE, check_siglas = FALSE, codigo = lifecycle::deprecated(), expandir = lifecycle::deprecated(), normalizar = lifecycle::deprecated(), descripcion_completa = lifecycle::deprecated() )
code |
Character vector de codigos (ej. "E11", "E11.0", c("E11.0", "Z00")) o rango (ej. "E10-E14"). Acepta vectores. Soporta formatos: con punto (E11.0), sin punto (E110), o solo categoria (E11). |
expand |
Logical, expandir jerarquia completa (default FALSE) |
normalize |
Logical, normalizar formato de codigos automaticamente (default TRUE) |
full_description |
Logical, agregar columna |
extract |
Logical, extraer codigo CIE-10 de texto con prefijos/sufijos (default FALSE). IMPORTANTE: Solo usar con codigo ESCALAR (longitud 1). Ejemplo: "CIE:E11.0" -> "E11.0", "E11.0-confirmado" -> "E11.0". Para vectores multiples usar extract=FALSE (default). |
check_siglas |
Logical, buscar siglas medicas comunes (default FALSE). Ejemplo: "IAM" -> I21.0 (Infarto agudo miocardio) |
codigo |
|
expandir |
|
normalizar |
|
descripcion_completa |
tibble con codigo(s) matcheado(s)
cie_search(), cie_norm(), cie_expand()
Other busqueda:
cie_describe(),
cie_guia_busqueda(),
cie_guide(),
cie_search(),
cie_short(),
cie_siglas()
# Busqueda directa por codigo cie_lookup("E11.0") cie_lookup("E110") # Sin punto cie_lookup("E11") # Solo categoria cie_lookup("E11", expand = TRUE) # Todos E11.x # Vectorizado - multiples codigos y formatos cie_lookup(c("E11.0", "Z00", "I10")) # Con descripcion completa cie_lookup("E110", full_description = TRUE) # Extraer codigo de texto con ruido (solo codigo escalar) cie_lookup("CIE:E11.0", extract = TRUE) cie_lookup("E11.0-confirmado", extract = TRUE) # Buscar por siglas medicas cie_lookup("IAM", check_siglas = TRUE) cie_lookup("DM2", check_siglas = TRUE)# Busqueda directa por codigo cie_lookup("E11.0") cie_lookup("E110") # Sin punto cie_lookup("E11") # Solo categoria cie_lookup("E11", expand = TRUE) # Todos E11.x # Vectorizado - multiples codigos y formatos cie_lookup(c("E11.0", "Z00", "I10")) # Con descripcion completa cie_lookup("E110", full_description = TRUE) # Extraer codigo de texto con ruido (solo codigo escalar) cie_lookup("CIE:E11.0", extract = TRUE) cie_lookup("E11.0-confirmado", extract = TRUE) # Buscar por siglas medicas cie_lookup("IAM", check_siglas = TRUE) cie_lookup("DM2", check_siglas = TRUE)
Agrupa codigos CIE-10 chilenos en categorias comorbilidad MINSAL. Basado en Decreto 1301/2016 MINSAL + icd::icd10_map_charlson.
cie_map_comorbid(codes, codigos = lifecycle::deprecated())cie_map_comorbid(codes, codigos = lifecycle::deprecated())
codes |
Character vector de codigos |
codigos |
tibble con columnas: codigo, categoria
Other comorbilidades:
cie_comorbid()
cie_map_comorbid(c("E11.0", "I50.9", "C50.9"))cie_map_comorbid(c("E11.0", "I50.9", "C50.9"))
Convierte codigos CIE-10 de diferentes formatos al formato estandar (con punto). Maneja multiples variaciones de entrada comunes en datos clinicos.
cie_norm( codes, search_db = TRUE, codigos = lifecycle::deprecated(), buscar_db = lifecycle::deprecated() ) cie_normalize( codes, search_db = TRUE, codigos = lifecycle::deprecated(), buscar_db = lifecycle::deprecated() )cie_norm( codes, search_db = TRUE, codigos = lifecycle::deprecated(), buscar_db = lifecycle::deprecated() ) cie_normalize( codes, search_db = TRUE, codigos = lifecycle::deprecated(), buscar_db = lifecycle::deprecated() )
codes |
Character vector de codigos en cualquier formato |
search_db |
Logical, buscar codigo en base de datos si no se encuentra exacto (default TRUE) |
codigos |
|
buscar_db |
La normalizacion incluye:
Conversion a mayusculas
Eliminacion de espacios (inicio, fin e internos)
Eliminacion de simbolos daga y asterisco (codificacion dual)
Conversion de guiones a puntos (I10-0 -> I10.0)
Eliminacion de puntos iniciales (.I10 -> I10)
Correccion de puntos multiples (E..11 -> E.11)
Eliminacion de sufijo X en codigos cortos (I10X -> I10)
Preservacion de X en codigos largos (placeholder 7o caracter)
Agregado de punto en posicion correcta (E110 -> E11.0)
El sistema de daga/asterisco indica codificacion dual donde la daga marca la enfermedad subyacente y el asterisco la manifestacion. Ambos simbolos se eliminan para normalizacion.
Character vector con codigos normalizados al formato con punto
cie_validate_vector(),
cie_expand(), cie_lookup()
Other validacion:
cie_expand(),
cie_normalizar(),
cie_validate_vector()
cie_norm("E110") # Retorna "E11.0" cie_norm("E11") # Retorna "E11" (categoria) cie_norm("I10X") # Retorna "I10" (elimina X) cie_norm("E 11 0") # Retorna "E11.0" (espacios internos) cie_norm("I10-0") # Retorna "I10.0" (guion a punto) cie_norm(paste0("A17.0", intToUtf8(0x2020))) # "A17.0" (elimina daga) cie_norm("G01*") # "G01" (elimina asterisco) cie_norm(c("E110", "I10X", "Z00")) # Vectorizadocie_norm("E110") # Retorna "E11.0" cie_norm("E11") # Retorna "E11" (categoria) cie_norm("I10X") # Retorna "I10" (elimina X) cie_norm("E 11 0") # Retorna "E11.0" (espacios internos) cie_norm("I10-0") # Retorna "I10.0" (guion a punto) cie_norm(paste0("A17.0", intToUtf8(0x2020))) # "A17.0" (elimina daga) cie_norm("G01*") # "G01" (elimina asterisco) cie_norm(c("E110", "I10X", "Z00")) # Vectorizado
Busca en descripciones CIE-10 usando multiples estrategias:
Expansion de siglas medicas (IAM, TBC, DM, etc.)
Busqueda exacta por subcadena (mas rapida)
Busqueda fuzzy con Jaro-Winkler (tolera typos)
cie_search( text, threshold = 0.7, max_results = 50, field = c("descripcion", "inclusion"), only_fuzzy = FALSE, verbose = TRUE, texto = lifecycle::deprecated(), campo = lifecycle::deprecated(), solo_fuzzy = lifecycle::deprecated() )cie_search( text, threshold = 0.7, max_results = 50, field = c("descripcion", "inclusion"), only_fuzzy = FALSE, verbose = TRUE, texto = lifecycle::deprecated(), campo = lifecycle::deprecated(), solo_fuzzy = lifecycle::deprecated() )
text |
String termino medico en espanol o sigla (ej. "diabetes", "IAM", "TBC") |
threshold |
Numeric entre 0 y 1, umbral similitud Jaro-Winkler (default 0.70) |
max_results |
Integer, maximo resultados a retornar (default 50) |
field |
Character, campo busqueda ("descripcion" o "inclusion") |
only_fuzzy |
Logical, usar solo busqueda fuzzy sin busqueda exacta (default FALSE) |
verbose |
Logical, mostrar mensajes informativos (default TRUE). Usar FALSE en scripts. |
texto |
|
campo |
|
solo_fuzzy |
La busqueda es tolerante a tildes: "neumonia" encuentra "neumonia". Soporta siglas medicas comunes: "IAM" busca "infarto agudo miocardio".
tibble ordenado por score descendente (1.0 = coincidencia exacta). Si el text corresponde a una sigla medica, se expande automaticamente antes de buscar.
cie_lookup(),
cie_short(), cie10_sql()
Other busqueda:
cie_describe(),
cie_guia_busqueda(),
cie_guide(),
cie_lookup(),
cie_short(),
cie_siglas()
# Busqueda basica cie_search("diabetes") cie_search("neumonia") # Busqueda por siglas medicas cie_search("IAM") cie_search("DM2") # Tolerante a tildes y typos cie_search("diabetis") # Buscar en inclusiones cie_search("bacteriana", field = "inclusion")# Busqueda basica cie_search("diabetes") cie_search("neumonia") # Busqueda por siglas medicas cie_search("IAM") cie_search("DM2") # Tolerante a tildes y typos cie_search("diabetis") # Buscar en inclusiones cie_search("bacteriana", field = "inclusion")
Muestra todas las siglas medicas que pueden usarse en cie_search().
"Sigla" se conserva como termino local (concepto medico chileno) en la
columna de salida; el nombre de la funcion usa cie_short por
consistencia con el ecosistema R (verbos cortos en ingles).
cie_short(category = NULL, categoria = lifecycle::deprecated())cie_short(category = NULL, categoria = lifecycle::deprecated())
category |
Character opcional, filtrar por categoria. Valores validos: "cardiovascular", "respiratoria", "metabolica", "gastrointestinal", "infecciosa", "oncologica", "reumatologica", "neurologica", "psiquiatrica", "traumatologica", "pediatrica", "gineco_obstetrica". Si es NULL (default), retorna todas las siglas. |
categoria |
tibble con columnas: sigla, termino_busqueda, categoria
Other busqueda:
cie_describe(),
cie_guia_busqueda(),
cie_guide(),
cie_lookup(),
cie_search(),
cie_siglas()
# Ver todas las siglas cie_short() # Filtrar por categoria cie_short("cardiovascular") cie_short("oncologica") # Buscar una sigla especifica cie_short() |> dplyr::filter(sigla == "iam")# Ver todas las siglas cie_short() # Filtrar por categoria cie_short("cardiovascular") cie_short("oncologica") # Buscar una sigla especifica cie_short() |> dplyr::filter(sigla == "iam")
Muestra la jerarquia de un codigo CIE-10 (categoria + subcategorias)
como una tabla gt. Las columnas "Incluye" y "Excluye" pueden
aparecer vacias en subcategorias: el catalogo MINSAL/DEIS no puebla
esos campos en todos los niveles (suelen estar solo en la categoria
de 3 digitos). Para evitar confusion visual, los NA se reemplazan
por un guion largo (em dash).
cie_table(code, codigo = lifecycle::deprecated())cie_table(code, codigo = lifecycle::deprecated())
code |
String codigo (ej. |
codigo |
Objeto de clase gt_tbl (tabla HTML interactiva).
cie_table("E11") # Diabetes mellitus tipo 2 completocie_table("E11") # Diabetes mellitus tipo 2 completo
Validar vector de codigos CIE-10 formato
cie_validate_vector(codes, strict = FALSE, codigos = lifecycle::deprecated())cie_validate_vector(codes, strict = FALSE, codigos = lifecycle::deprecated())
codes |
Character vector codigos (ej. c("E11.0", "Z00.0")) |
strict |
Logical, validar existencia en DB (default FALSE) |
codigos |
Logical vector de la misma longitud que codes. TRUE si el
codigo tiene formato CIE-10 valido (y existe en DB si strict = TRUE).
Other validacion:
cie_expand(),
cie_norm(),
cie_normalizar()
cie_validate_vector(c("E11.0", "INVALIDO", "Z00"))cie_validate_vector(c("E11.0", "INVALIDO", "Z00"))
Dataset CIE-10 Chile oficial MINSAL/DEIS v2018
cie10_clcie10_cl
tibble con 39,877 filas (categorias y subcategorias):
Codigo CIE-10 (ej. "E11.0")
Diagnostico en espanol chileno
Categoria jerarquica
Seccion dentro del capitulo
Nombre descriptivo del capitulo
Terminos incluidos
Terminos excluidos
Capitulo CIE-10 (A-Z)
Logical, codigo daga (+)
Logical, codigo asterisco (*)
https://deis.minsal.cl/centrofic/
data(cie10_cl) head(cie10_cl)data(cie10_cl) head(cie10_cl)
Limpiar cache SQLite (forzar rebuild)
cie10_clear_cache()cie10_clear_cache()
No return value, called for side effects (deletes SQLite cache).
cie10_sql(), cie10_disconnect()
Other sql:
cie10_disconnect(),
cie10_sql()
# Ver ubicacion del cache tools::R_user_dir("ciecl", "data") cie10_clear_cache() # Elimina cie10.db local# Ver ubicacion del cache tools::R_user_dir("ciecl", "data") cie10_clear_cache() # Elimina cie10.db local
Cierra la conexion reutilizable al archivo SQLite. Util para liberar el lock del archivo .db.
cie10_disconnect()cie10_disconnect()
No return value, called for side effects.
cie10_sql(), cie10_clear_cache()
Other sql:
cie10_clear_cache(),
cie10_sql()
# Verificar si hay conexion activa is.null(ciecl:::.ciecl_env$con) cie10_disconnect()# Verificar si hay conexion activa is.null(ciecl:::.ciecl_env$con) cie10_disconnect()
Ejecutar consultas SQL sobre CIE-10 Chile
cie10_sql(query, close = lifecycle::deprecated())cie10_sql(query, close = lifecycle::deprecated())
query |
String SQL valido SQLite (SELECT/WHERE/JOIN) |
close |
|
tibble resultado query
cie10_clear_cache(), cie10_disconnect(),
cie_search()
Other sql:
cie10_clear_cache(),
cie10_disconnect()
# Buscar diabetes cie10_sql("SELECT codigo, descripcion FROM cie10 WHERE codigo LIKE 'E11%'") # Contar por capitulo cie10_sql("SELECT capitulo, COUNT(*) n FROM cie10 GROUP BY capitulo")# Buscar diabetes cie10_sql("SELECT codigo, descripcion FROM cie10 WHERE codigo LIKE 'E11%'") # Contar por capitulo cie10_sql("SELECT capitulo, COUNT(*) n FROM cie10 GROUP BY capitulo")
Buscar codigos CIE-11 via API OMS
cie11_search( text, api_key = NULL, lang = "es", max_results = 10, release = "2024-01", texto = lifecycle::deprecated() )cie11_search( text, api_key = NULL, lang = "es", max_results = 10, release = "2024-01", texto = lifecycle::deprecated() )
text |
String termino busqueda espanol/ingles |
api_key |
String opcional, Client ID + Secret OMS separados ":" Obtener en: https://icd.who.int/icdapi |
lang |
Character, idioma respuesta ("es" o "en") |
max_results |
Integer, maximo resultados (default 10) |
release |
Character, version de release CIE-11 a consultar (default "2024-01"). Ver releases disponibles en la API OMS. |
texto |
tibble con codigos CIE-11 + titulos o vacio si error
# Ver parametros disponibles args(cie11_search) # Requiere credenciales OMS gratuitas (https://icd.who.int/icdapi) Sys.setenv(ICD_API_KEY = "client_id:client_secret") cie11_search("depresion mayor")# Ver parametros disponibles args(cie11_search) # Requiere credenciales OMS gratuitas (https://icd.who.int/icdapi) Sys.setenv(ICD_API_KEY = "client_id:client_secret") cie11_search("depresion mayor")