Commit e2081948 by SIFF

Es la aplicación informática donde se consolida la data obtenida a partir de las…

Es la aplicación informática donde se consolida la data obtenida a partir de las fichas familiares completadas por los Equipos Comunitarios de Salud Familar, para obtener información oportuna referente al diagnóstico de salud de las familias y comunidades de las áreas intervenidas en el nuevo modelo de salud familiar.
parents
Showing with 4974 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>
[Dolphin]
PreviewsShown=true
Timestamp=2019,6,13,8,19,17
Version=3
[Settings]
HiddenFilesShown=true
configuraciones/.inicializacion.inc
*~
.project
.settings/
#Cache de smarty
smarty/templates_c/*
#assis de establecimientos
assi/*
*~HEAD
*.orig
AddDefaultCharset utf-8
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
This diff is collapsed. Click to expand it.
<?php
/*
* Created on 17/02/2009
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
class ProjectConfiguration
{
static protected $zendLoaded = false;
static public function registerZend()
{
if (self::$zendLoaded)
{
return;
}
set_include_path(dirname(__FILE__).'/librerias/zend_framework'.PATH_SEPARATOR.get_include_path());
require_once(dirname(__FILE__).'/librerias/zend_framework/Zend/Loader.php');
Zend_Loader::registerAutoload();
self::$zendLoaded = true;
}
}
?>
\ No newline at end of file
# Sistema de Información de Ficha Familiar
### Ministerio de Salud de El Salvador (MINSAL)
<div align="center">
<a href="http://codigo.salud.gob.sv/">
<img alt="SUIS" title="SUIS" src="https://next.salud.gob.sv/index.php/s/kP3xEycKgfmWW99/preview" width="450" style="width: 450px;">
</a>
</div>
## Tabla de Contenido
* [Descripción](#descripción)
* [Instalación](#instalación)
* [Colaboradores](#colaboradores)
* [Enlaces de ayuda](#enlaces-de-ayuda)
* [Licencia](#licencia)
## Descripción
Es la aplicación informática donde se consolida la data obtenida a partir de las fichas familiares completadas por los Equipos Comunitarios de Salud Familar, para obtener información oportuna referente al diagnóstico de salud de las familias y comunidades de las áreas intervenidas en el nuevo modelo de salud familiar.
## Instalación
## Requisitos
### 1. Software
| Software | Versión |
| ---------- | :-----: |
| Apache | 2.4 |
| PHP | 5.6 |
| Twig | 2.6.18 |
| PostgreSQL | 9.4 |
### 2. Sistema Operativo
El sistema SIFF funciona bajo el Sistema Operativo Linux, en su distribución Debian DISTRIBUCION o superior.
### 3. Navegador Web
Debido a la no estandarización en lo referente al motor de renderizado de los diferentes navegadores web, el sistema SIFF ha sido optimizado para los siguientes navegadores, por lo cual se recomienda su uso:
- Mozilla Firefox 26.0 o superior
- Iceweasel 26.0 o superior (Navegador de Firefox en Debian).
- Google Chrome 31.0.1650.63-1 o superior
Instalación del Sistema
------------------------
Esta documentación contiene información de como descargar, instalar la Plantilla Symfony.
### 1) Clonar el proyecto del repositorio
git@codigo.salud.gob.sv:SIFF/SIFF.git
### 2) Configuración de la base de datos
Creación del usuario de la base de datos como usuario **postgres** ejecutar:
createuser -DRSP usuario
Creación de la base de datos del sistema
createdb nombre-base -O usuario
Crear un archivo denominado '.inicializacion.inc' en el directorio 'configuraciones' con la siguiente estructura:
<?php
/*
* Este archivo almacena los datos para establecer la conexión al servidor.
*
*/
// Usuario de la base de datos
$usuario='nombre del usuario';
// clave de acceso del usuario de la base de datos
$clave='clave del usuario';
$dsn='pgsql:dbname=nombre_base;host=localhost';
?>
### 3) Configuración de permisos a apache para escribir en carpetas
- Como **usuario root**
*Instalar acl:*
```
aptitude install acl
```
- Configurar acl de la siguiente forma:
*Editar archivo:*
```
vi /etc/fstab
```
Agregando "acl" a las opciones de montaje de la partición donde se encuentra el sitio, guardar *Ejecutar lo siguiente:*
```
mount -o remount /var/
```
- Como **usuario normal**:
*Crear directorio smarty/templates_c en la raíz del sitio*
```
mkdir -p smarty/templates_c/
```
Crear directorio assi/ en la raíz del sitio para almacenamiento de los informes ASSI
mkdir -p assi/
Aplicar las acl al directorio smarty/templates_c:
setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx smarty/templates_c
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx smarty/templates_c
Aplicar las acl al directorio assi/:
setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx assi/
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx assi/
### 4) Crear el Virtual Host
Como **usuario root**, moverse a la carpeta:
cd /etc/apache2/sites-available/
Con un editor de texto crear el archivo **siff.localhost** con el siguiente contenido:
# Inicio del archivo
<VirtualHost *:80>
ServerName siff.localhost
DocumentRoot /home/victoria/workspace/siff
#DirectoryIndex app.php
<Directory /home/victoria/workspace/siff>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
#Order allow,deny
#allow from all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/siff.localhost-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/siff.localhost-access.log combined
</VirtualHost>
# Fin del archivo
Guardar el archivo. Luego, como **root** ejecutar:
a2ensite siff.localhost
Habilitar el modo de reescritura con la siguiente sentencia:
a2enmod rewrite
Reiniciar el servicio de Apache
/etc/init.d/apache2 restart
Se debe agregar en el archivo **/etc/hosts** la IP junto con el ServerName
del Virtual Host. La línea debe ser similar a la siguiente:
X.X.X.X siff.localhost
### 5) Configuración del .gitignore
Este proyecto ya incluye un archivo .gitignore
Sin embargo, es necesario agregar todos aquellos archivos y directorios generados por otros IDE,
editores de texto, etc.
## Colaboradores
- Victoria López <mvlopez@salud.gob.sv>
**Dirección de Tecnologías de Información y Comunicaciones (DTIC).**<br />
**Ministerio de Salud**<br />
[www.salud.gob.sv](http://www.salud.gob.sv)
## Enlaces de ayuda
* [Manual de Usuario SIFF](http://codigo.salud.gob.sv/siff/siff/blob/master/ayuda/manual_siff.pdf).
## Licencia
<a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.en.html"><img alt="Licencia GNU GPLv3" style="border-width:0" src="https://next.salud.gob.sv/index.php/s/qxdZd5iwcqCyJxn/preview" width="96" /></a>
Este proyecto está bajo la <a rel="license" href="http://codigo.salud.gob.sv/siff/siff/blob/master/LICENSE">licencia GNU General Public License v3.0</a>
\ No newline at end of file
<?php
//require_once($_SERVER['DOCUMENT_ROOT'] . "/configuraciones/inicio.php");
require_once ($_SERVER['DOCUMENT_ROOT'] . '/configuraciones/constantes.php');
require_once ($_SERVER['DOCUMENT_ROOT'] . '/configuraciones/auto_carga_clases.php');
// variable para mandar la respuesta
$respuesta='';
global $expiracion;
$usuario_obj= new usuario;
// Debe pasar tres validaciones, se hacen por separado por seguridad y para presentar el mensaje correcto
// primera validacion: Verificar que el usuario_obj exista
$usuario_obj->condicion="codigousuario='$_POST[name_usuario]'";
$usuario_obj->leer();
$validar1=$usuario_obj->cantReg;
if ($validar1==1){
// segunda validacion: Ahora verificar que la clave coincida
$usuario_obj->condicion="codigousuario='$_POST[name_usuario]' AND claveusuario='".md5($_POST['clave_usuario'])."'";
$usuario_obj->leer();
$validar2=$usuario_obj->cantReg;
if ($validar2==1){
// tercera validación, el usuario_obj debe estar activo
$usuario_obj->condicion="codigousuario='$_POST[name_usuario]' AND claveusuario='".md5($_POST['clave_usuario'])."' AND estaactivo='true'";
$usuario_obj->leer();
$validar3=$usuario_obj->cantReg;
if ($validar3==1){
$respuesta='OK';
}
else
$respuesta='usuario NO ESTA ACTIVO';
}
else
$respuesta='CONTRASEÑA INCORRECTA';
}
else
$respuesta='usuario NO EXISTE'.$_POST['env'];
if ($respuesta=='OK'){
// Cargar el entorno
$usuario_obj->condicion="codigousuario='$_POST[name_usuario]' AND claveusuario='".md5($_POST['clave_usuario'])."' AND estaactivo='true'";
$datos_usuario=$usuario_obj->leer();
$datos_usuario=$datos_usuario->fetch(PDO::FETCH_ASSOC);
session_start();
$_SESSION['usuario']=$datos_usuario['codigousuario'];
$_SESSION['region']=$datos_usuario['idregion'];
$_SESSION['id_sibasi']=$datos_usuario['id_sibasi'];
$_SESSION['id_estasib']=$datos_usuario['id_estasib'];
$_SESSION['idusuario']=$datos_usuario['idusuario'];
$_SESSION['nombreusuario']=$datos_usuario['nombreusuario'];
$_SESSION['perfil']=$datos_usuario['codigo_perfil'];
$_SESSION['nombreperfil']=$datos_usuario['nombreperfil'];
$_SESSION['expiracion']=time() + ini_get("session.gc_maxlifetime");
//$_SESSION['env']=$_POST['env'];
$expiracion=time() + ini_get("session.gc_maxlifetime");
$_SESSION['descripcion_accion']='Ingreso al sistema';
base::bitacora('','ingreso');
}
else{
//Registrar el intento de ingreso fallido en la bitacora
$_SESSION['descripcion_accion']="Intento de ingreso al sistema usuario: $_POST[name_usuario] clave utilizada:$_POST[clave_usuario]";
$_SESSION['usuario']='NULL';
base::bitacora('','ingreso_fallido');
}
echo $respuesta;
?>
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/configuraciones/inicio.php");
echo 'hola';
?>
<?php
/*
* Created on 19/12/2007
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
require_once($_SERVER['DOCUMENT_ROOT'] . "/configuraciones/inicio.php");
if ($_POST['pagina']!='generar'){?>
<HTML>
<HEAD>
<script type="text/javascript" src="/librerias/prototype/prototype.js"></script>
<SCRIPT TYPE='text/JavaScript'>
function mandar(){
var myAjax = new Ajax.Updater(
'codigo',
'generador.php',
{
method: 'post',
parameters: 'tabla='+$F('tabla')+
'&salida='+$F('tipo_salida')+
'&pagina=generar'
}
);
}
</SCRIPT>
</HEAD>
<BODY>
<?php
}
function parametros(){
$generador= new generador();
?>
<FORM method="POST" action="generador.php" ONSUBMIT='mandar(); return false;'>
TABLA: <SELECT NAME='tabla' ID='tabla' /><?php
foreach($generador->listado_tablas()->fetchAll() as $tabla){
echo '<OPTION VALUE="'.$tabla['nombre'].'" >'.$tabla['nombre'].'</OPTION>';
}
?></SELECT><BR><BR>
CLASE <INPUT TYPE='radio' name='salida' value='clase' onclick="$('tipo_salida').value='clase';" checked ><br>
PLANTILLA <INPUT TYPE='radio' name='salida' value='plantilla' onclick="$('tipo_salida').value='plantilla';" ><br>
VALIDACIONES <INPUT TYPE='radio' name='salida' value='validaciones' onclick="$('tipo_salida').value='validaciones'" ><br>
CONTROLADOR <INPUT TYPE='radio' name='salida' value='controlador' onclick="$('tipo_salida').value='controlador'" ><br>
<br>
<INPUT TYPE='hidden' VALUE='generar' name='pagina' />
<INPUT TYPE='text' name='tipo_salida' id='tipo_salida'/>
<INPUT TYPE='SUBMIT' VALUE='GENERAR CODIGO' />
<INPUT TYPE='button' VALUE='SELECCIONAR CODIGO' ONCLICK="$('codigo').select()"/>
</FORM>
<BR><BR>
<textarea id="codigo" rows="20" cols="80" wrap="off"></textarea>
</BODY>
</HTML>
<?php
}
function generar(){
$generador= new generador($_POST['tabla']);
$generador->generar_todos();
switch($_POST['salida']){
case 'controlador':
$generador->mostrar_controlador();
break;
case 'clase':
$generador->mostrar_clase();
break;
case 'plantilla':
$generador->mostrar_plantilla();
break;
case 'validaciones':
$generador->mostrar_validaciones();
break;
}
}
switch($_POST['pagina']){
case 'generar':
generar();
break;
default:
parametros();
break;
}
?>
\ No newline at end of file
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/configuraciones/inicio.php");
//nombre de archivo actual
$nombre_archivo_actual='ecos_familias.php';
// Crear un objeto de pantillas
$ficha_tpl=new plantillaSiff;
$ruta_plantilla="informes/ecos_familias.tpl";
function emitir_informe(){
global $ficha_tpl, $nombre_archivo_actual,$ruta_plantilla;
$estasib_obj= new estasib;
$sibasi_obj= new sibasis;
if(isset($_SESSION['id_estasib'])){//Para usuarios de UCSF
$sibasi_obj->condicion = "A.idsibasi = $_SESSION[id_sibasi]";
$sibasi_obj->ordenar_por="A.nomsibasi";
$sibasi_opciones = base::poner_1ra_indice($sibasi_obj->leer("A.idsibasi,A.nomsibasi")->fetchAll());
$ficha_tpl->assign("sibasi_opciones",$sibasi_opciones);
$estasib_obj->condicion = "idestasib = $_SESSION[id_estasib]";
$estasib_obj->ordenar_por="A.estasib";
$estasib_opciones = base::poner_1ra_indice($estasib_obj->leer("idestasib,estasib")->fetchAll());
$ficha_tpl->assign("estasib_opciones",$estasib_opciones);
$datos['sibasi'] = $_SESSION['id_sibasi'];
$datos['id_estasib'] = $_SESSION['id_estasib'];
}
elseif(isset($_SESSION['id_sibasi'])){//Para usuarios de SIBASI y Nivel Local
$sibasi_obj->condicion = "A.idsibasi = $_SESSION[id_sibasi]";
$sibasi_obj->ordenar_por="A.nomsibasi";
$sibasi_opciones = base::poner_1ra_indice($sibasi_obj->leer("A.idsibasi,A.nomsibasi")->fetchAll());
$ficha_tpl->assign("sibasi_opciones",$sibasi_opciones);
$datos['sibasi'] = $_SESSION['id_sibasi'];
}
elseif (isset($_SESSION['region'])) {//Usuarios regionales
$sibasi_obj->condicion = "A.id_region = $_SESSION[region]";
$sibasi_obj->ordenar_por="A.nomsibasi";
$sibasi_opciones = base::poner_1ra_indice($sibasi_obj->leer("A.idsibasi,A.nomsibasi")->fetchAll());
$ficha_tpl->assign("sibasi_opciones",$sibasi_opciones);
}
else{
if($_SESSION['perfil'] == 1 or $_SESSION['perfil']==5){
$sibasi_obj->ordenar_por="A.nomsibasi";
$sibasi_opciones = base::poner_1ra_indice($sibasi_obj->leer("A.idsibasi,A.nomsibasi")->fetchAll());
$ficha_tpl->assign("sibasi_opciones",$sibasi_opciones);
}
}
$encabezado= array('nombre_pantalla'=>'DETALLE DE VARIABLES DE FAMILIAS',
'pantalla_actual'=>'1',
'total_pantallas'=>'1',
'archivo_ayuda'=>'');
$ficha_tpl->assign('datos',$datos);
$ficha_tpl->assign('encabezado',$encabezado);
$ficha_tpl->assign('archivo_accion',$nombre_archivo_actual);
$ficha_tpl->assign('informe','detalle_familias');
// Presentar la plantillas
$ficha_tpl->display("informes/prmElegirEcos.tpl");
}
function imprimir(){
global $ficha_tpl, $nombre_archivo_actual,$ruta_plantilla;
//agregando el encabezado para exportar a excel y la inicialización de la variable $_POST según sea el caso
if($_GET['excel']=='false'){
header("Content-type: application/vnd.oasis.opendocument.spreadsheet");
header("Content-Disposition: attachment; filename=familias_ecosf.xls");
$_POST=$_GET;
}
else{
$_POST['excel']='true';
}
//Crear objetos necesarios
$estasib_obj = new estasib;
$familia_obj = new familia;
$variable_obj = new variable;
$anio_obj = new anio;
//Obtener fecha actual
$fecha=getdate();
$anho=$fecha['year'];
$mes=$fecha['mon'];
$dia=$fecha['mday'];
$fecha_actual=$dia.'/'.$mes.'/'.$anho;
$traduccion = array("á" => "&aacute;","é" => "&eacute;", "í" => "&iacute;","ó" => "&oacute;", "ú" => "&uacute;",
"Á" => "&Aacute;","É" => "&Eacute;", "Í" => "&Iacute;","Ó" => "&Oacute;", "Ú" => "&Uacute;",
"ñ"=>"&ntilde;","Ñ"=>"&Ntilde;");
$anio_obj->condicion="activo=true";
$anio=$anio_obj->leer("anio")->fetch(PDO::FETCH_ASSOC);
//el año del que se desea obtener la información
$fecha_inicio=$anio['anio'].'-01-01';
$fecha_fin=$anio['anio'].'-12-31';
$estasib_obj->condicion="A.idestasib='$_POST[ucsf]'";
$datos_eco=$estasib_obj->leer("A.estasib,F.idregion,A.sibasi")->fetch(PDO::FETCH_ASSOC);
$estasib = strtr($datos_eco['estasib'], $traduccion);
$numero_familias=$familia_obj->contar_familias_hist($datos_eco['idregion'],$datos_eco['idsibasi'],'','',$_POST['ucsf'],$_POST['area'],$_POST['zona'],$anio['anio']);
//Recuperar el detalle
if($numero_familias['cuantas']==0){
echo"<h2><br>No existe informacion para generar el informe de acuerdo a los parámetros introducidos.<br>
Favor cerciórese de que en el año seleccionado existe levantamiento ó actualización de Ficha Familiar.<br><br><br><br><br>";
exit;
}
//Leyendo las variables para presentar los encabezados de las filas
$variable_obj->condicion="(A.fechainicio<='$fecha_inicio' AND A.fechafin is null) AND
A.tipo_referente='c' AND A.variablepadre is null AND E.anio='$anio[anio]'";
$variable_obj->ordenar_por="E.numerocampo";
$variables=$variable_obj->leer("A.idvariable,A.denominacion,E.numerocampo")->fetchAll(PDO::FETCH_ASSOC);
foreach ($variables as $key => $valor) {
$variables[$key]['denominacion'] = strtr($valor['denominacion'], $traduccion);
}
//SQL para consultas las familias
$detalle_familias = $familia_obj->detalle_familias($anio['anio'],$_POST['ucsf'],$_POST['area'],$_POST['zona']);
$i=0;
foreach($detalle_familias as $f){
if($f['codigo_area'] == 'R')
$lineaDetalle[$i]['dpto_digestyc'] = $f['dpto_digestyc'].'-'.$f['munic_digestyc'].'-'.$f['codigo_area'].'-'.$f['canton_digestyc'].'-'.$f['codigo_zona'].'-'.$f['numerovivienda'].'-'.$f['numerofamilia'];
else
$lineaDetalle[$i]['dpto_digestyc'] = $f['dpto_digestyc'].'-'.$f['munic_digestyc'].'-'.$f['codigo_area'].'-'.$f['col_digestyc'].'-'.$f['codigo_zona'].'-'.$f['numerovivienda'].'-'.$f['numerofamilia'];
$lineaDetalle[$i]['direccion'] = strtr($f['direccion'], $traduccion);
$lineaDetalle[$i]['situacionvivienda'] = $f['situacionvivienda'];
$lineaDetalle[$i]['nombrereligion'] = strtr($f['nombrereligion'], $traduccion);
$lineaDetalle[$i]['nombreetnia'] = strtr($f['nombreetnia'], $traduccion);
$lineaDetalle[$i]['nombretipofamilia'] = $f['nombretipofamilia'];
foreach($variables as $key => $fila_variable){
$lineaDetalle[$i][$fila_variable['numerocampo']]=$f['idvariable_'.$fila_variable['idvariable']];
}
$i++;
}
$enlace_excel="<A href='../informes/ecos_familias.php?pagina=imprimir&anio=$_POST[anio]&ucsf=$_POST[ucsf]&area=$_POST[area]&zona=$_POST[zona]&excel=false' target='_blank'>
<IMG SRC='/imagenes/oocalc.png' />&nbsp;Exportar&nbsp;a&nbsp;Hoja de C&aacute;lculo</A>";
$titulo= array('observaciones'=>'<BR>',
'titulo_reporte'=>'DETALLE DE VARIABLES DE FAMILIA<BR>'.$estasib,'archivo_inicial'=>"$nombre_archivo_actual",
'enlace_excel'=>"$enlace_excel",'excel'=>"$_POST[excel]",'enlace_grafico'=>"$enlace_grafico");
$ficha_tpl->assign('encabezado',$titulo);
$ficha_tpl->assign('lineaDetalle',$lineaDetalle);
$ficha_tpl->assign('fechainicio',$_POST['fechainicio']);
$ficha_tpl->assign('fechafin',$_POST['fechafin']);
$ficha_tpl->assign('fechaactual',$fecha_actual);
$ficha_tpl->assign('variables',$variables);
$ficha_tpl->assign('ucsf',$nombre_eco);
$ficha_tpl->display($ruta_plantilla);
}
if ($_GET['pagina']!=null)
$pagina=$_GET['pagina'];
else
$pagina=$_POST['pagina'];
switch ($pagina){
case crypt('emitir_informe',$pagina):
emitir_informe();
break;
case 'imprimir':
imprimir();
break;
}
?>