# Carga de bibliotecas
library(readr)
library(openxlsx)

# 2.1 - Lectura de datos
historias_clinicas_df = read.csv("/Users/carlo/Desktop/historias_clinicas.csv", sep = ',')

# 2.2 - Análisis y visualización de datos

# a - Gráfico de barras para contar pacientes por sexo
barplot(table(historias_clinicas_df$Sexo), main = "Pacientes mujeres y Hombres",  
        names.arg = c("Femenino", "Masculino"), ylab = "No. personas", 
        xlab = "Sexo", col = c("purple", "orange"), las = 1)

# b - Gráfico de barras para contar fumadores por edad
barplot(table(historias_clinicas_df$Fumante, historias_clinicas_df$Edad), 
        main = "Fumadores y edad", ylab = "No. personas", xlab = "Edad", las = 1, 
        col = c("yellow2", "brown"))
legend(x = "topright", legend = c("No", "Si"), fill = c("yellow2", "brown"), title = "Fumante")

# c - Gráfico de barras para pacientes por piso divididos por sexo
barplot(table(historias_clinicas_df$Sexo, historias_clinicas_df$Numero_Piso), 
        main = "Pacientes por piso divididos por sexo", ylab = "No. personas", 
        xlab = "Piso", las = 1, col = c("pink", "green"))
legend(x = "topright", legend = c("Mujer", "Hombre"), fill = c("pink", "green"), title = "Sexo")

# d - Gráfico de barras para contar pacientes por causa de ingreso y edad
barplot(table(historias_clinicas_df$Causa_Ingreso, historias_clinicas_df$Edad), 
        col = c("violet", "gray", "black", "blue4"), 
        main = "Edad y causa de ingreso", ylab = "No. personas", xlab = "Edad", las = 1)
legend(x = "topright", legend = c("Consulta", "Terapia", "Cita médica", "Cirugía"), 
       fill = c("violet", "gray", "black", "blue4"), title = "Causa de ingreso")

# e - Gráfico de barras para el promedio de edad de hombres y mujeres
barplot(c(mean(historias_clinicas_df$Edad[historias_clinicas_df$Sexo == "Masculino"]), 
          mean(historias_clinicas_df$Edad[historias_clinicas_df$Sexo == "Femenino"])), 
        main = "Promedio de edad Mujeres y Hombres", 
        names.arg = c("Hombre", "Mujer"), col = c("yellow", "hotpink4"), 
        ylab = "Edad promedio", xlab = "Sexo", las = 1, ylim = c(0, 90))

# f - Gráfico de barras para datos independientes de 3 pacientes
barplot(c(historias_clinicas_df$Edad[historias_clinicas_df$Nombres == "Mario"],
          historias_clinicas_df$Numero_Piso[historias_clinicas_df$Nombres == "Ana"],
          historias_clinicas_df$Numero_Cama[historias_clinicas_df$Nombres == "Juan"]),
        main = "Datos independientes de 3 pacientes",
        names.arg = c("Edad_Mario", "Piso_Ana", "Cama_Juan"),
        col = c("blue", "brown", "red"), ylab = "Datos", xlab = "Pacientes", las = 1, ylim = c(0, 150))

# g - Gráfico de barras para la identidad de 3 pacientes
barplot(c(historias_clinicas_df$Numero_Historial_Clinico[historias_clinicas_df$Nombres == "Isaac"],
          historias_clinicas_df$Numero_Historial_Clinico[historias_clinicas_df$Nombres == "Laura"],
          historias_clinicas_df$Numero_Historial_Clinico[historias_clinicas_df$Nombres == "Antonio"]),
        main = "Identidad de 3 pacientes",
        names.arg = c("Isaac", "Laura", "Antonio"),
        col = c("darkblue", "red", "gray"), ylab = "No. Historia clínica", xlab = "Nombre", las = 1, ylim = c(0, 20))

# h - Gráfico de barras para la lista de causas de ingreso
barplot(table(historias_clinicas_df$Causa_Ingreso), main = "Lista de causas de ingreso", 
        ylab = "No. personas", xlab = "Causa de ingreso", col = rainbow(4), las = 1)

# 2.3 - Guardar los datos en un archivo Excel
write.xlsx(historias_clinicas_df, "historias_clinicas.xlsx", rowNames = FALSE)