ciecl 0.9.8 (en desarrollo, 2026-04-25 → 2026-06-20)
English summary below
Documentación — Correcciones revisión rOpenSci, comentarios de yabellini (2026-06-20)
Trabajo preparado originalmente el 2026-05-29, comiteado recien el 2026-06-20: quedo guardado en git stash desde el 2026-06-09 hasta su recuperacion. Sin cambios en la API publica.
- README: fusion de las secciones “Finalidad” y “Caracteristicas” para eliminar redundancia entre ambas; se agrega mencion explicita de la correccion vectorizada de inconsistencias de formato y del publico objetivo (epidemiologos, bioestadisticos, cientificos de datos).
- README.en.md: comentarios de los ejemplos de codigo traducidos al ingles (estaban en espanol pese a ser la version en ingles).
-
README: agregado enlace markdown a
CONTRIBUTING.md(antes se mencionaba sin enlazar). -
CONTRIBUTING.md: agregada seccion “Tipos de issue” (ES/EN) que explica las plantillas disponibles (bug/feature/question) y corrige la instruccion de usar la etiqueta
question, que el usuario no puede aplicar al crear un issue; ahora remite a la plantilla Consulta. Tambien se sincronizo la politica de idioma y la regla de encoding entre las secciones EN y ES, que estaban desactualizadas entre si.
Sprint F4 — Documentación, limpieza interna y estilo (2026-06-09)
Sin cambios en la API pública.
-
cie10_cl: documentación roxygen completada — columnauso_cldocumentada, descripción de dominio para las 11 columnas, tildes corregidas,@family datasets,@seealso [cie_lookup()], [cie_search()], [cie10_sql()]y ejemplos adicionales. -
Interno: argumentos
textorenombrados atexten las funciones internasnormalizar_tildes()yexpandir_sigla()(no exportadas, sin impacto en API). -
Estilo: lambdas de una línea migradas a sintaxis
\(x)encie-siglas.Rycie-table.R.
Sprint F2 — Flags include_uso_cl / only_uso_cl (2026-05-20)
Expone la columna uso_cl del dataset CIE-10 MINSAL/DEIS v2018 como filtro y como salida opcional en las dos funciones de busqueda principales.
-
cie_lookup(include_uso_cl = TRUE, only_uso_cl = FALSE):-
include_uso_cl = TRUE(default) preserva el contrato historico: la columnauso_clsigue apareciendo en el output. -
only_uso_cl = TRUEfiltra a codigos vigentes en Chile excluyendouso_cl == "legado".
-
-
cie_search(include_uso_cl = FALSE, only_uso_cl = FALSE):-
include_uso_cl = FALSE(default) preserva el contrato historico (no incluyeuso_clen el output). Pasarlo aTRUEagrega la columna. -
only_uso_cl = TRUEfiltra el resultado a codigos vigentes (excluyelegado) en cualquierfield(descripcionoinclusion).
-
-
Semantica de
uso_cl(textual, no booleano):principal(8.898),legado(27.335),causa_externa(3.295),etiologico(330),causa_externa | principal(19).only_uso_cl = TRUEconserva todo lo que NO eslegado(12.542 codigos vigentes). -
Asimetria documentada: los defaults difieren entre
cie_lookup(TRUE) ycie_search(FALSE) para no romper backward compat. El roxygen de ambas funciones lo menciona explicitamente. - Tests:
tests/testthat/test-uso-cl-flags.Rcubre los 4 paths (default, include solo, only solo, ambos) en ambas funciones. +18 tests, sin regresion sobre los 1069 existentes.
Sprint F1 — Cobertura post-Bloque A (2026-05-20)
Recuperación de cobertura sobre los paths agregados en Bloque A y refactor de mocks de API CIE-11 al patrón canónico de httr2. Sin cambios de API pública.
-
Cobertura total: 94,20 % → 97,31 % (
R/cie-sql.R: 81,07 → 96,60;R/cie-api.R: 90,76 → 100,00). Suite: 1069 tests (+20), 0 fails. -
R/cie-sql.R:interactive()→rlang::is_interactive()(2 sitios) para querlang::local_interactive(TRUE)pueda activar el pathcli_progressen tests sin TTY real. -
R/cie-api.R:-
who_error_body()extraído del cuerpo decie11_search()como helper interno@noRdtesteable directamente. Misma lógica de extracción (error_description→error→message). - El warning del
tryCatchexterno pasa de{e$message}a{conditionMessage(e)}, propagando al usuario el detalle del body OMS cuando la API responde 4xx (antes se mostraba solo"HTTP 401 ...").
-
-
tests/testthat/test-api-mock.Rmigrado al patrón canónico:-
local_mocked_bindings(req_perform, .package = "httr2")→httr2::local_mocked_responses(mock_who_api(...)). El flow real dehttr2corre hastahandle_resp()→resp_failure_cnd(), lo que permite verificar end-to-end el callbackreq_error(body = who_error_body). - Respuestas fake construidas con
httr2::response_json()/httr2::response()en lugar destructure(list(), class = "httr2_response")(resistente a cambios internos dehttr2). - Nuevo helper
mock_who_api()que distingue por URL el endpoint OAuth de token del endpoint de búsqueda OMS.
-
Modernización r-lib — Bloque A (2026-05-17)
Iteración técnica sobre patrones r-lib identificados en auditoría post-revisión. Sin cambios de API pública.
-
OAuth en
cie11_search()simplificado (R/cie-api.R):- Migración del flujo OAuth manual (POST al token endpoint, parseo JSON, header
Authorizationarmado a mano) ahttr2::oauth_client()+httr2::req_oauth_client_credentials().httr2ahora gestiona la obtención, cacheo y refresh del token de acceso de forma transparente. - Errores HTTP de la OMS se tipifican vía
httr2::resp_check_status()yhttr2::req_error(body = ...), exponiendoerror_description/error/messagedel cuerpo de respuesta cuando viene en JSON.
- Migración del flujo OAuth manual (POST al token endpoint, parseo JSON, header
-
Indicadores de progreso en construcción de cache (
R/cie-sql.R):-
build_cache_atomic()muestra ahora cuatro pasos víacli::cli_progress_step()(cargar dataset, escribir tabla, construir índices, crear FTS5) durante la primera invocación (~16 s). En sesiones no interactivas se mantiene completamente silencioso.
-
-
Argumentos requeridos uniformados (
cie-api.R,cie-search.R,cie-comorbid.R):rlang::check_required()estandariza el mensaje cuando faltan args obligatorios (text,data,id,code,codes). -
Tests reproducibles:
testthat::local_reproducible_output()en cadatest_that()que usaexpect_snapshot, aislando ancho de terminal, color y locale para evitar falsos positivos cross-platform.
Sprint cobertura y tooling rOpenSci (2026-05-08 / 2026-05-09)
-
Cobertura de tests subida de 86,45 % a 96,61 % mediante:
- Tests nuevos para
cie_describe(),cie_guide()ycie_guia_busqueda()(+42 tests). - Tests para rutas de deprecación, cache SQLite y manejo de errores (+107 tests). Total acumulado: 1049 tests, 0 fails, 0 warnings.
- Refactor a helpers canónicos r-lib:
lifecycle::expect_deprecated()en lugar deexpect_warning(class = ...),withr::local_db_connection()en lugar de helpers custom, llamadas directas a internos en lugar degetFromNamespace().
- Tests nuevos para
-
Workflows rOpenSci/CRAN agregados:
-
.github/workflows/pkgcheck.yaml(ropensci-review-tools/pkgcheck-action) conpost-to-issue: falsepara evitar 403 en creación de issue. -
.github/workflows/urlchecker.yamlcon scheduled run mensual. -
.github/workflows/codemeta.yamlregeneracodemeta.jsoncuando cambiaDESCRIPTION.
-
-
Badge de cobertura dinámico: README y README.en consultan endpoint JSON del workflow
test-coverage.yamlen lugar de un porcentaje hardcoded. -
Bug fix
cie_search(): siglaIRAdesambiguada (ver detalle más abajo). AliasesIRA_RESPeIRA_RENALagregados. -
Limpieza técnica menor:
-
@importFromduplicado eliminado encie-search.R. -
sapply()reemplazado porvapply(..., logical(1))encie_table(). - Fix de asociación roxygen rota en
cie_guia_busqueda()(línea en blanco entre bloque roxygen y firma). - Badge rOpenSci Software Peer Review (#765) agregado a los README.
-
Respuesta a Revisión rOpenSci (rev-ropensci)
Versión de cumplimiento editorial y técnico tras la revisión de Maëlle Salmon. Esta versión unifica la interfaz del paquete bajo estándares internacionales de R, manteniendo la documentación pedagógica en español para el contexto local.
Correcciones funcionales
-
Sigla
IRAdesambiguada (cie_search()): la siglaIRAes ambigua en contexto clínico chileno (puede ser infección respiratoria aguda o insuficiencia renal aguda). Ahoracie_search("IRA")mantiene el default respiratorio (uso más frecuente en pediatría y atención primaria) pero emite una advertencia explícita orientando al usuario hacia los nuevos alias inequívocosIRA_RESP(respiratoria) eIRA_RENAL(renal). Cierra bug detectado durante auditoría de seguridad post-split.
Infraestructura de calidad de código
-
Workflow de
lintragregado en.github/workflows/lint.yaml(template oficial r-lib). Reporta lints sin bloquear el CI. -
.lintrmodernizado a sintaxis lintr 3.x (linters_with_defaults), removiendo el deprecadowith_defaultsy el linter inexistentecyclocomp_linter. - Cleanup de espacios en blanco al final de línea en 18 archivos (R/, tests/, vignettes/, NEWS, README, data-raw, tools).
Remediación r-lib y Calidad Técnica
-
Migración total a
cli: Todos los errores, advertencias y mensajes informativos usan ahoracli::cli_abort(),cli_warn()ycli_inform()con clases de error personalizadas (ciecl_invalid_input,ciecl_api_error, etc.) para captura programática. -
Modernización de Roxygen:
- Migración masiva de
@returna@returns. - Uso de sintaxis markdown para enlaces internos y externos (
[fun()]). - Normalización de etiquetas
@familya snake_case sin tildes.
- Migración masiva de
-
Refactor de Estructura: El archivo
cie-search.Rse ha dividido en 4 módulos (cie-search.R,cie-siglas.R,cie-lookup.R,cie-guide.R) para mejorar la mantenibilidad. -
Pipe Nativo: Migración de
%>%al pipe nativo de R|>en todo el paquete (código, vignettes y tests). -
Aislamiento de Tests: Implementación de
withrpara garantizar que las pruebas no contaminen el cache del usuario, utilizando directorios temporales aislados. -
Snapshots de Mensajes: Uso de
testthat::expect_snapshot()para asegurar la consistencia de los mensajes en español generados por el paquete. -
Limpieza de Suggests: Removidos
usethisylitedowndeSuggests:por no ser referenciados en código, tests ni vignettes del paquete.
Cambios que rompen compatibilidad (Deprecaciones)
-
Internacionalización de la API: Todos los argumentos de las funciones públicas han sido migrados al inglés para consistencia con el ecosistema tidyverse (dplyr, httr2). Los argumentos antiguos en español emiten
lifecycle::deprecate_warn()y serán eliminados en la versión 1.0.0.-
cie_lookup():codigo->code,expandir->expand,normalizar->normalize. -
cie_search():texto->text,campo->field,solo_fuzzy->only_fuzzy. -
cie_short(): Reemplaza acie_siglas(). Argumentocategory.
-
Cambios internos
El script generador del dataset (
generar_cie10_cl(),parsear_cie10_minsal()) se movió adata-raw/siguiendo la convención de R packages. No afecta el uso del paquete:data(cie10_cl)sigue funcionando igual.Tests del generador trasladados a sanity-check ejecutable desde
data-raw/.-
Eliminación masiva de
ciecl:::en tests para favorecerdevtools::load_all().-
cie11_search():texto->text.
-
Motor de Normalización Único: Se establece
cie_norm()como la función canónica.cie_normalize()ycie_normalizar()están ahora deprecadas.
Nuevas funcionalidades
-
cie_describe(): Nueva función vectorizada para obtener descripciones CIE-10 directamente, facilitando su uso dentro dedplyr::mutate()sin necesidad de cruces manuales.
Auditoría Técnica (Compliance)
-
API Resiliente (CIE-11): Refactorización de
cie11_search()usandohttr2con mejores prácticas de consumo web:- Identificación clara mediante
User-Agent. - Política de reintentos (
req_retry) para fallas temporales. - Control de tasa (
req_throttle) para respetar servidores de la OMS. -
httr2promovido de Suggests a Imports.
- Identificación clara mediante
-
Robustez de Tests: Limpieza masiva de la suite de pruebas. Se eliminaron warnings de deprecación internos y se migró a
withrpara la gestión de variables de entorno.
Documentación y Homologación
-
Guías en Espejo: Creación de versiones en inglés de todas las guías de usuario (
Case Study,Installation Guide) para consistencia en el sitiopkgdown. -
README paramétrico: Unificación de
README.Rmdpara generar versiones sincronizadas en español e inglés. El README principal es ahora en español. - Narrativa Profesional: Redacción mejorada en todas las vignettes, eliminando tonos informales por un lenguaje técnico de ingeniería de datos.
English Summary
rOpenSci Review Response
Comprehensive update focused on API consistency and technical compliance following rOpenSci peer review.
-
Breaking Changes (Deprecations): Full API migration to English arguments (e.g.,
code,expand,normalize,text) using thelifecyclepackage. Old Spanish arguments remain functional but emit warnings. -
Streamlined Normalization:
cie_norm()is now the single canonical normalization motor. -
New Function: Added
cie_describe()for direct, vectorized description lookup withinmutate()calls. -
Technical Compliance:
-
cie11_search()now useshttr2with User-Agent, retry, and throttle policies. -
httr2promoted to Imports. - Test suite cleaned of deprecation noise and updated to use
withr.
-
-
Documentation: Mirror versions of user guides provided in both English and Spanish.
pkgdownsite navigation localized to Spanish.
ciecl 0.9.6 (2026-04-04)
CRAN release: 2026-04-19
English summary below
Preparacion rOpenSci
Version candidata para submission a rOpenSci. Cumple con rOpenSci Dev Guide 2025 (Capitulos 1, 5, 6, 20). R CMD check: 0 errors, 0 warnings. Tests: 1148 PASS, 95.6% cobertura.
Nuevas funcionalidades
Connection pooling SQLite: Cache atomico con versionado en
get_cie10_db(). Reutiliza conexiones activas, reconstruye si la BD esta corrupta o desactualizada.Vectorizacion mejorada:
cie_map_comorbid()ycie_normalizar()refactorizados para procesamiento batch eficiente.pkgdown site: Tema limpio compatible con rOpenSci, modo oscuro (light-switch), logo hexagonal, favicons.
Vignette caso de uso:
caso-uso-egresoscon datos simulados de egresos hospitalarios usando columnas esenciales DEIS.
Documentacion y comunidad
- CONTRIBUTING.md y CODE_OF_CONDUCT.md bilingues (ingles + espanol)
- SECURITY.md bilingue
- PR template para rOpenSci
-
@familyy@seealsoen todas las funciones exportadas - Documentacion English-first con traducciones completas
CI/CD
- GitHub Actions R-CMD-check multiplataforma (Windows, macOS, Ubuntu)
- Workflow de test coverage
- pkgdown deployment automatico desde main
- R-hub workflow
Seguridad
- FTS5 parametros sanitizados contra inyeccion SQL
- Stripeo de comentarios SQL
- Validacion estricta de inputs en funciones publicas
Fixes
- Estandarizar pipes a
%>%(magrittr) en todo el paquete - Corregir sintaxis invalida en
.gitignore - Sincronizar
codemeta.jsoncon DESCRIPTION -
_pkgdown.ymllang alineado con contenido (es) - Eliminar
inst/extdata/cie10.dbbundled (causaba NOTE de 21.3MB) - Compatibilidad multiplataforma: rutas absolutas, encoding, line endings
- Logo hexagonal actualizado a version G16
Heredado de v0.9.3
-
Breaking:
generar_cie10_cl()ya no exportada (marcada@noRd) -
comorbidityygtmovidos de Imports a Suggests - Mensajes de BD solo en sesiones interactivas (
if (interactive())) -
generar_cie10_cl(): prioriza XLSX completo (39K+) sobre XLS legado -
cie_guia_busqueda(): corregida referencia a funcion inexistente
English Summary
rOpenSci Preparation
Release candidate for rOpenSci submission. Complies with rOpenSci Dev Guide 2025 (Chapters 1, 5, 6, 20). R CMD check: 0 errors, 0 warnings. Tests: 1148 PASS, 95.6% coverage.
- SQLite connection pooling with atomic versioned cache
-
Vectorized
cie_map_comorbid()andcie_normalizar() - pkgdown site with dark mode, hex logo, favicons
- Hospital discharge vignette with simulated DEIS data
- Bilingual community files (CONTRIBUTING, CODE_OF_CONDUCT, SECURITY)
- Multi-platform CI/CD (Windows, macOS, Ubuntu)
- FTS5 SQL injection protection
- Pipe standardization (
%>%), gitignore fixes, codemeta sync
