ETL
Table structure
- AC: External Medical Practice
- AT: Transaction
- AH: Hospitalization
- ...
Original filesystem structure
Scripts
Shell
* ''' backup_epidemiology_db '''
<verbatim class="bash">
#!/bin/bash
# Shell Script to create the postgresql database and to import the epidemiology data
# Raúl Ernesto Menéndez-Mora - 7/Apr/2015
#set password for psql service
export PGPASSWORD=psqlpass
#drop database: epidemiology_db
if psql -U postgres -h localhost -l |grep -w "epidemiology_db" > /dev/null;
then
echo "Droping database: epidemiology_db"
dropdb -U postgres -h localhost epidemiology_db
fi
#create database: epidemiology_db
time pg_dump -h localhost -U postgres -Fc epidemiology_db > backup_file
</verbatim>
* ''' create_epidemiology_db '''
#!/bin/bash
# Shell Script to create the postgresql database and to import the epidemiology data
# Raúl Ernesto Menéndez-Mora - 19/Feb/2015
#set password for psql service
export PGPASSWORD=psqlpass
#drop database: epidemiology_db
if psql -U postgres -h localhost -l |grep -w "epidemiology_db" > /dev/null;
then
echo "Droping database: epidemiology_db"
dropdb -U postgres -h localhost epidemiology_db
fi
#create database: epidemiology_db
echo "Creating database: epidemiology_db"
createdb -U postgres -h localhost epidemiology_db
#run script with database structure
echo "Run script with database structure: create_epidemiology_db_structure.sql"
psql -U postgres -h localhost epidemiology_db < 'create_epidemiology_db_structure.sql'
#run script with database configuration tables' structure
echo "Run script with database configuration tables' structure: create_epidemiology_db_ref_structure.sql"
psql -U postgres -h localhost epidemiology_db < 'create_epidemiology_db_ref_structure.sql'
#run script to alter each table structure to consider the file where the data is coming from
#echo "Run script with database structure: update_epidemiology_db.sql"
psql -U postgres -h localhost epidemiology_db < 'update_epidemiology_db.sql'
<<COMMENT1
#inserting ....
#psql -c -U postgres epidemiology_db 'COPY US FROM value.txt (FORMAT CSV, DELIMITER(','))'
#unset the PGPASSWORD variable
unset PGPASSWORD
#listing databases running in the server
#psql -l
#COPY weather FROM '/home/user/weather.txt';
<<COMMENT1
echo "Current date : $(date) @ $(hostname)"
echo "Network configuration"
/sbin/ifconfig
Master LDAP server : dir1.nixcraft.net.in
Add user to master and it will get sync to backup server too
Profile and active directory hooks are below
read -p "Please enter the database name : " db_name
echo "So you're a $db_name"
fooVar=$(who)
echo $fooVar
create_pgdb() {
echo "echo is Called"
}
fooBar() {
echo "Functions are FUN!"
}
echoFunction;
fooBar;
echoFunction;
# You call functions without (), just the function name then a semicolon.
COMMENT1
#clear
*'''create_epidemiology_db_ref_structure'''
SET client_encoding = 'UTF-8';
--tablas de configuración
DROP TABLE IF EXISTS "ref_AMB_REALIZACION";
--ref_AMB_REALIZACION: Ãmbito de Realización
CREATE TABLE "ref_AMB_REALIZACION"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_AMB_REALIZACION" ADD CONSTRAINT "ref_AMB_REALIZACION_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_CAU_EXTERNA";
--ref_CAU_EXTERNA: Causa externa
CREATE TABLE "ref_CAU_EXTERNA"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_CAU_EXTERNA" ADD CONSTRAINT "ref_CAU_EXTERNA_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_CIE_10_RIPS";
--ref_CIE_10_RIPS: Diagnóstico Principal según Clasificación Internacional de Enfermedades (CIE-10)
CREATE TABLE "ref_CIE_10_RIPS"
(
"ID" SERIAL,
"COD_CIE10" CHAR(4) UNIQUE NOT NULL, --Está relacionado directamente con AC.COD_DXPPAL
"DESCRIPCION" VARCHAR (200) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_CIE_10_RIPS" ADD CONSTRAINT "ref_CIE_10_RIPS_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_ADMINISTRADORA";
--ref_COD_ADMINISTRADORA: Código de la EPS
CREATE TABLE "ref_COD_ADMINISTRADORA"
(
"ID" SERIAL,
"COD_ADMINISTRADORA" VARCHAR(10) UNIQUE NOT NULL,
"NIT" BIGINT DEFAULT 0,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_COD_ADMINISTRADORA" ADD CONSTRAINT "ref_COD_ADMINISTRADORA_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_CONSULTA";
--ref_COD_CONSULTA: Códigos de consultas
CREATE TABLE "ref_COD_CONSULTA"
(
"ID" INTEGER NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_COD_CONSULTA" ADD CONSTRAINT "ref_COD_CONSULTA_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_DEPARTAMENTO";
--ref_COD_DEPARTAMENTO: Códigos de DEPARTAMENTOS
CREATE TABLE "ref_COD_DEPARTAMENTO"
(
"ID" SMALLINT NOT NULL,
"DEPARTAMENTO" VARCHAR (100) NOT NULL CHECK ("DEPARTAMENTO" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_COD_DEPARTAMENTO" ADD CONSTRAINT "ref_COD_DEPARTAMENTO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_MEDICAMENTO";
--ref_COD_MEDICAMENTO: Códigos de medicamentos
CREATE TABLE "ref_COD_MEDICAMENTO"
(
"ID" SERIAL,
"COD_MEDICAMENTO" VARCHAR(11) UNIQUE NOT NULL,
"MEDICAMENTO" VARCHAR (100) NOT NULL CHECK ("MEDICAMENTO" <> ''),
"CONCENT_MODOADMINIST" VARCHAR (100), -- CONCENTRACIÓN Y/O MODO DE ADMINISTRACIÓN
"DESCRIPCION_USO" VARCHAR (100) -- tipo de medicamento o para qué enfermedad se usa...
);
-- CREATE INDEXES ...
ALTER TABLE "ref_COD_MEDICAMENTO" ADD CONSTRAINT "ref_COD_MEDICAMENTO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_MUNICIPIO";
--ref_COD_MUNICIPIO: Códigos de Municipios
CREATE TABLE "ref_COD_MUNICIPIO"
(
"ID" SMALLINT NOT NULL, -- ** TO CHECK ** EXISTEN VARIOS CÓDIGOS REPETIDOS
"MUNICIPIO" VARCHAR (100) NOT NULL CHECK ("MUNICIPIO" <> ''),
"ID_DEPARTAMENTO" SMALLINT REFERENCES "ref_COD_DEPARTAMENTO"("ID") -- ** TO CHECK ** NO ESTOY CLARO DEL SIGNIFICADO DE ESTA TABLA
);
-- **TO CHECH ** DESABILITADA LA RESTRICCIÓN POR EL MOMENTO MIENTRAS SE LOGRA DEFINIR POR QUÉ EXISTEN MUNICIPIOS CON CEL MISMO CÓDIGO
-- CREATE INDEXES ...
--ALTER TABLE "ref_COD_MUNICIPIO" ADD CONSTRAINT "ref_COD_MUNICIPIO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_COD_PROCEDIMIENTO";
--ref_COD_PROCEDIMIENTO: Código del Procedimiento que se realiza (Clasificación Única de Procedimientos de Salud (CUPS) )
CREATE TABLE "ref_COD_PROCEDIMIENTO"
(
"ID" SMALLINT NOT NULL,
"COD_PROCEDIMIENTO" INTEGER UNIQUE NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_COD_PROCEDIMIENTO" ADD CONSTRAINT "ref_COD_PROCEDIMIENTO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_CON_PRENATAL";
--ref_CON_PRENATAL: Control Prenatal
CREATE TABLE "ref_CON_PRENATAL"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" CHAR (2) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_CON_PRENATAL" ADD CONSTRAINT "ref_CON_PRENATAL_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_DES_USUARIO";
--ref_DES_USUARIO: Destino del usuario a la salida de observación
CREATE TABLE "ref_DES_USUARIO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_DES_USUARIO" ADD CONSTRAINT "ref_DES_USUARIO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_EST_SALIDA";
--ref_EST_SALIDA: Estado de Salida
CREATE TABLE "ref_EST_SALIDA"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_EST_SALIDA" ADD CONSTRAINT "ref_EST_SALIDA_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_FIN_CONSULTA";
--ref_FIN_CONSULTA: Finalidad para promoción y prevención
CREATE TABLE "ref_FIN_CONSULTA"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_FIN_CONSULTA" ADD CONSTRAINT "ref_FIN_CONSULTA_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_FIN_PROCEDIMIENTO";
--ref_FIN_PROCEDIMIENTO: Finalidad del procedimiento
CREATE TABLE "ref_FIN_PROCEDIMIENTO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_FIN_PROCEDIMIENTO" ADD CONSTRAINT "ref_FIN_PROCEDIMIENTO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_FOR_REALIZACION";
--ref_FOR_REALIZACION: Forma de realizar el acto quirúrgico
CREATE TABLE "ref_FOR_REALIZACION"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_FOR_REALIZACION" ADD CONSTRAINT "ref_FOR_REALIZACION_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_PER_ATIENDE";
--ref_PER_ATIENDE: Personal que atiende (Diligenciable solo cuando se realicen procedimientos relacionados con el parto. Dejar en blanco cuando no aplique)
CREATE TABLE "ref_PER_ATIENDE"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_PER_ATIENDE" ADD CONSTRAINT "ref_PER_ATIENDE_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_SEXO";
--ref_SEXO: Sexo
CREATE TABLE "ref_SEXO"
(
"ID" SMALLINT NOT NULL,
"SEXO" VARCHAR (100) NOT NULL CHECK ("SEXO" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_SEXO" ADD CONSTRAINT "ref_SEXO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_TIP_DXPPAL";
--ref_TIP_DXPPAL: Tipo de Diagnóstico Principal
CREATE TABLE "ref_TIP_DXPPAL"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_TIP_DXPPAL" ADD CONSTRAINT "ref_TIP_DXPPAL_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_TIP_IDENTIFICACION";
--ref_TIP_IDENTIFICACION: Tipo de Identificación del usuario
CREATE TABLE "ref_TIP_IDENTIFICACION"
(
"ID" SMALLINT NOT NULL,
"TIP_IDENTIFICACION" CHAR (2) UNIQUE NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_TIP_IDENTIFICACION" ADD CONSTRAINT "ref_TIP_IDENTIFICACION_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_TIP_MEDICAMENTO";
--ref_TIP_MEDICAMENTO: Tipo de medicamento
CREATE TABLE "ref_TIP_MEDICAMENTO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_TIP_MEDICAMENTO" ADD CONSTRAINT "ref_TIP_MEDICAMENTO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_TIP_SERVICIO";
--ref_TIP_SERVICIO: Tipo de servicio
CREATE TABLE "ref_TIP_SERVICIO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_TIP_SERVICIO" ADD CONSTRAINT "ref_TIP_SERVICIO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_TIP_USUARIO";
--ref_TIP_USUARIO: Tipo de usuario
CREATE TABLE "ref_TIP_USUARIO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_TIP_USUARIO" ADD CONSTRAINT "ref_TIP_USUARIO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_UNI_MED_EDAD";
--ref_UNI_MED_EDAD: Unidad de medida de edad
CREATE TABLE "ref_UNI_MED_EDAD"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_UNI_MED_EDAD" ADD CONSTRAINT "ref_UNI_MED_EDAD_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_VIA_INGRESO";
--ref_VIA_INGRESO: VÃa de Ingreso del Paciente al Hospital
CREATE TABLE "ref_VIA_INGRESO"
(
"ID" SMALLINT NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_VIA_INGRESO" ADD CONSTRAINT "ref_VIA_INGRESO_pkey" PRIMARY KEY ("ID");
DROP TABLE IF EXISTS "ref_ZONA";
--ref_ZONA: Tipo de Zona (urbana o rural)
CREATE TABLE "ref_ZONA"
(
"ID" SERIAL NOT NULL,
"COD_ZONA" CHAR(1) UNIQUE NOT NULL,
"DESCRIPCION" VARCHAR (100) NOT NULL CHECK ("DESCRIPCION" <> '')
);
-- CREATE INDEXES ...
ALTER TABLE "ref_ZONA" ADD CONSTRAINT "ref_ZONA_pkey" PRIMARY KEY ("ID");
PostgreSQL