1 | WVRPPCD ;HCIOFO/FT,JR-REPORT: PROCEDURES STATISTICS; ;7/23/01 13:33
|
---|
2 | ;;1.0;WOMEN'S HEALTH;**12**;Sep 30, 1998
|
---|
3 | ;; Original routine created by IHS/ANMC/MWR
|
---|
4 | ;;* MICHAEL REMILLARD, DDS * ALASKA NATIVE MEDICAL CENTER *
|
---|
5 | ;; CALLED BY OPTION: "WV PRINT PROCEDURE STATS".
|
---|
6 | ;
|
---|
7 | ; This routine uses the following IAs:
|
---|
8 | ; <NONE>
|
---|
9 | ;
|
---|
10 | N N,R,X,T,Y,R,PG,PA,JC,J,TR,TR2,JR,JR2,CM,CM2,WVJRC,FE,FI,WVSB
|
---|
11 | K ^TMP("WVRES",$J),^TMP("WVAR",$J),^TMP("WVNOHCF",$J)
|
---|
12 | S WVPOP=0 K WVRES
|
---|
13 | D TITLE^WVUTL5("PROCEDURE STATISTICS REPORT")
|
---|
14 | D DATES G:WVPOP EXIT
|
---|
15 | D SELECT G:WVPOP EXIT
|
---|
16 | D BYAGE(.WVAGRG,.WVPOP) G:WVPOP EXIT
|
---|
17 | D FAC G:WVPOP EXIT
|
---|
18 | D DEVICE G:WVPOP EXIT
|
---|
19 | D ^WVRPPCD2
|
---|
20 | D COPYGBL
|
---|
21 | D ^WVRPPCD1
|
---|
22 | ;
|
---|
23 | EXIT ;EP
|
---|
24 | K ^TMP("WVRES",$J),^TMP("WVAR",$J),^TMP("WVNOHCF",$J)
|
---|
25 | D KILLALL^WVUTL8
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | DATES ;EP
|
---|
29 | ;---> ASK DATE RANGE. RETURN DATES IN WVBEGDT AND WVENDDT.
|
---|
30 | D ASKDATES^WVUTL3(.WVBEGDT,.WVENDDT,.WVPOP,"T-365","T")
|
---|
31 | Q
|
---|
32 | ;
|
---|
33 | SELECT ;EP
|
---|
34 | D SELECT^WVSELECT("Procedure Type",790.2,"WVARR","","",.WVPOP)
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | BYAGE(WVAGRG,WVPOP) ;EP
|
---|
38 | ;---> RETURN AGE RANGE IN WVAGRG.
|
---|
39 | N DIR,DIRUT,Y S WVPOP=0
|
---|
40 | W !!?3,"Do you wish to display statistics by age group?"
|
---|
41 | S DIR(0)="Y",DIR("B")="YES" D HELP1
|
---|
42 | S DIR("A")=" Enter Yes or No"
|
---|
43 | D ^DIR K DIR W !
|
---|
44 | S:$D(DIRUT) WVPOP=1
|
---|
45 | ;---> IF NOT DISPLAYING BY AGE GROUP, SET WVAGRG (AGE RANGE)=1, QUIT.
|
---|
46 | I 'Y S WVAGRG=1 Q
|
---|
47 | BYAGE1 ;
|
---|
48 | W !?5,"Enter the age ranges you wish to select for in the form of:"
|
---|
49 | W !?5," 15-29,30-39,40-105"
|
---|
50 | W !?5,"Use a dash ""-"" to separate the limits of a range,"
|
---|
51 | W !?5,"use a comma to separate the different ranges."
|
---|
52 | W !!?5,"NOTE: Patient ages will reflect the age they were on the"
|
---|
53 | W !?5," dates of their procedures. Patient ages will NOT"
|
---|
54 | W !?5," necessarily be their ages today.",!
|
---|
55 | K DIR D HELP2
|
---|
56 | S DIR(0)="FOA",DIR("A")=" Enter age ranges: "
|
---|
57 | S:$D(^WV(790.72,DUZ,0)) DIR("B")=$P(^(0),U,2)
|
---|
58 | D ^DIR K DIR
|
---|
59 | I $D(DIRUT) S WVPOP=1 Q
|
---|
60 | D CHECK(.Y)
|
---|
61 | I Y="" D G BYAGE1
|
---|
62 | .W !!?5,"* INVALID AGE RANGE. Please begin again. (Enter ? for help.)"
|
---|
63 | ;---> WVAGRG=SELECTED AGE RANGE(S).
|
---|
64 | S WVAGRG=Y
|
---|
65 | D DIC^WVFMAN(790.72,"L",.Y,"","","","`"_DUZ)
|
---|
66 | Q:Y<0
|
---|
67 | D DIE^WVFMAN(790.72,".02////"_WVAGRG,+Y,.WVPOP,1)
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | FAC ; Select one or more facilities
|
---|
71 | D SELECT^WVSELECT("Facility",790.02,"WVSB","",DUZ(2),.WVPOP)
|
---|
72 | Q
|
---|
73 | DEVICE ;EP
|
---|
74 | ;---> GET DEVICE AND POSSIBLY QUEUE TO TASKMAN.
|
---|
75 | S ZTDESC="Procedure Statistics Report"
|
---|
76 | S ZTRTN="DEQUEUE^WVRPPCD"
|
---|
77 | F WVSV="AGRG","BEGDT","ENDDT" D
|
---|
78 | .I $D(@("WV"_WVSV)) S ZTSAVE("WV"_WVSV)=""
|
---|
79 | ;---> SAVE PROCEDURES ARRAY.
|
---|
80 | I $D(WVARR) N N S N=0 F S N=$O(WVARR(N)) Q:N="" D
|
---|
81 | .S ZTSAVE("WVARR("""_N_""")")=""
|
---|
82 | ; Save Facility array
|
---|
83 | I $D(WVSB) N N S N=0 F S N=$O(WVSB(N)) Q:N="" D
|
---|
84 | .S ZTSAVE("WVSB("""_N_""")")=""
|
---|
85 | .Q
|
---|
86 | D ZIS^WVUTL2(.WVPOP,1)
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | COPYGBL ;EP
|
---|
90 | ;---> COPY ^TMP("WVRES",$J,"R") TO ^TMP("WVAR",$J, TO MAKE IT FLAT.
|
---|
91 | N FE,FI,I,M,N K WVAR
|
---|
92 | S I=0,FE=""
|
---|
93 | F S FE=$O(^TMP("WVRES",$J,"R",FE)) Q:FE="" S FI=0 F S FI=$O(^TMP("WVRES",$J,"R",FE,FI)) Q:'FI S N=0 F S N=$O(^TMP("WVRES",$J,"R",FE,FI,N)) Q:N="" D
|
---|
94 | .S M=0
|
---|
95 | .F S M=$O(^TMP("WVRES",$J,"R",FE,FI,N,M)) Q:M="" D
|
---|
96 | ..S I=I+1,^TMP("WVAR",$J,FE,FI,I)=^TMP("WVRES",$J,"R",FE,FI,N,M)
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | DEQUEUE ;EP
|
---|
100 | ;---> TASKMAN QUEUE OF PRINTOUT.
|
---|
101 | D SETVARS^WVUTL5,^WVRPPCD2
|
---|
102 | I $G(ZTSTOP)=1 D EXIT Q ;user requested the job to stop
|
---|
103 | D COPYGBL,^WVRPPCD1,EXIT
|
---|
104 | Q
|
---|
105 | ;
|
---|
106 | HELP1 ;EP
|
---|
107 | ;;Answer "YES" to display statistics by age group. If you choose
|
---|
108 | ;;to display by age group, you will be given the opportunity to
|
---|
109 | ;;select the age ranges. For example, you might choose to display
|
---|
110 | ;;from ages 15-40,41-65,65-99.
|
---|
111 | ;;Answer "NO" to display statistics without grouping by age.
|
---|
112 | S WVTAB=5,WVLINL="HELP1" D HELPTX
|
---|
113 | Q
|
---|
114 | ;
|
---|
115 | HELP2 ;EP
|
---|
116 | ;;Enter each age range you wish to report on by entering the
|
---|
117 | ;;earlier age-dash-older age. For example, 20-29 would report
|
---|
118 | ;;on all patients between the ages of 20 and 29 inclusive.
|
---|
119 | ;;You may select as many age ranges as you wish. Age ranges must
|
---|
120 | ;;be separated by commas. For example: 15-19,20-29,30-39
|
---|
121 | ;;To select only one age, simply enter that age, with no dashes,
|
---|
122 | ;;for example, 30 would report only on women who were 30 years
|
---|
123 | ;;of age.
|
---|
124 | S WVTAB=5,WVLINL="HELP2" D HELPTX
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | HELPTX ;EP
|
---|
128 | ;---> CREATES DIR ARRAY FOR DIR. REQUIRED VARIABLES: WVTAB,WVLINL.
|
---|
129 | N I,T,X S T=$$REPEAT^XLFSTR(" ",WVTAB)
|
---|
130 | F I=1:1 S X=$T(@WVLINL+I) Q:X'[";;" S DIR("?",I)=T_$P(X,";;",2)
|
---|
131 | S DIR("?")=DIR("?",I-1) K DIR("?",I-1)
|
---|
132 | Q
|
---|
133 | ;
|
---|
134 | CHECK(X) ;EP
|
---|
135 | ;---> CHECK SYNTAX OF AGE RANGE STRING.
|
---|
136 | ;---> IF X=ONE AGE ONLY, SET IT IN THE FORM X-X AND QUIT.
|
---|
137 | I X?1N.N S X=X_"-"_X Q
|
---|
138 | ;
|
---|
139 | N WV1,FAIL,I,Y,Y1,Y2
|
---|
140 | S FAIL=0
|
---|
141 | ;---> CHECK EACH RANGE.
|
---|
142 | F I=1:1:$L(X,",") S Y=$P(X,",",I) D Q:FAIL
|
---|
143 | .S Y1=$P(Y,"-"),Y2=$P(Y,"-",2)
|
---|
144 | .;---> EACH END OF EACH RANGE SHOULD BE A NUMBER.
|
---|
145 | .I (Y1'?1N.N)!(Y2'?1N.N) S FAIL=1 Q
|
---|
146 | .;---> THE LOWER NUMBER SHOULD BE FIRST.
|
---|
147 | .I Y2<Y1 S FAIL=1
|
---|
148 | I FAIL S X="" Q
|
---|
149 | ;
|
---|
150 | ;---> MAKE SURE ORDER IS FROM LOWEST (YOUNGEST) TO HIGHEST (OLDEST).
|
---|
151 | F I=1:1:$L(X,",") S Y=$P(X,",",I),Y1=$P(Y,"-"),WV1(Y1)=Y
|
---|
152 | S N=0,X=""
|
---|
153 | F S N=$O(WV1(N)) Q:'N S X=X_WV1(N)_","
|
---|
154 | S:$E(X,$L(X))="," X=$E(X,1,($L(X)-1))
|
---|
155 | Q
|
---|