#Sistema de agendamiento automático
#1. Base de datos de 20 pacientes
#2. Uno de los datos debe ser fecha de cita de control.
#3. El sistema debe emitir alarma (datos del paciente) con un día de anticipación y agendar cita médica de control.
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.3.2
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
#Base de datos
pacientes <- data.frame(
Nombre = c("Andres", "Valentina", "Nicolas", "Patricia", "Luis",
"Sofia", "Diego", "Juliana", "David", "Natalia",
"Felipe", "Valeria", "Camilo", "Daniela", "Gabriel",
"Karol", "Alejandro", "Karen", "Eric", "Angela"),
Apellidos = c("Rodriguez", "Gomez", "Garcia", "Gallego", "Vallejo",
"Real", "Muñoz", "Lopez", "Perez", "Coronado",
"Salinas", "Pelaez", "Nuñez", "Bolaños", "Diaz",
"Sinisterra", "Golondrino", "Mina", "Alferez", "Melendez"),
Edad = c(25, 30, 35, 40, 45, 28, 33, 38, 43, 48, 22, 27, 32, 37, 42, 26, 31, 36, 41, 46),
Sexo = c("M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F"),
Numero_Identidad = c("1192910", "1006170", "1182311", "1007481", "1172312",
"1003142", "1142613", "1001103", "1132514", "1009124",
"1122715", "1001595", "1102716", "1003106", "1125917",
"1002197", "1152218", "1002108", "1192719", "1006179"),
Fecha_Cita = as.Date(c("2023-11-10", "2023-11-15", "2023-11-20", "2023-11-25", "2023-11-30",
"2023-12-05", "2023-12-10", "2023-12-15", "2023-12-20", "2023-12-25",
"2024-01-05", "2024-01-10", "2024-01-15", "2024-01-20", "2024-01-25",
"2024-02-05", "2024-02-10", "2024-02-15", "2024-02-20", "2024-02-25"))
)
#Generar la fecha de la cita de control (15 días después de la cita)
pacientes$Fecha_Control <- pacientes$Fecha_Cita + days(15)
#Mostrar la base de datos de pacientes
print(pacientes)
## Nombre Apellidos Edad Sexo Numero_Identidad Fecha_Cita Fecha_Control
## 1 Andres Rodriguez 25 M 1192910 2023-11-10 2023-11-25
## 2 Valentina Gomez 30 F 1006170 2023-11-15 2023-11-30
## 3 Nicolas Garcia 35 M 1182311 2023-11-20 2023-12-05
## 4 Patricia Gallego 40 F 1007481 2023-11-25 2023-12-10
## 5 Luis Vallejo 45 M 1172312 2023-11-30 2023-12-15
## 6 Sofia Real 28 F 1003142 2023-12-05 2023-12-20
## 7 Diego Muñoz 33 M 1142613 2023-12-10 2023-12-25
## 8 Juliana Lopez 38 F 1001103 2023-12-15 2023-12-30
## 9 David Perez 43 M 1132514 2023-12-20 2024-01-04
## 10 Natalia Coronado 48 F 1009124 2023-12-25 2024-01-09
## 11 Felipe Salinas 22 M 1122715 2024-01-05 2024-01-20
## 12 Valeria Pelaez 27 F 1001595 2024-01-10 2024-01-25
## 13 Camilo Nuñez 32 M 1102716 2024-01-15 2024-01-30
## 14 Daniela Bolaños 37 F 1003106 2024-01-20 2024-02-04
## 15 Gabriel Diaz 42 M 1125917 2024-01-25 2024-02-09
## 16 Karol Sinisterra 26 F 1002197 2024-02-05 2024-02-20
## 17 Alejandro Golondrino 31 M 1152218 2024-02-10 2024-02-25
## 18 Karen Mina 36 F 1002108 2024-02-15 2024-03-01
## 19 Eric Alferez 41 M 1192719 2024-02-20 2024-03-06
## 20 Angela Melendez 46 F 1006179 2024-02-25 2024-03-11
#Función para generar la alarma un día antes de la cita de control
generar_alarma <- function(pacientes) {
mensaje <- paste("¡Alarma! Cita de control para el paciente", pacientes$Nombre, pacientes$Apellidos,
"en un día. Fecha de cita de control:", pacientes$Fecha_Control)
print(mensaje)
}
# Establecer la fecha actual un día antes de la primera cita de control
fecha_simulada <- pacientes$Fecha_Control[4] - days(1)
# Simular el sistema de alarma un día antes de cada cita de control
for (i in 1:nrow(pacientes)) {
tiempo_restante <- as.numeric(difftime(pacientes$Fecha_Control[i], fecha_simulada, units = "days"))
if (tiempo_restante == 1) {
generar_alarma(pacientes[i, ])
}
}
## [1] "¡Alarma! Cita de control para el paciente Patricia Gallego en un día. Fecha de cita de control: 2023-12-10"