main.c
#include"menu.h"
#include<locale.h>
#include<stdlib.h>
#include<string.h>
int main() {
//setlocale(LC_CTYPE,"Spanish");
int *contadorindice;
int opcion;
int bfolio;
Paciente *pacientes;
//Asignación memoria dinámica
if(pacientes==NULL)
{
printf("memoria de espacio no asginada");
}
else{
pacientes=(Paciente *)malloc(MAX_PA*sizeof(Paciente));
pacientes[*contadorindice].nombrepa->apellidopapaciente=(char *)malloc(MAX_TEXTO*sizeof(char));
pacientes[*contadorindice].nombrepa->nombrepaciente=(char *)malloc(MAX_TEXTO*sizeof(char));
pacientes[*contadorindice].nombrepa->apellidomapaciente=(char*)malloc(MAX_TEXTO*sizeof(char));
pacientes[*contadorindice].estatus->motivo=(char *)malloc(MAX_MOTIVO*sizeof(char));
pacientes[*contadorindice].genero=(char*)malloc(MAX_TEXTO*sizeof(char));
do {
printf("Ingrese una opcion\n\n");
printf("1)Registrar paciente\n2)Listar pacientes\n3)Busqueda de paciente por clave\n4)Borrar paciente\n5)Actualizar datos\n6)Triage\n7)Salir\nOpcion:");
scanf("%i",&opcion);
system("cls");
switch (opcion) {
fflush(stdin);
case 1: {
capturarPaciente(contadorindice,pacientes);
printf("indice: %i",*contadorindice);
system("pause");
system("cls");
break;
}
case 2: {
fflush(stdin);
listarPaciente(contadorindice, pacientes);
system("pause");
system("cls");
}
break;
case 3:{
printf("\nIngrese el folio del paciente que desea buscar: ");
scanf("%i",&bfolio);
busquedaPacientefo(bfolio,pacientes);
system("pause");
system("cls");
}
break;
case 6:{
char archivotriage[100]="triage.txt",linea[1000];
FILE *archivo;
archivo=fopen(archivotriage,"r");
while(!feof(archivo)){
printf("%s",fgets(linea,999,archivo));
}
system("pause");
system("cls");
break;
}
case 5:{
printf("\nIngrese el folio del paciente que desea actualizar: ");
scanf("%i",&bfolio);
//MenuactualizarPaciente(*paciente, bfolio);
break;
}
case 4:{
printf("\nIngrese el folio del paciente que desea borrar: ");
scanf("%i",&bfolio);
borrarPaciente(bfolio,contadorindice,pacientes);
break;
}
case 7:{
printf("Hasta la proxima\n");
break;
}
}
}while (opcion != 7);
free(pacientes->genero);
free(pacientes[*contadorindice].estatus->motivo);
free(pacientes[*contadorindice].nombrepa->apellidomapaciente);
free(pacientes[*contadorindice].nombrepa->nombrepaciente);
free(pacientes[*contadorindice].nombrepa->apellidopapaciente);
free (pacientes);
contadorindice=NULL;
pacientes=NULL;
return 0;
}
}
paciente.h
#ifndef paciente_h
#define paciente_h
#define MAX_TEXTO 30
#define MAX_PA 5
#define MAX_MOTIVO 300
//Variables
//prototipos
typedef struct {
int mes;
int dia;
int ano;
}Fecha;
typedef struct{
int horai;
int minutosi;
}Hora;
typedef struct {
char *nombrepaciente;
char *apellidopapaciente;
char *apellidomapaciente;
}Nombrepa;
typedef struct{
int peso;
char *motivo;
}Estatus;
typedef struct {
int edad;
char *genero;
int folio;
int contadorindice;
Estatus *estatus;
Nombrepa *nombrepa;
Fecha fecha;
Hora hora;
} Paciente;
void capturarPaciente (int *contadorindice,Paciente *paciente);
void listarPaciente (int *contadorindice,Paciente *paciente);
void busquedaPacientefo(int b,Paciente *paciente);
void MenuactualizarPaciente(Paciente paciente,int b);
void borrarPaciente(int b,int *contadorindice,Paciente *paciente);
//void actualizarPacienteInt(int *b,Paciente *paciente);
//void actualizarPacienteChar();
#endif /* paciente_h */
paciente.c
#include <stdio.h>
#include "paciente.h"
#include<string.h>
#include<stdlib.h>
void capturarPaciente (int *contadorindice,Paciente *paciente){
printf ("Folio: \n");
scanf ("%i",&paciente[*contadorindice].folio);
printf ("Nombre: \n");
scanf ("%s", paciente[*contadorindice].nombrepa->nombrepaciente);
printf ("Apellido paterno: \n");
scanf ("%s", paciente[*contadorindice].nombrepa->apellidopapaciente);
printf ("Apellido materno: \n");
scanf ("%s", paciente[*contadorindice].nombrepa->apellidomapaciente);
printf("Genero: \n");
scanf("%s",paciente[*contadorindice].genero);
printf ("Edad: \n");
scanf ("%i",&paciente[*contadorindice].edad);
printf ("Dia de ingreso: \n");
scanf ("%i", &paciente[*contadorindice].fecha.dia);
printf ("Mes de ingreso: \n");
scanf ("%i", &paciente[*contadorindice].fecha.mes);
printf ("Año de ingreso: \n");
scanf ("%i", &paciente[*contadorindice].fecha.ano);
printf ("Hora de ingreso: \n");
scanf ("%i", &paciente[*contadorindice].hora.horai);
printf ("Minutos: \n");
scanf ("%i", &paciente[*contadorindice].hora.minutosi);
printf("Breve explicacion del motivo de la visita del paciente\n");
fflush(stdin);
gets(paciente[*contadorindice].estatus->motivo);
printf("indice: %i",*contadorindice);
(*contadorindice)++;
printf("indice: %i",*contadorindice);
}
void listarPaciente (int *contadorindice,Paciente *paciente){
int i;
for (i=0;i<*contadorindice;i++){
printf ("Folio: %i \nNombre del paciente: %s %s %s\nGenero: %s\nEdad: %i\nDia de ingreso: %i/%i/%i \nHora de ingreso: %i:%i\n\n",
paciente->folio, paciente->nombrepa->nombrepaciente, paciente->nombrepa->apellidopapaciente ,paciente->nombrepa->apellidomapaciente
,paciente->genero,paciente->edad,paciente->fecha.dia,paciente->fecha.mes,paciente->fecha.ano,paciente->hora.horai,paciente->hora.minutosi );
paciente++;
}//para arreglo de pacientes
}
void busquedaPacientefo(int b,Paciente *paciente){
int i;
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
printf ("Folio: %i \nNombre del paciente: %s %s %s\nGenero: %s\nEdad: %i\nDia de ingreso: %i/%i/%i \nHora de ingreso: %i:%i\nMotivo por el que ingresó:\n %s\n",
paciente->folio, paciente->nombrepa->nombrepaciente, paciente->nombrepa->apellidopapaciente ,paciente->nombrepa->apellidomapaciente
,paciente->genero,paciente->edad,paciente->fecha.dia,paciente->fecha.mes,paciente->fecha.ano,paciente->hora.horai,paciente->hora.minutosi,paciente->estatus->motivo );
}
}
printf("\nEste paciente no se encuentra en la sala de urgencias\n");
}
void MenuactualizarPaciente(Paciente *paciente,int b){
int i,opcionact;
int nuevodatoint;
char nuevodatochar[MAX_TEXTO];
printf("\n¿Que dato desea modificar?");
printf("\n1)Edad");
printf("\n2)Nombre");
printf("\n3)Apellido Paterno");
printf("\n4)Apellido Materno");
printf("\n5)Genero\n");
scanf("%i",&opcionact);
system("cls");
switch(opcionact){
case 1:{
printf("\nIngrese el nuevo dato\n");
scanf("%i",&nuevodatoint);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
paciente.edad=nuevodatoint;
}
system("cls");
}
break;
}
case 2:{
printf("\nIngrese el nuevo dato\n");
scanf("%s",nuevodatochar);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
strcpy(paciente.nombrepa->nombrepaciente,nuevodatochar);
}
system("cls");
}
break;
}
case 3:{
printf("\nIngrese el nuevo dato\n");
scanf("%s",nuevodatochar);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
strcpy(paciente.nombrepa->apellidopapaciente,nuevodatochar);
}
system("cls");
}
break;
}
case 4:{
printf("\nIngrese el nuevo dato\n");
scanf("%s",nuevodatochar);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
strcpy(paciente.nombrepa->apellidomapaciente,nuevodatochar);
}
system("cls");
}
break;
}
case 5:{
printf("\nIngrese el nuevo dato\n");
scanf("%s",nuevodatochar);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
strcpy(paciente.genero,nuevodatochar);
}
system("cls");
}
break;
}
}
}
void borrarPaciente(int b,int *contadorindice,Paciente *paciente){//pequeño fallo al querer borrar el 2 paciente de 3
int i;
Paciente aux;
printf("indice: %i",*contadorindice);
for(i=0;i<MAX_PA+1;i++,paciente++){
if(b==paciente->folio){
aux=paciente;
paciente=paciente[*contadorindice-1];
printf("indice: %i",*contadorindice);
(*contadorindice)--;
printf("indice: %i",*contadorindice);
printf("\nPaciente con folio %i fue borrado\n",b);
system("pause");
system("cls");
}
}
}