/chile-coronapi

API que provee información actualizada respecto de los contagios de COVID19 en Chile. Datos del Ministerio de Salud.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

chile-coronapi

Actualmente este proyecto no está activo. Sin embargo, puede servir en caso de que se quiera revisar cómo implementar una API usando flask; cómo crear un scrapper con BeautyfulSoup y cómo documentar una API de forma sencilla.

API para obtener datos acerca de contagios de coronavirus (COVID-19) en Chile. Utiliza los datos oficiales del Gobierno de Chile y el Ministerio de Salud. Los datos se manejan en el repositorio hermano covid19-data y se actualizan prácticamente en tiempo real. Para más información, revisar otros datos interesantes sobre el coronavirus en Chile o revisar cómo se realiza el scraping, referir a ese repositorio.

IMPORTANTE

Esta API no entrega ni entregará nunca jamás información sobre los pacientes recuperados que entrega el Ministerio de Salud, dado que ese dato carece de rigurosidad y validez científica. Instamos, además, a que si realizas un proyecto consumiendo esta API, por favor no consumas esa información desde otra fuente, ni mucho menos intentes reportar pacientes activos. Esto para que seamos responsables con los datos que entregamos.

Sobre el uso de la API

Esta API es abierta y puede ser utilizada en cualquier proyecto. Se solicita que, en caso de utilizarla, nos contactes por Telegram para poder linkear el proyecto a este repositorio y llevar un mejor manejo de en dónde se está utilizando. También nos puedes enviar un correo

Colaboraciones y Issues

Cualquier persona es libre de colaborar con este proyecto. Simplemente se debe hacer un fork, añadir la característica y hacer un Pull Request (en Develop) bien documentado de lo que se quiere añadir. Se agradece contactarnos por Telegram o mail.

Por otra parte, se agradece que reportes un bug si lo encuentras mientras estás utilizando esta API. Asimismo, también se agradece la solicitud de nuevas features. Para ambas cosas, sencillamente déjanos una Github Issue.

Endpoints

A continuación se detallan todas las formas para poder consumir la API acompañado del dato que se entrega. Cabe destacar que los endpoints v2 y v1 han sido deprecados. Se sugiere utilizar los endpoints v4 en caso de estar disponibles, ya que se planea deprecar v3 a futuro.

Endpoints v4

GET Request Output
https://chile-coronapi.herokuapp.com/api/v4/historical/communes Se obtienen los datos históricos que el Gobierno ha publicado para todas las comunas agrupadas por región. Estos datos son entregados por parte del ministerio con poca frecuencia, usualmente cada un par de días o un poco más. Para este caso, sólo están disponibles los contagiados confirmados, que es lo único que el gobierno ha entregado de forma oficial. Usualmente un 0 representa que no hay datos significativos para esta comuna.
https://chile-coronapi.herokuapp.com/api/v4/historical/communes?id={commune-id} Se obtienen los datos de la misma forma que en el endpoint anterior, sin embargo, al igual que con las regiones, se puede obtener para una comuna en específico, entregando el commune-id, sin los corchetes. La lista de los IDs de comuna está disponible en el endpoint de models communes.
https://chile-coronapi.herokuapp.com/api/v4/historical/communes?region_code={region-code} Se obtienen los datos de la misma forma que en el endpoint anterior, sin embargo, se pueden obtener todas las comunas para una región en específico, entregando el region-code, sin los corchetes. La lista de los códigos de regiones está disponible en el endpoint de models region.
https://chile-coronapi.herokuapp.com/api/v4/latest/communes Datos de comunas para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para todas las comunas, agrupadas por regiones.
https://chile-coronapi.herokuapp.com/api/v4/latest/communes?id={commune-id} Datos de comunas para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para la comuna señalada en el commune-id.
https://chile-coronapi.herokuapp.com/api/v4/latest/communes?region_code={region-code} Datos de comunas para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para las comunas pertenecientes a la región señalada en el region-code.
https://chile-coronapi.herokuapp.com/api/v4/models/communes Se obtiene una lista con todas las comunas del país, agrupadas por región, junto a su ID y a qué región del país pertenecen.

Endpoints v3

GET Request Output
https://chile-coronapi.herokuapp.com/api/v3/historical/nation Se obtienen los datos, desde el 7 de marzo hasta el día de hoy, de contagiados confirmados y muertes. Estos datos corresponden al total a nivel país.
https://chile-coronapi.herokuapp.com/api/v3/historical/regions Se obtienen los datos históricos de contagiados y muertes por región. En el caso de los contagiados, los datos están disponibles desde el 7 de marzo hasta el día de hoy. Para el caso de las muertes, los datos están sólo disponibles desde el 1 de abril, que es desde dónde el Gobierno tiene publicadas las cifras oficiales.
https://chile-coronapi.herokuapp.com/api/v3/historical/regions?id={region-id} Se obtienen los datos de contagiados y muertes por región de la misma forma que en el endpoint anterior, sin embargo, si se entrega el parámetro de region-id (sin los corchetes) se reciben los datos para la región indicada. Los códigos de las regiones corresponden al antiguo sistema de regiones numeradas (e.g, Metropolitana es 13.) Se pueden consultar todos los códigos de regiones disponibles utilizando el Endpoint de models que se detalla más abajo.
https://chile-coronapi.herokuapp.com/api/v3/historical/communes Se obtienen los datos históricos que el Gobierno ha publicado para todas las comunas. Estos datos son entregados por parte del ministerio con poca frecuencia, usualmente cada un par de días o un poco más. Para este caso, sólo están disponibles los contagiados confirmados, que es lo único que el gobierno ha entregado de forma oficial. Usualmente un 0 representa que no hay datos significativos para esta comuna.
https://chile-coronapi.herokuapp.com/api/v3/historical/communes?id={commune-id} Se obtienen los datos de la misma forma que en el endpoint anterior, sin embargo, al igual que con las regiones, se puede obtener para una comuna en específico, entregando el commune-id, sin los corchetes. La lista de los IDs de comuna está disponible en el endpoint de models de más abajo.
https://chile-coronapi.herokuapp.com/api/v3/latest/nation Se obtienen los datos de contagiados y muertes para el último día en que el gobierno ha realizado un reporte. El gobierno actualmente realiza un reporte todas las mañanas, con los datos cortados hasta el día anterior a las 21:00 hrs.
https://chile-coronapi.herokuapp.com/api/v3/latest/regions Datos de regiones para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para todas las regiones.
https://chile-coronapi.herokuapp.com/api/v3/latest/regions?id={region-id} Datos de regiones para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para la región señalada en el region-id.
https://chile-coronapi.herokuapp.com/api/v3/latest/communes Datos de comunas para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para todas las comunas.
https://chile-coronapi.herokuapp.com/api/v3/latest/communes?id={commune-id} Datos de comunas para el último día reportado por el ministerio. Con este endpoint se obtiene el último reporte para la comuna señalada en el commune-id.
https://chile-coronapi.herokuapp.com/api/v3/models/regions Se obtiene una lista de todas las regiones junto a su ID respectivo.
https://chile-coronapi.herokuapp.com/api/v3/models/communes Se obtiene una lista con todas las comunas del país, junto a su ID y a qué región del país pertenecen.

Instalación del proyecto

Basta con clonar el repositorio, e instalar los requerimientos:

pip install requirements.txt

Luego usar los archivos .template para generar el setup.py y el .env. Vienen configurados con las variables por defecto para trabajar en development. Se debe especificar una SECRET_KEY sólo en producción. Esto se puede hacer, por ejemplo, ejecutando en la consola de python:

import uuid
uuid.uuid4().hex

Para correr la aplicación en un servidor local, se puede hacer simplemente ejecutando flask run en la raíz del proyecto.

Sobre la fuente de los datos

Los datos son las cifras oficiales publicadas por el Gobierno de Chile y el Ministerio de Salud en sus respectivos sitios web. Para los datos que se utilizan en esta API, la actualización es prácticamente en tiempo real, por medio de scraping. Esta API consume los datos directamente desde ese repositorio, por lo que los tiempos de respuesta son bastante buenos y suele ser menor a los 500 milisegundos.

En general, los datos son obtenidos desde el sitio del gobierno, que actualiza muchísimo más rápido que el sitio del ministerio de salud, a excepción de los datos respectivos a casos contagiados, que sólo se publican en el sitio del Minsal.

Datos de Regiones (Models Regions)

Los datos de las regiones son obtenidos desde el sitio del INE e incluyen datos como:

  • Nombre de la región
  • Información de la región como:
    • Código de región, que corresponde al antiguo sistema de regiones numeradas(Ej. Metropolitana es 13).
    • Latitud y Longitud ,
    • Población de la región
    • Área geográfica en km² de la región

Datos de Comunas (Models Communes)

Los datos son obtenidos mayoritariamente desde el sitio de la biblioteca del congreso nacional e incluyen:

  • Nombre de la comuna
  • Información de la comuna tal como
    • Id o CUT (Código Único Territorial)
    • Área geográfica en km² de la comuna
    • Índice de desarrollo humano (Hay unas comunas que su valor es 0, pues no hay datos de ellas).
    • Número de habitantes de la comuna
    • Región y código de ésta que corresponde al antiguo sistema de regiones numeradas

Publicaciones

Este proyecto se encuentra enlistado en dos colecciones importantes de APIs:

Proyectos que utilizan la API

Equipo

  • Franco Sanguineti @sanguineti. Mantenedor.
  • Cristóbal Mesías @cmesiasd. Ha trabajado principalmente en la implementación del scraping, nuevas features y solución de bugs de la API.
  • José Pacheco @checopa. Ha trabajado en la implementación de nuevas features y solución de bugs de la API.

Colaboradores

  • Fabián Villena @fvillena. Ha agregado información por comuna, como el área geográfica, el indice de desarrollo humano y la cantidad de población de ellas.
  • Marcel Augsburger @maugsbur. Ha realizado refactor en endpoints de la API.