Example #1
0
    def seccion_k(self):
        db1 = self.dset
        cortado = pd.cut(db1.Diff_salida_enellugar.dt.seconds,
                         [0, 20, 40, 1000000],
                         labels=['Menos 20 min', '20 a 40 min', 'Más 40 min'])
        result = pd.crosstab(db1['Bas_avan'],
                             cortado,
                             margins=True,
                             margins_name='Total',
                             dropna=False)
        result.columns.name = 'Tiempo llegada al lugar'
        result.index.name = 'Tipo Móvil'

        titulo = 'Sección K: INTERVENCIONES PRE HOSPITALARIAS (SAMU)'
        texto = 'Se asume que todas las intervenciones críticas son realizadas \
        por móviles avanzados y que las no-críticas por móviles básicos. Esto \
        determina que las casillas de las prestaciones críticas tengan valores \
        de cero para móviles básicos y las prestaciones no-críticas tengan \
        valores cero para móviles avanzados. \n \n'

        espacios = '\n \n'

        print(titulo, file=open(self.informe_arch, 'a'))
        print(texto, file=open(self.informe_arch, 'a'))
        print(result, file=open(self.informe_arch, 'a'))
        print(espacios, file=open(self.informe_arch, 'a'))
        pcolor('Calculo y escribo la sección K', 'INFO')
        pcolor(result, 'INFO')
Example #2
0
def descripcion_BD(BD):
    pcolor('Estas son las columnas', 'INFO')
    pcolor(BD.columns, 'INFO')

    pcolor('Descripción del tiempo', 'INFO')
    pcolor('\n', 'INFO')
    pcolor(BD.Fecha.describe(), 'INFO')
Example #3
0
    def archivo_infome(self, nombrearchivo=None):
        if nombrearchivo:
            self.informe_arch = '../temp/' + nombrearchivo
        else:
            self.informe_arch = '../temp/Informe.txt'

        print(' ', file=open(self.informe_arch, 'w'))
        pcolor('Se crea el archivo:', 'INFO')
        pcolor(self.informe_arch, 'INFO')
Example #4
0
def seccion_n(dset):
    global result_n2, result_n1
    db1 = dset

    # Parametrizo para las patologías del REM8
    politrauma = [
        'Accidente vehicular o transporte. Atropellos', 'Caídas graves',
        'Accidente múltiples víctimas (cualquier razón)'
    ]

    db1['Patol'] = np.nan
    db1.loc[db1['Submotivo del Llamado'].isin(politrauma), 'Patol'] = 'PoliTMT'
    db1.loc[db1['Submotivo del Llamado'] ==
            'Colapso respiratorio o circulatorio. PCR. Asfixia',
            'Patol'] = 'PCR'
    db1.loc[db1['Submotivo del Llamado'] == 'Dolor de pecho', 'Patol'] = 'SCA'
    db1.loc[db1['Patol'].isnull(), 'Patol'] = 'Otros'

    db1['Patol'] = pd.Categorical(
        db1['Patol'],
        categories=['PCR', 'PoliTMT', 'SCA', 'Otros'],
        ordered=True)

    # Parametrizo para los sexos del REM8
    db1.loc[db1['Género'] == 'Femenino', 'Género'] = 'Fem'
    db1.loc[db1['Género'] == 'Masculino', 'Género'] = 'Mas'

    db1['Género'] = pd.Categorical(db1['Género'],
                                   categories=['Mas', 'Fem'],
                                   ordered=True)

    # escribo la tabla
    dum1 = pd.cut(db1.Edad, range(0, 90, 5), right=False)
    db1['Patol'].value_counts(sort=False)
    result0 = pd.crosstab(db1['Patol'], db1['Género'])  # total

    result1 = pd.crosstab(db1['Patol'],
                          [dum1, db1['Género']])  # dividida por edad
    # (tuve que setear las
    # las columnas maximas
    # de pandas)

    # escribo en el informe
    titulo = ' Sección N: TRASLADO SECUNDARIO (Desde un Establecimiento a Otro)'
    texto = 'Es una tabla larga, por lo que se divide en varios espacios '
    espacios = '\n \n'

    print(titulo, file=open(informe_arch, 'a'))
    print(texto, file=open(informe_arch, 'a'))
    print(result0, file=open(informe_arch, 'a'))
    print(result1, file=open(informe_arch, 'a'))

    pcolor('Calculo y escribo la sección N', 'INFO')
    result_n1 = result0
    result_n2 = result1
    return (result_n2)
Example #5
0
    def __init__(self):
        pcolor('Importaste la clase Analizador', 'HEADER')
        print('Las funciones son:')
        print('archivo_infome')
        print('asignador_dataset')
        print('rango_alcance')
        print('seccion_k')

        self.informe_arch = ''
        self.dset = pd.DataFrame()
Example #6
0
 def __init__(self):
     pcolor('Has importado la clase importadora de BDs', 'HEADER')
     print('Las funciones son:')
     print('dbexistentes')
     print('importo_BD')
     print('complejidad_ambulancia')
     print('descripcion_BD')
     self.dir_propuesto = '../'
     self.directorio = ''
     self.BD = pd.DataFrame()
Example #7
0
def complejidad_ambulancia(BD):
    BD['Bas_avan'] = BD['Tipo Despachado']
    BD.loc[BD['Tipo Despachado'] == 'm1', 'Bas_avan'] = 'Básico'
    BD.loc[BD['Tipo Despachado'] == 'm2', 'Bas_avan'] = 'Avanzado'
    BD.loc[BD['Tipo Despachado'] == 'm3', 'Bas_avan'] = 'Avanzado'
    BD.loc[BD['Tipo Despachado'] == 'x5', 'Bas_avan'] = 'Avanzado'
    BD['Bas_avan'] = pd.Categorical(BD['Bas_avan'],
                                    categories=['Básico', 'Avanzado'],
                                    ordered=True)
    pcolor('Parametrizo complejidad móvil', 'INFO')
Example #8
0
 def base_ambulancia(self, base_ambulancia=None):
     pcolor('Hay que elegir la base que se quiere calcular', 'INFO')
     if base_ambulancia:
         if base_ambulancia == 'SAMU':
             pass
         elif base_ambulancia == 'Quilpué':
             sector = self.BD['Nombre Vehículo'].str.contains('R3') == True
             self.BD = self.BD[sector]
     else:
         pcolor('[1] Todo SAMU, [2] Quilpué')
         decide = input('Elige [1/2]')
         if decide == '1':
             pass
         elif decide == '2':
             sector = self.BD['Nombre Vehículo'].str.contains('R3') == True
             self.BD = self.BD[sector]
Example #9
0
    def seccion_l(self):
        db1 = self.dset

        test = db1.loc[db1['Motivo del Llamado'] != 'Traslados']
        result = test.groupby(['Categoría Vehículo', 'Bas_avan'])['Id'].count()
        result.index.names = ['Categoría Vehículo', 'Tipo móvil']

        titulo = ' Sección L:  TRASLADOS PRIMARIOS A UNIDADES DE URGENCIA'
        texto = ' '
        espacios = '\n \n'

        print(titulo, file=open(self.informe_arch, 'a'))
        print(texto, file=open(self.informe_arch, 'a'))
        print(result, file=open(self.informe_arch, 'a'))
        print(espacios, file=open(self.informe_arch, 'a'))
        pcolor('Calculo y escribo la sección L', 'INFO')
        pcolor(result, 'INFO')
Example #10
0
    def rango_alcance(self):
        # los tiempos de z17 al z8 los divido según requisito planilla
        db1 = self.dset
        titulo = 'REM 8'

        result = 'Este informe abarca desde el {inicio} al {fin}, está basado\
        en la la/las siguientes comunas {comunas} con {cantidad} casos cada \
        una'.format(inicio=db1.Fecha.describe()['first'].strftime('%d-%m-%Y'),
                    fin=db1.Fecha.describe()['last'].strftime('%d-%m-%Y'),
                    comunas=db1.Comuna.value_counts().head().index.values,
                    cantidad=db1.Comuna.value_counts().head().values)
        espacios = '\n \n'

        print(titulo, file=open(self.informe_arch, 'a'))
        print(result, file=open(self.informe_arch, 'a'))
        print(espacios, file=open(self.informe_arch, 'a'))
        pcolor('Cabecera del informe', 'INFO')
        pcolor(result, 'INFO')
Example #11
0
    def seccion_m(self):
        db1 = self.dset

        test = db1.loc[db1['Motivo del Llamado'] == 'Traslados']
        result = test.groupby(['Categoría Vehículo', 'Bas_avan'])['Id'].count()
        result.index.names = ['Categoría Vehículo', 'Tipo móvil']
        result

        titulo = ' Sección M: TRASLADO SECUNDARIO (Desde un Establecimiento a Otro)'
        texto = ' '
        espacios = '\n \n'

        print(titulo, file=open(self.informe_arch, 'a'))
        print(texto, file=open(self.informe_arch, 'a'))
        print(result, file=open(self.informe_arch, 'a'))
        print(espacios, file=open(self.informe_arch, 'a'))
        pcolor('Calculo y escribo la sección M', 'INFO')
        pcolor(result, 'INFO')
Example #12
0
 def cortar(self):
     pcolor(
         f'Elegiste desde el {self.lim_inferior} al {self.lim_superior},',
         'INFO')
     pcolor(
         f'Elegiste las comunas de {self.BD.Comuna.value_counts().index[0]}',
         'INFO')
     self.BD = self.BD.loc[(self.BD.Fecha > self.lim_inferior)
                           & (self.BD.Fecha < self.lim_superior)]
     pcolor(self.BD.Fecha.describe(), 'INFO')
Example #13
0
def main():
    # Propongo las bases de datos
    pcolor('Este script asegura las dependencias', 'HEADER')
    dir_lectura = dbexistentes()
    pcolor('Se utilizará el siguiente drectorio', 'HEADER')
    pcolor(dir_lectura, 'OK')

    # asigno las bases de datos (importo)
    db_reportebase = importo_BD(dir_lectura)
    print(db_reportebase.info())

    # Creo variable especial para REM8 de complejidad
    complejidad_ambulancia(db_reportebase)

    # Describo a grandes rasgos
    descripcion_BD(db_reportebase)
    global BD
    BD = db_reportebase.copy()
Example #14
0
    def limites(self):
        pcolor('Asumo que el mes a calcular es:', 'INFO')
        pcolor(self.BD.Fecha.describe()['last'].strftime('%m-%Y'), 'INFO')
        decide = input('Aceptas? [s/n]') or 's'

        if decide == 's':
            m = self.BD.Fecha.describe()['last'].month
            y = self.BD.Fecha.describe()['last'].year
            dia_final = calendar.monthrange(y, m)[1]

            dum = str(y) + str(m) + str(1)
            dum1 = str(y) + str(m) + str(dia_final)

            self.lim_inferior = pd.to_datetime(dum, format='%Y%m%d')
            self.lim_superior = pd.to_datetime(dum1, format='%Y%m%d')

        else:
            lee_in = input('Ingresa fecha inical [AAAA-MM-DD]')
            lee_fin = input('Ingresa fecha final [AAAA-MM-DD]')
            self.lim_inferior = pd.to_datetime(lee_in, format='%Y-%m-%d')
            self.lim_superior = pd.to_datetime(lee_fin, format='%Y-%m-%d')

        pcolor('Tu mes listo', 'OK')
Example #15
0
 def __init__(self):
     pcolor('Inicio de submuestra', 'HEADER')
     self.lim_inferior = np.nan
     self.lim_superior = np.nan
     self.BD = pd.DataFrame()
Example #16
0
def dbexistentes():
    # dir_propuesto = '../../../BD/BD_compiladas/'
    dir_propuesto = '../'

    pcolor('Estos son los archivos existentes en ', 'INFO')
    pcolor(dir_propuesto, 'INFO')
    pcolor('Son las siguientes:', 'INFO')

    datos = []
    for dirname, dirnames, filenames in os.walk(dir_propuesto):
        for filename in filenames:
            datos.append(os.path.join(dirname, filename))
    pcolor(datos, 'OK')

    pcolor('Si filtro por reportebase encuentro lo siguiente:', 'INFO')
    dir_propuesto_reportebase = [f for f in datos if 'reportebase' in f]
    pcolor(dir_propuesto_reportebase, 'OK')
    decide = input('Aceptas? [s/n]') or 's'
    if decide == 's':
        pass
    else:
        dir_propuesto_reportebase = input('Favor escribe directorio:')

    return dir_propuesto_reportebase[0]
Example #17
0
 def asignador_dataset(self, dataset):
     self.dset = dataset
     pcolor('Se asigna la base de datos', 'INFO')