Sistema Gestión de Citas Parte 7: CRUD Pacientes - BITácora de Software

Bitacora de software: Programación web, programación de escritorio, programación de servicios, configuración de servidores, IIS, lenguajes de programación C++, C#, PHP, trinity core, unity, jquery, arduino, etc.

 

domingo, 24 de junio de 2018

Sistema Gestión de Citas Parte 7: CRUD Pacientes

Al igual que con la entrada anterior, dividiré esta entrada en secciones dónde hablare sobre la creación de SP, DAL, BLL y Presentación del CRUD para los pacientes (clientes).

Procedimientos Almacenados

Listar todos los pacientes (activos e inactivos). Obtener un paciente en especifico. Registrar un paciente. Editar un paciente.

Capa de Datos

En la capa de datos tenemos que agregar la clase "PacienteDAL", agregamos la importación para usar los objetos sql (línea 7) y la capa de entidades (línea 8). Así mismo esta clase tendrá su función para el patrón singleton y las funciones respectivas que invocan los SP que creamos anteriormente.

Capa Lógica de Negocio

En este capa agregamos la clase "PacienteBLL", lo nuevo en esta clase se encuentra dentro de la función valida, para ser mas especifico en las líneas 45 a 50, en dónde se valida que el DNI del nuevo paciente no se encuentre registrado en nuestra base de datos, para ello invocamos a la función ListarPacientes (línea 47), como esa función nos retorna una lista de pacientes le podemos aplicar Linq, identificamos los pacientes que tengan el mismo DNI y su id sea diferente al del paciente que estamos por registrar y/o modificar, en caso se encuentre al menos un paciente con el mismo DNI (línea 48), se notifica a través de un mensaje (línea 49).

Capa Presentación: Controlador

En la presentación agregamos el controlador Paciente e invocamos las funciones de la capa lógica de negocio, algo que tenemos que considerar es el hecho que al momento de listar los pacientes, obtenemos tantos los activos como los eliminados de forma lógica (inactivos) por lo tanto al momento de usar la función ListarPacientes tenemos que aplicar un filtro para listar solo aquellos con estado Activo == true (línea 21).

Capa Presentación: Util.js

Tenemos que agregar dos funciones al archivo util.js que nos servirá de ayuda para manejar fechas.
Imagen 1: Funciones agregadas a archivo util.js. (Fuente propia)


  • GetDate: Esta función recibe como parámetro una fecha en formato string, internamente hace uso de la función IsValidDate para validar que la fecha enviada sea valida, entonces la función retorna la fecha en formato datetime para poder trabajarlo en C#.
  • IsValidDate: Valida el formato de una fecha, cuando no pasamos el valor para el parámetro userFormat, se considera que la fecha debe tener el formato dd/mm/yyyy.

Capa Presentación: Vista

Agregamos la vista Index desde el controlador Paciente.
Imagen 2: Agregar vista. (Fuente propia)

Imagen 3: Creación de vista Index. (Fuente propia)

A continuación, insertamos el siguiente código a la vista.

Capa Presentación: Funcionalidad JS

Creamos el archivo MantenedorPacientes.js en la ruta App_CodeJS/Pacientes.
Imagen 4: archivo MantenedorPacientes.js
el código del archivo es:
Todo el código esta contenido dentro de una función anónima, la cuál contiene tres variables: paciente, pacienteIdEliminar y model, la variable paciente sirve para contener la información que se enviará y/o traerá del paciente a registrar/editar, la variable pacienteIdEliminar servirá para identificar a qué paciente se desea eliminar al momento de pulsar sobre el icono eliminar que tendrá cada fila de la tabla donde se lista los pacientes, mientras que la variable model contiene las funciones que permiten interactuar al usuario con la vista.

Las funciones que contiene model,  son las siguiente:

  1. ConfigurarGrilla: Esta función permite asignar la cantidad de columnas que tendrá el data grid.
  2. RecogerDatosFormulario: Esta función recoge los datos escritos en el formulario modal y lo inserta dentro de la variable paciente.
  3. CargarLista: invoca a la función "ListarPacientes" del controlador y carga la información en el data grid.
  4. LimpiarDatosFormulario: Limpia los valores ingresados en los controles del modal.
  5. Guardar: Invoca a la función RecogerDatosFormulario y luego envia la información del paciente a la función "GrabarPaciente", al final la función retornará un objeto del tipo RespuestaSistema el cual contiene la propiedad Correcto, si esa propiedad es devuelta en true, entonces quiere decir que se ha grabado o modificado con éxito el paciente.
  6. Nuevo: Invoca a la función LimpiarDatosFormulario y muestra el modal para ingresar la información del paciente.
  7. Cancelar: Oculta el modal de paciente.
  8. EliminarPaciente: Muestra el modal de preguntar para eliminar un paciente y asigna el id del paciente a eliminar a la variable global pacienteIdEliminar.
  9. Eliminar: envía el id del paciente a eliminar mediante la función "EliminarPaciente" del controlador paciente, la función retornará un objeto del tipo RespuestaSistema el cual contiene la propiedad Correcto, si esa propiedad es devuelta en true, entonces quiere decir que se ha eliminado con éxito el paciente.
  10. CancelarEliminarPaciente: reinicia el valor de la variable pacienteIdEliminar a 0 y cierra el modal para eliminar un paciente.
  11. Obtener: Recibe como parámetro el id del paciente a buscar, luego invoca a la función "ObtenerPaciente" y carga la información del paciente encontrado.
  12. MarcarMenu: Sirve para mantener seleccionado las opciones en el menú principal del sistema.
  13. Inicio: Invoca a función MarcarMenu, asigna las funciones a los eventos de los botones, crea el modal del paciente, configura la grilla, obtiene la información de los pacientes registrados y finalmente muestra el contenido de la página.
Imagen 5: Listado de pacientes. (Fuente propia)


Imagen 6: Modificar Paciente. (Fuente propia)


Imagen 7: Mensaje de alerta al momento de ingresar un paciente con DNI ya existente en la base de datos. (Fuente propia)


Imagen 8: Mensaje de confirmación para la acción eliminar. (Fuente propia)


Imagen 9: Mensaje de éxito para la acción de eliminar. (Fuente propia)

[Descargar Código Fuente / Download Code Source]

No hay comentarios:

Publicar un comentario