Especificación ABM

Ésta es una especificación del juego de funcionalidades mínimas que debe tener un ABM/CRUD. La intención es que sea una aplicación administrativa, es decir, que no se utilice para el monitoreo de pacientes.

La base de datos se crea con los scripts del repositorio de datakeeper.

ABM done with Qt Imagen del ABM realizado con Qt.

Un ABM debe poder:

  • Listar los dispositivos MoSimPa conocidos por la base de datos.
  • Debe ser capaz de realizar la creación, lectura, actualización y borrado de ubicaciones, pacientes e internaciones.

Fechas y horas

La base de datos utiliza todas las fechas y horas con time zones, es decir, usando timestamptz aka 'timestamp with time zone'. Es responsabilidad del ABM de siempre pasar la zona horaria del cliente en las fechas y horas.

Dispositivos

Definidos en la tabla devices.

Los dispositivos son agregados automáticamente por datakeeper. La aplicación deberá ser capaz de mostrar:

  • La MAC, que es utilizada como identificador único.
  • La fecha y hora en la que se vió por primera vez en el sistema.
  • La fecha y hora de la última vez que se obtuvieron datos del mismo. Se actualiza automáticamente cada vez que el dispositivo publica un mensaje en el topic devices/info.
  • (Opcional) Nivel de batería. Actualmente no se muestra porque no se conoce aún la curva de la misma.

Ubicaciones

Definidas en la tabla locations.

CRUD completo para:

  • ID: generado automáticamente por la base de datos.
  • Tipo: definido por el enum location_type.
  • Descripción.

Observar las restricciones en la definición de la tabla.

Pacientes

Definidos en la tabla patients.

CRUD completo para:

  • ID: generado automáticamente por la base de datos.
  • Nombre
  • Apellido
  • Edad
  • Género
  • DNI
  • Comentarios

Observar

  • Las restricciones en la definición de la tabla.
  • Los campos name y surname deben ser simplificados, es decir, sin espacios extra.

Internaciones

Definidas en la tabla internments.

CRUD completo para:

  • ID: generado automáticamente por la base de datos.
  • Fecha de inicio
  • Fecha de finalización: es importante notar que la misma se utilizará después para saber que dispositivos y ubicaciones están disponibles: aquellos que o no figuran en esta tabla o figuran pero esta fecha no es NULL.
  • ID del paciente
  • Nombre y apellido del paciente.
  • Ubicación
  • Dispositivo asociado

El resto de los datos se reservan a los monitores.

Stored procedures

La base de datos cuenta con varios stored procedures para tratar de mantener la coherencia de los datos. Los mismos se encuentran definidos aquí.

Existe un stored procedure para agregar pacientes, ubicaciones e internaciones. El ABM debería hacer uso de los mismos.

Vistas

La base de datos cuenta con varias vistas que resultan convenientes para el ABM. Las mismas se encuentran definidas aquí. Por ejemplo merged_name_surname_patients muestra el nombre y apellidos de un paciente como si fuese un solo campo, mientras que available_locations aplica los filtros necesarios para poder listar las ubicaciones disponibles.