| 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 | 
|---|