- BUD5RPT1 ; IHS/CMI/LAB - UDS REPORT DRIVER ;
- ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
- ;
- ;
- Q ;not at top
- ;
- EN ;EP
- EN1 ;
- S BUDSITE=""
- S DIC="^BUDVSITE(",DIC(0)="AEMQ",DIC("A")="Enter your site: " D ^DIC
- I Y=-1 D EOJ Q
- S BUDSITE=+Y
- I '$O(^BUDVSITE(BUDSITE,11,0)) W !!,"Warning: There are no locations defined in the site parameter file for this",!,"site. Report will not be accurate!" G EN
- D TAXCHK^BUD5TXCH
- D YEAR
- I BUDYEAR="" W !!,"Year not entered.",! D EOJ Q
- D QUARTER ;get time period
- I BUDQTR="" W !,"Time period not entered." D EOJ Q
- ;S XBRP="PRINT^BUD5RPTP",XBRC="PROC^BUD5RPTC",XBRX="EOJ^BUD5RPT1",XBNS="BUD"
- ;D ^XBDBQUE
- ZIS ;call to XBDBQUE
- K IOP,%ZIS
- W !! S %ZIS="PQM" D ^%ZIS
- I POP D EOJ Q
- ZIS1 ;
- I $D(IO("Q")) G TSKMN
- DRIVER ;
- D PROC^BUD5RPTC
- U IO
- D PRINT^BUD5RPTP
- D ^%ZISC
- D EOJ
- Q
- TSKMN ;EP ENTRY POINT FROM TASKMAN
- S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
- I $G(IO("DOC"))]"" S ZTIO=ZTIO_";"_$G(IO("DOC"))
- I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
- K ZTSAVE S ZTSAVE("BUD*")=""
- S ZTCPU=$G(IOCPU),ZTRTN="DRIVER^BUD5RPT1",ZTDTH="",ZTDESC="UDS 05 REPORT" D ^%ZTLOAD D EOJ Q
- Q
- M ;EP - called from option
- D EOJ
- D GENI
- K BUDT3A,BUDT3B,BUDT4,BUDT5,BUDT6,BUDTZ
- W !!,"UDS Table Selection"
- W !!?5,"1 Table 3A: Users by Age and Gender"
- W !?5,"2 Table 3B: Users by Race/Ethnicity & Linguistic Pref"
- W !?5,"3 Table 5 col b&c: Staffing and Utilization (columns b & c)"
- W !?5,"4 Table 6: Selected Diagnoses and Services Rendered"
- W !?5,"5 Staff List for Table 5 col a"
- W !?5,"6 Center/Grantee Profile: User/Patient by Zip Code"
- W !?5,"7 ALL Tables"
- S DIR(0)="L^1:7",DIR("A")="Include which Tables",DIR("B")=6 KILL DA D ^DIR KILL DIR
- I $D(DIRUT) D EOJ Q
- I Y[7 S (BUDT3A,BUDT3B,BUDT4,BUDT5,BUDT6,BUDTZ)=1
- I Y[1 S BUDT3A=1
- I Y[2 S BUDT3B=1
- I Y[3 S BUDT5=1
- I Y[4 S BUDT6=1
- I Y[5 S BUDT5=1,BUDT5L1=1
- I Y[6 S BUDTZ=1
- G EN1
- Q
- ;
- T3A ;EP - entry point for Table 3A only
- D EOJ
- S BUDT3A=1
- D GENI
- D T3AI
- G EN1
- ;
- TZ ;EP - entry point for Table 3A only
- D EOJ
- S BUDTZ=1
- D GENI
- D TZAI
- G EN1
- TZAI ;intro for table Z
- W !!,"Center/Grantee Profile: User/Patient by Zip Code"
- W !,"The User/Patient by Zip Code table reports the number of users by"
- W !,"their zip code as entered in patient registration."
- Q
- T3AI ;intro for table 3A
- W !!,"TABLE 3A: USERS BY AGE AND GENDER"
- W !,"This report will produce UDS Table 3A, an itemization of users (patients) by age"
- W !,"and gender. Users must have at least one visit during the selected time period.",!,"as defined above. Age is calculated as of June 30th of the year you select.",!
- Q
- T3B ;EP
- D EOJ
- S BUDT3B=1
- D GENI
- D T3BI
- G EN1
- T3BI ;
- W !!,"TABLE 3B: USERS BY RACE/ETHNICITY/LANGUAGE"
- W !,"This report will produce UDS Table 3B, an itemization of users",!,"by race/ethnicity."
- Q
- T5 ;EP
- D EOJ
- S BUDT5=1
- D GENI
- D T5I
- G EN1
- T5I ;
- W !!,"TABLE 5 (b&c): STAFFING AND UTILIZATION"
- W !,"This report will produce UDS Table 5 that itemizes encounters and users",!,"(columns b and c only) by primary provider discipline."
- Q
- T51 ;EP
- D EOJ
- S BUDT5=1,BUDT5L1=1
- D GENI
- D T51I
- G EN1
- T51I ;
- W !!,"STAFF LIST FOR TABLE 5 col a: STAFFING"
- W !,"This report will produce a Staff List to be used to manually calculate",!,"Column A on Table 5 Staffing and Utilization, itemizing all staff by"
- W !,"disciplines and by FTE."
- Q
- T6 ;EP - entry point for Table 6 only
- D EOJ
- S BUDT6=1
- D GENI
- D T6I
- G EN1
- T6I ;intro for table 6
- W !!,"TABLE 6: SELECTED DIAGNOSES AND SERVICES RENDERED"
- W !,"This report will produce UDS Table 6 which itemizes encounters",!,"and users by selected diagnoses and services provided.",!
- Q
- QUARTER ;
- S BUDQTR=""
- S DIR("?",1)="Select the quarter you want to report on"
- S DIR("?",2)=" 1 January 1 - March 31"
- S DIR("?",3)=" 2 April 1 - June 30"
- S DIR("?",4)=" 3 July 1 - September 30"
- S DIR("?",5)=" 4 October 1 - December 31"
- S DIR("?",6)=" F Full Calender Year January 1 - December 31"
- S DIR(0)="S^1:1st Quarter (January 1 - March 31);2:2nd Quarter (April 1 - June 30);3:3rd Quarter (July 1 - September 30);4:4th Quarter (October 1 - December 31);F:Full Calendar Year (January 1 - December 31)"
- S DIR("A")="Choose the time period to report on",DIR("B")="F" KILL DA D ^DIR KILL DIR
- I $D(DIRUT)!(Y="") S BUDQUIT="" Q
- S BUDQTR=Y
- I Y=1 S BUDBD=$E(BUDYEAR,1,3)_"0101",BUDED=$E(BUDYEAR,1,3)_"0331"
- I Y=2 S BUDBD=$E(BUDYEAR,1,3)_"0401",BUDED=$E(BUDYEAR,1,3)_"0630"
- I Y=3 S BUDBD=$E(BUDYEAR,1,3)_"0701",BUDED=$E(BUDYEAR,1,3)_"0930"
- I Y=4 S BUDBD=$E(BUDYEAR,1,3)_"1001",BUDED=$E(BUDYEAR,1,3)_"1231"
- I Y="F" S BUDBD=$E(BUDYEAR,1,3)_"0101",BUDED=$E(BUDYEAR,1,3)_"1231"
- W !!,"Your report will be run for the time period: ",$$FMTE^XLFDT(BUDBD)," to ",$$FMTE^XLFDT(BUDED)
- Q
- YEAR ;
- S BUDYEAR=""
- W !
- W !,"Enter the Calendar Year. Use a 4 digit year, e.g. 2003, 2005"
- S DIR(0)="D^::EP"
- S DIR("A")="Enter Calendar Year"
- S DIR("?")="This report is compiled for a period. Enter a valid date."
- D ^DIR KILL DIR
- K DIC
- I $D(DUOUT) S DIRUT=1 Q
- I $D(DIRUT) Q
- I $E(Y,4,7)'="0000" W !!,"Please enter a year only!",! G YEAR
- S BUDYEAR=Y,BUDBD=$E(BUDYEAR,1,3)_"0101",BUDED=$E(BUDYEAR,1,3)_"1231"
- S BUDCAD=$E(BUDYEAR,1,3)_"0630"
- Q
- EOJ ;
- D EN^XBVK("BUD")
- Q
- GENI ;general introductions
- W:$D(IOF) @(IOF)
- W !!,$$CTR($$LOC),!,$$CTR("UDS 2005"),!
- W !,"UDS searches your database to find all visits (encounters) and related users"
- W !,"during the time period selected. Based on the UDS definition, to be considered"
- W !,"a user the patient must have had at least one visit meeting the following"
- W !,"criteria:"
- W !?4,"- must be to a location specified in your visit location setup"
- W !?4,"- must be to Service Category Ambulatory (A), Hospitalization (H), Day"
- W !?6,"Surgery (S), Observation (O), Nursing home visit (R), Historical"
- W !?6,"Event (E) visit or In-Hospital (I) visit"
- W !?4,"- must NOT have an excluded clinic code (see User Manual for a list)"
- W !?4,"- must have a primary provider and a coded purpose of visit"
- W !
- Q
- ;
- CTR(X,Y) ;EP - Center X in a field Y wide.
- Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
- ;----------
- USR() ;EP - Return name of current user from ^VA(200.
- Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
- ;----------
- LOC() ;EP - Return location name from file 4 based on DUZ(2).
- Q $S($G(DUZ(2)):$S($D(^DIC(4,DUZ(2),0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
- ;----------
- BUD5RPT1 ; IHS/CMI/LAB - UDS REPORT DRIVER ;
- +1 ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
- +2 ;
- +3 ;
- +4 ;not at top
- QUIT
- +5 ;
- EN ;EP
- EN1 ;
- +1 SET BUDSITE=""
- +2 SET DIC="^BUDVSITE("
- SET DIC(0)="AEMQ"
- SET DIC("A")="Enter your site: "
- DO ^DIC
- +3 IF Y=-1
- DO EOJ
- QUIT
- +4 SET BUDSITE=+Y
- +5 IF '$ORDER(^BUDVSITE(BUDSITE,11,0))
- WRITE !!,"Warning: There are no locations defined in the site parameter file for this",!,"site. Report will not be accurate!"
- GOTO EN
- +6 DO TAXCHK^BUD5TXCH
- +7 DO YEAR
- +8 IF BUDYEAR=""
- WRITE !!,"Year not entered.",!
- DO EOJ
- QUIT
- +9 ;get time period
- DO QUARTER
- +10 IF BUDQTR=""
- WRITE !,"Time period not entered."
- DO EOJ
- QUIT
- +11 ;S XBRP="PRINT^BUD5RPTP",XBRC="PROC^BUD5RPTC",XBRX="EOJ^BUD5RPT1",XBNS="BUD"
- +12 ;D ^XBDBQUE
- ZIS ;call to XBDBQUE
- +1 KILL IOP,%ZIS
- +2 WRITE !!
- SET %ZIS="PQM"
- DO ^%ZIS
- +3 IF POP
- DO EOJ
- QUIT
- ZIS1 ;
- +1 IF $DATA(IO("Q"))
- GOTO TSKMN
- DRIVER ;
- +1 DO PROC^BUD5RPTC
- +2 USE IO
- +3 DO PRINT^BUD5RPTP
- +4 DO ^%ZISC
- +5 DO EOJ
- +6 QUIT
- TSKMN ;EP ENTRY POINT FROM TASKMAN
- +1 SET ZTIO=$SELECT($DATA(ION):ION,1:IO)
- IF $DATA(IOST)#2
- IF IOST]""
- SET ZTIO=ZTIO_";"_IOST
- +2 IF $GET(IO("DOC"))]""
- SET ZTIO=ZTIO_";"_$GET(IO("DOC"))
- +3 IF $DATA(IOM)#2
- IF IOM
- SET ZTIO=ZTIO_";"_IOM
- IF $DATA(IOSL)#2
- IF IOSL
- SET ZTIO=ZTIO_";"_IOSL
- +4 KILL ZTSAVE
- SET ZTSAVE("BUD*")=""
- +5 SET ZTCPU=$GET(IOCPU)
- SET ZTRTN="DRIVER^BUD5RPT1"
- SET ZTDTH=""
- SET ZTDESC="UDS 05 REPORT"
- DO ^%ZTLOAD
- DO EOJ
- QUIT
- +6 QUIT
- M ;EP - called from option
- +1 DO EOJ
- +2 DO GENI
- +3 KILL BUDT3A,BUDT3B,BUDT4,BUDT5,BUDT6,BUDTZ
- +4 WRITE !!,"UDS Table Selection"
- +5 WRITE !!?5,"1 Table 3A: Users by Age and Gender"
- +6 WRITE !?5,"2 Table 3B: Users by Race/Ethnicity & Linguistic Pref"
- +7 WRITE !?5,"3 Table 5 col b&c: Staffing and Utilization (columns b & c)"
- +8 WRITE !?5,"4 Table 6: Selected Diagnoses and Services Rendered"
- +9 WRITE !?5,"5 Staff List for Table 5 col a"
- +10 WRITE !?5,"6 Center/Grantee Profile: User/Patient by Zip Code"
- +11 WRITE !?5,"7 ALL Tables"
- +12 SET DIR(0)="L^1:7"
- SET DIR("A")="Include which Tables"
- SET DIR("B")=6
- KILL DA
- DO ^DIR
- KILL DIR
- +13 IF $DATA(DIRUT)
- DO EOJ
- QUIT
- +14 IF Y[7
- SET (BUDT3A,BUDT3B,BUDT4,BUDT5,BUDT6,BUDTZ)=1
- +15 IF Y[1
- SET BUDT3A=1
- +16 IF Y[2
- SET BUDT3B=1
- +17 IF Y[3
- SET BUDT5=1
- +18 IF Y[4
- SET BUDT6=1
- +19 IF Y[5
- SET BUDT5=1
- SET BUDT5L1=1
- +20 IF Y[6
- SET BUDTZ=1
- +21 GOTO EN1
- +22 QUIT
- +23 ;
- T3A ;EP - entry point for Table 3A only
- +1 DO EOJ
- +2 SET BUDT3A=1
- +3 DO GENI
- +4 DO T3AI
- +5 GOTO EN1
- +6 ;
- TZ ;EP - entry point for Table 3A only
- +1 DO EOJ
- +2 SET BUDTZ=1
- +3 DO GENI
- +4 DO TZAI
- +5 GOTO EN1
- TZAI ;intro for table Z
- +1 WRITE !!,"Center/Grantee Profile: User/Patient by Zip Code"
- +2 WRITE !,"The User/Patient by Zip Code table reports the number of users by"
- +3 WRITE !,"their zip code as entered in patient registration."
- +4 QUIT
- T3AI ;intro for table 3A
- +1 WRITE !!,"TABLE 3A: USERS BY AGE AND GENDER"
- +2 WRITE !,"This report will produce UDS Table 3A, an itemization of users (patients) by age"
- +3 WRITE !,"and gender. Users must have at least one visit during the selected time period.",!,"as defined above. Age is calculated as of June 30th of the year you select.",!
- +4 QUIT
- T3B ;EP
- +1 DO EOJ
- +2 SET BUDT3B=1
- +3 DO GENI
- +4 DO T3BI
- +5 GOTO EN1
- T3BI ;
- +1 WRITE !!,"TABLE 3B: USERS BY RACE/ETHNICITY/LANGUAGE"
- +2 WRITE !,"This report will produce UDS Table 3B, an itemization of users",!,"by race/ethnicity."
- +3 QUIT
- T5 ;EP
- +1 DO EOJ
- +2 SET BUDT5=1
- +3 DO GENI
- +4 DO T5I
- +5 GOTO EN1
- T5I ;
- +1 WRITE !!,"TABLE 5 (b&c): STAFFING AND UTILIZATION"
- +2 WRITE !,"This report will produce UDS Table 5 that itemizes encounters and users",!,"(columns b and c only) by primary provider discipline."
- +3 QUIT
- T51 ;EP
- +1 DO EOJ
- +2 SET BUDT5=1
- SET BUDT5L1=1
- +3 DO GENI
- +4 DO T51I
- +5 GOTO EN1
- T51I ;
- +1 WRITE !!,"STAFF LIST FOR TABLE 5 col a: STAFFING"
- +2 WRITE !,"This report will produce a Staff List to be used to manually calculate",!,"Column A on Table 5 Staffing and Utilization, itemizing all staff by"
- +3 WRITE !,"disciplines and by FTE."
- +4 QUIT
- T6 ;EP - entry point for Table 6 only
- +1 DO EOJ
- +2 SET BUDT6=1
- +3 DO GENI
- +4 DO T6I
- +5 GOTO EN1
- T6I ;intro for table 6
- +1 WRITE !!,"TABLE 6: SELECTED DIAGNOSES AND SERVICES RENDERED"
- +2 WRITE !,"This report will produce UDS Table 6 which itemizes encounters",!,"and users by selected diagnoses and services provided.",!
- +3 QUIT
- QUARTER ;
- +1 SET BUDQTR=""
- +2 SET DIR("?",1)="Select the quarter you want to report on"
- +3 SET DIR("?",2)=" 1 January 1 - March 31"
- +4 SET DIR("?",3)=" 2 April 1 - June 30"
- +5 SET DIR("?",4)=" 3 July 1 - September 30"
- +6 SET DIR("?",5)=" 4 October 1 - December 31"
- +7 SET DIR("?",6)=" F Full Calender Year January 1 - December 31"
- +8 SET DIR(0)="S^1:1st Quarter (January 1 - March 31);2:2nd Quarter (April 1 - June 30);3:3rd Quarter (July 1 - September 30);4:4th Quarter (October 1 - December 31);F:Full Calendar Year (January 1 - December 31)"
- +9 SET DIR("A")="Choose the time period to report on"
- SET DIR("B")="F"
- KILL DA
- DO ^DIR
- KILL DIR
- +10 IF $DATA(DIRUT)!(Y="")
- SET BUDQUIT=""
- QUIT
- +11 SET BUDQTR=Y
- +12 IF Y=1
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"0101"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"0331"
- +13 IF Y=2
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"0401"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"0630"
- +14 IF Y=3
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"0701"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"0930"
- +15 IF Y=4
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"1001"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"1231"
- +16 IF Y="F"
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"0101"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"1231"
- +17 WRITE !!,"Your report will be run for the time period: ",$$FMTE^XLFDT(BUDBD)," to ",$$FMTE^XLFDT(BUDED)
- +18 QUIT
- YEAR ;
- +1 SET BUDYEAR=""
- +2 WRITE !
- +3 WRITE !,"Enter the Calendar Year. Use a 4 digit year, e.g. 2003, 2005"
- +4 SET DIR(0)="D^::EP"
- +5 SET DIR("A")="Enter Calendar Year"
- +6 SET DIR("?")="This report is compiled for a period. Enter a valid date."
- +7 DO ^DIR
- KILL DIR
- +8 KILL DIC
- +9 IF $DATA(DUOUT)
- SET DIRUT=1
- QUIT
- +10 IF $DATA(DIRUT)
- QUIT
- +11 IF $EXTRACT(Y,4,7)'="0000"
- WRITE !!,"Please enter a year only!",!
- GOTO YEAR
- +12 SET BUDYEAR=Y
- SET BUDBD=$EXTRACT(BUDYEAR,1,3)_"0101"
- SET BUDED=$EXTRACT(BUDYEAR,1,3)_"1231"
- +13 SET BUDCAD=$EXTRACT(BUDYEAR,1,3)_"0630"
- +14 QUIT
- EOJ ;
- +1 DO EN^XBVK("BUD")
- +2 QUIT
- GENI ;general introductions
- +1 IF $DATA(IOF)
- WRITE @(IOF)
- +2 WRITE !!,$$CTR($$LOC),!,$$CTR("UDS 2005"),!
- +3 WRITE !,"UDS searches your database to find all visits (encounters) and related users"
- +4 WRITE !,"during the time period selected. Based on the UDS definition, to be considered"
- +5 WRITE !,"a user the patient must have had at least one visit meeting the following"
- +6 WRITE !,"criteria:"
- +7 WRITE !?4,"- must be to a location specified in your visit location setup"
- +8 WRITE !?4,"- must be to Service Category Ambulatory (A), Hospitalization (H), Day"
- +9 WRITE !?6,"Surgery (S), Observation (O), Nursing home visit (R), Historical"
- +10 WRITE !?6,"Event (E) visit or In-Hospital (I) visit"
- +11 WRITE !?4,"- must NOT have an excluded clinic code (see User Manual for a list)"
- +12 WRITE !?4,"- must have a primary provider and a coded purpose of visit"
- +13 WRITE !
- +14 QUIT
- +15 ;
- CTR(X,Y) ;EP - Center X in a field Y wide.
- +1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
- +2 ;----------
- USR() ;EP - Return name of current user from ^VA(200.
- +1 QUIT $SELECT($GET(DUZ):$SELECT($DATA(^VA(200,DUZ,0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
- +2 ;----------
- LOC() ;EP - Return location name from file 4 based on DUZ(2).
- +1 QUIT $SELECT($GET(DUZ(2)):$SELECT($DATA(^DIC(4,DUZ(2),0)):$PIECE(^(0),U),1:"UNKNOWN"),1:"DUZ(2) UNDEFINED OR 0")
- +2 ;----------