Datos procesados y aumentados, usando los datos abiertos sobre vacunaciones COVID-19 en Perú: https://www.datosabiertos.gob.pe/dataset/vacunacion
Desde inicios de Junio del 2022, los datos publicados ya no son "abiertos" en sentido estricto, pues ahora están siendo geo-bloqueados desde cualquier sitio que no corresponda a una dirección de IP de PerúC (esto ha cambiado ~2022-09-17)
Notas importantes:
-
La primera vacuna (Sinopharm) de la campaña general de vacunación contra el COVID-19 en Perú se puso el 2021-02-09 (el primer lote de vacunas llegó el 2021-02-07), por lo que las fechas anteriores a ese día en los datos abiertos que publica el MINSA, corresponden a un número parcial y comparativamente pequeño de registros de las dosis aplicadas durante los ensayos clínicos que se hicieron en el país, y, posiblemente, de dosis aplicadas a peruanos en el extranjero.
-
Para poder distinguir si los registros de fechas posteriores al 2021-02-08 puedan corresponder a vacunaciones que no son parte de la campaña general, se pueden tomar en cuenta las siguientes fechas:
Fechas de llegada de primeros lotes por fabricante
Fabricante | Fecha de llegada del primer lote | Referencia |
---|---|---|
Sinopharm (Beijing) | 2021-02-07 | https://andina.pe/agencia/noticia-lote-vacunas-llega-a-los-almacenes-talma-832838.aspx |
Pfizer/BioNTech | 2021-03-03 | https://elperuano.pe/noticia/116268-primer-lote-de-50000-vacunas-de-pfizer-llegara-manana-al-pais-anuncia-jefe-del-estado |
Oxford/AstraZeneca | 2021-04-18 | https://www.minsa.gob.pe/newsletter/2021/edicion-64/nota2/index.html |
Moderna | 2022-03-27 | https://andina.pe/agencia/noticia-covid19-llego-al-peru-lote-mas-12-millones-dosis-de-vacuna-moderna-886436.aspx |
- Adicionalmente, los inicios de cada campaña de vacunación por número de dosis han sido:
Los datos procesados incluyen:
- Datos acumulados por día y fabricante
- Datos acumulados por semana epidemiológica, y rango de edades (tres agrupaciones: quintiles, deciles, y los rangos empleados por OWID)
En las estructuras siguientes, el campo flag_vacunacion_general
se define de las siguiente manera:
flag_vacunacion_general = IF
(
(fabricante == "SINOPHARM" AND fecha_vacunacion > 2021-02-07) OR
(fabricante == "PFIZER" AND fecha_vacunacion > 2021-03-03) OR
(fabricante == "ASTRAZENECA" AND fecha_vacunacion > 2021-04-18) OR
(fabricante == "MODERNA" AND fecha_vacunacion > 2022-03-25)
)
AND
(
(fecha_vacunacion >= 2021-02-09 AND dosis == 1) OR
(fecha_vacunacion >= 2021-03-02 AND dosis == 2) OR
(fecha_vacunacion >= 2021-10-15 AND dosis == 3) OR
(fecha_vacunacion >= 2022-04-02 AND dosis == 4) OR
(fecha_vacunacion >= 2022-01-01 AND dosis >= 4)
)
THEN
TRUE
ELSE
FALSE
Campo | Contenido |
---|---|
fecha_corte |
Fecha de corte para los datos (YYYY-MM-DD) |
fecha_vacunacion |
Fecha de vacunación (YYYY-MM-DD) |
fabricante |
Fabricante de la vacuna |
dosis |
Dosis de la vacuna (1 = primera, 2 = segunda, 3 = refuerzo) |
n_reg |
Número de vacunaciones (registros) |
flag_vacunacion_general |
Si los datos parecen corresponder al proceso general de vacunación |
datos/vacunas_covid_fabricante.csv
Campo | Contenido |
---|---|
location |
Peru |
date |
Fecha de vacunación (YYYY-MM-DD) |
vaccine |
Fabricante de la vacuna |
vaccinations |
Número de vacunaciones del fabricante en la fecha |
total_vaccinations |
Número acumulado de vacunaciones por fabricante |
flag_vacunacion_general |
Si los datos parecen corresponder al proceso general de vacunación |
Campo | Contenido |
---|---|
location |
Peru |
epi_year |
Año epidemiológico |
epi_week |
Semana epidemiológica |
last_day_of_epi_week |
Fecha (YYYY-MM-DD) del último día de la semana epidemiológica (Sábado) |
complete_epi_week |
Datos corresponden a una semana completa (1) o incompleta (0) |
vaccine_dose |
Dosis de la vacuna (1, 2, etc.) |
vaccinations_epi_week |
Número de vacunaciones en la semana epidemiológica por dosis |
total_vaccinations |
Número acumulado de vacunaciones por dosis |
pct_total_vaccinations |
Porcentaje de la población total (Perú, 2021) correspondiente al acumulado de vacunaciones por dosis |
flag_vacunacion_general |
Si los datos parecen corresponder al proceso general de vacunación |
Nota: Estos datos contemplan solamente los registros para los cuales flag_vacunacion_general == TRUE
Para veintiles, deciles y quintiles
- datos/vacunas_covid_rangoedad_veintiles.csv
- datos/vacunas_covid_rangoedad_deciles.csv
- datos/vacunas_covid_rangoedad_quintiles.csv
Campo | Contenido |
---|---|
fecha_corte |
Fecha de corte para los datos (YYYY-MM-DD) |
epi_year |
Año epidemiológico |
epi_year |
Semana epidemiológica |
last_day_of_epi_week |
Fecha (YYYY-MM-DD) del último día de la semana epidemiológica (Sábado) |
complete_epi_week |
Datos corresponden a una semana completa (1) o incompleta (0) |
rango_edad |
Rango de edades considerado |
dosis |
Dosis de la vacuna (1 = primera, 2 = segunda, 3 = refuerzo) |
n |
Número de vacunaciones (registros) |
n_acum |
Número de vacunaciones (registros) acumulados a la fecha |
pob2021 |
Población en el rango de edad considerado |
pct_acum |
Porcentaje de la población (acumulada) en el rango de edad y con la dosis considerada |
Para rangos de edad de OWID
Notas: Estos datos contemplan solamente los registros para los cuales flag_vacunacion_general == TRUE
Campo | Contenido |
---|---|
location |
País (Peru) |
fecha_corte |
Fecha de corte para los datos (YYYY-MM-DD) |
epi_year |
Año epidemiológico |
epi_year |
Semana epidemiológica |
last_day_of_epi_week |
Fecha (YYYY-MM-DD) del último día de la seamana epidemiológica (Sábado) |
complete_epi_week |
Datos corresponden a una semana completa (1) o incompleta (0) |
age_group_min |
Edad mínima del rango de edades |
age_group_max |
Edad máxima del rango de edades |
people_vaccinated_per_hundred |
Personas por cada cien que han recibido al menos una dosis (dosis = 1) |
people_fully_vaccinated_per_hundred |
Personas por cada cien completamente vacunadas (dosis = 2) |
people_receiving_booster_per_hundred |
Personas por cada cien que han recibido refuerzo (dosis = 3) |
people_receiving_second_booster_per_hundred |
Personas por cada cien que han recibido un segundo refuerzo (dosis = 4) |
people_receiving_third_booster_per_hundred |
Personas por cada cien que han recibido un tercer refuerzo (dosis = 5) |
Debido al cambio en la estructura de los datos originales, ya no es simple el enlazar la información con datos como el UBIGEO, macroregiones, etc., de manera que los datos listados a continuación ya no van a actualizar.
Campo | Contenido |
---|---|
fecha_corte |
Fecha de corte para los datos (YYYY-MM-DD) |
ubigeo_persona |
UBIGEO de la persona |
departamento |
Departamento correspondiente al UBIGEO |
provincia |
Provincia correspondiente al UBIGEO |
distrito |
Distrito correspondiente al UBIGEO |
macroregion_inei |
Macroregión según INEI |
macroregion_minsa |
Macroregión según MINSA |
fabricante |
Fabricante de la vacuna |
dosis |
Dosis de la vacuna (1 = primera, 2 = segunda, 3 = refuerzo) |
n_reg |
Número de vacunaciones (registros) |
flag_vacunacion_general |
Si los datos parecen corresponder al proceso general de vacunación |
Usando una combinación de servicios en AWS, estoy automatizando el proceso de datos en la forma esquematizada en el siguiente diagrama:
Este proceso automatizado se ejecuta todos los: Domingos, Lunes, Miércoles y Viernes, y genera datos acumulados siempre que los datos de origen cambien.
Si quieres hacer un clon de este repositorio, cuya historia contiene muchos archivos grandes (blobs), te sugiero que hagas un "blob-less" clone, de manera que sólo descargas lo mas reciente y si lo requieres puedes obtener los anteriores, algo como:
$ git clone --filter=blob:none https://github.com/jmcastagnetto/covid-19-peru-vacunas.git
Un buen artículo sobre este tema es Get up to speed with partial clone and shallow clone
- 2021-04-30: OWID está usando los datos resumidos de vacunación de este repositorio como fuente, para el Perú (ref: https://github.com/owid/covid-19-data/commit/52bb05a0a5954983dca347f92d0af95fada1bbd0)
- 2021-05-13: Los datos procesados y aumentados se están ahora separando en múltiples archivos (cada millón de registros), para evitar llegar al límite máximo en tamaño de Github. Los nombres son de la forma
vacunas_covid_aumentada_NNN.csv.gz
, dondeNNN
es el número de secuencia del archivo. - 2021-08-19: OWID está usando los datos por rango etáreo de este repositorio como fuente, para el Perú (ref: https://github.com/owid/covid-19-data/commit/2a40909953e4e66687156049f79e88567ab55741)
- 2021-08-30: Por cuarta vez desde que comenzaron a publicar los datos abiertos de vacunas, el URL canónico de los datos ha sido cambiado sin anuncio previo. El código de proceso se ha modificado para tomar esto en cuenta.
- 2021-09-01: He re-escrito todo el flujo del proceso de datos, incluyendo la opción de cargar todo a una BD local para consistencia.
- 2021-09-09: Los datos de la fuente oficial de los últimos días tenían inconsitencias, hoy ya parecen estar bien, pero ha cambiado la estructura de los mismos: se ha agregado el campo de edad (que antes se obtenía de la tabla de personas).
- 2021-10-01: A partir de hoy, estoy acumulando otro conjunto de datos, resumiendo el número de vacunados por UBIGEO (a nivel de distrito), fabricante y dosis
- 2021-11-04: El formato de fechas ya no es mas "dd/mm/yyyy" sino "yyyymmdd"
- 2021-12-03: OWID está usando los datos acumulados de vacunas por fabricante de este repositorio, para el Perú (ref: https://github.com/owid/covid-19-data/commit/e94d0639760d3a95f715c2d5e4db37814bd9c25b)
- 2022-01-30: He agregado un github action para usar Frictionless Repository en la validación de los datos resumidos generados.
- 2022-06-13: En Junio del 2022, los datos estan siendo geo-bloqueados para cualquiera con IP que no esté en Perú. Además, la estructura de datos a cambiado, perdiéndose la información de ubigeos que se tenía antes.
- 2022-08-28: A partir de la actualización de esta fecha, los resultados intermedios ya no se almacenan en formato Parquet de Arrow, sino en una base de datos de duckdb (https://duckdb.org)
- 2022-09-12: Con ayuda de https://twitter.com/Nest0R, quien proveyó una solución, he podido procesar los datos aún estando (por trabajo) fuera del país. Los datos siguen geo-bloqueados en el repositorio del MINSA, lo cual es una gran pena y nunca debió ocurrir.
- 2022-09-20: En algún momento luego del 2022-09-16, el URL de los datos de vacunación cambió otra vez (ahora es: https://cloud.minsa.gob.pe/s/To2QtqoNjKqobfw/download), y ya no están geobloqueados. Ojalá se mantenga así en el futuro.
- 2022-09-25: La estructura de datos ha cambiado nuevamente, ahora se tiene una columna extra:
TIPO_EDAD
- 2022-10-02: Han comenzado a aparecer datos de vacunación de los menores entre 6 meses a 5 años de edad, esta campaña comenzó el 2022-09-25, por lo ahora hay edades en meses (
TIPO_EDAD = 'M'
). El código ha sido ajustado para hacer la transformación para aquellos con edades menores a 1 año (Ref: https://www.gob.pe/institucion/minsa/noticias/654007-ninas-y-ninos-menores-de-5-anos-de-lima-metropolitana-reciben-su-primera-dosis-contra-la-covid-19) - 2023-01-01: Desde hoy, MINSA ha comenzado a aplicar la vacuna bivalente a los profesionales de salud, personas con factores de riesgo, oncológicos, etc.
- 2023-01-05: Los datos de población de REUNIS/INDECOPI para el 2023 no son muy consistentes con los registros de vacunación. Esto puede ocurrrir porque los estimados no están completos/correctos, o debido a que los datos de vacunación están incluyendo a extranjeros vacunados en el país (o recientemente nacionalizados, etc.), por lo que algunos porcentajes son mayores al 100% (ej. 100.6%). Por el momento, he levantado la restricción de validación de porcentajes.
- 2023-02-08: Desde al menos el 2023-02-06, los datos de vacunación del MINSA están inaccesibles, desde los dos URLs que solían tener esta información (https://www.datosabiertos.gob.pe/dataset/vacunaci%C3%B3n-contra-covid-19-ministerio-de-salud-minsa o https://www.datosabiertos.gob.pe/dataset/vacunacion). Cuando se intenta acceder, se obtiene el error que se ve a continuación:
-
2023-02-18: Los datos nuevamente se empezaron a publicar hace como una semana atrás, y recién he tenido oportunidad de ver los cambios que se han hecho. Antes se publicaba un archivo comprimido en formato 7Zip (
.7z
), ahora se publica un archivo en formato ZIP (.zip
), el cual contiene internamente un archivo en formato 7Zip (.7z
). No hay una ganancia en compresión ni en portabilidad al hacer esto último. He cambiado el código para tomar en cuenta este cambio en formatos. -
2023-03-01: He agregado el campo de tercer booster en OWID, pues desde Enero del 2023, se está aplicando la vacuna COVID-19 bivalente, que para algunos es la 4ta dosis (segundo booster), y para otros la 5ta dosis (tercer booster).
-
2023-07-06: En AWS hay ocasionalmente problemas con el inicio de la instancia EC2 debido a falta de recursos en la AZ (Availability Zone). Estoy desactivando el proceso automático por ahora y voy a ejecturarlo manualmente una o dos veces por semana.
-
2023-09-24: Se ha detectado un cambio en la estructura del CSV de vacunas, incluye ahora un campo de tipo de vacunas. No he modificado mucho el código aún para tomar ese campo en cuenta.
-
2024-01-16: MINSA no ha actualizado los datos abiertos en https://www.datosabiertos.gob.pe/dataset/vacunacion desde el 2023-12-10