MDIS/docs/Project.org

2.4 KiB

MDIS

MDIS

MDIS es una sistema de información que permite la gestión de una consulta médica.

Funcionalidades

  • Gestión de Usuarios
  • Gestión de Pacientes
  • Gestión de Citas
  • Gestión de Vacaciones
  • Gestión de Informes

Tecnologías

  • PHP
  • MySQL
  • Javascript (Jquery)
  • Nix

Arquitectura

/coolneng/MDIS/media/commit/d013659e74330b74d544d803bfe8aaa286ac674b/docs/assets/F1.png
Arquitectura del sistema

Es un sistema web clásico, con la característica de que las consultas a la base de datos se realizan mediante PDO, para evitar vulnerabilidades del tipo inyección de SQL.

Además de ésto, no hacemos ninguna consulta SQL fuera del archivo database.php, lo que nos permite separar la lógica interna de la presentación.

Despliegue

El desarrollo y despliegue del sistema se han hecho gracias a Nix, un gestor de paquetes que permite entornos de desarrollo y despliegue reproducibles.

A continuación mostramos el código que defino el entorno:

{ pkgs ? import <nixpkgs> { } }:

with pkgs;

mkShell {
  # Definición de los paquetes
  buildInputs = [ php74 php74Extensions.pdo_mysql mysql57 ];

  # Comandos que se ejecutan al entrar en la nix-shell
  shellHook = ''
    pkill mysql
    rm -rf .mysql && mkdir .mysql

    mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --initialize-insecure
    mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --skip-networking &
    sleep 1

    mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql

    alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'

    php -S localhost:8000
  '';
}

Como podemos ver, Nix nos permite:

  • Instalar las dependencias necesarias, en el ámbito de una shell
  • Ejecutar una base de datos temporal
  • Inicializar la base de datos
  • Lanzar el servidor web interno de PHP (se podría reemplazar por Apache/Nginx/…)

El único comando que tenemos que ejecutar es:

nix-shell

Y ya dispondremos de un sistema funcional, y accesible en la URL localhost:8000.