Compare commits
62 Commits
bb1b2f077b
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
79cc26b7e5
|
|||
|
997de5c4bf
|
|||
|
6e314bc2a0
|
|||
|
e4c64900d8
|
|||
|
0b91047625
|
|||
|
b0238cc9b0
|
|||
|
6bc9db9117
|
|||
|
5fab7775d4
|
|||
|
1993b0d27e
|
|||
|
393a508136
|
|||
|
92cb51ae60
|
|||
|
88c06ce169
|
|||
|
d3e6b5a549
|
|||
|
5e0285d608
|
|||
|
b9bf92ea55
|
|||
|
77a4a5987e
|
|||
|
a772b300df
|
|||
|
646f97fa79
|
|||
|
d5ea8bec33
|
|||
|
a6262a5b38
|
|||
|
2e2e0b67f0
|
|||
|
3eab99b0f6
|
|||
|
6169388fef
|
|||
|
01902f3757
|
|||
|
c0764276e1
|
|||
|
d013659e74
|
|||
|
9858920b11
|
|||
|
1ee89ef1f5
|
|||
|
21213f993d
|
|||
|
b93df4005b
|
|||
|
63b1b72e88
|
|||
|
f591cb5f2f
|
|||
|
270e4ec03d
|
|||
|
095f22f60f
|
|||
|
befa3b116b
|
|||
|
ea9f92d2df
|
|||
|
35d2b70ab6
|
|||
|
229b03a3c9
|
|||
|
6f3d570285
|
|||
|
e5c6e2d6a2
|
|||
|
554baf39ff
|
|||
|
222194f1f1
|
|||
|
7106239d88
|
|||
|
ac456c2328
|
|||
|
b796f6bf47
|
|||
|
1b80190b11
|
|||
|
cfdf2e8ebc
|
|||
|
0127b3014f
|
|||
|
be7b5d2718
|
|||
|
095b639794
|
|||
|
77e604d385
|
|||
|
322a464eb7
|
|||
|
68b528b960
|
|||
|
61e1f18f42
|
|||
|
a390660a19
|
|||
|
fb430dd8cc
|
|||
|
da6c518d59
|
|||
|
67417b0bfc
|
|||
|
e77f29b393
|
|||
|
e6b26d963b
|
|||
|
219f440b26
|
|||
|
29c6d7bb6d
|
48
README.md
Normal file
48
README.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# MDIS
|
||||||
|
|
||||||
|
This project consists of an Information System for a Medical Institution.
|
||||||
|
|
||||||
|
## Technologies
|
||||||
|
|
||||||
|
- PHP
|
||||||
|
- MySQL
|
||||||
|
- Javascript
|
||||||
|
- Fullcalendar
|
||||||
|
- Jquery
|
||||||
|
- JqueryUI
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- Nix
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Install Nix (compatible with MacOS and Linux):
|
||||||
|
|
||||||
|
``` {.shell}
|
||||||
|
curl -L https://nixos.org/nix/install | sh
|
||||||
|
```
|
||||||
|
|
||||||
|
There are alternative installation methods, if you don\'t want to pipe
|
||||||
|
curl to sh
|
||||||
|
|
||||||
|
2. Clone the repository:
|
||||||
|
|
||||||
|
``` {.shell}
|
||||||
|
git clone https://coolneng.duckdns.org/gitea/coolneng/MDIS
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Change the working directory to the project:
|
||||||
|
|
||||||
|
``` {.shell}
|
||||||
|
cd MDIS
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Enter the nix-shell:
|
||||||
|
|
||||||
|
``` {.shell}
|
||||||
|
nix-shell
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
The website can be accessed via **localhost:8000**
|
||||||
10
README.org
10
README.org
@@ -1,10 +0,0 @@
|
|||||||
* MDIS
|
|
||||||
|
|
||||||
This project consists of an Information System for a Medical Institution.
|
|
||||||
|
|
||||||
** Technologies
|
|
||||||
|
|
||||||
- PHP
|
|
||||||
- MariaDB
|
|
||||||
- Nginx
|
|
||||||
- Docker
|
|
||||||
@@ -8,33 +8,44 @@ GRANT ALL PRIVILEGES ON practica.* TO practica@localhost;
|
|||||||
|
|
||||||
USE practica;
|
USE practica;
|
||||||
|
|
||||||
|
source database/provincias.sql;
|
||||||
|
|
||||||
|
source database/municipios.sql;
|
||||||
|
|
||||||
|
source database/paises.sql;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS paciente (
|
CREATE TABLE IF NOT EXISTS paciente (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nombre VARCHAR(50) NOT NULL,
|
nombre VARCHAR(50) NOT NULL,
|
||||||
apellido VARCHAR(50) NOT NULL,
|
apellido VARCHAR(50) NOT NULL,
|
||||||
fecha_de_nacimiento DATE NOT NULL,
|
fecha_de_nacimiento DATE NOT NULL,
|
||||||
documento_identificativo VARCHAR(50) PRIMARY KEY,
|
documento_identificativo VARCHAR(50) UNIQUE NOT NULL,
|
||||||
tipo_documento VARCHAR(10) NOT NULL,
|
tipo_documento VARCHAR(10) NOT NULL,
|
||||||
direccion VARCHAR(255) NOT NULL,
|
direccion VARCHAR(255) NOT NULL,
|
||||||
localidad VARCHAR(100) NOT NULL,
|
localidad SMALLINT(6) UNSIGNED,
|
||||||
provincia VARCHAR(50) NOT NULL,
|
provincia SMALLINT(6),
|
||||||
pais VARCHAR(100) NOT NULL
|
pais VARCHAR(100) NOT NULL,
|
||||||
|
FOREIGN KEY (localidad)
|
||||||
|
REFERENCES municipios(id_municipio),
|
||||||
|
FOREIGN KEY (provincia)
|
||||||
|
REFERENCES provincias(id_provincia)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS rol(
|
CREATE TABLE IF NOT EXISTS rol(
|
||||||
codigo INT PRIMARY KEY,
|
codigo INT PRIMARY KEY,
|
||||||
nombre VARCHAR(25) NOT NULL
|
nombre VARCHAR(25) NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS usuario(
|
CREATE TABLE IF NOT EXISTS usuario(
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
nombre VARCHAR(50) NOT NULL,
|
nombre VARCHAR(50) NOT NULL,
|
||||||
usuario VARCHAR(50) PRIMARY KEY,
|
usuario VARCHAR(50) UNIQUE,
|
||||||
contraseña VARCHAR(100) NOT NULL,
|
contraseña VARCHAR(100) NOT NULL,
|
||||||
rol INT NOT NULL,
|
rol INT NOT NULL,
|
||||||
especialidad VARCHAR(50),
|
especialidad VARCHAR(50),
|
||||||
correo VARCHAR(100) NOT NULL,
|
correo VARCHAR(100) NOT NULL,
|
||||||
fecha_alta TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
fecha_alta TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
fecha_baja DATE,
|
fecha_baja TIMESTAMP NULL,
|
||||||
FOREIGN KEY (rol)
|
FOREIGN KEY (rol)
|
||||||
REFERENCES rol(codigo)
|
REFERENCES rol(codigo)
|
||||||
);
|
);
|
||||||
@@ -44,56 +55,59 @@ CREATE TABLE IF NOT EXISTS festivo (
|
|||||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
fecha_festivo DATE NOT NULL,
|
fecha_festivo DATE NOT NULL,
|
||||||
tipo_festivo VARCHAR(15) NOT NULL,
|
tipo_festivo VARCHAR(15) NOT NULL,
|
||||||
medico VARCHAR(50),
|
medico INT DEFAULT NULL,
|
||||||
FOREIGN KEY (medico)
|
FOREIGN KEY (medico)
|
||||||
REFERENCES usuario(usuario)
|
REFERENCES usuario(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS calendario (
|
CREATE TABLE IF NOT EXISTS calendario (
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
id INT AUTO_INCREMENT,
|
||||||
hora_inicio_mañana TIME,
|
hora_inicio_mañana TIME,
|
||||||
hora_fin_mañana TIME,
|
hora_fin_mañana TIME,
|
||||||
hora_inicio_tarde TIME,
|
hora_inicio_tarde TIME,
|
||||||
hora_fin_tarde TIME,
|
hora_fin_tarde TIME,
|
||||||
horario VARCHAR(15) NOT NULL,
|
horario VARCHAR(15) NOT NULL,
|
||||||
sabado_habil BOOLEAN,
|
sabado_habil BOOLEAN DEFAULT FALSE,
|
||||||
domingo_habil BOOLEAN,
|
domingo_habil BOOLEAN DEFAULT FALSE,
|
||||||
duracion_cita_por_defecto INT,
|
duracion_cita_por_defecto INT,
|
||||||
medico VARCHAR(50),
|
medico INT,
|
||||||
PRIMARY KEY (id, medico),
|
PRIMARY KEY (id, medico),
|
||||||
FOREIGN KEY (medico)
|
FOREIGN KEY (medico)
|
||||||
REFERENCES usuario(usuario)
|
REFERENCES usuario(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS cita(
|
CREATE TABLE IF NOT EXISTS cita(
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
id INT AUTO_INCREMENT,
|
||||||
fecha DATE NOT NULL,
|
fecha DATE NOT NULL,
|
||||||
hora TIME NOT NULL,
|
hora TIME NOT NULL,
|
||||||
duracion INT,
|
duracion INT,
|
||||||
medico VARCHAR(50) NOT NULL,
|
medico INT NOT NULL,
|
||||||
observaciones VARCHAR(255),
|
observaciones VARCHAR(255),
|
||||||
paciente VARCHAR(50),
|
paciente INT NOT NULL,
|
||||||
PRIMARY KEY (id, medico),
|
PRIMARY KEY (id, medico),
|
||||||
FOREIGN KEY (medico)
|
FOREIGN KEY (medico)
|
||||||
REFERENCES usuario(usuario),
|
REFERENCES usuario(id),
|
||||||
FOREIGN KEY (paciente)
|
FOREIGN KEY (paciente)
|
||||||
REFERENCES paciente(documento_identificativo)
|
REFERENCES paciente(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS informe(
|
CREATE TABLE IF NOT EXISTS informe(
|
||||||
id INT NOT NULL AUTO_INCREMENT,
|
id INT AUTO_INCREMENT,
|
||||||
fecha DATE NOT NULL,
|
fecha DATE NOT NULL,
|
||||||
hora TIME NOT NULL,
|
hora TIME NOT NULL,
|
||||||
paciente VARCHAR(50) NOT NULL,
|
paciente INT NOT NULL,
|
||||||
titulo VARCHAR(100) NOT NULL,
|
titulo VARCHAR(100) NOT NULL,
|
||||||
contenido VARCHAR(255) NOT NULL,
|
contenido VARCHAR(255) NOT NULL,
|
||||||
medico VARCHAR(50) NOT NULL,
|
medico INT NOT NULL,
|
||||||
PRIMARY KEY (id, paciente),
|
PRIMARY KEY (id, paciente),
|
||||||
FOREIGN KEY (medico)
|
FOREIGN KEY (medico)
|
||||||
REFERENCES usuario(usuario),
|
REFERENCES usuario(id),
|
||||||
FOREIGN KEY (paciente)
|
FOREIGN KEY (paciente)
|
||||||
REFERENCES paciente(documento_identificativo)
|
REFERENCES paciente(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO rol (codigo, nombre) VALUES (1, "administrativo");
|
INSERT INTO rol (codigo, nombre) VALUES (1, "administrativo");
|
||||||
INSERT INTO rol (codigo, nombre) VALUES (2, "medico");
|
INSERT INTO rol (codigo, nombre) VALUES (2, "medico");
|
||||||
|
|
||||||
|
INSERT INTO usuario (nombre, usuario, contraseña, correo, rol) VALUES ("Sysadmin", "admin", "chimba", "admin@example.com", 1);
|
||||||
|
INSERT INTO usuario (nombre, usuario, contraseña, correo, rol) VALUES ("Nabil", "nabil", "menisco","doctor@example.com", 2);
|
||||||
|
|||||||
8144
database/municipios.sql
Executable file
8144
database/municipios.sql
Executable file
File diff suppressed because it is too large
Load Diff
247
database/paises.sql
Normal file
247
database/paises.sql
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
CREATE TABLE `paises` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`iso` char(2) DEFAULT NULL,
|
||||||
|
`nombre` varchar(80) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
|
||||||
|
|
||||||
|
INSERT INTO `paises` VALUES(1, 'AF', 'Afganistán');
|
||||||
|
INSERT INTO `paises` VALUES(2, 'AX', 'Islas Gland');
|
||||||
|
INSERT INTO `paises` VALUES(3, 'AL', 'Albania');
|
||||||
|
INSERT INTO `paises` VALUES(4, 'DE', 'Alemania');
|
||||||
|
INSERT INTO `paises` VALUES(5, 'AD', 'Andorra');
|
||||||
|
INSERT INTO `paises` VALUES(6, 'AO', 'Angola');
|
||||||
|
INSERT INTO `paises` VALUES(7, 'AI', 'Anguilla');
|
||||||
|
INSERT INTO `paises` VALUES(8, 'AQ', 'Antártida');
|
||||||
|
INSERT INTO `paises` VALUES(9, 'AG', 'Antigua y Barbuda');
|
||||||
|
INSERT INTO `paises` VALUES(10, 'AN', 'Antillas Holandesas');
|
||||||
|
INSERT INTO `paises` VALUES(11, 'SA', 'Arabia Saudí');
|
||||||
|
INSERT INTO `paises` VALUES(12, 'DZ', 'Argelia');
|
||||||
|
INSERT INTO `paises` VALUES(13, 'AR', 'Argentina');
|
||||||
|
INSERT INTO `paises` VALUES(14, 'AM', 'Armenia');
|
||||||
|
INSERT INTO `paises` VALUES(15, 'AW', 'Aruba');
|
||||||
|
INSERT INTO `paises` VALUES(16, 'AU', 'Australia');
|
||||||
|
INSERT INTO `paises` VALUES(17, 'AT', 'Austria');
|
||||||
|
INSERT INTO `paises` VALUES(18, 'AZ', 'Azerbaiyán');
|
||||||
|
INSERT INTO `paises` VALUES(19, 'BS', 'Bahamas');
|
||||||
|
INSERT INTO `paises` VALUES(20, 'BH', 'Bahréin');
|
||||||
|
INSERT INTO `paises` VALUES(21, 'BD', 'Bangladesh');
|
||||||
|
INSERT INTO `paises` VALUES(22, 'BB', 'Barbados');
|
||||||
|
INSERT INTO `paises` VALUES(23, 'BY', 'Bielorrusia');
|
||||||
|
INSERT INTO `paises` VALUES(24, 'BE', 'Bélgica');
|
||||||
|
INSERT INTO `paises` VALUES(25, 'BZ', 'Belice');
|
||||||
|
INSERT INTO `paises` VALUES(26, 'BJ', 'Benin');
|
||||||
|
INSERT INTO `paises` VALUES(27, 'BM', 'Bermudas');
|
||||||
|
INSERT INTO `paises` VALUES(28, 'BT', 'Bhután');
|
||||||
|
INSERT INTO `paises` VALUES(29, 'BO', 'Bolivia');
|
||||||
|
INSERT INTO `paises` VALUES(30, 'BA', 'Bosnia y Herzegovina');
|
||||||
|
INSERT INTO `paises` VALUES(31, 'BW', 'Botsuana');
|
||||||
|
INSERT INTO `paises` VALUES(32, 'BV', 'Isla Bouvet');
|
||||||
|
INSERT INTO `paises` VALUES(33, 'BR', 'Brasil');
|
||||||
|
INSERT INTO `paises` VALUES(34, 'BN', 'Brunéi');
|
||||||
|
INSERT INTO `paises` VALUES(35, 'BG', 'Bulgaria');
|
||||||
|
INSERT INTO `paises` VALUES(36, 'BF', 'Burkina Faso');
|
||||||
|
INSERT INTO `paises` VALUES(37, 'BI', 'Burundi');
|
||||||
|
INSERT INTO `paises` VALUES(38, 'CV', 'Cabo Verde');
|
||||||
|
INSERT INTO `paises` VALUES(39, 'KY', 'Islas Caimán');
|
||||||
|
INSERT INTO `paises` VALUES(40, 'KH', 'Camboya');
|
||||||
|
INSERT INTO `paises` VALUES(41, 'CM', 'Camerún');
|
||||||
|
INSERT INTO `paises` VALUES(42, 'CA', 'Canadá');
|
||||||
|
INSERT INTO `paises` VALUES(43, 'CF', 'República Centroafricana');
|
||||||
|
INSERT INTO `paises` VALUES(44, 'TD', 'Chad');
|
||||||
|
INSERT INTO `paises` VALUES(45, 'CZ', 'República Checa');
|
||||||
|
INSERT INTO `paises` VALUES(46, 'CL', 'Chile');
|
||||||
|
INSERT INTO `paises` VALUES(47, 'CN', 'China');
|
||||||
|
INSERT INTO `paises` VALUES(48, 'CY', 'Chipre');
|
||||||
|
INSERT INTO `paises` VALUES(49, 'CX', 'Isla de Navidad');
|
||||||
|
INSERT INTO `paises` VALUES(50, 'VA', 'Ciudad del Vaticano');
|
||||||
|
INSERT INTO `paises` VALUES(51, 'CC', 'Islas Cocos');
|
||||||
|
INSERT INTO `paises` VALUES(52, 'CO', 'Colombia');
|
||||||
|
INSERT INTO `paises` VALUES(53, 'KM', 'Comoras');
|
||||||
|
INSERT INTO `paises` VALUES(54, 'CD', 'República Democrática del Congo');
|
||||||
|
INSERT INTO `paises` VALUES(55, 'CG', 'Congo');
|
||||||
|
INSERT INTO `paises` VALUES(56, 'CK', 'Islas Cook');
|
||||||
|
INSERT INTO `paises` VALUES(57, 'KP', 'Corea del Norte');
|
||||||
|
INSERT INTO `paises` VALUES(58, 'KR', 'Corea del Sur');
|
||||||
|
INSERT INTO `paises` VALUES(59, 'CI', 'Costa de Marfil');
|
||||||
|
INSERT INTO `paises` VALUES(60, 'CR', 'Costa Rica');
|
||||||
|
INSERT INTO `paises` VALUES(61, 'HR', 'Croacia');
|
||||||
|
INSERT INTO `paises` VALUES(62, 'CU', 'Cuba');
|
||||||
|
INSERT INTO `paises` VALUES(63, 'DK', 'Dinamarca');
|
||||||
|
INSERT INTO `paises` VALUES(64, 'DM', 'Dominica');
|
||||||
|
INSERT INTO `paises` VALUES(65, 'DO', 'República Dominicana');
|
||||||
|
INSERT INTO `paises` VALUES(66, 'EC', 'Ecuador');
|
||||||
|
INSERT INTO `paises` VALUES(67, 'EG', 'Egipto');
|
||||||
|
INSERT INTO `paises` VALUES(68, 'SV', 'El Salvador');
|
||||||
|
INSERT INTO `paises` VALUES(69, 'AE', 'Emiratos Árabes Unidos');
|
||||||
|
INSERT INTO `paises` VALUES(70, 'ER', 'Eritrea');
|
||||||
|
INSERT INTO `paises` VALUES(71, 'SK', 'Eslovaquia');
|
||||||
|
INSERT INTO `paises` VALUES(72, 'SI', 'Eslovenia');
|
||||||
|
INSERT INTO `paises` VALUES(73, 'ES', 'España');
|
||||||
|
INSERT INTO `paises` VALUES(74, 'UM', 'Islas ultramarinas de Estados Unidos');
|
||||||
|
INSERT INTO `paises` VALUES(75, 'US', 'Estados Unidos');
|
||||||
|
INSERT INTO `paises` VALUES(76, 'EE', 'Estonia');
|
||||||
|
INSERT INTO `paises` VALUES(77, 'ET', 'Etiopía');
|
||||||
|
INSERT INTO `paises` VALUES(78, 'FO', 'Islas Feroe');
|
||||||
|
INSERT INTO `paises` VALUES(79, 'PH', 'Filipinas');
|
||||||
|
INSERT INTO `paises` VALUES(80, 'FI', 'Finlandia');
|
||||||
|
INSERT INTO `paises` VALUES(81, 'FJ', 'Fiyi');
|
||||||
|
INSERT INTO `paises` VALUES(82, 'FR', 'Francia');
|
||||||
|
INSERT INTO `paises` VALUES(83, 'GA', 'Gabón');
|
||||||
|
INSERT INTO `paises` VALUES(84, 'GM', 'Gambia');
|
||||||
|
INSERT INTO `paises` VALUES(85, 'GE', 'Georgia');
|
||||||
|
INSERT INTO `paises` VALUES(86, 'GS', 'Islas Georgias del Sur y Sandwich del Sur');
|
||||||
|
INSERT INTO `paises` VALUES(87, 'GH', 'Ghana');
|
||||||
|
INSERT INTO `paises` VALUES(88, 'GI', 'Gibraltar');
|
||||||
|
INSERT INTO `paises` VALUES(89, 'GD', 'Granada');
|
||||||
|
INSERT INTO `paises` VALUES(90, 'GR', 'Grecia');
|
||||||
|
INSERT INTO `paises` VALUES(91, 'GL', 'Groenlandia');
|
||||||
|
INSERT INTO `paises` VALUES(92, 'GP', 'Guadalupe');
|
||||||
|
INSERT INTO `paises` VALUES(93, 'GU', 'Guam');
|
||||||
|
INSERT INTO `paises` VALUES(94, 'GT', 'Guatemala');
|
||||||
|
INSERT INTO `paises` VALUES(95, 'GF', 'Guayana Francesa');
|
||||||
|
INSERT INTO `paises` VALUES(96, 'GN', 'Guinea');
|
||||||
|
INSERT INTO `paises` VALUES(97, 'GQ', 'Guinea Ecuatorial');
|
||||||
|
INSERT INTO `paises` VALUES(98, 'GW', 'Guinea-Bissau');
|
||||||
|
INSERT INTO `paises` VALUES(99, 'GY', 'Guyana');
|
||||||
|
INSERT INTO `paises` VALUES(100, 'HT', 'Haití');
|
||||||
|
INSERT INTO `paises` VALUES(101, 'HM', 'Islas Heard y McDonald');
|
||||||
|
INSERT INTO `paises` VALUES(102, 'HN', 'Honduras');
|
||||||
|
INSERT INTO `paises` VALUES(103, 'HK', 'Hong Kong');
|
||||||
|
INSERT INTO `paises` VALUES(104, 'HU', 'Hungría');
|
||||||
|
INSERT INTO `paises` VALUES(105, 'IN', 'India');
|
||||||
|
INSERT INTO `paises` VALUES(106, 'ID', 'Indonesia');
|
||||||
|
INSERT INTO `paises` VALUES(107, 'IR', 'Irán');
|
||||||
|
INSERT INTO `paises` VALUES(108, 'IQ', 'Iraq');
|
||||||
|
INSERT INTO `paises` VALUES(109, 'IE', 'Irlanda');
|
||||||
|
INSERT INTO `paises` VALUES(110, 'IS', 'Islandia');
|
||||||
|
INSERT INTO `paises` VALUES(111, 'IL', 'Israel');
|
||||||
|
INSERT INTO `paises` VALUES(112, 'IT', 'Italia');
|
||||||
|
INSERT INTO `paises` VALUES(113, 'JM', 'Jamaica');
|
||||||
|
INSERT INTO `paises` VALUES(114, 'JP', 'Japón');
|
||||||
|
INSERT INTO `paises` VALUES(115, 'JO', 'Jordania');
|
||||||
|
INSERT INTO `paises` VALUES(116, 'KZ', 'Kazajstán');
|
||||||
|
INSERT INTO `paises` VALUES(117, 'KE', 'Kenia');
|
||||||
|
INSERT INTO `paises` VALUES(118, 'KG', 'Kirguistán');
|
||||||
|
INSERT INTO `paises` VALUES(119, 'KI', 'Kiribati');
|
||||||
|
INSERT INTO `paises` VALUES(120, 'KW', 'Kuwait');
|
||||||
|
INSERT INTO `paises` VALUES(121, 'LA', 'Laos');
|
||||||
|
INSERT INTO `paises` VALUES(122, 'LS', 'Lesotho');
|
||||||
|
INSERT INTO `paises` VALUES(123, 'LV', 'Letonia');
|
||||||
|
INSERT INTO `paises` VALUES(124, 'LB', 'Líbano');
|
||||||
|
INSERT INTO `paises` VALUES(125, 'LR', 'Liberia');
|
||||||
|
INSERT INTO `paises` VALUES(126, 'LY', 'Libia');
|
||||||
|
INSERT INTO `paises` VALUES(127, 'LI', 'Liechtenstein');
|
||||||
|
INSERT INTO `paises` VALUES(128, 'LT', 'Lituania');
|
||||||
|
INSERT INTO `paises` VALUES(129, 'LU', 'Luxemburgo');
|
||||||
|
INSERT INTO `paises` VALUES(130, 'MO', 'Macao');
|
||||||
|
INSERT INTO `paises` VALUES(131, 'MK', 'ARY Macedonia');
|
||||||
|
INSERT INTO `paises` VALUES(132, 'MG', 'Madagascar');
|
||||||
|
INSERT INTO `paises` VALUES(133, 'MY', 'Malasia');
|
||||||
|
INSERT INTO `paises` VALUES(134, 'MW', 'Malawi');
|
||||||
|
INSERT INTO `paises` VALUES(135, 'MV', 'Maldivas');
|
||||||
|
INSERT INTO `paises` VALUES(136, 'ML', 'Malí');
|
||||||
|
INSERT INTO `paises` VALUES(137, 'MT', 'Malta');
|
||||||
|
INSERT INTO `paises` VALUES(138, 'FK', 'Islas Malvinas');
|
||||||
|
INSERT INTO `paises` VALUES(139, 'MP', 'Islas Marianas del Norte');
|
||||||
|
INSERT INTO `paises` VALUES(140, 'MA', 'Marruecos');
|
||||||
|
INSERT INTO `paises` VALUES(141, 'MH', 'Islas Marshall');
|
||||||
|
INSERT INTO `paises` VALUES(142, 'MQ', 'Martinica');
|
||||||
|
INSERT INTO `paises` VALUES(143, 'MU', 'Mauricio');
|
||||||
|
INSERT INTO `paises` VALUES(144, 'MR', 'Mauritania');
|
||||||
|
INSERT INTO `paises` VALUES(145, 'YT', 'Mayotte');
|
||||||
|
INSERT INTO `paises` VALUES(146, 'MX', 'México');
|
||||||
|
INSERT INTO `paises` VALUES(147, 'FM', 'Micronesia');
|
||||||
|
INSERT INTO `paises` VALUES(148, 'MD', 'Moldavia');
|
||||||
|
INSERT INTO `paises` VALUES(149, 'MC', 'Mónaco');
|
||||||
|
INSERT INTO `paises` VALUES(150, 'MN', 'Mongolia');
|
||||||
|
INSERT INTO `paises` VALUES(151, 'MS', 'Montserrat');
|
||||||
|
INSERT INTO `paises` VALUES(152, 'MZ', 'Mozambique');
|
||||||
|
INSERT INTO `paises` VALUES(153, 'MM', 'Myanmar');
|
||||||
|
INSERT INTO `paises` VALUES(154, 'NA', 'Namibia');
|
||||||
|
INSERT INTO `paises` VALUES(155, 'NR', 'Nauru');
|
||||||
|
INSERT INTO `paises` VALUES(156, 'NP', 'Nepal');
|
||||||
|
INSERT INTO `paises` VALUES(157, 'NI', 'Nicaragua');
|
||||||
|
INSERT INTO `paises` VALUES(158, 'NE', 'Níger');
|
||||||
|
INSERT INTO `paises` VALUES(159, 'NG', 'Nigeria');
|
||||||
|
INSERT INTO `paises` VALUES(160, 'NU', 'Niue');
|
||||||
|
INSERT INTO `paises` VALUES(161, 'NF', 'Isla Norfolk');
|
||||||
|
INSERT INTO `paises` VALUES(162, 'NO', 'Noruega');
|
||||||
|
INSERT INTO `paises` VALUES(163, 'NC', 'Nueva Caledonia');
|
||||||
|
INSERT INTO `paises` VALUES(164, 'NZ', 'Nueva Zelanda');
|
||||||
|
INSERT INTO `paises` VALUES(165, 'OM', 'Omán');
|
||||||
|
INSERT INTO `paises` VALUES(166, 'NL', 'Países Bajos');
|
||||||
|
INSERT INTO `paises` VALUES(167, 'PK', 'Pakistán');
|
||||||
|
INSERT INTO `paises` VALUES(168, 'PW', 'Palau');
|
||||||
|
INSERT INTO `paises` VALUES(169, 'PS', 'Palestina');
|
||||||
|
INSERT INTO `paises` VALUES(170, 'PA', 'Panamá');
|
||||||
|
INSERT INTO `paises` VALUES(171, 'PG', 'Papúa Nueva Guinea');
|
||||||
|
INSERT INTO `paises` VALUES(172, 'PY', 'Paraguay');
|
||||||
|
INSERT INTO `paises` VALUES(173, 'PE', 'Perú');
|
||||||
|
INSERT INTO `paises` VALUES(174, 'PN', 'Islas Pitcairn');
|
||||||
|
INSERT INTO `paises` VALUES(175, 'PF', 'Polinesia Francesa');
|
||||||
|
INSERT INTO `paises` VALUES(176, 'PL', 'Polonia');
|
||||||
|
INSERT INTO `paises` VALUES(177, 'PT', 'Portugal');
|
||||||
|
INSERT INTO `paises` VALUES(178, 'PR', 'Puerto Rico');
|
||||||
|
INSERT INTO `paises` VALUES(179, 'QA', 'Qatar');
|
||||||
|
INSERT INTO `paises` VALUES(180, 'GB', 'Reino Unido');
|
||||||
|
INSERT INTO `paises` VALUES(181, 'RE', 'Reunión');
|
||||||
|
INSERT INTO `paises` VALUES(182, 'RW', 'Ruanda');
|
||||||
|
INSERT INTO `paises` VALUES(183, 'RO', 'Rumania');
|
||||||
|
INSERT INTO `paises` VALUES(184, 'RU', 'Rusia');
|
||||||
|
INSERT INTO `paises` VALUES(185, 'EH', 'Sahara Occidental');
|
||||||
|
INSERT INTO `paises` VALUES(186, 'SB', 'Islas Salomón');
|
||||||
|
INSERT INTO `paises` VALUES(187, 'WS', 'Samoa');
|
||||||
|
INSERT INTO `paises` VALUES(188, 'AS', 'Samoa Americana');
|
||||||
|
INSERT INTO `paises` VALUES(189, 'KN', 'San Cristóbal y Nevis');
|
||||||
|
INSERT INTO `paises` VALUES(190, 'SM', 'San Marino');
|
||||||
|
INSERT INTO `paises` VALUES(191, 'PM', 'San Pedro y Miquelón');
|
||||||
|
INSERT INTO `paises` VALUES(192, 'VC', 'San Vicente y las Granadinas');
|
||||||
|
INSERT INTO `paises` VALUES(193, 'SH', 'Santa Helena');
|
||||||
|
INSERT INTO `paises` VALUES(194, 'LC', 'Santa Lucía');
|
||||||
|
INSERT INTO `paises` VALUES(195, 'ST', 'Santo Tomé y Príncipe');
|
||||||
|
INSERT INTO `paises` VALUES(196, 'SN', 'Senegal');
|
||||||
|
INSERT INTO `paises` VALUES(197, 'CS', 'Serbia y Montenegro');
|
||||||
|
INSERT INTO `paises` VALUES(198, 'SC', 'Seychelles');
|
||||||
|
INSERT INTO `paises` VALUES(199, 'SL', 'Sierra Leona');
|
||||||
|
INSERT INTO `paises` VALUES(200, 'SG', 'Singapur');
|
||||||
|
INSERT INTO `paises` VALUES(201, 'SY', 'Siria');
|
||||||
|
INSERT INTO `paises` VALUES(202, 'SO', 'Somalia');
|
||||||
|
INSERT INTO `paises` VALUES(203, 'LK', 'Sri Lanka');
|
||||||
|
INSERT INTO `paises` VALUES(204, 'SZ', 'Suazilandia');
|
||||||
|
INSERT INTO `paises` VALUES(205, 'ZA', 'Sudáfrica');
|
||||||
|
INSERT INTO `paises` VALUES(206, 'SD', 'Sudán');
|
||||||
|
INSERT INTO `paises` VALUES(207, 'SE', 'Suecia');
|
||||||
|
INSERT INTO `paises` VALUES(208, 'CH', 'Suiza');
|
||||||
|
INSERT INTO `paises` VALUES(209, 'SR', 'Surinam');
|
||||||
|
INSERT INTO `paises` VALUES(210, 'SJ', 'Svalbard y Jan Mayen');
|
||||||
|
INSERT INTO `paises` VALUES(211, 'TH', 'Tailandia');
|
||||||
|
INSERT INTO `paises` VALUES(212, 'TW', 'Taiwán');
|
||||||
|
INSERT INTO `paises` VALUES(213, 'TZ', 'Tanzania');
|
||||||
|
INSERT INTO `paises` VALUES(214, 'TJ', 'Tayikistán');
|
||||||
|
INSERT INTO `paises` VALUES(215, 'IO', 'Territorio Británico del Océano Índico');
|
||||||
|
INSERT INTO `paises` VALUES(216, 'TF', 'Territorios Australes Franceses');
|
||||||
|
INSERT INTO `paises` VALUES(217, 'TL', 'Timor Oriental');
|
||||||
|
INSERT INTO `paises` VALUES(218, 'TG', 'Togo');
|
||||||
|
INSERT INTO `paises` VALUES(219, 'TK', 'Tokelau');
|
||||||
|
INSERT INTO `paises` VALUES(220, 'TO', 'Tonga');
|
||||||
|
INSERT INTO `paises` VALUES(221, 'TT', 'Trinidad y Tobago');
|
||||||
|
INSERT INTO `paises` VALUES(222, 'TN', 'Túnez');
|
||||||
|
INSERT INTO `paises` VALUES(223, 'TC', 'Islas Turcas y Caicos');
|
||||||
|
INSERT INTO `paises` VALUES(224, 'TM', 'Turkmenistán');
|
||||||
|
INSERT INTO `paises` VALUES(225, 'TR', 'Turquía');
|
||||||
|
INSERT INTO `paises` VALUES(226, 'TV', 'Tuvalu');
|
||||||
|
INSERT INTO `paises` VALUES(227, 'UA', 'Ucrania');
|
||||||
|
INSERT INTO `paises` VALUES(228, 'UG', 'Uganda');
|
||||||
|
INSERT INTO `paises` VALUES(229, 'UY', 'Uruguay');
|
||||||
|
INSERT INTO `paises` VALUES(230, 'UZ', 'Uzbekistán');
|
||||||
|
INSERT INTO `paises` VALUES(231, 'VU', 'Vanuatu');
|
||||||
|
INSERT INTO `paises` VALUES(232, 'VE', 'Venezuela');
|
||||||
|
INSERT INTO `paises` VALUES(233, 'VN', 'Vietnam');
|
||||||
|
INSERT INTO `paises` VALUES(234, 'VG', 'Islas Vírgenes Británicas');
|
||||||
|
INSERT INTO `paises` VALUES(235, 'VI', 'Islas Vírgenes de los Estados Unidos');
|
||||||
|
INSERT INTO `paises` VALUES(236, 'WF', 'Wallis y Futuna');
|
||||||
|
INSERT INTO `paises` VALUES(237, 'YE', 'Yemen');
|
||||||
|
INSERT INTO `paises` VALUES(238, 'DJ', 'Yibuti');
|
||||||
|
INSERT INTO `paises` VALUES(239, 'ZM', 'Zambia');
|
||||||
|
INSERT INTO `paises` VALUES(240, 'ZW', 'Zimbabue');
|
||||||
75
database/provincias.sql
Executable file
75
database/provincias.sql
Executable file
@@ -0,0 +1,75 @@
|
|||||||
|
# ------------------------------------------------------------
|
||||||
|
# Listado de provincias españolas 2012.
|
||||||
|
#
|
||||||
|
# Datos extraídos del INE (Instituo Nacional de Estadística).
|
||||||
|
#
|
||||||
|
# El campo id_provincia debería coincidir con los dos primeros dígitos del código postal
|
||||||
|
# de la provincia. Los que tienen un dígito, añadir el 0 delante.
|
||||||
|
#
|
||||||
|
# Ejemplo:
|
||||||
|
# Dado un código postal 08031, tomamos los dos primeros dígitos (08) y vemos que pertenence a prov. Barcelona,
|
||||||
|
# Similarmente el código postal 44652 => 44 => província de Teruel
|
||||||
|
#
|
||||||
|
# Albert Lombarte
|
||||||
|
# Twitter: @alombarte
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE `provincias` (
|
||||||
|
`id_provincia` smallint(6) PRIMARY KEY,
|
||||||
|
`provincia` varchar(30) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO `provincias` (`id_provincia`, `provincia`)
|
||||||
|
VALUES
|
||||||
|
(2,'Albacete'),
|
||||||
|
(3,'Alicante/Alacant'),
|
||||||
|
(4,'Almería'),
|
||||||
|
(1,'Araba/Álava'),
|
||||||
|
(33,'Asturias'),
|
||||||
|
(5,'Ávila'),
|
||||||
|
(6,'Badajoz'),
|
||||||
|
(7,'Balears, Illes'),
|
||||||
|
(8,'Barcelona'),
|
||||||
|
(48,'Bizkaia'),
|
||||||
|
(9,'Burgos'),
|
||||||
|
(10,'Cáceres'),
|
||||||
|
(11,'Cádiz'),
|
||||||
|
(39,'Cantabria'),
|
||||||
|
(12,'Castellón/Castelló'),
|
||||||
|
(51,'Ceuta'),
|
||||||
|
(13,'Ciudad Real'),
|
||||||
|
(14,'Córdoba'),
|
||||||
|
(15,'Coruña, A'),
|
||||||
|
(16,'Cuenca'),
|
||||||
|
(20,'Gipuzkoa'),
|
||||||
|
(17,'Girona'),
|
||||||
|
(18,'Granada'),
|
||||||
|
(19,'Guadalajara'),
|
||||||
|
(21,'Huelva'),
|
||||||
|
(22,'Huesca'),
|
||||||
|
(23,'Jaén'),
|
||||||
|
(24,'León'),
|
||||||
|
(27,'Lugo'),
|
||||||
|
(25,'Lleida'),
|
||||||
|
(28,'Madrid'),
|
||||||
|
(29,'Málaga'),
|
||||||
|
(52,'Melilla'),
|
||||||
|
(30,'Murcia'),
|
||||||
|
(31,'Navarra'),
|
||||||
|
(32,'Ourense'),
|
||||||
|
(34,'Palencia'),
|
||||||
|
(35,'Palmas, Las'),
|
||||||
|
(36,'Pontevedra'),
|
||||||
|
(26,'Rioja, La'),
|
||||||
|
(37,'Salamanca'),
|
||||||
|
(38,'Santa Cruz de Tenerife'),
|
||||||
|
(40,'Segovia'),
|
||||||
|
(41,'Sevilla'),
|
||||||
|
(42,'Soria'),
|
||||||
|
(43,'Tarragona'),
|
||||||
|
(44,'Teruel'),
|
||||||
|
(45,'Toledo'),
|
||||||
|
(46,'Valencia/València'),
|
||||||
|
(47,'Valladolid'),
|
||||||
|
(49,'Zamora'),
|
||||||
|
(50,'Zaragoza');
|
||||||
113
docs/Project.org
Normal file
113
docs/Project.org
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
#+TITLE: MDIS
|
||||||
|
#+SUBTITLE: Programación Web
|
||||||
|
#+AUTHOR: Amin Kasrou Aouam
|
||||||
|
#+DATE: 2020-07-16
|
||||||
|
#+PANDOC_OPTIONS: template:~/.pandoc/templates/eisvogel.latex
|
||||||
|
#+PANDOC_OPTIONS: listings:t
|
||||||
|
#+PANDOC_OPTIONS: toc:t
|
||||||
|
#+PANDOC_METADATA: lang=es
|
||||||
|
#+PANDOC_METADATA: titlepage:t
|
||||||
|
#+PANDOC_METADATA: listings-no-page-break:t
|
||||||
|
#+PANDOC_METADATA: toc-own-page:t
|
||||||
|
#+PANDOC_METADATA: table-use-row-colors:t
|
||||||
|
#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGR.png
|
||||||
|
* MDIS
|
||||||
|
|
||||||
|
MDIS es un 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 Calendario
|
||||||
|
- Gestión de Citas
|
||||||
|
- Gestión de Vacaciones
|
||||||
|
- Gestión de Informes
|
||||||
|
|
||||||
|
** Tecnologías
|
||||||
|
|
||||||
|
- PHP
|
||||||
|
- MySQL
|
||||||
|
- Javascript
|
||||||
|
- Fullcalendar
|
||||||
|
- Jquery
|
||||||
|
- JqueryUI
|
||||||
|
- Nix
|
||||||
|
|
||||||
|
** Arquitectura
|
||||||
|
|
||||||
|
#+CAPTION: Arquitectura del sistema
|
||||||
|
[[./assets/F1.png]]
|
||||||
|
|
||||||
|
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/.
|
||||||
|
|
||||||
|
Las operaciones que conllevan una inserción o transformación de datos se realizan en los archivos que terminan en *=_management.php=*, 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.
|
||||||
|
|
||||||
|
** Estructura del proyecto
|
||||||
|
|
||||||
|
La segmentación de los diferentes archivos de un proyecto es un aspecto que facilita mucho la búsqueda en un proyecto. La estructura de directorios es la siguiente:
|
||||||
|
|
||||||
|
- database: archivos SQL para la creación de la base de datos.
|
||||||
|
- docs: memoria del proyecto.
|
||||||
|
- src: código fuente (PHP y Javascript).
|
||||||
|
- src/static: bibliotecas de javascript, CSS y fotos.
|
||||||
|
|
||||||
|
** Dependencias
|
||||||
|
|
||||||
|
El apartado de la gestión de citas se ha realizado utilizando la biblioteca [[https://fullcalendar.io/][FullCalendar]] de Javascript. La conexión entre el /backend/ y el /frontend/ se realiza mediante intercambio de JSON, la implementación se encuentra en los archivos que terminan en *=_feed.php=*.
|
||||||
|
|
||||||
|
A partir de los elementos de la base de datos, formateados y transformados, obtenemos las citas, los festivos y la configuración del calendario de cada doctor. Finalmente, personalizamos el comportamiento del calendario según estos datos.
|
||||||
|
|
||||||
|
Los elementos del calendario también requieren de [[https://jqueryui.com/][JqueryUI]], para darle un toque más moderno a los distintos componentes.
|
||||||
|
|
||||||
|
La impresión de los informes en formato PDF es posible gracias a [[https://github.com/MrRio/jsPDF][jsPDF]], biblioteca simple y que produce documentos con un diseño cuidado.
|
||||||
|
|
||||||
|
Por último, hacemos uso de la función /$.ajax()/ de [[https://jquery.com][Jquery]] para realizar peticiones /GET/ síncronas, dado que ciertos componentes de FullCalendar no pueden ser ejecutados como funciones asíncronas.
|
||||||
|
|
||||||
|
** 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 define el entorno de desarrollo:
|
||||||
|
|
||||||
|
#+BEGIN_SRC nix
|
||||||
|
{ 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
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
#+BEGIN_SRC shell
|
||||||
|
nix-shell
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Y ya dispondremos de un sistema funcional, y accesible en la URL *localhost:8000*.
|
||||||
BIN
docs/Project.pdf
Normal file
BIN
docs/Project.pdf
Normal file
Binary file not shown.
BIN
docs/assets/F1.png
Normal file
BIN
docs/assets/F1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
@@ -1,27 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html class="no-js" lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>MDIS</title>
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<nav>
|
|
||||||
<ul class="navbar-left">
|
|
||||||
<li class="list"><a href="">Home</a></li>
|
|
||||||
<li class="list"><a href="">Calendar</a></li>
|
|
||||||
<li class="list"><a href="">Appointments</a></li>
|
|
||||||
</ul>
|
|
||||||
<ul class="navbar-right">
|
|
||||||
<li class="list"><a href="">Login</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
* {
|
|
||||||
font-family: Roboto, Mono;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table{
|
|
||||||
width: 50%;
|
|
||||||
margin: 30px auto;
|
|
||||||
border-collapse: collapse;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
tr {
|
|
||||||
border-bottom: 1px solid #cbcbcb;
|
|
||||||
}
|
|
||||||
th, td{
|
|
||||||
border: none;
|
|
||||||
height: 30px;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
tr:hover {
|
|
||||||
background: #F5F5F5;
|
|
||||||
}
|
|
||||||
|
|
||||||
form {
|
|
||||||
width: 45%;
|
|
||||||
margin: 50px auto;
|
|
||||||
text-align: left;
|
|
||||||
padding: 20px;
|
|
||||||
border: 1px solid #bbbbbb;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-group {
|
|
||||||
margin: 10px 0px 10px 0px;
|
|
||||||
}
|
|
||||||
.input-group label {
|
|
||||||
display: block;
|
|
||||||
text-align: left;
|
|
||||||
margin: 3px;
|
|
||||||
}
|
|
||||||
.input-group input {
|
|
||||||
height: 30px;
|
|
||||||
width: 93%;
|
|
||||||
padding: 5px 10px;
|
|
||||||
font-size: 16px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border: 1px solid gray;
|
|
||||||
}
|
|
||||||
.btn {
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 15px;
|
|
||||||
color: white;
|
|
||||||
background: #5F9EA0;
|
|
||||||
border: none;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
.edit_btn {
|
|
||||||
text-decoration: none;
|
|
||||||
padding: 2px 5px;
|
|
||||||
background: #2E8B57;
|
|
||||||
color: white;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.del_btn {
|
|
||||||
text-decoration: none;
|
|
||||||
padding: 2px 5px;
|
|
||||||
color: white;
|
|
||||||
border-radius: 3px;
|
|
||||||
background: #800000;
|
|
||||||
}
|
|
||||||
.msg {
|
|
||||||
margin: 30px auto;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
color: #3c763d;
|
|
||||||
background: #dff0d8;
|
|
||||||
border: 1px solid #3c763d;
|
|
||||||
width: 50%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html class="no-js" lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
||||||
<title>Gestión de usuarios</title>
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
||||||
<!-- Place favicon.ico in the root directory -->
|
|
||||||
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--[if lt IE 8]>
|
|
||||||
<p class="browserupgrade">
|
|
||||||
You are using an <strong>outdated</strong> browser. Please
|
|
||||||
<a href="http://browsehappy.com/">upgrade your browser</a> to improve
|
|
||||||
your experience.
|
|
||||||
</p>
|
|
||||||
<![endif]-->
|
|
||||||
<form method="post" action="../src/user_management.php">
|
|
||||||
<div class="input-group">
|
|
||||||
<label>Nombre</label>
|
|
||||||
<input type="text" name="nombre" value="">
|
|
||||||
</div>
|
|
||||||
<div class="input-group">
|
|
||||||
<label>usuario</label>
|
|
||||||
<input type="text" name="usuario" value="">
|
|
||||||
</div>
|
|
||||||
<div class="input-group">
|
|
||||||
<label>contraseña</label>
|
|
||||||
<input type="password" name="contraseña" value="">
|
|
||||||
</div>
|
|
||||||
<div class="select-input">
|
|
||||||
<label>rol</label>
|
|
||||||
<select id="rol" name="rol">
|
|
||||||
<option value="1">administrativo</option>
|
|
||||||
<option value="2">médico</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div class="input-group">
|
|
||||||
<label>correo</label>
|
|
||||||
<input type="text" name="correo" value="">
|
|
||||||
</div>
|
|
||||||
<div class="input-group">
|
|
||||||
<button class="btn" type="submit" name="submit" >Guardar</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -16,5 +16,8 @@ mkShell {
|
|||||||
mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql
|
mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql
|
||||||
|
|
||||||
alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'
|
alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root'
|
||||||
|
|
||||||
|
cd src
|
||||||
|
php -S localhost:8000
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/ajax.js
Normal file
16
src/ajax.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
$("#provincia").change(function() {
|
||||||
|
var id_provincia = $(this).val();
|
||||||
|
var post_id = 'id=' + id_provincia;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: "ajax.php",
|
||||||
|
data: post_id,
|
||||||
|
cache: false,
|
||||||
|
success: function(response) {
|
||||||
|
$("#localidad").html(response);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
13
src/ajax.php
Normal file
13
src/ajax.php
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
if ($_POST['id']) {
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$cities = fetchCities($pdo, $_POST['id']);
|
||||||
|
|
||||||
|
foreach ($cities as $row) {
|
||||||
|
echo '"<option value="'.$row[0].'">'.$row[4].'</option>';
|
||||||
|
}
|
||||||
|
|
||||||
|
closeDatabase($pdo);
|
||||||
|
}
|
||||||
90
src/appointment.php
Normal file
90
src/appointment.php
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de citas</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen"/>
|
||||||
|
<link rel="stylesheet" href="static/fullcalendar.css" type="text/css" media="screen"/>
|
||||||
|
<link rel="stylesheet" href="static/jquery-ui.css" type="text/css" media="screen"/>
|
||||||
|
<script src="static/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="static/jquery-ui.min.js"></script>
|
||||||
|
<script src="static/moment.min.js"></script>
|
||||||
|
<script src="static/fullcalendar.min.js"></script>
|
||||||
|
<script src="calendar.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'appointment_management.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$patients = listPatients($pdo);
|
||||||
|
$calendar_settings = fetchCalendarSettings($pdo, $doctor);
|
||||||
|
$time_ranges = computeTimeRanges($pdo);
|
||||||
|
?>
|
||||||
|
<?php if ($_SESSION["user_type"] == 1 and !isset($_GET["medico"])): ?>
|
||||||
|
<form name="select_doctor" method="get" action="appointment.php">
|
||||||
|
<?php $doctors = listDoctors($pdo); ?>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="medico" name="medico">
|
||||||
|
<option>Seleccione un médico</option>
|
||||||
|
<?php foreach ($doctors as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
<button class="create_btn" type="submit" name="select">Seleccionar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<?php endif; ?>
|
||||||
|
<div id="dialog-form" title="Añadir cita" style="display:none;">
|
||||||
|
<form name="add_appointment" method="post" action="appointment_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="hora">Hora</label>
|
||||||
|
<select id="hora" name="hora">
|
||||||
|
<option>Seleccione una hora</option>
|
||||||
|
<?php foreach ($time_ranges as $row) : ?>
|
||||||
|
<option><?php echo $row; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="duracion">Duración</label>
|
||||||
|
<input type="number" name="duracion" value="<?php echo $calendar_settings[8]; ?>" step="30">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="observaciones">Observaciones</label>
|
||||||
|
<input type="text" name="observaciones" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="paciente" name="paciente">
|
||||||
|
<option>Seleccione un paciente</option>
|
||||||
|
<?php foreach ($patients as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[2]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<button class="create_btn" type="submit" name="create" >Añadir cita</button>
|
||||||
|
<?php $doctor = fetchDoctor($pdo); ?>
|
||||||
|
<input type="hidden" name="doctor" value="<?php echo $doctor; ?>">
|
||||||
|
<input type="hidden" name="fecha" id="fecha">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</div>
|
||||||
|
<div class="response"></div>
|
||||||
|
<div id="calendar"></div>
|
||||||
|
<div id="event-info" style="display:none;">
|
||||||
|
<div id="event-patient"/></div>
|
||||||
|
<div id="event-description"/></div>
|
||||||
|
<div id="event-start"/></div>
|
||||||
|
<div id="event-end"/></div>
|
||||||
|
<form method="post" action="appointment_management.php">
|
||||||
|
<input type="hidden" name="event_id" id="event_id">
|
||||||
|
<button class="create_btn" type="submit" name="edit_form">Editar</button>
|
||||||
|
<button class="del_btn" type="submit" name="delete">Borrar</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
48
src/appointment_edit_form.php
Normal file
48
src/appointment_edit_form.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de citas</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchAppointmentData($pdo, $_GET["event_id"]);
|
||||||
|
$patients = fetchPatients($pdo);
|
||||||
|
?>
|
||||||
|
<form name="edit_appointment" method="post" action="appointment_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="fecha">Fecha</label>
|
||||||
|
<input type="date" name="fecha" value="<?php echo $data[1]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="hora">Hora</label>
|
||||||
|
<input type="time" name="hora" value="<?php echo $data[2]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="duracion">Duración</label>
|
||||||
|
<input type="number" name="duracion" value="<?php echo $data[3]; ?>" step="30">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label for="observaciones">Observaciones</label>
|
||||||
|
<input type="text" name="observaciones" value="<?php echo $data[4]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="paciente" name="paciente">
|
||||||
|
<option>Seleccione un paciente</option>
|
||||||
|
<?php foreach ($patients as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<button class="create_btn" type="submit" name="edit">Editar</button>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $_GET["event_id"]; ?>">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
44
src/appointment_feed.php
Normal file
44
src/appointment_feed.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
include 'appointment_management.php';
|
||||||
|
|
||||||
|
function computeEndTime(&$data)
|
||||||
|
{
|
||||||
|
foreach ($data as &$row) {
|
||||||
|
$time = new DateTime($row["hora"]);
|
||||||
|
$time->modify("+{$row["duracion"]} minutes");
|
||||||
|
$time_string = $time->format('H:i:s');
|
||||||
|
$row += ["end" => $time_string];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function formatArray($data)
|
||||||
|
{
|
||||||
|
computeEndTime($data);
|
||||||
|
$events = array();
|
||||||
|
foreach ($data as $row) {
|
||||||
|
$events[] = array(
|
||||||
|
"id" => $row["id"],
|
||||||
|
"title" => $row["apellido"] . ", " . $row["nombre"],
|
||||||
|
"start" => $row["fecha"] . " " . $row["hora"],
|
||||||
|
"description" => $row["observaciones"],
|
||||||
|
"patient" => $row["documento_identificativo"],
|
||||||
|
"end" => $row["fecha"] . " " . $row["end"],
|
||||||
|
"overlap" => false,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $events;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchDatabase()
|
||||||
|
{
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = listEvents($pdo);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$result = fetchDatabase();
|
||||||
|
$events = formatArray($result);
|
||||||
|
echo json_encode($events);
|
||||||
130
src/appointment_management.php
Normal file
130
src/appointment_management.php
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<?php
|
||||||
|
include'database.php';
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
function fetchDoctor($pdo)
|
||||||
|
{
|
||||||
|
if ($_SESSION["user_type"] == 2) {
|
||||||
|
$user = finduser($pdo, $_SESSION["user"]);
|
||||||
|
return $user[0][4];
|
||||||
|
}
|
||||||
|
return $_GET["medico"];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listEvents($pdo)
|
||||||
|
{
|
||||||
|
$doctor = fetchDoctor($pdo);
|
||||||
|
$events = fetchCalendarEvents($pdo, $doctor);
|
||||||
|
return $events;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listHolidays($pdo)
|
||||||
|
{
|
||||||
|
$doctor = fetchDoctor($pdo);
|
||||||
|
$holidays = fetchDoctorHolidays($pdo, $doctor);
|
||||||
|
return $holidays;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function listCalendarSettings($pdo)
|
||||||
|
{
|
||||||
|
$doctor = fetchDoctor($pdo);
|
||||||
|
$calendar_settings = fetchCalendarSettings($pdo, $doctor);
|
||||||
|
return $calendar_settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function appointmentCreation()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
createAppointment($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: appointment.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function appointmentModification()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
editAppointment($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: appointment.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function appointmentDeletion()
|
||||||
|
{
|
||||||
|
$id = $_POST["event_id"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
deleteAppointment($pdo, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: appointment.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getFloorCeiling($pdo)
|
||||||
|
{
|
||||||
|
$data = listCalendarSettings($pdo);
|
||||||
|
if ($data["horario"] == "completo") {
|
||||||
|
$start = $data["hora_inicio_mañana"];
|
||||||
|
$end = $data["hora_fin_tarde"];
|
||||||
|
} elseif ($data["horario"] == "mañana") {
|
||||||
|
$start = $data["hora_inicio_mañana"];
|
||||||
|
$end = $data["hora_fin_mañana"];
|
||||||
|
} else {
|
||||||
|
$start = $data["hora_inicio_tarde"];
|
||||||
|
$end = $data["hora_fin_tarde"];
|
||||||
|
}
|
||||||
|
$range[] = array(
|
||||||
|
"start" => $start,
|
||||||
|
"end" => $end,
|
||||||
|
);
|
||||||
|
return $range[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getTimeDiff()
|
||||||
|
{
|
||||||
|
$current = time();
|
||||||
|
$addTime = strtotime("+30 mins", $current);
|
||||||
|
$diff = $addTime - $current;
|
||||||
|
return $diff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function computeTimeRanges($pdo)
|
||||||
|
{
|
||||||
|
$range = getFloorCeiling($pdo);
|
||||||
|
$diff = getTimeDiff();
|
||||||
|
$start = strtotime($range["start"]);
|
||||||
|
$end = strtotime($range["end"]);
|
||||||
|
$time_range = array();
|
||||||
|
while ($start < $end) {
|
||||||
|
$time_range[] = date('G:i:s', $start);
|
||||||
|
$start += $diff;
|
||||||
|
}
|
||||||
|
return $time_range;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["create"])) {
|
||||||
|
appointmentCreation();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["edit_form"])) {
|
||||||
|
$event_id = $_POST["event_id"];
|
||||||
|
header("location: appointment_edit_form.php?event_id=$event_id");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["edit"])) {
|
||||||
|
appointmentModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["delete"])) {
|
||||||
|
appointmentDeletion();
|
||||||
|
}
|
||||||
71
src/calendar.js
Normal file
71
src/calendar.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
$(document).ready(function() {
|
||||||
|
var queryString = window.location.search;
|
||||||
|
var calendar = $('#calendar').fullCalendar({
|
||||||
|
selectable: true,
|
||||||
|
editable: false,
|
||||||
|
|
||||||
|
header: {
|
||||||
|
left: 'prev,next,today',
|
||||||
|
center: 'title',
|
||||||
|
right: 'month,agendaWeek,agendaDay'
|
||||||
|
},
|
||||||
|
|
||||||
|
eventSources: [
|
||||||
|
"appointment_feed.php" + queryString,
|
||||||
|
"holiday_feed.php" + queryString
|
||||||
|
],
|
||||||
|
|
||||||
|
select: function(start, end) {
|
||||||
|
$("#dialog-form").dialog({
|
||||||
|
modal: true,
|
||||||
|
width: 450
|
||||||
|
});
|
||||||
|
var date = $.fullCalendar.formatDate(start, 'YYYY-MM-DD');
|
||||||
|
$("#fecha").val(date);
|
||||||
|
},
|
||||||
|
|
||||||
|
selectAllow: function(selectInfo) {
|
||||||
|
var daysOff = null;
|
||||||
|
var holidays = null;
|
||||||
|
$.ajax({
|
||||||
|
url: 'holiday_feed.php' + queryString,
|
||||||
|
async: false,
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(json) {
|
||||||
|
holidays = json;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$.ajax({
|
||||||
|
url: 'calendar_settings_feed.php' + queryString,
|
||||||
|
async: false,
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(json) {
|
||||||
|
daysOff = json;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var date = selectInfo.start._d;
|
||||||
|
var formatted_date = date.toISOString().substr(0, 10);
|
||||||
|
var foundHoliday = holidays.find(el => el.start === formatted_date);
|
||||||
|
var foundDayOff = daysOff.find(el => el === date.getDay());
|
||||||
|
if (foundDayOff == null && foundHoliday == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
eventClick: function(event) {
|
||||||
|
var start = $.fullCalendar.formatDate(event.start, 'HH:mm');
|
||||||
|
var end = $.fullCalendar.formatDate(event.end, 'HH:mm');
|
||||||
|
$("#event_id").val(event.id);
|
||||||
|
$("#event-patient").html("<b>DNI/NIE: </b>" + event.patient);
|
||||||
|
$("#event-description").html("<b>Observaciones: </b>" + event.description);
|
||||||
|
$("#event-start").html("<b>Comienzo: </b>" + start);
|
||||||
|
$("#event-end").html("<b>Fin: </b>" + end);
|
||||||
|
$("#event-info").dialog({
|
||||||
|
title: event.title,
|
||||||
|
width: 450
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
54
src/calendar.php
Normal file
54
src/calendar.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de festivos</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<div>
|
||||||
|
<form method="post" action="calendar_management.php">
|
||||||
|
<div class="search-group">
|
||||||
|
<a href="holiday_create_form.php" class="create_btn" >Añadir festivo</a>
|
||||||
|
<a href="calendar_setup_form.php" class="create_btn" >Configurar calendario</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Fecha</th>
|
||||||
|
<th>Tipo</th>
|
||||||
|
<th>Medico</th>
|
||||||
|
<th colspan="2">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
|
||||||
|
$list = fetchHolidays($pdo);
|
||||||
|
|
||||||
|
foreach ($list as $row) :
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $row[1]; ?></td>
|
||||||
|
<td><?php echo $row[2]; ?></td>
|
||||||
|
<td><?php echo $row[3]; ?></td>
|
||||||
|
<td>
|
||||||
|
<a href="holiday_edit_form.php?edit=<?php echo $row[0]; ?>" class="edit_btn">Editar</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="calendar_management.php?delete=<?php echo $row[0]; ?>" class="del_btn">Borrar</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach ?>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
88
src/calendar_management.php
Normal file
88
src/calendar_management.php
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<?php
|
||||||
|
include'database.php';
|
||||||
|
|
||||||
|
function holidayCreation()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
createHoliday($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: calendar.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function holidayModification()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$id = $_POST["id"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
editHoliday($pdo, $data, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: calendar.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function holidayDeletion()
|
||||||
|
{
|
||||||
|
$id = $_GET["delete"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
deleteHoliday($pdo, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: calendar.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setWorkingHours(&$data)
|
||||||
|
{
|
||||||
|
if (isset($data["hora_inicio_mañana"], $data["hora_fin_mañana"], $data["hora_inicio_tarde"], $data["hora_fin_tarde"])) {
|
||||||
|
$data["horario"] = "completo";
|
||||||
|
} elseif (isset($data["hora_inicio_mañana"], $data["hora_fin_mañana"])) {
|
||||||
|
$data["horario"] = "mañana";
|
||||||
|
} elseif (isset($data["hora_inicio_tarde"], $data["hora_fin_tarde"])) {
|
||||||
|
$data["horario"] = "tarde";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setUncheckedBoxes(&$data)
|
||||||
|
{
|
||||||
|
if (!isset($data["sabado_habil"])) {
|
||||||
|
$data["sabado_habil"] = 0;
|
||||||
|
}
|
||||||
|
if (!isset($data["domingo_habil"])) {
|
||||||
|
$data["domingo_habil"] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function sanitizeInputs(&$data)
|
||||||
|
{
|
||||||
|
setWorkingHours($data);
|
||||||
|
setUncheckedBoxes($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function calendarConfig()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
sanitizeInputs($data);
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
configureCalendar($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: calendar.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["create"])) {
|
||||||
|
holidayCreation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["edit"])) {
|
||||||
|
holidayModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET["delete"])) {
|
||||||
|
holidayDeletion();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["configure"])) {
|
||||||
|
calendarConfig();
|
||||||
|
}
|
||||||
28
src/calendar_settings_feed.php
Normal file
28
src/calendar_settings_feed.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include 'appointment_management.php';
|
||||||
|
|
||||||
|
function formatArray($data)
|
||||||
|
{
|
||||||
|
$settings = array();
|
||||||
|
if (!$data["sabado_habil"]) {
|
||||||
|
array_push($settings, 6);
|
||||||
|
}
|
||||||
|
if (!$data["domingo_habil"]) {
|
||||||
|
array_push($settings, 0);
|
||||||
|
}
|
||||||
|
return $settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchDatabase()
|
||||||
|
{
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = listCalendarSettings($pdo);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$result = fetchDatabase();
|
||||||
|
$events = formatArray($result);
|
||||||
|
echo json_encode($events);
|
||||||
69
src/calendar_setup_form.php
Normal file
69
src/calendar_setup_form.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$doctors = listDoctors($pdo);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
?>
|
||||||
|
<form name="create_form" method="post" action="calendar_management.php">
|
||||||
|
<?php
|
||||||
|
if ($_SESSION["user_type"] == 2):
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$user = finduser($pdo, $_SESSION["user"]);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
?>
|
||||||
|
<input type="hidden" id="medico" name="medico" value="<?php echo $user[0][4]; ?>">
|
||||||
|
<?php else: ?>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="medico" name="medico">
|
||||||
|
<option>Seleccione un médico</option>
|
||||||
|
<?php foreach ($doctors as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Hora inicio mañana</label>
|
||||||
|
<input type="time" name="hora_inicio_mañana" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Hora fin mañana</label>
|
||||||
|
<input type="time" name="hora_fin_mañana" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Hora inicio tarde</label>
|
||||||
|
<input type="time" name="hora_inicio_tarde" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Hora fin tarde</label>
|
||||||
|
<input type="time" name="hora_fin_tarde" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Sábado hábil</label>
|
||||||
|
<input type="checkbox" name="sabado_habil" value="1">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Domingo hábil</label>
|
||||||
|
<input type="checkbox" name="domingo_habil" value="1">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Duración de cita por defecto</label>
|
||||||
|
<input type="number" name="duracion_cita_por_defecto" value="60" step="30">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="configure" >Guardar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
19
src/change_input_type.js
Normal file
19
src/change_input_type.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
function changeInputType() {
|
||||||
|
country = document.getElementById("pais").value;
|
||||||
|
region = document.getElementById("provincia");
|
||||||
|
city = document.getElementById("localidad");
|
||||||
|
region_input = document.getElementById("provincia2");
|
||||||
|
city_input = document.getElementById("localidad2");
|
||||||
|
|
||||||
|
if (country == 73) {
|
||||||
|
region.hidden = false;
|
||||||
|
city.hidden = false;
|
||||||
|
region_input.type = "hidden";
|
||||||
|
city_input.type = "hidden";
|
||||||
|
} else {
|
||||||
|
region.hidden = true;
|
||||||
|
city.hidden = true;
|
||||||
|
region_input.type = "text";
|
||||||
|
city_input.type = "text";
|
||||||
|
}
|
||||||
|
}
|
||||||
425
src/database.php
425
src/database.php
@@ -1,99 +1,448 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
function connectDatabase(string $user, string $pass, string $db) {
|
function connectDatabase()
|
||||||
$unix_socket = '.mysql/mysql.sock';
|
{
|
||||||
|
$connection = 'unix_socket';
|
||||||
|
$host = '../.mysql/mysql.sock';
|
||||||
$charset = 'utf8mb4';
|
$charset = 'utf8mb4';
|
||||||
$dsn = "mysql:unix_socket=$unix_socket;dbname=$db;charset=$charset";
|
$db = 'practica';
|
||||||
$pdo = new PDO($dsn, $user, $pass);
|
$dsn = "mysql:$connection=$host;dbname=$db;charset=$charset";
|
||||||
|
$pdo = new PDO($dsn, "practica", "practica");
|
||||||
return $pdo;
|
return $pdo;
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeDatabase($pdo) {
|
function closeDatabase($pdo)
|
||||||
|
{
|
||||||
$pdo = null;
|
$pdo = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function displayResults($query) {
|
function listRows($pdo, $table)
|
||||||
while($row = $query->fetch()){
|
{
|
||||||
echo $row . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function listRows($pdo, $table) {
|
|
||||||
$query = "SELECT * FROM ?";
|
$query = "SELECT * FROM ?";
|
||||||
$result = $pdo->prepare($query)->execute([$table]);
|
$result = $pdo->prepare($query)->execute([$table]);
|
||||||
displayResults($query);
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function findRows($pdo, string $table, string $attr, string $param) {
|
function fetchLatestRegion($pdo)
|
||||||
$query = "SELECT * FROM ? WHERE ? = ?";
|
{
|
||||||
$result = $pdo->prepare($query)->execute([$table, $attr, $param]);
|
$query = "SELECT id_provincia FROM provincias ORDER BY id_provincia DESC LIMIT 1;";
|
||||||
displayResults($query);
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createPatient($pdo, $data) {
|
function fetchLatestCity($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT id_municipio FROM municipios ORDER BY id_municipio DESC LIMIT 1;";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createRegion($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO provincias (id_provincia, provincia) VALUES (?,?)";
|
||||||
|
$row = fetchLatestRegion($pdo);
|
||||||
|
$last_region = $row["id_provincia"];
|
||||||
|
$index = $last_region + 1;
|
||||||
|
$pdo->prepare($query)->execute([$index, $data["provincia2"]]);
|
||||||
|
return $index;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createCity($pdo, $data, $region)
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO municipios (id_provincia, cod_municipio, DC, nombre) VALUES (?,?,?,?)";
|
||||||
|
$pdo->prepare($query)->execute([$region, 999, 999, $data["localidad2"]]);
|
||||||
|
$city = fetchLatestCity($pdo);
|
||||||
|
return $city["id_municipio"];
|
||||||
|
}
|
||||||
|
|
||||||
|
function createPatient($pdo, $data)
|
||||||
|
{
|
||||||
$query = "INSERT INTO paciente
|
$query = "INSERT INTO paciente
|
||||||
(nombre, apellido, fecha_de_nacimiento, documento_identificativo, tipo_documento, direccion, localidad, provincia, pais)
|
(nombre, apellido, fecha_de_nacimiento, documento_identificativo, tipo_documento, direccion, localidad, provincia, pais)
|
||||||
VALUES (?,?,?,?,?,?,?,?,?)";
|
VALUES (?,?,?,?,?,?,?,?,?)";
|
||||||
|
if ($data["provincia"] == "empty" and $data["localidad"] == "empty") {
|
||||||
|
$region = createRegion($pdo, $data);
|
||||||
|
$city = createCity($pdo, $data, $region);
|
||||||
|
$data["provincia"] = $region;
|
||||||
|
$data["localidad"] = $city;
|
||||||
|
}
|
||||||
$pdo->prepare($query)->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"],
|
$pdo->prepare($query)->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"],
|
||||||
$data["documento_identificativo"], $data["tipo_documento"], $data["direccion"],
|
$data["documento_identificativo"], $data["tipo_documento"], $data["direccion"],
|
||||||
$data["localidad"], $data["provincia"], $data["pais"]]);
|
$data["localidad"], $data["provincia"], $data["pais"]]);
|
||||||
return "Paciente creado con éxito";
|
return "Paciente creado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function editPatient($pdo, string $attr, string $param, string $id) {
|
function editPatient($pdo, $data, $id)
|
||||||
$query = "UPDATE paciente SET ? = ? WHERE documento_identificativo = ?";
|
{
|
||||||
$pdo->prepare($query)->execute([$attr, $param, $id]);
|
$query = "UPDATE paciente SET nombre=?, apellido=?, fecha_de_nacimiento=?, documento_identificativo=?,
|
||||||
|
tipo_documento=?, direccion=?, localidad=?, provincia=?, pais=? WHERE id=?";
|
||||||
|
if ($data["provincia"] == "empty" and $data["localidad"] == "empty") {
|
||||||
|
$region = createRegion($pdo, $data);
|
||||||
|
$city = createCity($pdo, $data, $region);
|
||||||
|
$data["provincia"] = $region;
|
||||||
|
$data["localidad"] = $city;
|
||||||
|
}
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$data["nombre"], $data["apellido"], $data["fecha_de_nacimiento"],
|
||||||
|
$data["documento_identificativo"], $data["tipo_documento"], $data["direccion"],
|
||||||
|
$data["localidad"], $data["provincia"], $data["pais"], $id]);
|
||||||
return "Paciente modificado con éxito";
|
return "Paciente modificado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function deletePatient($pdo, string $id) {
|
function deletePatient($pdo, string $id)
|
||||||
|
{
|
||||||
$check = "SELECT * FROM informes where paciente = ?";
|
$check = "SELECT * FROM informes where paciente = ?";
|
||||||
$result = $pdo->prepare($check)->execute([$id]);
|
$result = $pdo->prepare($check);
|
||||||
|
$result->execute([$id]);
|
||||||
if ($result->columnCount() == 0) {
|
if ($result->columnCount() == 0) {
|
||||||
$statement = "DELETE FROM paciente where document_identificado = ?";
|
$statement = "DELETE FROM paciente where id=?";
|
||||||
$pdo->prepare($statement)->execute([$id]);
|
$pdo->prepare($statement)->execute([$id]);
|
||||||
return "El paciente se ha eliminado correctamente";
|
return "El paciente se ha eliminado correctamente";
|
||||||
}
|
}
|
||||||
return "No se puede eliminar el paciente dado que tiene citas";
|
return "No se puede eliminar el paciente dado que tiene citas";
|
||||||
}
|
}
|
||||||
|
|
||||||
function createHoliday($pdo, $data) {
|
function createHoliday($pdo, $data)
|
||||||
|
{
|
||||||
|
if (!empty($data["medico"])) {
|
||||||
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo, medico) VALUES (?,?,?)";
|
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo, medico) VALUES (?,?,?)";
|
||||||
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"]]);
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"]]);
|
||||||
|
} else {
|
||||||
|
$query = "INSERT INTO festivo (fecha_festivo, tipo_festivo) VALUES (?,?)";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"]]);
|
||||||
|
}
|
||||||
return "Festivo creado con éxito";
|
return "Festivo creado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function editHoliday($pdo, $attr, $param, $id) {
|
function editHoliday($pdo, $data, $id)
|
||||||
$query = "UPDATE festivo SET ? = ? WHERE id = ?";
|
{
|
||||||
$pdo->prepare($query)->execute([$attr, $param, $id]);
|
$query = "UPDATE festivo SET fecha_festivo=?, tipo_festivo=?, medico=? WHERE id=?";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha_festivo"], $data["tipo_festivo"], $data["medico"], $id]);
|
||||||
return "Festivo modificado con éxito";
|
return "Festivo modificado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteHoliday($pdo, str $id) {
|
function deleteHoliday($pdo, $id)
|
||||||
|
{
|
||||||
$statement = "DELETE FROM festivo where id=?";
|
$statement = "DELETE FROM festivo where id=?";
|
||||||
$pdo->prepare($statement)->execute([$id]);
|
$pdo->prepare($statement)->execute([$id]);
|
||||||
return "Festivo borrado con éxito";
|
return "Festivo borrado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function createUser($pdo, $data) {
|
function createUser($pdo, $data)
|
||||||
|
{
|
||||||
$query = "INSERT INTO usuario (nombre, usuario, contraseña, rol, correo) VALUES (?,?,?,?,?)";
|
$query = "INSERT INTO usuario (nombre, usuario, contraseña, rol, correo) VALUES (?,?,?,?,?)";
|
||||||
$pdo->prepare($query)->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"]]);
|
$pdo->prepare($query)->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"]]);
|
||||||
return "Usuario creado con éxito";
|
return "Usuario creado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function editUser($pdo, $attr, $param, $id) {
|
function editUser($pdo, $data, $id)
|
||||||
$query = "UPDATE usuario SET ? = ? WHERE usuario = ?";
|
{
|
||||||
$pdo->prepare($query)->execute([$attr, $param, $id]);
|
$query = "UPDATE usuario SET nombre=?, usuario=?, contraseña=?, rol=?, correo=? WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$data["nombre"], $data["usuario"], $data["contraseña"], $data["rol"], $data["correo"], $id]);
|
||||||
return "Usuario modificado con éxito";
|
return "Usuario modificado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function deactivateUser($pdo, string $id) {
|
function deactivateUser($pdo, $data, $id)
|
||||||
editUser($pdo, "fecha_baja", "CURRENT_TIMESTAMP", $id);
|
{
|
||||||
|
$query = "UPDATE usuario SET fecha_baja=now() WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
return "Usuario desactivado con éxito";
|
return "Usuario desactivado con éxito";
|
||||||
}
|
}
|
||||||
|
|
||||||
function listAppointments($pdo, string $doctor) {
|
function listUsers($pdo)
|
||||||
findRows($pdo, "cita", "medico", $doctor);
|
{
|
||||||
|
$query = "SELECT usuario.nombre, usuario.usuario, rol.nombre, usuario.correo, usuario.id, fecha_baja FROM usuario
|
||||||
|
INNER JOIN rol ON usuario.rol = rol.codigo";
|
||||||
|
$result = $pdo->query($query)->fetchAll();
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
function fetchUserData($pdo, string $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM usuario WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findUser($pdo, $input)
|
||||||
|
{
|
||||||
|
$input = "%$input%";
|
||||||
|
$query = "SELECT usuario.nombre, usuario.usuario, rol.nombre, usuario.correo, usuario.id, fecha_baja
|
||||||
|
FROM usuario, rol WHERE usuario.rol=rol.codigo AND (usuario.nombre LIKE ? OR usuario.usuario LIKE ? OR usuario.correo LIKE ?)";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$input, $input, $input]);
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function listPatients($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT paciente.id, paciente.nombre, paciente.apellido, paciente.fecha_de_nacimiento, paciente.documento_identificativo,
|
||||||
|
paciente.tipo_documento, paciente.direccion, paises.nombre, provincias.provincia, municipios.nombre,
|
||||||
|
GROUP_CONCAT(DISTINCT cita.id), GROUP_CONCAT(DISTINCT informe.titulo)
|
||||||
|
FROM paciente
|
||||||
|
INNER JOIN paises ON paciente.pais = paises.id
|
||||||
|
INNER JOIN provincias ON paciente.provincia = provincias.id_provincia
|
||||||
|
INNER JOIN municipios ON paciente.localidad = municipios.id_municipio
|
||||||
|
LEFT JOIN cita ON paciente.id=cita.paciente LEFT JOIN informe ON paciente.id=informe.paciente
|
||||||
|
GROUP BY paciente.id ORDER BY paciente.id";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchPatientData($pdo, string $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM paciente WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function findPatient($pdo, $input)
|
||||||
|
{
|
||||||
|
$input = "%$input%";
|
||||||
|
$query = "SELECT * FROM paciente WHERE nombre LIKE ? OR apellido LIKE ? OR documento_identificativo LIKE ?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$input, $input, $input]);
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchCities($pdo, $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM municipios WHERE id_provincia=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchCountries($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM paises";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchRegions($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM provincias";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchHolidays($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT festivo.id, festivo.fecha_festivo, festivo.tipo_festivo, usuario.nombre
|
||||||
|
FROM festivo LEFT JOIN usuario ON festivo.medico = usuario.id";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function listDoctors($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM usuario where rol=2";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchHolidayData($pdo, string $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT * FROM festivo WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function listReports($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT informe.id, informe.titulo, informe.fecha, informe.hora, paciente.apellido,
|
||||||
|
usuario.nombre FROM informe INNER JOIN paciente ON paciente.id = informe.paciente
|
||||||
|
INNER JOIN usuario ON usuario.id = informe.medico";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createReport($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO informe
|
||||||
|
(fecha, hora, paciente, titulo, contenido, medico)
|
||||||
|
VALUES (?,?,?,?,?,?)";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["paciente"],
|
||||||
|
$data["titulo"], $data["contenido"], $data["medico"]]);
|
||||||
|
return "Informe creado con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
function editReport($pdo, $data, $id)
|
||||||
|
{
|
||||||
|
$query = "UPDATE informe SET fecha=?, hora=?, paciente=?, titulo=?, contenido=?, medico=? WHERE id=?";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["paciente"],
|
||||||
|
$data["titulo"], $data["contenido"], $data["medico"], $id]);
|
||||||
|
return "Informe modificado con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteReport($pdo, $id)
|
||||||
|
{
|
||||||
|
$statement = "DELETE FROM informe where id=?";
|
||||||
|
$pdo->prepare($statement)->execute([$id]);
|
||||||
|
return "Informe borrado con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchPatients($pdo)
|
||||||
|
{
|
||||||
|
$query = "SELECT id, apellido from paciente";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute();
|
||||||
|
$data = $result->fetchAll();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchReportData($pdo, string $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT informe.id, titulo, fecha, hora, paciente , contenido, usuario FROM informe
|
||||||
|
INNER JOIN usuario ON informe.medico = usuario.id
|
||||||
|
WHERE informe.id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchLoginData($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "SELECT usuario, contraseña, rol FROM usuario WHERE usuario=? AND fecha_baja IS NULL";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$data["usuario"]]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkExistingCalendar($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "SELECT * from calendario WHERE medico=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$data["medico"]]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function configureCalendar($pdo, $data)
|
||||||
|
{
|
||||||
|
$existing = checkExistingCalendar($pdo, $data);
|
||||||
|
if (!$existing) {
|
||||||
|
$query = "INSERT INTO calendario
|
||||||
|
(hora_inicio_mañana, hora_fin_mañana, hora_inicio_tarde, hora_fin_tarde,
|
||||||
|
horario, sabado_habil, domingo_habil, duracion_cita_por_defecto, medico)
|
||||||
|
VALUES (?,?,?,?,?,?,?,?,?)";
|
||||||
|
$pdo->prepare($query)->execute([$data["hora_inicio_mañana"], $data["hora_fin_mañana"], $data["hora_inicio_tarde"],
|
||||||
|
$data["hora_fin_tarde"], $data["horario"], $data["sabado_habil"], $data["domingo_habil"],
|
||||||
|
$data["duracion_cita_por_defecto"], $data["medico"]]);
|
||||||
|
} else {
|
||||||
|
$query = "UPDATE calendario SET hora_inicio_mañana=?, hora_fin_mañana=?,
|
||||||
|
hora_inicio_tarde=?, hora_fin_tarde=?, horario=?, sabado_habil=?, domingo_habil=?,
|
||||||
|
duracion_cita_por_defecto=? WHERE medico=?";
|
||||||
|
$pdo->prepare($query)->execute([$data["hora_inicio_mañana"], $data["hora_fin_mañana"], $data["hora_inicio_tarde"],
|
||||||
|
$data["hora_fin_tarde"], $data["horario"], $data["sabado_habil"], $data["domingo_habil"],
|
||||||
|
$data["duracion_cita_por_defecto"], $data["medico"]]);
|
||||||
|
}
|
||||||
|
return "Calendario configurado con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchCalendarEvents($pdo, $doctor)
|
||||||
|
{
|
||||||
|
$query = "SELECT cita.id, fecha, hora, duracion, medico, observaciones, nombre, apellido, documento_identificativo FROM cita
|
||||||
|
INNER JOIN paciente ON cita.paciente = paciente.id
|
||||||
|
WHERE medico=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$doctor]);
|
||||||
|
$data = $result->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchCalendarSettings($pdo, $doctor)
|
||||||
|
{
|
||||||
|
$query = "SELECT * from calendario WHERE medico=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$doctor]);
|
||||||
|
$data = $result->fetch(PDO::FETCH_ASSOC);
|
||||||
|
if (empty($data[8])) {
|
||||||
|
$data[8] = 60;
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchDoctorHolidays($pdo, $doctor)
|
||||||
|
{
|
||||||
|
$query = "SELECT festivo.id, fecha_festivo, tipo_festivo, medico, nombre FROM festivo
|
||||||
|
INNER JOIN usuario ON festivo.medico = usuario.id;
|
||||||
|
WHERE medico IS NULL OR medico=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$doctor]);
|
||||||
|
$data = $result->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function createAppointment($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "INSERT INTO cita (fecha, hora, duracion, medico, observaciones, paciente) VALUES (?,?,?,?,?,?)";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["duracion"],
|
||||||
|
$data["doctor"], $data["observaciones"], $data["paciente"]]);
|
||||||
|
return "Cita creada con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function editAppointment($pdo, $data)
|
||||||
|
{
|
||||||
|
$query = "UPDATE cita SET fecha=?, hora=?, duracion=?, observaciones=?, paciente=?
|
||||||
|
WHERE id=?";
|
||||||
|
$pdo->prepare($query)->execute([$data["fecha"], $data["hora"], $data["duracion"],
|
||||||
|
$data["observaciones"], $data["paciente"], $data["id"]]);
|
||||||
|
return "Cita modificada con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function deleteAppointment($pdo, $id)
|
||||||
|
{
|
||||||
|
$statement = "DELETE FROM cita WHERE id=?";
|
||||||
|
$pdo->prepare($statement)->execute([$id]);
|
||||||
|
return "Cita borrada con éxito";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function fetchAppointmentData($pdo, $id)
|
||||||
|
{
|
||||||
|
$query = "SELECT id, fecha, hora, duracion, observaciones FROM cita WHERE id=?";
|
||||||
|
$result = $pdo->prepare($query);
|
||||||
|
$result->execute([$id]);
|
||||||
|
$data = $result->fetch();
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|||||||
43
src/holiday_create_form.php
Normal file
43
src/holiday_create_form.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$doctors = listDoctors($pdo);
|
||||||
|
?>
|
||||||
|
<form name="create_form" method="post" action="calendar_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Fecha</label>
|
||||||
|
<input type="date" name="fecha_festivo" value="">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>Tipo</label>
|
||||||
|
<select id="tipo_festivo" name="tipo_festivo">
|
||||||
|
<option value="mañana">mañana</option>
|
||||||
|
<option value="tarde">tarde</option>
|
||||||
|
<option value="completo">completo</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="medico" name="medico">
|
||||||
|
<option>Seleccione un médico</option>
|
||||||
|
<?php foreach ($doctors as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="create" >Guardar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
45
src/holiday_edit_form.php
Normal file
45
src/holiday_edit_form.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchHolidayData($pdo, $_GET["edit"]);
|
||||||
|
?>
|
||||||
|
<form method="post" action="user_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Fecha</label>
|
||||||
|
<input type="date" name="fecha_festivo" value="<?php echo $data[1]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>Tipo</label>
|
||||||
|
<select id="tipo_festivo" name="tipo_festivo">
|
||||||
|
<option value="mañana">mañana</option>
|
||||||
|
<option value="tarde">tarde</option>
|
||||||
|
<option value="completo">completo</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="medico" name="medico">
|
||||||
|
<option>Seleccione un médico</option>
|
||||||
|
<?php foreach ($doctors as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="edit" >Editar</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $_GET["edit"]; ?>">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
32
src/holiday_feed.php
Normal file
32
src/holiday_feed.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include 'appointment_management.php';
|
||||||
|
|
||||||
|
function formatArray($data)
|
||||||
|
{
|
||||||
|
$events = array();
|
||||||
|
foreach ($data as $row) {
|
||||||
|
$events[] = array(
|
||||||
|
"id" => $row["id"],
|
||||||
|
"start" => $row["fecha_festivo"],
|
||||||
|
"description" => $row["tipo_festivo"],
|
||||||
|
"doctor" => $row["nombre"],
|
||||||
|
"rendering" => "background",
|
||||||
|
"color" => "#ffa6a3",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $events;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchDatabase()
|
||||||
|
{
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = listHolidays($pdo);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$result = fetchDatabase();
|
||||||
|
$events = formatArray($result);
|
||||||
|
echo json_encode($events);
|
||||||
20
src/index.php
Normal file
20
src/index.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>MDIS</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<main>
|
||||||
|
<section class="hero">
|
||||||
|
<div class="hero-inner">
|
||||||
|
<h1>MDIS</h1>
|
||||||
|
<h2>MDIS es un sistema de información que permite gestionar una consulta médica.</h2>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<main>
|
||||||
|
</body>
|
||||||
28
src/login.php
Normal file
28
src/login.php
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="validate_user.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
</body>
|
||||||
|
<form name="login_form" method="post" action="user_management.php" onsubmit="return validateLogin();">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>usuario</label>
|
||||||
|
<input type="text" name="usuario" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>contraseña</label>
|
||||||
|
<input type="password" name="contraseña" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="login">Iniciar sesión</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</html>
|
||||||
22
src/navbar.php
Normal file
22
src/navbar.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<header>
|
||||||
|
<nav>
|
||||||
|
<ul class="navbar-left">
|
||||||
|
<li class="list"><a href="index.php">Página principal</a></li>
|
||||||
|
<?php if (isset($_SESSION["user"])): ?>
|
||||||
|
<li class="list"><a href="user.php">Usuarios</a></li>
|
||||||
|
<li class="list"><a href="patient.php">Pacientes</a></li>
|
||||||
|
<li class="list"><a href="appointment.php">Citas</a></li>
|
||||||
|
<li class="list"><a href="calendar.php">Calendario</a></li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if ($_SESSION["user_type"] == 2): ?>
|
||||||
|
<li class="list"><a href="report.php">Informes</a></li>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if (isset($_SESSION["user"])): ?>
|
||||||
|
<li class="list"><a href="user_management.php?logout=1">Cerrar sesión</a></li>
|
||||||
|
<?php else: ?>
|
||||||
|
<li class="list"><a href="login.php">Iniciar sesión</a></li>
|
||||||
|
<?php endif; ?>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
80
src/patient.php
Normal file
80
src/patient.php
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de pacientes</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<div>
|
||||||
|
<form method="post" action="patient_management.php">
|
||||||
|
<div class="search-group">
|
||||||
|
<input type="text" name="search_box" value="">
|
||||||
|
<button class="create_btn" type="submit" name="search" >Buscar</button>
|
||||||
|
<a href="patient_create_form.php" class="create_btn" >Crear</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nombre</th>
|
||||||
|
<th>Apellido</th>
|
||||||
|
<th>Fecha de nacimiento</th>
|
||||||
|
<th>Documento identificativo</th>
|
||||||
|
<th>Tipo de documento</th>
|
||||||
|
<th>Dirección</th>
|
||||||
|
<th>Pais</th>
|
||||||
|
<th>Provincia</th>
|
||||||
|
<th>Localidad</th>
|
||||||
|
<th>Citas</th>
|
||||||
|
<th>Informes</th>
|
||||||
|
<th colspan="2">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
|
||||||
|
if (isset($_GET["search"])) {
|
||||||
|
$list = findPatient($pdo, $_GET["search"]);
|
||||||
|
} else {
|
||||||
|
$list = listPatients($pdo);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($list as $row) :
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $row[1]; ?></td>
|
||||||
|
<td><?php echo $row[2]; ?></td>
|
||||||
|
<td><?php echo $row[3]; ?></td>
|
||||||
|
<td><?php echo $row[4]; ?></td>
|
||||||
|
<td><?php echo $row[5]; ?></td>
|
||||||
|
<td><?php echo $row[6]; ?></td>
|
||||||
|
<td><?php echo $row[7]; ?></td>
|
||||||
|
<td><?php echo $row[8]; ?></td>
|
||||||
|
<td><?php echo $row[9]; ?></td>
|
||||||
|
<td><?php echo $row[10]; ?></td>
|
||||||
|
<td><?php echo $row[11]; ?></td>
|
||||||
|
<td>
|
||||||
|
<a href="patient_edit_form.php?edit=<?php echo $row[0]; ?>" class="edit_btn">Editar</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="patient_management.php?delete=<?php echo $row[0]; ?>" class="del_btn">Borrar</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach ?>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</table>
|
||||||
|
<?php if (isset($_GET["search"])): ?>
|
||||||
|
<div style="text-align: right; margin-top: 40px;">
|
||||||
|
<a href="patient.php" class="back_btn">Atrás</a>
|
||||||
|
</div>
|
||||||
|
<?php endif ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
82
src/patient_create_form.php
Normal file
82
src/patient_create_form.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de pacientes</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="static/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="ajax.js"></script>
|
||||||
|
<script src="validate_patient.js"></script>
|
||||||
|
<script src="change_input_type.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$countries = fetchCountries($pdo);
|
||||||
|
$regions = fetchRegions($pdo);
|
||||||
|
?>
|
||||||
|
<form name="create_form" method="post" action="patient_management.php" onsubmit="return validatePatient();">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Nombre</label>
|
||||||
|
<input type="text" name="nombre" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Apellido</label>
|
||||||
|
<input type="text" name="apellido" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>fecha_de_nacimiento</label>
|
||||||
|
<input type="date" name="fecha_de_nacimiento" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>documento_identificativo</label>
|
||||||
|
<input type="text" name="documento_identificativo" value="">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>tipo_documento</label>
|
||||||
|
<select id="tipo_documento" name="tipo_documento">
|
||||||
|
<option value="DNI">DNI</option>
|
||||||
|
<option value="NIE">NIE</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>direccion</label>
|
||||||
|
<input type="text" name="direccion" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>pais</label>
|
||||||
|
<select id="pais" name="pais" onchange="changeInputType();">
|
||||||
|
<option>Selecciona el país</option>
|
||||||
|
<?php foreach ($countries as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[2]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>provincia</label>
|
||||||
|
<select id="provincia" name="provincia">
|
||||||
|
<option value="empty">Selecciona la provincia</option>
|
||||||
|
<?php foreach ($regions as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
<input type="hidden" id="provincia2" name="provincia2" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>localidad</label>
|
||||||
|
<select id="localidad" name="localidad">
|
||||||
|
<option value="empty">Selecciona la localidad</option>
|
||||||
|
</select>
|
||||||
|
<input type="hidden" id="localidad2" name="localidad2" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="create">Guardar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
84
src/patient_edit_form.php
Normal file
84
src/patient_edit_form.php
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de pacientes</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="static/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="ajax.js"></script>
|
||||||
|
<script src="validate_patient.js"></script>
|
||||||
|
<script src="change_input_type.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchPatientData($pdo, $_GET["edit"]);
|
||||||
|
$countries = fetchCountries($pdo);
|
||||||
|
$regions = fetchRegions($pdo);
|
||||||
|
?>
|
||||||
|
<form method="post" action="patient_management.php" onsubmit="return validatePatient();">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Nombre</label>
|
||||||
|
<input type="text" name="nombre" value="<?php echo $data[1]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Apellido</label>
|
||||||
|
<input type="text" name="apellido" value="<?php echo $data[2]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>fecha_de_nacimiento</label>
|
||||||
|
<input type="password" name="fecha_de_nacimiento" value="<?php echo $data[3]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>documento_identificativo</label>
|
||||||
|
<input type="text" name="documento_identificativo" value="<?php echo $data[4]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>tipo_documento</label>
|
||||||
|
<select id="tipo_documento" name="tipo_documento">
|
||||||
|
<option value="DNI">DNI</option>
|
||||||
|
<option value="NIE">NIE</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>direccion</label>
|
||||||
|
<input type="text" name="direccion" value="<?php echo $data[6]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>pais</label>
|
||||||
|
<select id="pais" name="pais" onchange="changeInputType();">
|
||||||
|
<option>Selecciona el país</option>
|
||||||
|
<?php foreach ($countries as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[2]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>provincia</label>
|
||||||
|
<select id="provincia" name="provincia">
|
||||||
|
<option value="empty">Selecciona la provincia</option>
|
||||||
|
<?php foreach ($regions as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
<input type="hidden" id="provincia2" name="provincia2" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>localidad</label>
|
||||||
|
<select id="localidad" name="localidad">
|
||||||
|
<option value="empty">Selecciona la localidad</option>
|
||||||
|
</select>
|
||||||
|
<input type="hidden" id="localidad2" name="localidad2" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="edit" >Editar</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $_GET["edit"]; ?>">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
57
src/patient_management.php
Normal file
57
src/patient_management.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
include'database.php';
|
||||||
|
|
||||||
|
function patientCreation()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
createPatient($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: patient.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function patientModification()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$id = $_POST["id"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
editPatient($pdo, $data, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: patient.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function patientDeletion()
|
||||||
|
{
|
||||||
|
$id = $_GET["delete"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
deletePatient($pdo, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: patient.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function patientFind()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
findPatient($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
$search = $data["search_box"];
|
||||||
|
header("location: patient.php?search=$search");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["create"])) {
|
||||||
|
patientCreation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["edit"])) {
|
||||||
|
patientModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET["delete"])) {
|
||||||
|
patientDeletion();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["search"])) {
|
||||||
|
patientFind();
|
||||||
|
}
|
||||||
48
src/print_page.js
Normal file
48
src/print_page.js
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
function printExternalHTML(url) {
|
||||||
|
var printWindow = window.open(url, 'Print', 'left=200, top=200, width=950, height=500, toolbar=0, resizable=0');
|
||||||
|
|
||||||
|
printWindow.addEventListener('load', function() {
|
||||||
|
if (Boolean(printWindow.chrome)) {
|
||||||
|
printWindow.print();
|
||||||
|
setTimeout(function() {
|
||||||
|
printWindow.close();
|
||||||
|
}, 500);
|
||||||
|
} else {
|
||||||
|
printWindow.print();
|
||||||
|
printWindow.close();
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHTML(url) {
|
||||||
|
html = null;
|
||||||
|
$.ajax({
|
||||||
|
url: url,
|
||||||
|
async: false,
|
||||||
|
success: function(data) {
|
||||||
|
console.log(data);
|
||||||
|
html = data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function printExternalPDF(url) {
|
||||||
|
var html = getHTML(url);
|
||||||
|
var pdf = new jsPDF();
|
||||||
|
margins = {
|
||||||
|
top: 80,
|
||||||
|
bottom: 60,
|
||||||
|
left: 40,
|
||||||
|
width: 522
|
||||||
|
};
|
||||||
|
pdf.fromHTML(
|
||||||
|
html,
|
||||||
|
margins.left,
|
||||||
|
margins.top, {
|
||||||
|
'width': margins.width
|
||||||
|
}
|
||||||
|
),
|
||||||
|
pdf.save();
|
||||||
|
}
|
||||||
65
src/report.php
Normal file
65
src/report.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de informes</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="static/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="static/jspdf.min.js"></script>
|
||||||
|
<script src="print_page.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<div>
|
||||||
|
<form method="post" action="report_management.php">
|
||||||
|
<div class="search-group">
|
||||||
|
<a href="report_create_form.php" class="create_btn" >Crear</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Titulo</th>
|
||||||
|
<th>Fecha</th>
|
||||||
|
<th>Hora</th>
|
||||||
|
<th>Paciente</th>
|
||||||
|
<th>Médico</th>
|
||||||
|
<th colspan="3">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$list = listReports($pdo);
|
||||||
|
|
||||||
|
foreach ($list as $row) :
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $row[1]; ?></td>
|
||||||
|
<td><?php echo $row[2]; ?></td>
|
||||||
|
<td><?php echo $row[3]; ?></td>
|
||||||
|
<td><?php echo $row[4]; ?></td>
|
||||||
|
<td><?php echo $row[5]; ?></td>
|
||||||
|
<td>
|
||||||
|
<a href="report_edit_form.php?edit=<?php echo $row[0]; ?>" class="edit_btn">Editar</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="report_management.php?delete=<?php echo $row[0]; ?>" class="del_btn">Borrar</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="button" value="HTML" class="create_btn" onClick="printExternalHTML('report_content.php?id=<?php echo $row[0]; ?>')">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="button" value="PDF" class="create_btn" onClick="printExternalPDF('report_content.php?id=<?php echo $row[0]; ?>')">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach ?>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
38
src/report_content.php
Normal file
38
src/report_content.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de informes</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Titulo</th>
|
||||||
|
<th>Fecha</th>
|
||||||
|
<th>Hora</th>
|
||||||
|
<th>Paciente</th>
|
||||||
|
<th>Contenido</th>
|
||||||
|
<th>Médico</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchReportData($pdo, $_GET["id"]);
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $data[1]; ?></td>
|
||||||
|
<td><?php echo $data[2]; ?></td>
|
||||||
|
<td><?php echo $data[3]; ?></td>
|
||||||
|
<td><?php echo $data[4]; ?></td>
|
||||||
|
<td><?php echo $data[5]; ?></td>
|
||||||
|
<td><?php echo $data[6]; ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
51
src/report_create_form.php
Normal file
51
src/report_create_form.php
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="validate_report.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$patients = fetchPatients($pdo);
|
||||||
|
$user = finduser($pdo, $_SESSION["user"]);
|
||||||
|
?>
|
||||||
|
<form name="create_form" method="post" action="report_management.php" onsubmit="return validateReport();">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Titulo</label>
|
||||||
|
<input type="text" name="titulo" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>fecha</label>
|
||||||
|
<input type="date" name="fecha" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>hora</label>
|
||||||
|
<input type="time" name="hora" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="paciente" name="paciente">
|
||||||
|
<option>Seleccione un paciente</option>
|
||||||
|
<?php foreach ($patients as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>contenido</label>
|
||||||
|
<input type="text" name="contenido" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="create" >Guardar</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="medico" name="medico" value="<?php echo $user[0][4]; ?>">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
59
src/report_edit_form.php
Normal file
59
src/report_edit_form.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchReportData($pdo, $_GET["edit"]);
|
||||||
|
$list = listPatients($pdo);
|
||||||
|
?>
|
||||||
|
<form name="create_form" method="post" action="report_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Titulo</label>
|
||||||
|
<input type="text" name="titulo" value="<?php echo $data[4]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>fecha</label>
|
||||||
|
<input type="date" name="fecha" value="<?php echo $data[1]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>hora</label>
|
||||||
|
<input type="time" name="hora" value="<?php echo $data[2]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="paciente" name="paciente">
|
||||||
|
<option>Seleccione un paciente</option>
|
||||||
|
<?php foreach ($patients as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<select id="medico" name="medico">
|
||||||
|
<option>Seleccione un médico</option>
|
||||||
|
<?php foreach ($doctors as $row) : ?>
|
||||||
|
<option value="<?php echo $row[0]; ?>"><?php echo $row[1]; ?></option>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>contenido</label>
|
||||||
|
<input type="text" name="contenido" value="<?php echo $data[4]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="edit" >Editar</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $_GET["edit"]; ?>">
|
||||||
|
<input type="button" value="Imprimir" onClick="window.print()">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
48
src/report_management.php
Normal file
48
src/report_management.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
include'database.php';
|
||||||
|
|
||||||
|
|
||||||
|
function reportCreation()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
createReport($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: report.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function reportModification()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$id = $_POST["id"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
editReport($pdo, $data, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: report.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function reportDeletion()
|
||||||
|
{
|
||||||
|
$id = $_GET["delete"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
deleteReport($pdo, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: report.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["create"])) {
|
||||||
|
reportCreation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["edit"])) {
|
||||||
|
reportModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_GET["delete"])) {
|
||||||
|
reportDeletion();
|
||||||
|
}
|
||||||
BIN
src/static/cover.jpg
Normal file
BIN
src/static/cover.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 155 KiB |
1413
src/static/fullcalendar.css
Normal file
1413
src/static/fullcalendar.css
Normal file
File diff suppressed because it is too large
Load Diff
10
src/static/fullcalendar.min.js
vendored
Normal file
10
src/static/fullcalendar.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
src/static/jquery-3.5.1.min.js
vendored
Normal file
2
src/static/jquery-3.5.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1311
src/static/jquery-ui.css
vendored
Normal file
1311
src/static/jquery-ui.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
13
src/static/jquery-ui.min.js
vendored
Normal file
13
src/static/jquery-ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
286
src/static/jspdf.min.js
vendored
Normal file
286
src/static/jspdf.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
7
src/static/moment.min.js
vendored
Normal file
7
src/static/moment.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
161
src/static/style.css
Normal file
161
src/static/style.css
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
* {
|
||||||
|
font-family: Roboto, Mono;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table{
|
||||||
|
width: 50%;
|
||||||
|
margin: 30px auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
border-bottom: 1px solid #cbcbcb;
|
||||||
|
}
|
||||||
|
th, td{
|
||||||
|
border: none;
|
||||||
|
height: 30px;
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
tr:hover {
|
||||||
|
background: #F5F5F5;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
width: 45%;
|
||||||
|
margin: 50px auto;
|
||||||
|
text-align: left;
|
||||||
|
padding: 20px;
|
||||||
|
border: 1px solid #bbbbbb;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group {
|
||||||
|
margin: 10px 0px 10px 0px;
|
||||||
|
}
|
||||||
|
.input-group label {
|
||||||
|
display: block;
|
||||||
|
text-align: left;
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
.input-group input {
|
||||||
|
height: 30px;
|
||||||
|
width: 93%;
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-group input {
|
||||||
|
height: 30px;
|
||||||
|
width: 93%;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: white;
|
||||||
|
background: #5F9EA0;
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create_btn {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 2px 5px;
|
||||||
|
background: #5F9EA0;
|
||||||
|
color: white;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.back_btn {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 2px 5px;
|
||||||
|
background: #88B8E7;
|
||||||
|
color: white;
|
||||||
|
border-radius: 3px;
|
||||||
|
margin: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.edit_btn {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 2px 5px;
|
||||||
|
background: #0d841f;
|
||||||
|
color: white;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.del_btn {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 2px 5px;
|
||||||
|
color: white;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: #800000;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: #5F9EA0;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
box-shadow: 0 0 25px 0 black;
|
||||||
|
}
|
||||||
|
|
||||||
|
header * {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
header li {
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header li a {
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
background-image: linear-gradient(rgba(0, 0, 0, 0.5),rgba(0, 0, 0, 0.5)), url('cover.jpg');
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero h1 {
|
||||||
|
font-size: 5em;
|
||||||
|
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
.success {
|
||||||
|
background: #cdf3cd;
|
||||||
|
padding: 10px 60px;
|
||||||
|
border: #c3e6c3 1px solid;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#calendar {
|
||||||
|
max-width: 600px;
|
||||||
|
margin: auto;
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
68
src/user.php
Normal file
68
src/user.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<html class="no-js" lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<div>
|
||||||
|
<form method="post" action="user_management.php">
|
||||||
|
<div class="search-group">
|
||||||
|
<input type="text" name="search_box" value="">
|
||||||
|
<button class="create_btn" type="submit" name="search" >Buscar</button>
|
||||||
|
<a href="user_create_form.php" class="create_btn" >Crear</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nombre</th>
|
||||||
|
<th>Usuario</th>
|
||||||
|
<th>Rol</th>
|
||||||
|
<th>Correo</th>
|
||||||
|
<th colspan="2">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
|
||||||
|
if (isset($_GET["search"])) {
|
||||||
|
$list = findUser($pdo, $_GET["search"]);
|
||||||
|
} else {
|
||||||
|
$list = listUsers($pdo);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($list as $row) :
|
||||||
|
if (!$row[5]):
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $row[0]; ?></td>
|
||||||
|
<td><?php echo $row[1]; ?></td>
|
||||||
|
<td><?php echo $row[2]; ?></td>
|
||||||
|
<td><?php echo $row[3]; ?></td>
|
||||||
|
<td>
|
||||||
|
<a href="user_edit_form.php?edit=<?php echo $row[4]; ?>" class="edit_btn">Editar</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="user_management.php?delete=<?php echo $row[4]; ?>" class="del_btn">Borrar</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endif ?>
|
||||||
|
<?php endforeach ?>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</table>
|
||||||
|
<?php if (isset($_GET["search"])): ?>
|
||||||
|
<div style="text-align: right; margin-top: 20px;">
|
||||||
|
<a href="user.php" class="back_btn">Atrás</a>
|
||||||
|
</div>
|
||||||
|
<?php endif ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
41
src/user_create_form.php
Normal file
41
src/user_create_form.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
<script src="validate_user.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<form name="create_form" method="post" action="user_management.php" onsubmit="return validateUser();">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Nombre</label>
|
||||||
|
<input type="text" name="nombre" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>usuario</label>
|
||||||
|
<input type="text" name="usuario" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>contraseña</label>
|
||||||
|
<input type="password" name="contraseña" value="">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>rol</label>
|
||||||
|
<select id="rol" name="rol">
|
||||||
|
<option value="1">administrativo</option>
|
||||||
|
<option value="2">médico</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>correo</label>
|
||||||
|
<input type="text" name="correo" value="">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="create" >Guardar</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
48
src/user_edit_form.php
Normal file
48
src/user_edit_form.php
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?php session_start(); ?>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||||
|
<title>Gestión de usuarios</title>
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="static/style.css" type="text/css" media="screen" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php include 'navbar.php'; ?>
|
||||||
|
<?php
|
||||||
|
include 'database.php';
|
||||||
|
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$data = fetchUserData($pdo, $_GET["edit"]);
|
||||||
|
?>
|
||||||
|
<form method="post" action="user_management.php">
|
||||||
|
<div class="input-group">
|
||||||
|
<label>Nombre</label>
|
||||||
|
<input type="text" name="nombre" value="<?php echo $data[1]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>usuario</label>
|
||||||
|
<input type="text" name="usuario" value="<?php echo $data[2]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>contraseña</label>
|
||||||
|
<input type="password" name="contraseña" value="<?php echo $data[3]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="select-input">
|
||||||
|
<label>rol</label>
|
||||||
|
<select id="rol" name="rol">
|
||||||
|
<option value="1">administrativo</option>
|
||||||
|
<option value="2">médico</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<label>correo</label>
|
||||||
|
<input type="text" name="correo" value="<?php echo $data[6]; ?>">
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
<button class="btn" type="submit" name="edit" >Editar</button>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="id" value="<?php echo $_GET["edit"]; ?>">
|
||||||
|
</form>
|
||||||
|
<?php closeDatabase($pdo); ?>
|
||||||
|
</body>
|
||||||
@@ -1,8 +1,92 @@
|
|||||||
<?php
|
<?php
|
||||||
include'database.php';
|
include'database.php';
|
||||||
if (isset($_POST['submit'])) {
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
function userCreation()
|
||||||
|
{
|
||||||
$data = $_POST;
|
$data = $_POST;
|
||||||
$pdo = connectDatabase("practica", "practica", "practica");
|
$pdo = connectDatabase();
|
||||||
createUser($pdo, $data);
|
createUser($pdo, $data);
|
||||||
closeDatabase($pdo);
|
closeDatabase($pdo);
|
||||||
|
header('location: user.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function userModification()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$id = $_POST["id"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
editUser($pdo, $data, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: user.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function userDeletion()
|
||||||
|
{
|
||||||
|
$id = $_GET["delete"];
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
deactivateUser($pdo, $data, $id);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
header('location: user.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
function userFind()
|
||||||
|
{
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
findUser($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
$search = $data["search_box"];
|
||||||
|
header("location: user.php?search=$search");
|
||||||
|
}
|
||||||
|
|
||||||
|
function userLogin()
|
||||||
|
{
|
||||||
|
$location = 'login.php';
|
||||||
|
$data = $_POST;
|
||||||
|
$pdo = connectDatabase();
|
||||||
|
$db_data = fetchLoginData($pdo, $data);
|
||||||
|
closeDatabase($pdo);
|
||||||
|
if ($data["usuario"] == $db_data["usuario"] && $data["contraseña"] == $db_data["contraseña"]) {
|
||||||
|
$_SESSION["user"] = $db_data["usuario"];
|
||||||
|
$_SESSION["user_type"] = $db_data["rol"];
|
||||||
|
$location = 'index.php';
|
||||||
|
}
|
||||||
|
header("location: $location");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function userLogout()
|
||||||
|
{
|
||||||
|
if (isset($_SESSION["user"])) {
|
||||||
|
session_unset();
|
||||||
|
session_destroy();
|
||||||
|
}
|
||||||
|
header("location: index.php");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["create"])) {
|
||||||
|
userCreation();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (isset($_POST["edit"])) {
|
||||||
|
userModification();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET["delete"])) {
|
||||||
|
userDeletion();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["search"])) {
|
||||||
|
userFind();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST["login"])) {
|
||||||
|
userLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET["logout"])) {
|
||||||
|
userLogout();
|
||||||
}
|
}
|
||||||
|
|||||||
68
src/validate_patient.js
Normal file
68
src/validate_patient.js
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
function checkDNI(dni) {
|
||||||
|
var number,
|
||||||
|
let, letter;
|
||||||
|
var regex = /^[XYZ]?\d{5,8}[A-Z]$/;
|
||||||
|
|
||||||
|
dni = dni.toUpperCase();
|
||||||
|
|
||||||
|
if (regex.test(dni) === true) {
|
||||||
|
number = dni.substr(0, dni.length - 1);
|
||||||
|
number = number.replace('X', 0);
|
||||||
|
number = number.replace('Y', 1);
|
||||||
|
number = number.replace('Z', 2);
|
||||||
|
let = dni.substr(dni.length - 1, 1);
|
||||||
|
number = number % 23;
|
||||||
|
letter = 'TRWAGMYFPDXBNJZSQVHLCKET';
|
||||||
|
letter = letter.substring(number, number + 1);
|
||||||
|
if (letter !=
|
||||||
|
let) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateString(input) {
|
||||||
|
if (input == "") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function validatePatient() {
|
||||||
|
var name = document.forms["create_form"]["nombre"];
|
||||||
|
var last_name = document.forms["create_form"]["apellido"];
|
||||||
|
var dni = document.forms["create_form"]["documento_identificativo"];
|
||||||
|
var address = document.forms["create_form"]["direccion"];
|
||||||
|
var country = document.forms["create_form"]["pais"];
|
||||||
|
|
||||||
|
if (!checkDNI(dni.value)) {
|
||||||
|
alert("El DNI/NIE no es correcto");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(name.value)) {
|
||||||
|
alert("Introduce el nombre");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(last_name.value)) {
|
||||||
|
alert("Introduce el apellido");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(address.value)) {
|
||||||
|
alert("Introduce la dirección");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(country.value)) {
|
||||||
|
alert("Introduce el país");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
22
src/validate_report.js
Normal file
22
src/validate_report.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
function validateString(input) {
|
||||||
|
if (input == "") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateReport() {
|
||||||
|
var title = document.forms["create_form"]["titulo"];
|
||||||
|
var content = document.forms["create_form"]["contenido"];
|
||||||
|
|
||||||
|
if (!validateString(title.value)) {
|
||||||
|
alert("Introduce el título");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(content.value)) {
|
||||||
|
alert("Introduce el contenido");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
63
src/validate_user.js
Normal file
63
src/validate_user.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
function validateString(input) {
|
||||||
|
if (input == "") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateEmail(input) {
|
||||||
|
var emailID = input;
|
||||||
|
atpos = emailID.indexOf("@");
|
||||||
|
dotpos = emailID.lastIndexOf(".");
|
||||||
|
|
||||||
|
if (atpos < 1 || (dotpos - atpos < 2)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function validateUser() {
|
||||||
|
var name = document.forms["create_form"]["nombre"];
|
||||||
|
var user = document.forms["create_form"]["usuario"];
|
||||||
|
var password = document.forms["create_form"]["contraseña"];
|
||||||
|
var email = document.forms["create_form"]["correo"];
|
||||||
|
|
||||||
|
if (!validateString(name.value)) {
|
||||||
|
alert("Introduce el nombre");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(user.value)) {
|
||||||
|
alert("Introduce el usuario");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(password.value)) {
|
||||||
|
alert("Introduce la contraseña");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateEmail(email.value)) {
|
||||||
|
alert("El correo proporcionado es incorrecto");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateLogin() {
|
||||||
|
var user = document.forms["login_form"]["usuario"];
|
||||||
|
var password = document.forms["login_form"]["contraseña"];
|
||||||
|
|
||||||
|
if (!validateString(user.value)) {
|
||||||
|
alert("Introduce el usuario");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!validateString(password.value)) {
|
||||||
|
alert("Introduce la contraseña");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user