Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Pieshna

#1
Hola buenos dias, tardes o noches...

Queria saber si alguien me puede ayudar con un codigo para imprimir (con impresora) ya que he estado buscando pero no encuentro uno funcional para c++ :-(
Es para un proyecto final de programacion y solo me falta el que se pueda imprimir los datos, ayuda! ;)
#2
Programación C/C++ / Ayuda para hacer filtro
1 Junio 2018, 00:34 AM
Necesito ayuda para aplicar filtro por departamentos, no se me ocurre la manera para hacerlo, ya que no logro ordenarlos :-( espero puedan ayudarme...
Es mi proyecto de final de semestre  :(
Posdata: es de un hospital y aun esta en proceso, llevo mas o menos 1 semana y no logro hacer el filtro
aqui abajo dejo el codigo, estoy usando dev-c++
Código (cpp) [Seleccionar]


#include <iostream>
#include <conio.h>
#include <string.h>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

struct datos{
long long cui; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
char nombre[254];
char apellido[254];
struct fecha{
int dia;
int mes;
int año;
}fecha;
char tipos[254];
int cel;
char nfamiliar[254];
struct direccion{
char departamento[254];
char municipio[254];
char zona[254];
}direccion;
}datos;

struct rp{ //rp = Registro de paciente
long long cui;
struct fecha{ //fecha de ingreso
int dia;
int mes;
int año;
}fecha;
int nufam;
char ti[254];
char descripcion[1000]; //descripcion del por que ingresa
char medico[254]; //medico tratante
int hingreso; //hora ingreso
int mingreso;//minutos ingreso
char diagnostico[1000]; //diagnostico medico
char rmedica[600];//receta medica
char titulo[254];
struct fechas{ //fecha salida
int dia;
int mes;
int año;
}fechas;
int hsalida; //hora salida
int msalida;//minutos salida
}rp;

void principio();//contiene el primer menu en el que pregunta si se ha usado el programa anteriormente
void menu();//Contiene el menu de inicio
void crear();//void para crear el archivo de texto
void ingresar();//Ingresar pacientes
void mini(); //mini busqueda
void registro();
void breporte();
void mini2();//mini busqueda en el void ingresar
void rgpaciente(); //Registro general de paciente
/*void rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
void rpsangre(); //Registro de paciente por tipo de sangre
void diagnostico(); //Reporte de paciente por diagnostico*/
void pdepartamento(); //Reporte de pacientes por departamento
/*void ddepartamento(); //Reporte de diagnostico por departamento
void historial(); //Historial clinico del paciente
void rdt(); //Reporte de descendente de total de ingreso de pacientes por día
void pmedico(); //Reporte de pachiente por medico
*/
long long auxccui=0;
void ingresar(){
char c[254],ddia[254],mes[254],cel[254],corr[254],año[254];
int m=0,dia=0,ce=0,x=0,dc=0,aanio=0,xx=0;
int vn=0,va=0,vs=0,vnf=0,vd=0,vm=0,vz=0;//validaciones para los bucles while en la variable nombre,apellido.
long long a; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
cout<<"\t\t\tINGRESE LA SIGUIENTE INFORMACION "<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: ";
cin>>c;
a= atof(c);// la funcion atoi(variable) sirve para convertir a variable tipo "int" caracteres ingresados en una variable tipo "char"
if (a<1000000000000){//si la variable a es menor a 13 digitos que muestre un error
cout<<" El cui es invalido, ingreselo nuevamente";
getch();
system ("cls"); //limpiar pantalla
ingresar();//empezar de nuevo el programa

}else{
if (a>9999999999999){//Si la variable a es mayor a 13 digitos que muestre error
cout<<" El cui es invalido, ingreselo nuevamente";
getch();
system ("cls"); //limpiar pantalla
ingresar();//empezar de nuevo el programa
}
}
auxccui=a;
if(datos.cui==auxccui){
mini2();
}

datos.cui=a;//Si la variable a contiene 13 digitos que se guarde en la estructura datos en cui
cin.ignore();//Para evitar que omita el ingresar nombre
do{
cout<<" Nombre del paciente: ";
// cin.ignore();
cin.getline(datos.nombre,254,'\n');
strupr(datos.nombre);
vn=0;//inpedimos que el while sea infinito
if((*datos.nombre==NULL) || (*datos.nombre==' ') ){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vn=1;//activamos el while
}
}while(vn==1);

// cin.ignore();//Para evitar que omita el ingresar apellido, eliminar "//" para activar la funcion
do{
cout<<" Apellido del paciente: ";
cin.getline(datos.apellido,254,'\n');
strupr(datos.apellido);
va=0;//inpedimos que el while sea infinito
if((*datos.apellido==NULL) || (*datos.apellido==' ')){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
va=1;//activamos el while
}
}while(va==1);


cout<<"\t\t\tFECHA DE NACIMIENTO:\t\t\t\t\t\t EJEMPLO: 01/01/2000"<<endl;
do{
cout<<" Ingrese la fecha:\n";
xx=0;
cin.getline(ddia,254,'/');
cin.getline(mes,254,'/');
cin.getline(año,254,'\n');
dia=atoi(ddia);
m=atoi(mes);
aanio=atoi(año);
if((dia==0) || (dia>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((m==0) || (m>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((aanio<1950) || (aanio>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((dia>29) && (m=2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}
}
}
}

}while(xx==1);
datos.fecha.dia=dia;
datos.fecha.mes=m;
datos.fecha.año=aanio;


// cin.ignore();
do{

cout<<" Ingrese el tipo de sangre: ";
vs=0;//inpedimos que el while sea infinito
cin.getline(datos.tipos,254,'\n');
strupr(datos.tipos);
if((*datos.tipos=='A') || (*datos.tipos=='AB') || (*datos.tipos=='B') || (*datos.tipos=='O')){

}else{
cout<<" TIPO DE SANGRE NO VALIDO, VUELVA A INTENTARLO.\n\n";
cout<<" Recuerde que solo hay tipos de sangre a+,a-,b+,b-,ab+,ab-,o+,o-.\n";
vs=1;
}
}while(vs==1);

do{
do{
do{
cout<<" Ingrese el Numero celular de un familiar del paciente: ";
cin.getline(cel,254,'\n');
ce=atoi(cel);
if (ce==0){
cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
ce=0;
}else{

if (ce<29999999){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}else{
if (ce>60000000){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}
}
}
}while(ce>60000000);
}while(ce==0);
}while(ce<29999999);
datos.cel=ce;

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Ingrese el Nombre de un familiar del cliente: ";
cin.getline(datos.nfamiliar,40,'\n');
strupr(datos.nfamiliar);
vnf=0;//inpedimos que el while sea infinito
if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vnf=1;//activamos el while
}
}while(vnf==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Departamento: ";
cin.getline(datos.direccion.departamento,30,'\n');
strupr(datos.direccion.departamento);
vd=0;//inpedimos que el while sea infinito
if((*datos.direccion.departamento==NULL) || (*datos.direccion.departamento==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vd=1;//activamos el while
}
}while(vd==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Municipio: ";
cin.getline(datos.direccion.municipio,30,'\n');
strupr(datos.direccion.municipio);
vm=0;//inpedimos que el while sea infinito
if((*datos.direccion.municipio==NULL) || (*datos.direccion.municipio==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vm=1;//activamos el while
}
}while(vm==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Zona: ";
cin.getline(datos.direccion.zona,30,'\n');
vz=0;//inpedimos que el while sea infinito
if((*datos.direccion.zona==NULL) || (*datos.direccion.zona==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vz=1;//activamos el while
}
}while(vz==1);
system("cls");
cout<<"\t\t\t DATOS INGRESADOS:\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;

cout<<" LOS DATOS SON CORRECTOS?\n";
cout<<" 1. SI.\t\t 2. NO.\n OPCION[ ]\b\b";
cin.getline(corr,254,'\n');
strupr(corr);
dc=atoi(corr);
if((dc==2)||(corr=="NO")||(corr=="NO.")){
system("cls");
ingresar();
}

FILE*archivo;
archivo=fopen("hospital.txt","at+"); //abrimos el archivo
fwrite(&datos,sizeof(datos),1,archivo); //escribimos los datos ingresados en el archivo
fclose(archivo);//cerramos el archivo
cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
getch();
menu();

}

void breporte(){
FILE*archivo;
archivo=fopen("registro.txt", "r+");
while(fread(&rp,sizeof(rp),1,archivo)==1)
{
if((datos.cui==rp.cui) /*&& (rp.fecha.dia!=0)*/ && (datos.cel==rp.nufam)){
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<"\t\t\tREPORTE\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" Fecha de ingreso: "<<rp.fecha.dia<<"/"<<rp.fecha.mes<<"/"<<rp.fecha.año<<".\n";
cout<<" Descripcion de ingreso: "<<rp.ti<<endl;
cout<<" Hora de ingreso: "<<rp.hingreso<<":"<<rp.mingreso<<".\n";
cout<<" Medico tratante:"<<rp.medico<<endl;
cout<<" Diagnostico medico: \n\t\t\t"<<rp.titulo<<endl<<rp.diagnostico<<endl;
cout<<" Receta medica: "<<rp.rmedica<<endl;
cout<<" Fecha de salida: "<<rp.fechas.dia<<"/"<<rp.fechas.mes<<"/"<<rp.fechas.año<<".\n";
cout<<" Hora de salida: "<<rp.hsalida<<":"<<rp.msalida;
cout<<"\n_______________________________________________________________________________________________"<<endl;
cout<<"\n Presione cualquier tecla para continuar.";
getch();


}
}
fclose(archivo);


}

void rgpaciente(){
FILE*archivo;
FILE*archivo2;
archivo2=fopen("registro.txt", "r+");
archivo=fopen("hospital.txt", "r+");

int opc=0,opco=0,x=0;
char opci[254];

cout<<"\t\t\tREPORTE GENERAL DE PACIENTES:"<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;


while(fread(&datos,sizeof(datos),1,archivo)==1)
{

fread(&rp,sizeof(rp),1,archivo2);


cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
// getch();


do{
x=0;
if((datos.cui==rp.cui ) && (datos.cel==rp.nufam) ){
cout<<" Desea ver el reporte?\n";
cout<<" 1. SI\t\t2. NO\n";
cout<<" OPCION [ ]\b\b";
cin>>opci;
x=0;
opco=atoi(opci);
if ((opco==0) || (opco>2)){
cout<<" OPCION NO VALIDA VUELVA A INTENTARLO.\n";

x=1;
}else{
opc=opco;
}

}else{
cout<<" NO TIENE REPORTE CLINICO.\n";
cout<<"_______________________________________________________________________________________________"<<endl;
getch();
}
}while(x==1);

if((opc==1)){
breporte();



}

// getch();

//}  

}
fclose(archivo);
fclose(archivo2);


getch();
}

void pdepartamento(){ //falta aplicar el filtro
FILE*archivo;
archivo=fopen("hospital.txt", "r+");
string auxdep;
cout<< "\t\t\tFILTRAR POR DEPARTAMENTO: "<<endl;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;

system("cls");
while(fread(&datos,sizeof(datos),1,archivo)==1)
{
auxdep=datos.direccion.departamento;
if(datos.direccion.departamento==auxdep)
{
cout<< "\t\t\tDEPARTAMENTO: "<<datos.direccion.departamento<<endl;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
auxdep=datos.direccion.departamento;
}else{
cout<<" Se ha producido un error a la hora de buscar por ese departamento, intentelo nuevamente."<<endl;
getch();

}

}
fclose(archivo);
getch();


}

void menu(){
crear();
char opci[254];
int opc=0,opco=0;
while (opc!= 12){
system("cls");
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t\t\t\t\tMENU "<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t\t\tENUMERE LA OPCION QUE DESEA UTILIZAR: "<<endl<<endl;
cout<<"\t1. Ingresar paciente."<<endl;
cout<<"\t2. Registrar paciente."<<endl;
cout<<"\t3. Reporte general de pacientes."<<endl;
cout<<"\t4. Reporte general de pacientes filtrado por fecha."<<endl;
cout<<"\t5. Reporte general de pacientes por tipo de sangre."<<endl;
cout<<"\t6. Reporte general de pacientes por diagnostico."<<endl;
cout<<"\t7. Reporte general de pacientes por departamento."<<endl;
cout<<"\t8. Reporte de diagnostico por departamento."<<endl;
cout<<"\t9. Reporte de historial clinico por paciente."<<endl;
cout<<"\t10. Reporte decendente de total de ingreso de pacientes por dia."<<endl;
cout<<"\t11. Reporte de pacientes por medico."<<endl;
cout<<"\t12. Salir."<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t OPCION:[  ]\b\b\b";
cin>>opci;
opco=atoi(opci);
if((opco==0) || (opco>12)){
cout<<" OPCION NO VALIDA, INTENTELO DE NUEVO.";
getch();
menu();
}else{
opc=opco;
}

switch(opc){
case 1:
system("cls");
ingresar();
break;

case 2:
registro();
break;

case 3:
system("cls");
rgpaciente(); //Registro general de paciente
break;

/* case 4:
rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
break;

case 5:
rpsangre(); //Registro de paciente por tipo de sangre
break;

case 6:
diagnostico(); //Reporte de paciente por diagnostico
break;
*/
case 7:
pdepartamento(); //Reporte de paciente por departamento
break;
/*
case 8:
ddepartamento(); //Reporte de diagnostico por departamento
break;

case 9:
historial(); //Historial clinico del paciente
break;

case 10:
rdt(); //Reporte de descendente de total de ingreso de pacientes por día
break;

case 11:
pmedico(); //Reporte de pachiente por medico
break;
*/
case 12:
cout<<"\tQUE TENGA UN LINDO DIA!"<<endl;
break;

default:
cout<<"\tOPCION NO VALIDA, INTENTELO DE NUEVO. ";
getch();
menu();
break;


}


}

}

void crear(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt","a+");
archivo2=fopen("registro.txt","a+");
fclose(archivo);
fclose(archivo2);
}

void principio(){
int a=1;
int b=0;
system("cls");
cout<<" Es primera vez que utiliza este programa? \n 1. Si. \t\t\t\t 2. No."<<endl;
cin>>b;
if(b>2){
cout<<" OPCION NO VALIDA, INTENTELO NUEVAMENTE.";
getch();
principio();
}
if(a=b){
crear();
menu();
}else{

menu();
}

}

int main(){
menu();
}

void mini(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt", "r+");
system("cls");
long long auxcui;
int xn=0,vw=0;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<"\tIngrese el CUI del paciente: ";
cin>>auxcui;
cout<<"\n_______________________________________________________________________________________________"<<endl<<endl;


while((fread(&datos,sizeof(datos),1,archivo)==1)&&(vw!=1))
{

if (datos.cui==auxcui){
system("cls");
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<" "<<datos.apellido <<". "<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
}
do{
int res;
char respuesta[254];
cout<<" Es el paciente correcto? "<<endl;
cout<<"1. SI. \t\t 2. NO."<<endl;
cin>>respuesta;
res=atoi(respuesta);
if (res==1){
rp.cui=datos.cui;
vw=1;
rp.nufam=datos.cel;
// cout<<rp.nufam;
// getch();
}else{
if(res==2){
xn=0;
}else{
cout<<" OPCION NO VALIDA, VUELVA A INTENTARLO.";
getch();
xn=1;
}
}
}while(xn==1);
}

archivo2=fopen("registro.txt","at+");
fwrite(&rp,sizeof(rp),1,archivo2);
fclose(archivo);

fclose(archivo2);
// cout<<" Guardado";

}

void registro(){
int dia=0,m=0,aanio=0,xx=0,h=0,min=0,hir=0,min2=0,h2=0,hir2=0,dia2=0,m2=0,aanio2=0,xx2=0;
char ddia[254],mes[254],año[254],ho[5],mi[5];
char ddia2[254],mes2[254],anio2[254],ho2[5],mi2[5];
int vme,vt,vd,vi,vm,vit;

mini();
system("cls");
cout<<"\t\t\t INGRESE LA SIGUIENTE INFORMACION: "<<endl;
do{
cout<<" Fecha de ingreso:\n";
xx=0;
cin.getline(ddia,254,'/');
cin.getline(mes,254,'/');
cin.getline(año,254,'\n');
dia=atoi(ddia);
m=atoi(mes);
aanio=atoi(año);
if((dia==0) || (dia>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((m==0) || (m>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((aanio<1950) || (aanio>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((dia>29) && (m==2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}else{
rp.fecha.dia=dia;
rp.fecha.mes=m;
rp.fecha.año=aanio;
}
}
}
}

}while(xx==1);

cout<<"\t\t\tDESCRIPCION DE INGRESO: "<<endl;
do{

cout<<" Encabezado/titulo:\t\t";
cin.getline(rp.ti,254,'\n');
strupr(rp.ti);
vit=0;//inpedimos que el while sea infinito
if((*rp.ti==NULL) || (*rp.ti==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vit=1;//activamos el while
}
}while(vit==1);

do{
cout<<" Descripcion:\n";
cin.getline(rp.descripcion,1000,'\n');
strupr(rp.descripcion);
vi=0;//inpedimos que el while sea infinito
if((*rp.descripcion==NULL) || (*rp.descripcion==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vi=1;//activamos el while
}
}while(vi==1);

do{
cout<<" Hora de ingreso: "<<endl;
cin.getline(ho,5,':');
cin.getline(mi,5,'\n');
min=atoi(mi);
h=atoi(ho);
if (h>23){
cout<<" Hora invalida, vuelva a intentarla."<<endl;
h=0;min=0;
hir=1;
}else{

if(min>59){
cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
h=0;min=0;
hir=1;
}else{
rp.hingreso=h;
rp.mingreso=min;
}


}
}while(hir==1);

do{
vme=0;
cout<<" Medico tratante: ";
cin.getline(rp.medico,254,'\n');
strupr(rp.medico);
vme=0;//inpedimos que el while sea infinito
if((*rp.medico==NULL) || (*rp.medico==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vme=1;//activamos el while
}
}while(vme==1);

cout<<"\t\t\tDIAGNOSTICO MEDICO: "<<endl;

do{
cout<<" Encabezado/Titulo:\t\t";
cin.getline(rp.titulo,254,'\n');
strupr(rp.titulo);
vt=0;//inpedimos que el while sea infinito
if((*rp.titulo==NULL) || (*rp.titulo==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vt=1;//activamos el while
}
}while(vt==1);

do{
cout<<" Diagnostico:\n";
cin.getline(rp.diagnostico,1000,'\n');
strupr(rp.diagnostico);
vd=0;//inpedimos que el while sea infinito
if((*rp.diagnostico==NULL) || (*rp.diagnostico==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vd=1;//activamos el while
}
}while(vd==1);

do{
cout<<" RECETA MEDICA:\n";
cin.getline(rp.rmedica,600,'\n');
strupr(rp.rmedica);
vm=0;//inpedimos que el while sea infinito
if((*rp.rmedica==NULL) || (*rp.rmedica==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vm=1;//activamos el while
}
}while(vm==1);



cout<<"\t\t\tFECHA DE SALIDA\n";
do{
cout<<" FECHA: ";
xx2=0;
cin.getline(ddia2,254,'/');
cin.getline(mes2,254,'/');
cin.getline(anio2,254,'\n');
dia2=atoi(ddia2);
m2=atoi(mes2);
aanio2=atoi(anio2);
if((dia2==0) || (dia2>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((m2==0) || (m2>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((aanio2<1950) || (aanio2>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((dia2>29) && (m2==2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}else{
rp.fechas.dia=dia2;
rp.fechas.mes=m2;
rp.fechas.año=aanio2;
}
}
}
}

}while(xx2==1);

do{
cout<<" Hora de salida: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
if (h2>23){
cout<<" Hora invalida, vuelva a intentarla."<<endl;
h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
hir2=1;
}else{

if(min2>59){
cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
hir2=1;
}else{
rp.hsalida=h2;
rp.msalida=min2;
}


}
}while(hir2==1);




FILE*archivo2;
archivo2=fopen("registro.txt","at+"); //abrimos el archivo
fwrite(&rp,sizeof(rp),1,archivo2); //escribimos los datos ingresados en el archivo
fclose(archivo2);//cerramos el archivo
cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
getch();
menu();

}

void mini2(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt", "r+");
int ce,vnf=0;
char cel[254];
long long auxcui;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
auxcui=auxccui;


while(fread(&datos,sizeof(datos),1,archivo)==1)
{

if (datos.cui==auxcui){
system("cls");
cout<<"\t\t\t DATOS INGRESADOS:\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de ingreso:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<"."<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
}

}
int respuesta;
cout<<" Es el paciente correcto? "<<endl;
cout<<"1. SI. \n 2. NO."<<endl;
cin>>respuesta;
if (respuesta==1){
rp.cui=datos.cui;
}else{
mini2();
}

cin.ignore();
do{
do{
do{
cout<<" Ingrese el Numero celular de un familiar del paciente: ";
cin.getline(cel,254,'\n');
ce=atoi(cel);
if (ce==0){
cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
ce=0;
}else{

if (ce<29999999){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}else{
if (ce>60000000){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}
}
}
}while(ce>60000000);
}while(ce==0);
}while(ce<29999999);
datos.cel=ce;

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Ingrese el Nombre de un familiar del cliente: ";
cin.getline(datos.nfamiliar,40,'\n');
strupr(datos.nfamiliar);
vnf=0;//inpedimos que el while sea infinito
if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vnf=1;//activamos el while
}
}while(vnf==1);

archivo2=fopen("hospital.txt","at+");
fwrite(&datos,sizeof(datos),1,archivo2);
fclose(archivo);

fclose(archivo2);
cout<<" DATOS ACTUALIZADOS.";
getch();
menu();
}