Construya una base de datos de veinte (20) historias clínicas con los siguientes campos:
#A). Construya una base de datos de veinte (20) historias clínicas con los siguientes campos:
# - Identidad de Pacientes: (Número de Cédula, Nombres del paciente, Apellidos del paciente, Edad, Sexo, Domicilio, Ciudad, Departamento, Número de teléfono, Número de historial clínico, Fumante(S/N))
#Proceso de Ingreso a la entidad: (Procedencia, Fecha de ingreso, Número de piso, Número de cama, Causa de Ingreso)
# Cargando paquetes necesarios
if (!require(data.table)) {
install.packages("data.table")
library(data.table)
}
## Loading required package: data.table
set.seed(42) # Fijar semilla para reproducibilidad
# Crear datos con mayor variabilidad
historias_clinicas=data.table(
`Nº Cédula` = sprintf("%010d", sample(10000000:99999999, 20, replace = FALSE)),
Nombres = sample(c("Ana", "Beatriz", "Carlos", "David", "Elena",
"Fernando", "Gloria", "Hector", "Irene", "Jorge",
"Karen", "Luis", "Mónica", "Néstor", "Olivia",
"Pablo", "Quique", "Rosa", "Sergio", "Teresa"), 20, replace = TRUE),
Apellidos = sample(c("Pérez", "González", "Rodríguez", "López", "Martínez",
"Sánchez", "Ramírez", "Torres", "Fernández", "García"), 20, replace = TRUE),
Edad = sample(18:90, 20, replace = TRUE), # Edad desde 18 hasta 90
Sexo = sample(c("M", "F"), 20, replace = TRUE, prob = c(0.5, 0.5)),
Domicilio = sample(1:100, 20, replace = TRUE),
Ciudad = sample(c("Ciudad A", "Ciudad B", "Ciudad C", "Ciudad D"), 20, replace = TRUE),
Departamento = sample(c("Dep A", "Dep B", "Dep C"), 20, replace = TRUE),
`Nº teléfono` = sprintf("%09d", sample(600000000:699999999, 20)),
`Nº Historial` = sample(1000:9999, 20, replace = FALSE),
Fumante = sample(c("S", "N"), 20, replace = TRUE, prob = c(0.4, 0.6)), # Cambiado el porcentaje de fumantes
Procedencia = sample(c("Clínica", "Consulta Externa", "Urgencias"), 20, replace = TRUE),
`Fecha de Ingreso` = sample(seq(as.Date('2023-01-01'), as.Date('2023-12-31'), by="day"), 20),
`Nº Piso` = sample(1:10, 20, replace = TRUE), # Ampliado el rango de pisos
`Nº Cama` = sample(1:100, 20, replace = TRUE), # Ampliado el rango de camas
`Causa de Ingreso` = sample(c("Apendicitis aguda", "Fractura de fémur", "Infarto agudo de miocardio", "Neumonía",
"Insuficiencia renal crónica", "Traumatismo craneoencefálico", "Intoxicación alimentaria",
"Accidente de tráfico", "Crisis asmática", "Quemaduras graves", "Hemorragia digestiva",
"Eclampsia", "Displasia de cadera", "Bronquitis", "Hernia discal", "Cáncer de pulmón",
"Leucemia", "Cataratas", "Dermatitis severa", "Hipertensión arterial",
"Enfermedad de Alzheimer", "Gripe", "Diabetes", "Malaria", "Esquizofrenia",
"Insomnio", "Anemia", "Artritis", "Sarampión", "COVID-19"), 20, replace = TRUE) # Más causas de ingreso
)
# Mostrar la tabla creada con mayor variabilidad
print(historias_clinicas)
## Nº Cédula Nombres Apellidos Edad Sexo Domicilio Ciudad Departamento
## <char> <char> <char> <int> <char> <int> <char> <char>
## 1: 0046761572 Rosa Pérez 57 F 14 Ciudad C Dep B
## 2: 0031025944 Mónica Ramírez 38 M 6 Ciudad D Dep C
## 3: 0081927011 Elena López 74 M 47 Ciudad B Dep C
## 4: 0086620409 David García 59 M 43 Ciudad D Dep B
## 5: 0013191935 Beatriz Fernández 35 F 62 Ciudad D Dep A
## 6: 0096947863 Rosa López 30 M 37 Ciudad B Dep B
## 7: 0050705555 Carlos Fernández 70 F 80 Ciudad A Dep A
## 8: 0036840945 Quique Rodríguez 71 F 31 Ciudad A Dep B
## 9: 0096569560 Rosa Martínez 49 M 34 Ciudad B Dep A
## 10: 0095623715 Fernando Torres 77 F 94 Ciudad D Dep A
## 11: 0075333214 Fernando Martínez 46 M 96 Ciudad D Dep A
## 12: 0050687108 Beatriz Sánchez 90 F 6 Ciudad B Dep C
## 13: 0090990113 Teresa González 60 M 86 Ciudad A Dep B
## 14: 0066340327 Carlos González 75 M 38 Ciudad D Dep B
## 15: 0026962873 Beatriz Torres 89 F 95 Ciudad C Dep B
## 16: 0041470889 Fernando Pérez 46 F 6 Ciudad A Dep A
## 17: 0011547421 Jorge González 72 F 84 Ciudad B Dep A
## 18: 0029558286 Hector Martínez 55 M 15 Ciudad B Dep C
## 19: 0036605881 Elena Torres 18 M 34 Ciudad B Dep B
## 20: 0064764501 Ana Ramírez 30 M 42 Ciudad D Dep B
## Nº Cédula Nombres Apellidos Edad Sexo Domicilio Ciudad Departamento
## Nº teléfono Nº Historial Fumante Procedencia Fecha de Ingreso Nº Piso
## <char> <int> <char> <char> <Date> <int>
## 1: 675431710 6883 S Consulta Externa 2023-03-29 1
## 2: 699358250 1462 N Urgencias 2023-09-25 4
## 3: 664950608 7748 N Clínica 2023-06-30 6
## 4: 656830163 3131 N Urgencias 2023-11-03 6
## 5: 613129104 4957 S Urgencias 2023-01-10 7
## 6: 604015372 6079 N Clínica 2023-05-01 5
## 7: 675177022 9416 N Consulta Externa 2023-03-30 2
## 8: 636737596 5584 N Consulta Externa 2023-02-06 7
## 9: 635356673 4733 S Clínica 2023-07-13 10
## 10: 643966087 8065 N Consulta Externa 2023-06-12 6
## 11: 675427023 7099 S Urgencias 2023-10-10 2
## 12: 650471652 4070 S Clínica 2023-02-15 3
## 13: 617593355 2953 N Consulta Externa 2023-10-14 1
## 14: 646195357 5248 N Urgencias 2023-12-13 4
## 15: 680031734 8104 N Clínica 2023-11-05 9
## 16: 659724809 7029 N Clínica 2023-10-07 6
## 17: 663339774 1048 S Consulta Externa 2023-09-01 10
## 18: 680238312 1155 N Urgencias 2023-07-22 7
## 19: 655660724 3217 S Clínica 2023-08-13 3
## 20: 649173787 5387 S Consulta Externa 2023-07-25 2
## Nº teléfono Nº Historial Fumante Procedencia Fecha de Ingreso Nº Piso
## Nº Cama Causa de Ingreso
## <int> <char>
## 1: 25 Insuficiencia renal crónica
## 2: 74 Displasia de cadera
## 3: 73 Cataratas
## 4: 19 Dermatitis severa
## 5: 79 Dermatitis severa
## 6: 46 Quemaduras graves
## 7: 3 Cáncer de pulmón
## 8: 22 Fractura de fémur
## 9: 61 Insomnio
## 10: 20 Neumonía
## 11: 42 Esquizofrenia
## 12: 98 Insomnio
## 13: 87 Sarampión
## 14: 17 Intoxicación alimentaria
## 15: 82 Apendicitis aguda
## 16: 83 Bronquitis
## 17: 46 Hipertensión arterial
## 18: 17 Gripe
## 19: 94 Dermatitis severa
## 20: 74 Eclampsia
## Nº Cama Causa de Ingreso
Por medio de informe gráfico clasifique por:
#Libreria para graficar
if (!require(ggplot2)) {
install.packages("ggplot2")
library(ggplot2)
}
## Loading required package: ggplot2
if (!require(data.table)) {
install.packages("data.table")
library(data.table)
}
#A) Pacientes mujeres y Hombres
ggplot(historias_clinicas, aes(x = Sexo, fill = Sexo)) +
geom_bar() +
labs(title = "Distribución de Pacientes por Sexo", x = "Sexo", y = "Cantidad")
#B) edad y si es fumante o no
ggplot(historias_clinicas, aes(x = as.factor(Edad), fill = Fumante)) +
geom_bar(position = "dodge") +
labs(title = "Distribución de Edad en relación al Hábito de Fumar", x = "Edad", y = "Cantidad")
#C) Pacientes por piso divididos por sexo
ggplot(historias_clinicas, aes(x = as.factor(`Nº Piso`), fill = Sexo)) +
geom_bar(position = "dodge") +
labs(title = "Distribución de Pacientes por Piso y Sexo", x = "Número de Piso", y = "Cantidad")
#D) Edad y causa de ingreso
historias_clinicas$Edad_cat=cut(historias_clinicas$Edad, breaks = c(18, 30, 45, 60, 75, 90), include.lowest = TRUE)
ggplot(historias_clinicas, aes(x = `Causa de Ingreso`, y = Edad)) +
geom_boxplot() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(title = "Edad y Causa de Ingreso", x = "Causa de Ingreso", y = "Edad")
#E) Promedio de edad (M,H)
edad_promedio=historias_clinicas[, .(Edad_Promedio = mean(Edad)), by = Sexo]
ggplot(edad_promedio, aes(x = Sexo, y = Edad_Promedio, fill = Sexo)) +
geom_col() +
labs(title = "Promedio de Edad por Sexo", x = "Sexo", y = "Promedio de Edad")
#F) Datos independientes de 3 pacientes
set.seed(123) # Para reproducibilidad
muestra_pacientes=historias_clinicas[sample(.N, 3)]
print(muestra_pacientes)
## Nº Cédula Nombres Apellidos Edad Sexo Domicilio Ciudad Departamento
## <char> <char> <char> <int> <char> <int> <char> <char>
## 1: 0026962873 Beatriz Torres 89 F 95 Ciudad C Dep B
## 2: 0036605881 Elena Torres 18 M 34 Ciudad B Dep B
## 3: 0066340327 Carlos González 75 M 38 Ciudad D Dep B
## Nº teléfono Nº Historial Fumante Procedencia Fecha de Ingreso Nº Piso
## <char> <int> <char> <char> <Date> <int>
## 1: 680031734 8104 N Clínica 2023-11-05 9
## 2: 655660724 3217 S Clínica 2023-08-13 3
## 3: 646195357 5248 N Urgencias 2023-12-13 4
## Nº Cama Causa de Ingreso Edad_cat
## <int> <char> <fctr>
## 1: 82 Apendicitis aguda (75,90]
## 2: 94 Dermatitis severa [18,30]
## 3: 17 Intoxicación alimentaria (60,75]
#G) Datos de 3 pacientes por identidad
ids_seleccionados=c("0012345678", "0023456789", "0034567890")
pacientes_seleccionados=historias_clinicas[`Nº Cédula` %in% ids_seleccionados]
print(pacientes_seleccionados)
## Empty data.table (0 rows and 17 cols): Nº Cédula,Nombres,Apellidos,Edad,Sexo,Domicilio...
#H) Lista de causas de ingreso
causas_ingreso=unique(historias_clinicas$`Causa de Ingreso`)
print(causas_ingreso)
## [1] "Insuficiencia renal crónica" "Displasia de cadera"
## [3] "Cataratas" "Dermatitis severa"
## [5] "Quemaduras graves" "Cáncer de pulmón"
## [7] "Fractura de fémur" "Insomnio"
## [9] "Neumonía" "Esquizofrenia"
## [11] "Sarampión" "Intoxicación alimentaria"
## [13] "Apendicitis aguda" "Bronquitis"
## [15] "Hipertensión arterial" "Gripe"
## [17] "Eclampsia"
Exportar base de datos a Excel
# Instalar el paquete necesario
if (!require(openxlsx)) {
install.packages("openxlsx")
library(openxlsx)
}
## Loading required package: openxlsx
# Crear un nuevo archivo de Excel en el directorio actual
wb=createWorkbook()
# Añadir una hoja al libro de trabajo
addWorksheet(wb, "Historias Clínicas")
# Escribir los datos en la hoja
writeDataTable(wb, sheet = "Historias Clínicas", x = historias_clinicas)
# Guardar el archivo en el directorio actual
ruta_archivo=file.path(getwd(), "Historias_Clinicas.xlsx")
saveWorkbook(wb, file = ruta_archivo, overwrite = TRUE)
# Verificar el directorio de trabajo actual
getwd() # Muestra el directorio de trabajo actual
## [1] "/cloud/project"