FoxPro/Visual FoxPro - contar por dias de acuerdo a codigo

   
Vista:

contar por dias de acuerdo a codigo

Publicado por sebastian (244 intervenciones) el 09/08/2013 01:24:40
Hola programadors tengo una data con campos código, fecha de ingreso y fecha de egreso, necesito desplegar en días el tiempo que el paciente estuvo en el hospital, como este ejemplo si ingreso el dia1 y se fue el dia5 deberá colocarse (1(unos)) por días hasta la fecha de egreso, inclusive el ultimo numero que indica la fecha que egreso deberá borrarse.

así debe quedar la tabla:


Código dia1----dia2---dia3---dia4----dia5
1----------1--------1-------1--------1----y como se fue este día ya no se contaría
2----------1--------1--------1
etc

Gracias



Egreso = alta o salida
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

contar por dias de acuerdo a codigo

Publicado por Fidel (558 intervenciones) el 09/08/2013 16:03:22
El tema es cómo lo quieres desplegar:
1.a) Para un solo paciente
1.b) Para un grupo de pacientes

2.a) en un formato de almanaque (para un solo paciente)
2.b) en una gráfica de tiempo.

Si quieres hacer un cursor para después mostrarlo de alguna forma, te doy una idea para un paciente. Para varios, se complica apenas porque hay que determinar primero la menor fecha de ingreso y la mayor fecha de egreso. Y el problema de hacerlo en una tabla es que dispones de 254 campos nada más. Bueno, espero que no estén tanto tiempo en el hospital.
De todos modos, para el caso de varios pacientes, tal vez convenga denominar los campos con una referencia completa de fecha:
lcCampo="D"+DTOS(gDIA). Con eso luego es posible saber qué campo del cursor se debe actualizar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
dia2=DATE()    && egreso ó último egreso
dia1=dia2-5    && ingreso o primer ingreso
gday=dia1       && varible para cálculo de días
ndias=dia2-dia1+1    && cantidad de días totales (incluyendo el de egreso)
 
MESSAGEBOX("Ingresó: "+DTOC(dia1)+CHR(13);
	+"Egresó:" +DTOC(dia2))
 
* Generar el cursor
 
LOCAL ARRAY gatab(ndias+2,4)
FOR i=1 TO nDias
	gatab[i,1]="DIA"+LTRIM(STR(i))
	gatab[i,2]="I"
	gatab[i,3]=0
	gatab[i,4]=0
NEXT
 
i=ndias+1
gatab[i,1]="CODIGO"
GATAB[i,2]="I"	&& O "C" según el tipo de código
GATAB[i,3]=0	&& o ancho de campo según el tipo de código
gatab[i,4]=0
 
i=i+1
gatab[i,1]="PACIENTE"
GATAB[i,2]="C"
GATAB[i,3]=50
gatab[i,4]=0
 
CREATE CURSOR PACIENSTAY FROM ARRAY gatab
 
* Rellenar el cursor
SELECT pacienstay
APPEND BLANK
replace codigo WITH 1,;
	paciente WITH "PACIENTE NOMBRE DE"
FOR I=1 TO ndias-1
	lcCampo="DIA"+LTRIM(STR(i))
	replace (lcCampo) WITH DAY(gday)
	gday=gday+1
NEXT
BROWSE
USE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar