Skip to content

Instantly share code, notes, and snippets.

@jmcastagnetto
Last active August 21, 2021 18:06
Show Gist options
  • Save jmcastagnetto/396e3834044bcacdede72899b11909aa to your computer and use it in GitHub Desktop.
Save jmcastagnetto/396e3834044bcacdede72899b11909aa to your computer and use it in GitHub Desktop.
Intento de encontrar un esquema para los datos de la Datatón 2021 del MINSA

Datatón 2021 del MINSA

Esta información trata de diagramar un esquema aproximado de (casi) todos los datos que se han liberado hasta la fecha para la Datatón 2021 del MINSA.

Me he basado en las estructuras de los datos, en particular los datos de tb_persona y un campo id_persona, que es referido en varios de los CSVs que han sido puestos como datos abiertos.

También he puesto varios FK entre tablas, en base a los nombres. No he revisado que todos los FK funcionen con todos los datos que se han liberado, pero al menos, funciona el tener tb_sinadef.id_persona -> tb_persona.id_persona (por ejemplo).

Algo importante a tomar en cuenta es que, las fechas en los CSV no estan siempre en formato ISO ("YYYY-MM-DD" o "YYYYMMDD"), sino que usualmente están en formato de "DD/MM/YY", por lo que van a requerir transformación antes de poder ser empleados en un esquema como el que se describe.

Espero que sea de utilidad para los que están viendo estos datos.

Nota del 2021-08-21: Hoy MINSA ha publicado el diagrama oficial de datos: "Modelo Entidad Relación de los datasets del MINSA para el DATATÓN". Este diagrama contiene algunos campos que no se encuentran en los CSV publicados, por ejemplo, a la fecha de hoy, los datos relacionados a la "Tabla General de Personas", no tienen el campo de identificación de la etnia, pero sí un campo para indicar fecha de fallecimiento. Como referencia, he puesto el esquema oficial como adjunto.

-- Jesus M. Castagnetto

-- DROP SCHEMA dataton2021_minsa;
CREATE SCHEMA dataton2021_minsa AUTHORIZATION postgres;
-- dataton2021_minsa.pm_ins definition
-- Drop table
-- DROP TABLE dataton2021_minsa.pm_ins;
CREATE TABLE dataton2021_minsa.pm_ins (
fecha_corte date NULL,
uuid varchar NULL,
fecha_muestra varchar NULL,
edad int4 NULL,
sexo varchar NULL,
institucion varchar NULL,
ubigeo_paciente varchar NULL,
departamento_paciente varchar NULL,
provincia_paciente varchar NULL,
distrito_paciente varchar NULL,
ubigeo_muestra varchar NULL,
departamento_muestra varchar NULL,
provincia_muestra varchar NULL,
distrito_muestra varchar NULL,
tipo_muestra varchar NULL,
resultado varchar NULL
);
-- dataton2021_minsa.pmgenoma_ins definition
-- Drop table
-- DROP TABLE dataton2021_minsa.pmgenoma_ins;
CREATE TABLE dataton2021_minsa.pmgenoma_ins (
fecha_corte date NULL,
uuid varchar NULL,
fecha_muestra date NULL,
edad int4 NULL,
sexo varchar NULL,
institucion varchar NULL,
ubigeo_paciente varchar NULL,
departamento_paciente varchar NULL,
provincia_paciente varchar NULL,
distrito_paciente varchar NULL,
departamento_muestra varchar NULL,
provincia_muestra varchar NULL,
distrito_muestra varchar NULL,
tipo_muestra varchar NULL,
resultado varchar NULL
);
-- dataton2021_minsa.tb_ciex definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_ciex;
CREATE TABLE dataton2021_minsa.tb_ciex (
ciexkey int4 NULL,
idciex varchar NOT NULL,
ciex varchar NULL,
descciex varchar NULL,
categoria varchar NULL,
grupo varchar NULL,
capitulo varchar NULL,
CONSTRAINT tb_ciex_pk PRIMARY KEY (idciex)
);
-- dataton2021_minsa.tb_etnias definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_etnias;
CREATE TABLE dataton2021_minsa.tb_etnias (
id_etnia int4 NOT NULL,
descripcion varchar NULL,
CONSTRAINT tb_etnias_pk PRIMARY KEY (id_etnia)
);
-- dataton2021_minsa.tb_f100_resultadoprueba definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f100_resultadoprueba;
CREATE TABLE dataton2021_minsa.tb_f100_resultadoprueba (
id_resultado_prueba int4 NOT NULL,
resultado_prueba varchar NULL,
CONSTRAINT tb_f100_resultadoprueba_pk PRIMARY KEY (id_resultado_prueba)
);
-- dataton2021_minsa.tb_f100_tipoprueba definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f100_tipoprueba;
CREATE TABLE dataton2021_minsa.tb_f100_tipoprueba (
id_tipo_prueba int4 NOT NULL,
tipo_prueba varchar NULL,
CONSTRAINT tb_f100_tipoprueba_pk PRIMARY KEY (id_tipo_prueba)
);
-- dataton2021_minsa.tb_f300_tipoestado definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f300_tipoestado;
CREATE TABLE dataton2021_minsa.tb_f300_tipoestado (
id_tipo_estado_seg int4 NOT NULL,
estado_seguimiento_clinico varchar NULL,
CONSTRAINT tb_f300_tipoestado_pk PRIMARY KEY (id_tipo_estado_seg)
);
-- dataton2021_minsa.tb_gruporiesgo_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_gruporiesgo_covid19;
CREATE TABLE dataton2021_minsa.tb_gruporiesgo_covid19 (
id_gruporiesgo int4 NOT NULL,
desc_gruporiesgo varchar NULL,
CONSTRAINT tb_gruporiesgo_covid19_pk PRIMARY KEY (id_gruporiesgo)
);
-- dataton2021_minsa.tb_poblacion_inei definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_poblacion_inei;
CREATE TABLE dataton2021_minsa.tb_poblacion_inei (
ubigeo_reniec varchar NULL,
ubigeo_inei varchar NULL,
departamento varchar NULL,
provincia varchar NULL,
distrito varchar NULL,
edad_anio varchar NULL,
sexo varchar NULL,
cantidad int4 NULL
);
-- dataton2021_minsa.tb_ubigeos definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_ubigeos;
CREATE TABLE dataton2021_minsa.tb_ubigeos (
id_ubigeo int4 NOT NULL,
ubigeo_reniec varchar NULL,
ubigeo_inei varchar NULL,
departamento_inei varchar NULL,
departamento varchar NULL,
provincia_inei varchar NULL,
provincia varchar NULL,
distrito varchar NULL,
region varchar NULL,
macroregion_inei varchar NULL,
macroregion_minsa varchar NULL,
iso_3166_2 varchar(6) NULL,
fips int4 NULL,
superficie int4 NULL,
altitud int4 NULL,
latitud float4 NULL,
longitud float4 NULL,
CONSTRAINT tb_ubigeos_pk PRIMARY KEY (id_ubigeo)
);
-- dataton2021_minsa.tb_vacunas_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_vacunas_covid19;
CREATE TABLE dataton2021_minsa.tb_vacunas_covid19 (
id_vacuna int4 NOT NULL,
fabricante varchar(11) NULL,
pais varchar(3) NULL,
CONSTRAINT tb_vacunas_covid19_pk PRIMARY KEY (id_vacuna)
);
-- dataton2021_minsa.tb_centro_vacunacion definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_centro_vacunacion;
CREATE TABLE dataton2021_minsa.tb_centro_vacunacion (
id_centro_vacunacion int4 NOT NULL,
id_ubigeo int4 NULL,
nombre varchar NULL,
latitud float4 NULL,
longitud float4 NULL,
entidad_administra varchar NULL,
CONSTRAINT tb_centro_vacunacion_pk PRIMARY KEY (id_centro_vacunacion),
CONSTRAINT tb_centro_vacunacion_fk FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo)
);
CREATE INDEX tb_centro_vacunacion_id_ubigeo_idx ON dataton2021_minsa.tb_centro_vacunacion USING btree (id_ubigeo);
-- dataton2021_minsa.tb_eess definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_eess;
CREATE TABLE dataton2021_minsa.tb_eess (
id_eess int4 NOT NULL,
codigo_renaes int4 NULL,
categoria varchar NULL,
nombre varchar NULL,
diresa varchar NULL,
red varchar NULL,
direccion varchar NULL,
longitud float4 NULL,
latitud float4 NULL,
id_ubigeo int4 NULL,
CONSTRAINT tb_eess_pk PRIMARY KEY (id_eess),
CONSTRAINT tb_eess_fk FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo)
);
-- dataton2021_minsa.tb_eess_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_eess_covid19;
CREATE TABLE dataton2021_minsa.tb_eess_covid19 (
id_eess int4 NULL,
id_ubigeo int4 NULL,
codigo_renaes int4 NULL,
atiende_covid19 bool NULL,
camas_ucin_av int4 NULL,
total_camas_ucin int4 NULL,
camas_hospitalizacion_con_oxigeno_av int4 NULL,
camas_hospitalizacion_sin_oxigeno_av int4 NULL,
camas_uci_con_ventilador_mecanico_av int4 NULL,
camas_uci_sin_ventilador_mecanico_av _aclitem NULL,
total_camas_hospitalizacion_con_oxigeno int4 NULL,
total_camas_hospitalizacion_sin_oxigeno int4 NULL,
total_camas_uci_con_ventilador_mecanico int4 NULL,
total_camas_uci_sin_ventilador_mecanico int4 NULL,
camas_hospitalizacion_av int4 NULL,
camas_hospitalizacion_con_oxigeno_usadas_av int4 NULL,
camas_hospitalizacion_sin_oxigeno_usadas_av int4 NULL,
total_camas_hospitalizacion int4 NULL,
camas_uci_con_ventilador_mecanico_usadas_av int4 NULL,
camas_uci_sin_ventilador_mecanico_usadas_av int4 NULL,
camas_ucin_con_oxigeno_usadas_av int4 NULL,
camas_ucin_sin_oxigeno_usadas_av int4 NULL,
CONSTRAINT tb_eess_covid19_fk FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_eess_covid19_fk_1 FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo)
);
-- dataton2021_minsa.tb_persona definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_persona;
CREATE TABLE dataton2021_minsa.tb_persona (
id_persona int4 NOT NULL,
año_de_nacimiento int4 NULL,
sexo bpchar(1) NULL,
id_ubigeo_domicilio int4 NULL,
fecha_fallecimiento varchar NULL,
CONSTRAINT tb_persona_pk PRIMARY KEY (id_persona),
CONSTRAINT tb_persona_fk FOREIGN KEY (id_ubigeo_domicilio) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo)
);
-- dataton2021_minsa.tb_programacion_vacunas definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_programacion_vacunas;
CREATE TABLE dataton2021_minsa.tb_programacion_vacunas (
id_programacion int4 NOT NULL,
id_centro_vacunacion int4 NULL,
fecha_programacion date NULL,
rango_inicial_edad int4 NULL,
rango_final_edad int4 NULL,
CONSTRAINT tb_programacion_vacunas_pk PRIMARY KEY (id_programacion),
CONSTRAINT tb_programacion_vacunas_fk FOREIGN KEY (id_centro_vacunacion) REFERENCES dataton2021_minsa.tb_centro_vacunacion(id_centro_vacunacion)
);
-- dataton2021_minsa.tb_seguim_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_seguim_covid19;
CREATE TABLE dataton2021_minsa.tb_seguim_covid19 (
id_persona int4 NULL,
atencion_id int4 NULL,
fecha_seguimiento date NULL,
estado varchar NULL,
complicaciones varchar NULL,
descripcion_otros varchar NULL,
observaciones varchar NULL,
evolucion varchar NULL,
hospitalizacion varchar NULL,
hora_seguimiento time NULL,
con_oxigeno bool NULL,
con_ventilacion bool NULL,
esta_hospitalizacion bool NULL,
esta_uci bool NULL,
esta_ucin bool NULL,
CONSTRAINT tb_seguim_covid19_fk FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_sinadef definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_sinadef;
CREATE TABLE dataton2021_minsa.tb_sinadef (
id_persona int4 NULL,
sexo varchar NULL,
tipo_seguro varchar NULL,
edad int4 NULL,
tiempo_edad varchar NULL,
estado_civil varchar NULL,
nivel_de_instruccion varchar NULL,
ubigeo_domicilio varchar NULL,
pais_domicilio varchar NULL,
departamento_domicilio varchar NULL,
provincia_domicilio varchar NULL,
distrito_domicilio varchar NULL,
fecha date NULL,
año int4 NULL,
mes int4 NULL,
tipo_lugar varchar NULL,
institucion varchar NULL,
muerte_violenta varchar NULL,
necropsia varchar NULL,
debido_a varchar NULL,
causa_a varchar NULL,
debido_b varchar NULL,
causa_b varchar NULL,
debido_c varchar NULL,
causa_c varchar NULL,
debido_d varchar NULL,
causa_d varchar NULL,
debido_e varchar NULL,
causa_e varchar NULL,
debido_f varchar NULL,
causa_f varchar NULL,
CONSTRAINT tb_sinadef_fk FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_vacunacion_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_vacunacion_covid19;
CREATE TABLE dataton2021_minsa.tb_vacunacion_covid19 (
id_persona int4 NULL,
id_vacunados_covid19 int4 NULL,
fecha_vacunacion date NULL,
id_centro_vacunacion int4 NULL,
id_vacuna int4 NULL,
id_grupo_riesgo int4 NULL,
dosis int4 NULL,
CONSTRAINT tb_vacunacion_covid19_fk_1 FOREIGN KEY (id_vacuna) REFERENCES dataton2021_minsa.tb_vacunas_covid19(id_vacuna),
CONSTRAINT tb_vacunacion_covid19_fk_2 FOREIGN KEY (id_grupo_riesgo) REFERENCES dataton2021_minsa.tb_gruporiesgo_covid19(id_gruporiesgo),
CONSTRAINT tb_vacunacion_covid19_fk_3 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona),
CONSTRAINT tb_vacunacion_covid19_fk_4 FOREIGN KEY (id_centro_vacunacion) REFERENCES dataton2021_minsa.tb_centro_vacunacion(id_centro_vacunacion)
);
-- dataton2021_minsa.tb_anemia definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_anemia;
CREATE TABLE dataton2021_minsa.tb_anemia (
id_persona int4 NULL,
edad int4 NULL,
tipo_edad varchar NULL,
sexo varchar NULL,
id_ubigeo int4 NULL,
fecha_atencion date NULL,
diagnostico varchar NULL,
tipo_dx varchar NULL,
id_eess int4 NULL,
CONSTRAINT tb_anemia_fk FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo),
CONSTRAINT tb_anemia_fk_1 FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_anemia_fk_2 FOREIGN KEY (diagnostico) REFERENCES dataton2021_minsa.tb_ciex(idciex),
CONSTRAINT tb_anemia_fk_3 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_aten_covid19 definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_aten_covid19;
CREATE TABLE dataton2021_minsa.tb_aten_covid19 (
id_persona int4 NULL,
id_eess int4 NULL,
fecha_ingreso date NULL,
hora_ingreso varchar NULL,
es_recuperado bool NULL,
fecha_alta date NULL,
es_recuperado_voluntario bool NULL,
fecha_alta_voluntaria date NULL,
es_fallecido bool NULL,
fecha_fallecido date NULL,
es_referido bool NULL,
fecha_referido date NULL,
eess_destino_id int4 NULL,
CONSTRAINT tb_aten_covid19_fk FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_aten_covid19_fk_1 FOREIGN KEY (eess_destino_id) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_aten_covid19_fk_2 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_eda definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_eda;
CREATE TABLE dataton2021_minsa.tb_eda (
id_persona int4 NULL,
edad int4 NULL,
tipo_edad varchar NULL,
sexo varchar NULL,
id_ubigeo int4 NULL,
fecha_atencion date NULL,
diagnostico varchar NULL,
tipo_dx varchar NULL,
id_eess int4 NULL,
CONSTRAINT tb_eda_fk FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo),
CONSTRAINT tb_eda_fk_1 FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_eda_fk_2 FOREIGN KEY (diagnostico) REFERENCES dataton2021_minsa.tb_ciex(idciex),
CONSTRAINT tb_eda_fk_3 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_emergencia definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_emergencia;
CREATE TABLE dataton2021_minsa.tb_emergencia (
id_persona int4 NULL,
edad int4 NULL,
tipo_edad varchar NULL,
sexo varchar NULL,
fecha_atencion date NULL,
diagnostico varchar NULL,
tipo_dx varchar NULL,
id_eess int4 NULL,
CONSTRAINT tb_emergencia_fk FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_emergencia_fk_1 FOREIGN KEY (diagnostico) REFERENCES dataton2021_minsa.tb_ciex(idciex),
CONSTRAINT tb_emergencia_fk_2 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_f00_sicovid definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f00_sicovid;
CREATE TABLE dataton2021_minsa.tb_f00_sicovid (
id_persona int4 NULL,
fecha_contacto date NULL,
flag_sospechoso bool NULL,
fecha_sintomas date NULL,
tos bool NULL,
cefalea bool NULL,
congestion_nasal bool NULL,
dificultad_respiratoria bool NULL,
dolor_garganta bool NULL,
fiebre bool NULL,
diarrea bool NULL,
nauseas bool NULL,
anosmia_hiposmia bool NULL,
dolor_abdominal bool NULL,
dolor_articulaciones bool NULL,
dolor_muscular bool NULL,
dolor_pecho bool NULL,
otros_sintomas bool NULL,
id_ubigeo_f00 int4 NULL,
CONSTRAINT tb_f00_sicovid_fk FOREIGN KEY (id_ubigeo_f00) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo),
CONSTRAINT tb_f00_sicovid_fk_1 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_f100_sicovid definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f100_sicovid;
CREATE TABLE dataton2021_minsa.tb_f100_sicovid (
id_persona int4 NULL,
fecha_prueba date NULL,
id_tipo_prueba int4 NULL,
id_resultado_prueba int4 NULL,
id_ubigeo_prueba int4 NULL,
CONSTRAINT tb_f100_sicovid_fk FOREIGN KEY (id_ubigeo_prueba) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo),
CONSTRAINT tb_f100_sicovid_fk_1 FOREIGN KEY (id_tipo_prueba) REFERENCES dataton2021_minsa.tb_f100_tipoprueba(id_tipo_prueba),
CONSTRAINT tb_f100_sicovid_fk_2 FOREIGN KEY (id_resultado_prueba) REFERENCES dataton2021_minsa.tb_f100_resultadoprueba(id_resultado_prueba),
CONSTRAINT tb_f100_sicovid_fk_3 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_f300_sicovid definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_f300_sicovid;
CREATE TABLE dataton2021_minsa.tb_f300_sicovid (
id_persona int4 NULL,
fecha_seguimiento date NULL,
id_tipo_seguimiento varchar NULL,
id_tipo_estado_seg int4 NULL,
CONSTRAINT tb_f300_sicovid_fk FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
-- dataton2021_minsa.tb_ira definition
-- Drop table
-- DROP TABLE dataton2021_minsa.tb_ira;
CREATE TABLE dataton2021_minsa.tb_ira (
id_persona int4 NULL,
edad int4 NULL,
tipo_edad varchar NULL,
sexo varchar NULL,
id_ubigeo int4 NULL,
fecha_atencion date NULL,
diagnostico varchar NULL,
tipo_dx varchar NULL,
id_eess int4 NULL,
CONSTRAINT tb_ira_fk FOREIGN KEY (id_eess) REFERENCES dataton2021_minsa.tb_eess(id_eess),
CONSTRAINT tb_ira_fk2 FOREIGN KEY (id_ubigeo) REFERENCES dataton2021_minsa.tb_ubigeos(id_ubigeo),
CONSTRAINT tb_ira_fk3 FOREIGN KEY (diagnostico) REFERENCES dataton2021_minsa.tb_ciex(idciex),
CONSTRAINT tb_ira_fk_3 FOREIGN KEY (id_persona) REFERENCES dataton2021_minsa.tb_persona(id_persona)
);
@jmcastagnetto
Copy link
Author

jmcastagnetto commented Aug 20, 2021

Esquema aproximado en función a los datos publicados a la fecha:

dataton2021-minsa-esquema-aproximado

@jmcastagnetto
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment