#Solución
#Punto 1.
#Creamos el vector cédula
cedula=c(1045789645,1478954785,1457845178,1234567890,987654321,2345678901,3456789012,4567890123,5678901234,6789012345,2023847562,3028475610,4023856710,5029384761,6023847561,7028475613,7080901020,9010203040,2030405060,4050607080
)
nombre=c("Juan Miguel","Ana María","Carlos Manuel", "Mariana","Luis","Juanita","Pedro","Isabella","Pedro","Sofía","Ana","Carlos","Sofia","Luis","Maria","Filomeno","Laura","Andrés","María","Camilo")
apellidos=c("Orozco Suarez","Acosta Perez","Pina Orozco","Pérez","García","González","Rodríguez","Martínez","Sánchez","Ramírez","Gómez","García","Sánchez","Ortiz","Hernández","López","González","Hernández","Díaz","Vargas"
)
edad=c(52,45,24,42,27,35,55,48,61,23,56,45,28,67,42,52,28,65,39,56)
sexo=c("M","F","M","F","M","F","M","F","M","F","F","M","F","M","F","M","F","M","F","M")
domicilio=c("Calle 83C#22-90","Calle 5 #7-85","Calle 7#58-96","Calle 1 # 12-34","Carrera 2 # 23-45","Avenida 7 # 12-23","Calle 3 # 45-67","Carrera 4 # 34-56","Avenida 8 # 45-56","Calle 5 # 23-45","Carrera 7 # 12-23","Calle 10 # 32-21","Avenida 3 # 45-12","Carrera 8 # 21-43","Calle 15 # 34-21","Avenida 10 # 56-32","Calle 8 # 15-40","Carrera 12 # 30-50","Calle 15 # 5-15","Carrera 30 # 40-20"
)
ciudad=c("Cali","Bogotá","Medellin ","Bogotá","Medellín","Barranquilla","Cali","Cartagena","Bucaramanga","Cúcuta","Medellín","Cali","Barranquilla","Bogotá","Medellín","Cali","Barranquilla","Pereira","Bucaramanga","Cartagena"
)
departamento=c("Valle del Cauca","Cundinamarca","Antioquia","Cundinamarca","Antioquia","Atlántico","Valle del Cauca","Bolívar","Santander","Norte de Santander","Antioquia","Valle del Cauca","Atlántico","Cundinamarca","Antioquia","Valle del Cauca","Atlántico","Risaralda","Santander","Bolívar"
)
telefono= c(3147854789,3147841457,3478547145,3125551234,3104445678,3186667890,3207778901,3158889012,3179990123,3131112345,3108765432,3157891234,3187654321,3112345678,3108765432,3157891234,3004567890,3106785432,3159876543,3507896543
)
HistoClinico= c(14578,10001,10002,1234,5678,9012,2345,6789,123,3456,2,3,4,5,6,7,1004,1005,1006,1007
)
fumante=c("S","N","S","N","S","N","N","S","S","N","N","S","N","N","N","S","S","N","S","N")
#Información para el proceso de ingreso:
procedencia=c("Cali","Bogotá","Medellin","Bogotá","Cali","Bogotá","Medellín","Cali","Bogotá","Barranquilla","Medellín","Bogotá","Cali","Bogotá","Medellín","Bogotá","Santa Marta","Pereira","Bogotá","Cartagena")
fechaIngreso= c("12/02/2022","1/02/2023","25/03/2023","24/01/2023","7/01/2022","6/01/2022","4/01/2022","5/01/2022","1/06/2022","5/07/2022","13/01/2023","16/01/2023","20/01/2023","24/01/2023","2/02/2023","10/02/2023","4/01/2022","5/01/2022","6/01/2022","7/01/2022"
)
numPiso=c(5,3,7,3,6,4,7,5,2,6,6,5,3,8,7,2,6,4,1,3)
numCama=c(501,302,705,205,403,308,507,403,102,402,503,305,209,708,605,102,17,14,1,10
)
causaDeIngreso=c("Covid","Accidente de tráfico","Infección respiratoria","Dolor abdominal","Fractura de pierna","Infección urinaria","Hipertensión","Asma","Infarto de miocardio","Conjuntiv","Dolor de espalda","Diabetes","Conjuntivitis","Dolor de cabeza","Dolor de espalda","Infarto de miocardio","Asma","Dolor abdominal","Gripe","Fractura de brazo"
)
#Unificar en una sola tabla la información o cada vector.
baseDeDatos=data.frame(cedula,nombre,apellidos,edad,sexo,domicilio,ciudad,departamento,telefono,HistoClinico,fumante, procedencia, fechaIngreso,numPiso,numCama, causaDeIngreso)
BD<- cbind(cedula,nombre,apellidos,edad,sexo,domicilio,ciudad,departamento,telefono,HistoClinico,fumante, procedencia, fechaIngreso,numPiso,numCama, causaDeIngreso)
#Mostrar gráficamente la cantidad de pacientes hombres y cantidad de pacientes mujeres
#Punto 2)
#a)
e1= sum(sexo=="M")#Cantidad de hombres
e2= sum(sexo=="F")#Cantidad de mujeres
et=c(e1,e2)
barplot(et, main = "Cantidad Hombres y cantidad de mujres",axes = TRUE, names.arg = c("Cantidad de Hombres", "Cantidad de Mujeres"), col = c("#2ECCFA","#DF01A5"), xlab="Género", ylab= " Cantidad de pacientes")

#b) Mostrar edad y si es fumante o no
#Condensa la información donde muestra por los rangos de edades presentes en la tabla, si es fumante o no es fumante. y la cantidad de personas que presentan este caso
table(fumante,edad)
## edad
## fumante 23 24 27 28 35 39 42 45 48 52 55 56 61 65 67
## N 1 0 0 1 1 0 2 1 0 0 1 2 0 1 1
## S 0 1 1 1 0 1 0 1 1 2 0 0 1 0 0
#Gráfico de la situación.
d=table(fumante, edad)
etiquetas=sort(unique(edad), decreasing = FALSE)
barplot(d, main = "Pacientes fumadores y no fumadores identificados por edades",axes = TRUE, names.arg = etiquetas, col = c("#FA5858","#ACFA58"), xlab="Edades de los pacientes en la Base de Datos", ylab= "N° de pacientes")
legend("topright", legend= c("No son fumadores", "Son fumadores"),fill =c("#FA5858","#ACFA58"), cex=0.8)

#en el anterior gráfico, identificando que es un gráfico de barras apiladas, nos permite identificar en todas las edades registradas en la base de datos presentadas, podemos visualizar el número de ocurrencias tanto de personas fumantes como de personas no fumantes dentro de los rangos de edades presentes.
#c) Pacientes por piso, divididos por sexo
#Se muestra la información condensada por número de piso y la cantidad de hombres y mujeres en dicho piso.
table(sexo, numPiso)
## numPiso
## sexo 1 2 3 4 5 6 7 8
## F 1 0 3 1 1 3 1 0
## M 0 2 1 1 2 1 2 1
#Gráfico de la situación.
d=table(sexo, numPiso)
etiquetas=sort(unique(numPiso), decreasing = FALSE)
barplot(d, main = "Pacientes por sexo ubicados por piso",axes = TRUE, names.arg = etiquetas, col = c("#DA42BA","#42CADA"), xlab="#número de piso", ylab="N° de pacientes por piso")
legend("topright", legend= c("Mujeres", "Hombres"),fill =c("#DA42BA","#42CADA"), cex=0.8)

#en el anterior gráfico, identificando que es un gráfico de barras apiladas, nos permite identificar en todas los pisos registradas en la base de datos presentadas, podemos visualizar el número de ocurrencias tanto de pacientes masculinos y pacientes femeninos en cada piso.
#d) edad y causa de ingreso
#Mostrarmos dentro de una matriz, la relación entre edad y causa de ingreso al centro médico. Donde mostramos por edad el número de ocurrencias según sea el caso de la causa de ingreso mediante el siguiente comando
table(causaDeIngreso,edad)
## edad
## causaDeIngreso 23 24 27 28 35 39 42 45 48 52 55 56 61 65 67
## Accidente de tráfico 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
## Asma 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
## Conjuntiv 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## Conjuntivitis 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
## Covid 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
## Diabetes 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
## Dolor abdominal 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0
## Dolor de cabeza 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
## Dolor de espalda 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0
## Fractura de brazo 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
## Fractura de pierna 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
## Gripe 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
## Hipertensión 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
## Infarto de miocardio 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0
## Infección respiratoria 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## Infección urinaria 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
#Para mostrar el gráfico de la situación presentada, mostramos mediante los siguientes comandos un gráfico de barras, que permita identificar la cantidad de personas por edad presentes en un determinado color que señala la causa por la que entra al centro médico.
etiquetas=sort(unique(edad), decreasing = FALSE)
d=table(causaDeIngreso,edad)
colores= c("#E1F5A9","#F8EE1C","#F8231C","#64FE2E","#5FB404","#F8971C","#0B6138","#04B45F", "#95B0A1","#01DFD7","#D18AE5","#58ACFA","#5858FA","#492D09","#AC58FA","#BF00FF")
barplot(d, main = "Causas de ingreso (Por colores)/Edades",axes = TRUE, names.arg = etiquetas, col = colores, xlab="Edades de los pacientes en la Base de Datos", ylab= "N° de pacientes")
legend("topright", legend = sort(unique(causaDeIngreso), decreasing= FALSE), fill = colores,cex=0.48)

#e) Promedio de edades en hombre y mujeres
#Almacenar las edades de los hombres y sacar su promedio
EHombres= edad[baseDeDatos$sexo=="M"]
#Se muestra la edad promedio de hombres
promHombres= mean(EHombres)
#Almacenar las edades de las mujeres y sacar su promedio
EMujeres= edad[baseDeDatos$sexo=="F"]
#Se muestra la edad promedio de mujeres
promMujeres= mean(EMujeres)
#f) Datos independientes de 3 pacientes
#Para mostrar los datos independientes de 3 pacientes, seleccionamos las cédulas de los respectivos pacientes a mostrar y los buscamos en la tabla general donde se encuentren registrados los pacientes.
#Establecemos las cédulas a consultar.
iden1=1234567890
iden2=5678901234
iden3=4050607080
#Extraemos únicamente la información de los id anteriores
#Muestra la informacion indepentiente de los id anteriores
p1=subset(BD, BD[,1]==iden1) #Para la persona1
p2=subset(BD, BD[,1]==iden2)#Para la persona2
p3=subset(BD, BD[,1]==iden3)#Para la persona3
#g) Datos de 3 pacientes por identidad
#Establecemos las cédulas a consultar.
id1=1234567890
id2=2345678901
id3=2030405060
#Pedir una cedula para mostrar los datos
#numero <- scan(n=1, what=integer(), prompt="Por favor ingrese un número entero: ")
#Extraemos únicamente la información o las filas de las personas que presenten la misma cédula que la cédula a consultar en el campo cédula de la base de datos en general.
persona1 <- subset(BD, BD[,1]==id1) #Para la persona1
persona2 <- subset(BD, BD[,1]==id2)#Para la persona2
persona3 <- subset(BD, BD[,1]==id3)#Para la persona3
#Unificamos toda la información dentro de una sola tabla
PuntoG= rbind(persona1, persona2, persona3)
#h) Lista de causas de ingreso
table(causaDeIngreso)
## causaDeIngreso
## Accidente de tráfico Asma Conjuntiv
## 1 2 1
## Conjuntivitis Covid Diabetes
## 1 1 1
## Dolor abdominal Dolor de cabeza Dolor de espalda
## 2 1 2
## Fractura de brazo Fractura de pierna Gripe
## 1 1 1
## Hipertensión Infarto de miocardio Infección respiratoria
## 1 2 1
## Infección urinaria
## 1
#Puede realizarse una lista exclusiva de los casos de ingreso y adicional un histograma con la frecuencia de cada una de ellas
indicadores= table(causaDeIngreso)
etiquetas=unique(causaDeIngreso)
barplot(indicadores, main = "Causas de ingreso",axes = TRUE, names.arg = indicadores, col = c("#E1F5A9","#D8F781","#BEF781","#64FE2E","#5FB404","#088A29","#0B6138","#04B45F", "#04B486","#01DFD7","#00BFFF","#58ACFA","#5858FA","#2E2EFE","#AC58FA","#BF00FF"), xlab="Causas de ingreso (Organizada por color)", ylab="N° de ocurrencias por causas de ingreso.")
legend("topright", legend = etiquetas, fill = c("#E1F5A9","#D8F781","#BEF781","#64FE2E","#5FB404","#088A29","#0B6138","#04B45F", "#04B486","#01DFD7","#00BFFF","#58ACFA","#5858FA","#2E2EFE","#AC58FA","#BF00FF"),cex=0.45)

#Punto 3, exportar la base de datos a excel.
library(openxlsx)
write.xlsx(baseDeDatos,"Taller3InformáticaMédicaSantiagoSánchezMuñoz.xlsx",rownames=FALSE)