#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"