Estás viendo una versión antigua de esta página. Ve a la versión actual.

Comparar con el actual Ver el historial de la página

« Anterior Versión 5 Siguiente »

Índice de contenidos:



Descripción del proceso programático del cálculo de aforo

Aquí vamos a explicar el comportamiento que se sigue a la hora de desarrollar el cálculo de aforo. Para ello tendremos los siguientes elementos

  • AFORO_SALA: Es una tabla que contendrá la información de qué salas están asociadas con qué colas y su aforo máximo. Las columnas serán
    • ID_SALA: Id de la sala
    • COD_COLA: Código de la cola
    • FECHA: Marca temporal con la modificación o inserción del registro
    • AFORO_MAXIMO: Aforo máximo de la sala
  • AFORO_SALA_TEMPORAL: Es una tabla temporal donde se irá calculando la disponibilidad de las salas, esta tabla es volátil por sesión y evita el interbloqueo. Las columnas serán
    • ID_SALA: Id de la sala
    • TIPO_SALA: Tipo de sala, pueden ser:
      • 0: Preferente
      • 1: Ordinaria
      • 2: Desborde
      • 3: Ordinaria no relacionada
      • 4: Desborde no relacionada
    • COD_COLA: Código de la cola
    • TIPO_HUECO: El tipo de hueco disponible, pueden ser:
      • 0: Reserva mínima de hueco
      • 1: General
    • TOTAL_HUECO: Total de hueco que se tiene la sala para esa cola teniendo en cuenta el tipo de hueco y de sala
    • HUECO_OCUPADO: Número de personas en la sala para esa cola
    • HUECO_OCUPADO_TOTAL: Número total de personas en la sala, independientemente de la cola
  • PK_SALAS_DESBORDE: Paquete con todo el código del cálculo de aforo


Workflow

En el paquete de oracle tenemos un procedimiento llamado p_reajusta_aforo, este lo primero que hará es borrar la tabla aforo_sala y la vuelve a recalcular. Para ello itera por todos los vista v_ges_salas_x_entorno para tener la relación de todas las salas en cada uno de los entornos.

Ahora para cada iteración tenemos la sala y el entorno, ahora iteraremos por todas las colas de dicho entorno guardamos en la tabla aforo_sala la relación de la sala con la cola y su aforo máximo. Finalmente miramos todas las salas de espera de desborde y sacamos las salas padres de estas, y guardamos la relación de la sala de desborde con cada una de las colas del entorno de cada una de su sala padre.

Así tenemos relleno la tabla aforo_sala. Este proceso se debe de colocar en un scheduler para que cada día se ejecute y calcule nuevamente los datos ya que puede haber modificación de la configuración de los entornos, añadiendo o quitando salas y/o colas.


Después de esto tenemos el procedimiento llamado p_calcula_sala_espera_nuevo, en este método lo que haremos será realizar el cálculo de la tabla aforo_sala_temporal para una cola concreta (con todas las salas que tenga asociadas) y luego seleccionaremos de la tabla temporal la sala con mayor disponibilidad.

Para ello llamamos al procedimiento p_calcula_tabla_temporal_cola con la cola en cuestión. Este procedimiento se encarga de rellenar la tabla temporal, lo primero que realiza es una iteración por las salas de la cola en cuestión usando la tabla aforo_sala. Por cada registro llama al procedimiento p_calcula_tabla_temporal junto con la cola, la sala y el entorno.

p_calcula_tabla_temporal lo primero que hace es ver si la sala es de desborde o no para poner el tipo ordinario o de desborde, una vez asignado esto, mira si la cola está sentada en alguna de las consultas.

  • Si no está sentado invoca el procedimiento p_calcula_tabla_temporal_final (el cual explicaremos más adelante) con el tipo de sala que se asignó y el tipo de hueco 1.
  • Si está sentado tenemos que ver si la sala de que obtenemos por parámetro es sala preferente para dicha consulta
    • Si es sala preferente llamamos a p_calcula_tabla_temporal_final con el tipo de sala a 0 y el tipo de hueco a 0 y finalmente se vuelve a llamar con el tipo hueco a 1
    • Si la sala no es preferente miramos si la consulta tiene otra sala distinta a esta que sea preferente
      • Si tiene otra sala como preferente no hacemos nada con lo que se llamará a p_calcula_tabla_temporal_final con el tipo de sala que se asignó (1 o 2) y tipo de hueco 1
      • Si no tiene sala preferente dicha consulta, se calcula la sala con mayor aforo asociada a dicha consulta y se comprueba si es la sala actual
        • Si es la sala actual llamamos a p_calcula_tabla_temporal_final con el tipo de sala 1 y el tipo de hueco 0 y finalmente se vuelve a llamar con el tipo de hueco a 1
        • Si no es la sala actual no hacemos nada con lo que se llamará a p_calcula_tabla_temporal_final con el tipo de sala que se asignó (1 o 2) y tipo de hueco 1

Ahora vamos a proceder a explicar el funcionamiento del procedimiento p_calcula_tabla_temporal_final. Esta función recibe como parámetros lo siguiente

  • P_ID_SALA: Id de la sala
  • P_COD_COLA: Código de la cola
  • P_TIPO_SALA: Tipo de sala
  • P_TIPO_HUECO: Tipo de hueco

Lo primero que hacemos es  mirar si la cola existe, si existe asignamos la reserva mínima de huecos a la reserva de la cola, si no la ponemos a 0. Ahora miramos si existe ya la entrada en la tabla temporal para saber si tenemos que actualizar la entrada o insertarla. Ademas sacamos valores como

  • PERSONAS_EN_SALA: Personas que hay en la sala mirando la tabla seguimiento las personas que estén en dicha sala
  • V_PERSONAS_SENTADAS: Personas que hay en la sala de dicha cola mirando la tabla seguimiento las personas que estén en dicha sala y pertenezcan a la cola
  • V_AFORO_MAX_SALA: Aforo máximo de la sala


Consulta para la verificación de las pruebas

Query
SELECT

    id_sala,

    ( CASE

        WHEN tipo_sala = 0 THEN '0_PREFERENTE'

        WHEN tipo_sala = 1 THEN '1_ORDINARIA'

        WHEN tipo_sala = 2 THEN '2_DESBORDE'

        WHEN tipo_sala = 3 THEN '3_ORDINARIA_NO_RELACIONADA'

        WHEN tipo_sala = 4 THEN '4_DESBODE_NO_RELACIONADA'

    END ) AS tipo_sala,

    cod_agenda,

    fecha,

    ( CASE

        WHEN tipo_hueco = 0 THEN '0_RESERVA'

        WHEN tipo_hueco = 1 THEN '1_GENERAL'

    END ) AS tipo_hueco,

    ( CASE

        WHEN tipo_hueco = 0 THEN (

            SELECT

                reservamin_huecos_sala

            FROM

                agenda

            WHERE

                cod_agenda = af.cod_agenda

        )

        WHEN tipo_hueco = 1 THEN (

            SELECT

                aforo_maximo

            FROM

                sala_espera

            WHERE

                id_sala = af.id_sala

        )

    END ) AS total_aforo,

    ( CASE

        WHEN tipo_hueco = 0 THEN (

            SELECT

                reservamin_huecos_sala

            FROM

                agenda

            WHERE

                cod_agenda = af.cod_agenda

        )

        WHEN tipo_hueco = 1 THEN total_hueco

    END ) AS aforo_por_tipo_hueco,

--TOTAL_HUECO as CALC_TEMP,

    hueco_ocupado         AS pac_en_sala_y_cola,

    hueco_ocupado_total   AS pac_en_sala_de_todas_colas,

    ( total_hueco - hueco_ocupado_total ) AS hueco_disponibles

FROM

    aforo_sala af

WHERE

    cod_agenda = 'AMIAG1126'

ORDER BY

    tipo_sala ASC,

    tipo_hueco ASC,

    ( total_hueco - hueco_ocupado_total ) DESC,

    ( hueco_ocupado_total - hueco_ocupado ) DESC;





Prueba 1. llamar a sala con una sala preferente.

 

Prueba con una sola sala verificando el funcionamiento:

  • De salas preferentes
  • De finalización de aforo disponible
  • De cambio de consulta en la que se encuentra el profesional

Configuración:

  • Entorno: ENTAMI-45
  • Salas: 1 (SALA AMIAN TEST 1 – 662)
    • Configuración:
      • Aforo Máximo: 3
      • Consultas asociadas: Consulta 1, 2
    • Salas de Desborde: 0
    • Consultas: 2
      • C1 (CSAMI1)
        • Configuración
          • Preferente: Sala1
        • C2 (CSAMI2)
          • Configuración
            • Preferente: Sala1
          • Colas: 2
            • Cola1 (AMIAG1026):
              • Configuración
                • RMH: 1
              • Cola 2 (AMIAG1027):
                • Configuración
                  • RMH: 0


Datos iniciales:

(EXPLICAR LAS COLUMNAS)

Pasos:

  1. Confirmar paciente de Cola 1
    1. Se dirige a la única sala disponible

     

  1. Sentar al médico en la consulta 1 llamando al paciente anteriormente confirmado
    1. Para la agenda AMIAG1026 se cambia su tipo de sala a sala Preferente ya que el profesional se ha sentado en la Consulta 1 (CSAMI1) y tiene configurado como preferente la Sala1 (662).
    2. Aparecen dos entradas para esta sala debido a la reserva minima de huecos, en este caso tenemos una entrada para el tipo de hueco de reserva donde podemos ver que el total de huecos es el número de reserva, por otro lado tenemos la línea con tipo de hueco 1 (general) donde nos indica la disponibilidad de la sala para esa agenda de manera general (no reservado)
    3. Para la cola AMIAG1027(Cola 2) la sala 1 (662) sigue siendo sala ordinaria y vemos que tiene ahora una disponibilidad menor ya que se le resta la reserva mínima de huecos realizada por la cola 1 (1026)




  1. Asignar no Acude al paciente
    1. Cuando le damos a no acude al paciente, este vuelve a la sala de donde vino inicialmente, ocupando así la reserva mínima de esta cola, para el tipo de hueco 1 (no reserva) sigue habiendo disponible dos huecos más
    2. Para la cola 2 (1027) ahora la disponibilidad de la sala será de 2 ya que tiene un hueco ocupado por la cola 1 (1026) y no hay más huecos reservados
  2. Confirmar paciente de Cola 1
  3. Confirmar paciente de Cola 2
  4. Confirmar paciente de Cola 1
  5. Llamar a paciente de Cola 1 en consulta 1
  6. Alta
  7. Llamar a paciente de Cola 1 en consulta 2
  8. Alta
  9. Llamar a paciente de Cola 2 en consulta 2
  10. Alta
  11. Llamar al paciente sin sala en la consulta 2
  12. Alta



Prueba 2. Llamar a dos salas con una de ellas como sala preferente.

Prueba con dos salas verificando el funcionamiento:

  • De salas preferentes
  • Consultas sin sala preferente
  • Uso de salas del entorno no asociadas a la consulta cuando la asociada se queda sin aforo
  • De finalización de aforo disponible
  • De cambio de consulta en la que se encuentra el profesional

Configuración:

  • Entorno: ENTAMI-46
  • Salas: 2
    • S1(667)
      • Configuración:
        • Aforo Máximo: 3
        • Consultas asociadas: Consulta 1,2
      • S2(668)
        • Configuración:
          • Aforo Máximo: 4
          • Consultas asociadas: Consulta 2


  • Salas de Desborde: 0
  • Consultas: 2
    • C1 (T2C1)
      • Configuración
        • Preferente: NO
      • C2 (T2C2)
        • Configuración
          • Preferente: Sala1
        • Colas: 2
          • Cola1 (1125)
            • Configuración
              • RMH: 1
            • Cola 2 (1126)
              • Configuración
                • RMH: 1


Datos iniciales:

(EXPLICAR LAS COLUMNAS)

Pasos:

  1. Confirmar cola2
  2. Llamar cola 2 consulta 2
  3. No acude
  4. Confirmar cola 2
  5. Confirmar cola 2
  6. Confirmar cola 2
  7. Confirmar cola 2
  8. Confirmar paciente Cola1
  9. Llamar a cola 1 en consulta 1 (QUITA EL PREFERENTE PARA EL TIPO HUECO GENERAL EN LA SALA 1 PARA LA CONSULTA 2)
  10. No Acude
  11. Confirmar paciente Cola 1
  12. Confirmar paciente Cola 1
  13. Llamar a cola2 en consulta 1
  14. Alta
  15. Llamar a cola2 en consulta 1
  16. Alta
  17. Confirmar cola1
  18. Confirmar cola1



Prueba 3.

pruebas de llenar salas ordinarias enteras, y comenzar a llenar la de desborde. Despues vaciar la ordinaria, para que vaya moviendo personas de la de desborde a la ordinaria, cada vez que llamo de la ordinaria, debe de automáticamente mover de la de desborde a la ordinaria, y aunque haya llamado a la ordinaria, verse el hueco en la de desborde.

Prueba con varias salas verificando el funcionamiento:

  • De salas desborde
  • Llamada de desborde a ordinaria
  • Cambio de aforo en vuelo

Configuración:

  • Entorno: ENTAMI-47
  • Salas: 2
    • S1
      • Configuración:
        • Aforo Máximo: 3
        • Consultas asociadas: Consulta 1,2
      • S2
        • Configuración:
          • Aforo Máximo: 4
          • Consultas asociadas: Consulta 2


  • Salas de Desborde: 1
    • S3
      • Configuración:
        • Aforo Máximo: 90
        • Sala padre: S1, S2
      • Consultas: 2
        • C1
          • Configuración
            • Preferente: Sala 1
          • C2
            • Configuración
              • Preferente: Sala 2
            • Colas: 2
              • Cola1
                • Configuración
                  • RMH: 1
                • Cola 2
                  • Configuración
                    • RMH: 1


Pasos:

  1. Confirmar cola2
  2. Llamar cola2 consulta2
  3. No acude
  4. Confirmar cola2
  5. Confirmar cola2
  6. Confirmar cola2
  7. confirmar cola1
  8. llamar cola1 consulta1
  9. no acude
  10. confirmar cola1
  11. confirmar cola1
  12. confirmar cola1
  13. llamar cola2 consulta2
  14. alta
  15. llamar cola1 consulta 1 (mover el de la desborde a la sala 1)
  16. alta
  17. cambiar aforo sala 1 a 5
  18. confirmar cola1
  19. confirmar cola1
  20. confirmar cola 1



Prueba 4.

pruebas de llenar salas ordinarias enteras, y comenzar a llenar la de desborde. Despues vaciar la ordinaria, para que vaya moviendo personas de la de desborde a la ordinaria, cada vez que llamo de la ordinaria, debe de automáticamente mover de la de desborde a la ordinaria, y aunque haya llamado a la ordinaria, verse el hueco en la de desborde.

Prueba con varias salas verificando el funcionamiento:

  • De salas desborde
  • Llamada de desborde a ordinaria
  • Cambio de aforo en vuelo

Configuración:

  • Entorno: ENTAMI-48
  • Salas: 2
    • S1
      • Configuración:
        • Aforo Máximo: 6
        • Consultas asociadas: Consulta 1,2
      • S2
        • Configuración:
          • Aforo Máximo: 20
          • Consultas asociadas: Consulta 2


  • Salas de Desborde: 0
  • Consultas: 2
    • C1
      • Configuración
        • Preferente: Sala 1
      • C2
        • Configuración
          • Preferente: Sala 1
        • Colas: 2
          • Cola1
            • Configuración
              • RMH: 2
            • Cola 2
              • Configuración
                • RMH: 2


Pasos:

  1. Confirmar cola1
  2. Llamar cola1 consulta1
  3. No acude
  4. Confirmar cola2
  5. Llamar cola2 consulta2
  6. No acude
  7. Confirmar cola1
  8. confirmar cola1
  9. confirmar cola1
  10. confirmar cola2
  11. confirmar cola2
  12. cambiar reserva mínima de huecos cola 1 a 10
  13. confirmar cola2
  14. confirmar cola1
  15. cambiar reserva mínima de hueco cola 1 a 1
  16. llamar cola1 consulta 1
  17. alta
  18. confirmar cola2






Llamar a dos salas sin sala preferente
cambiar el aforo máximo de la sala al vuelo
cambiar la reserva mínima para las agendas al vuelo
cambiar al médico de consulta en medio de la prueba al vuelo

  • Sin etiquetas