Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: AZXZVS1

AZXZVS1.m

Go to the documentation of this file.
  1. AZXZVS1 ;REPORT -VISIT COUNTS BY PROVIDER OF SERVICE [ 05/01/95 1:25 PM ]
  1. ;06/02/92 JOHN H. LYNCH
  1. ;
  1. ;THIS PROGRAM WILL GIVE THE TOTAL NUMBER
  1. ;OF VISITS BY ALL PROVIDERS OF SERVICE.
  1. ;
  1. ;PATIENT NAME (APC DATA)
  1. ;DATE OF SERVICE (APC DATA)
  1. ;PRIMARY PROVIDER (APC DATA)
  1. ;CHART NUMBER (APC DATA)
  1. ;
  1. MAIN ;AZXZVS1 PROGRAM CONTROL
  1. ;INITIALIZE LOCAL VARIABLES
  1. ;DELETE COMMENT ONLY IF RUNNING THIS ROUTINE IN PROGRAMMER MODE
  1. D ^XBKSET ;INITIALIZE SYSTEM VARIABLES
  1. W @IOF ;CLEAR SCREEN
  1. W !!!,"APC Visit Counts by Provider of Service Report..."
  1. LBDATE ;READ USER INPUT ON LOWER BOUND DATE
  1. R !!,"Please enter the Lower Date: ",LDATE
  1. ;IF "^" QUIT AND RETURN TO PREVIOUS MENU
  1. I (LDATE="^")!(LDATE="") Q
  1. ;IF "?" GIVE HELP AND RETURN TO LDATE PROMPT
  1. I (LDATE="?") W !!,"Enter Lower Boundary Date to search on for report." G LBDATE
  1. I (LDATE="??") W !!,"Enter Lower Boundary Date to search on for report."
  1. I (LDATE="??") W !!,"Date Formats:",?15,"MM/DD/YY",?29,"- STANDARD",!,?15,"T",?29,"- TODAY",!,?15,"T-###",?29,"- TODAY MINUS ### DAYS",!,?15,"NOW",?29,"- CURRENT DATE",!,?15,"MON ##, ####",?29,"- MON DAY, YEAR" G LBDATE
  1. I (LDATE="???") W !!,"Enter Lower Boundary Date to search on for report.",!!,"Date Examples:",?15,"Format",?29,"- Example User Input"
  1. I (LDATE="???") W !!,?15,"MM/DD/YY",?29,"- 01/01/92",!,?15,"T",?29,"- T",!,?15,"T-###",?29,"- T-10",!,?15,"NOW",?29,"- NOW",!,?15,"MON ##, ####",?29,"- SEP 01, 1992" G LBDATE
  1. ;CHECK TO SEE IF A VALID DATE HAS BEEN ENTERED
  1. I (LDATE?1.2N0.1"/"1.2N0.1"/"0.4N)!(LDATE?1"T"1"-"1.3N)!(LDATE="T")!(LDATE="NOW")!(LDATE?3A1" "1.2N1","1" "4N) G LBDATE2
  1. W !!,"Illegal date; check format and re-enter lower boundary date.",!,*7
  1. G LBDATE
  1. LBDATE2 ;CONVERT LDATE TO NEW FORMATS
  1. S X=LDATE ;X = DATE TO CONVERT USING ^%DT
  1. D CONVERT ;CONVERT USER DATE TO FILEMAN DATE FORMAT
  1. ;DATE FORMAT WAS ILLEGAL
  1. I Y<1 W !!,"Illegal date; check format and re-enter lower boundary date.",!,*7 G LBDATE
  1. S LDATE=Y
  1. S Y=LDATE D DD^%DT S LDATE1=Y ;LDATE1 = DATE IN USER FORMAT
  1. UBDATE ;READ USER INPUT ON UPPER BOUND DATE
  1. R !!,"Please enter the Upper Date: ",UDATE
  1. ;IF "^" RETURN TO PREVIOUS PROMPT (LBDATE)
  1. I (UDATE="^")!(UDATE="") G LBDATE
  1. ;IF "?" GIVE HELP AND RETURN TO UDATE PROMPT
  1. I (UDATE="?") W !!,"Enter Upper Boundary Date to search on for report." G UBDATE
  1. I (UDATE="??") W !!,"Enter Upper Boundary Date to search on for report."
  1. I (UDATE="??") W !!,"Date Formats:",?15,"MM/DD/YY",?29,"- STANDARD",!,?15,"T",?29,"- TODAY",!,?15,"T-###",?29,"- TODAY MINUS ### DAYS",!,?15,"NOW",?29,"- CURRENT DATE",!,?15,"MON ##, ####",?29,"- MON DAY, YEAR" G UBDATE
  1. I (UDATE="???") W !!,"Enter Upper Boundary Date to search on for report.",!!,"Date Examples:",?15,"Format",?29,"- Example User Input"
  1. I (UDATE="???") W !!,?15,"MM/DD/YY",?29,"- 01/01/92",!,?15,"T",?29,"- T",!,?15,"T-###",?29,"- T-10",!,?15,"NOW",?29,"- NOW",!,?15,"MON ##, ####",?29,"- SEP 01, 1992" G UBDATE
  1. ;CHECK TO SEE IF A VALID DATE HAS BEEN ENTERED
  1. I (UDATE?1.2N0.1"/"1.2N0.1"/"0.4N)!(UDATE?1"T"1"-"1.3N)!(UDATE="T")!(UDATE="NOW")!(UDATE?3A1" "1.2N1","1" "4N) G UBDATE2
  1. W !!,"Illegal date; check format and re-enter upper boundary date.",!,*7
  1. G UBDATE
  1. UBDATE2 ;CONVERT UDATE TO NEW FORMATS
  1. S X=UDATE ;X = DATE TO CONVERT USING ^%DT
  1. D CONVERT ;CONVERT USER DATE TO FILEMAN DATE FORMAT
  1. W ! ;GIVE AN EXTRA LINE FEED
  1. ;DATE FORMAT WAS ILLEGAL
  1. I Y<1 W !!,"Illegal date; check format and re-enter upper boundary date.",!,*7 G UBDATE
  1. S UDATE=Y
  1. S Y=UDATE D DD^%DT S UDATE1=Y ;UDATE1 = DATE IN USER FORMAT
  1. ;CHECK TO SEE IF UDATE > LDATE
  1. I (UDATE<LDATE) W !!,"Upper boundary date must be greater than or equal to lower boundary date.",!,*7 G UBDATE
  1. D GETPNUM ;RETRIEVE DATA FROM MEDICAID ELIGIBLE
  1. ;KILL LOCAL VARIABLES
  1. Q
  1. GETPNUM ;RETRIEVE DATA FROM "MEDICAID ELIGIBLE"
  1. ;INITIALIZE LOCAL VARIABLES
  1. S DEV=$I ;ORIG. DEVICE
  1. S PATNUM=0 ;PATIENT NUMBER
  1. S INUM2=0
  1. ;CALL DEVICE
  1. ;IS DEVICE VALID (NO, ABORT REPORT)
  1. ;S %ZIS="FQMN" D ^%ZIS K %ZIS ;CHECK FOR DEVICE CHARACTERISTICS
  1. ;I (IO="")!(IO="^") W !,*7,"No device specified." H 2 G MAIN
  1. ;I IO=$I,$D(IO("Q")) R !,"Do you really want me to queue to this device? NO//",YN I ("Nn"[$E(X,1))!(YN="") K IO("Q") G GETPNUM
  1. ;I $D(IO("Q")) K IO("Q") S ZTRTN="SETUP^AZXZVS1",ZTDESC="APC Visit Counts by Provider" F G="LDATE","UDATE","LDATE1","UDATE1","PATNUM","INUM2","IO","DEV" S ZTSAVE(G)=""
  1. ;I D ^%ZTLOAD Q
  1. ;S IO=IO D ^%ZIS I 'POP G SETUP
  1. ;W !,"Device ",IO," busy." G GETPNUM
  1. D ^%ZIS U IO
  1. SETUP ;SETUP FOR CALL FROM TASKMAN (OR DIRECT)
  1. ;CHECK TO MAKE SURE REPORT ISN'T ALREADY RUNNING SOMEWHERE ELSE
  1. I $D(^AZXZTMP3(0)) D ERR Q
  1. ;INITIALIZE LOCAL VARIABLES
  1. S DFN=0 ;INTERNAL ENTRY NUMBER (COUNTER)
  1. S COUNTER=1 ;LINES PER PAGE COUNTER
  1. S COUNTER2=0 ;TOTAL # OF VISITS COUNTER
  1. S PAGE=0 ;INITIALIZE PAGE #
  1. S CHECK=1 ;INITIALIZE CHECK VARIABLE (PVDRCHK=PVDRNAME?)
  1. S RET="" ;RET = IF IO=DEV CHECK FOR "^" TO EXIT
  1. ;SET 0-NODE FOR TMP GLOBAL (^AZXZTMP)
  1. S ^AZXZTMP3(0)="TMP FILE FOR AZXZVS1 PROGRAM^NEEDS TO BE DELETED IF A PROGRAM ERROR OCCURS"
  1. F S INUM2=0,PATNUM=$O(^AAPCRCDS("B",PATNUM)) Q:PATNUM="" F S INUM2=$O(^AAPCRCDS("B",PATNUM,INUM2)) Q:INUM2="" D CHKDATE
  1. ;CALL GETDATA
  1. D GETDATA ;THE DEVICE DECIDES WHERE THE DATA GOES
  1. ;CLOSE DEVICE
  1. X ^%ZIS("C")
  1. Q
  1. ERR ;THE ^AZXZTMP3 GLOBAL EXISTS (ERROR HAS OCCURRED OR
  1. ;THE PROGRAM IS CURRENTLY RUNNING ALREADY!!!
  1. I IO=DEV W @IOF ;CLEAR SCREEN
  1. W !!!,"********************************************************************************",!!,"The ""APC Visit Counts by Provider of Service"" report is currently running."
  1. W !!,"If you find that the report is not currently running..."
  1. W !,"please contact the MIS Manager immediately, a program error"
  1. W !,"may have occured."
  1. W !!,"********************************************************************************"
  1. I IO=DEV R !!,"Press return to continue...",RET
  1. I IO'=DEV W # ;SEND FORM FEED
  1. Q
  1. CONVERT ;CONVERT USER DATES TO FILEMAN DATE FORMAT
  1. ;SET LOCAL VARIABLES
  1. S %DT="EX" ;E=ECHO ANSWER;X=EXACT DATE
  1. D ^%DT ;VALUE RETURNED IN Y
  1. Q
  1. CHKDATE ;CHECK FOR A VALID DATE (WITHIN LDATE & UDATE)
  1. ;INITIALIZE LOCAL VARIABLES
  1. S FLAG=0 ;1 = VALID DATE, 0 = INVALID DATE
  1. S DATE=$P(^AAPCRCDS(INUM2,0),U,3)
  1. ;SET FLAG=1 IF DATE IS WITHING LDATE & UDATE (DO WRITETMP)
  1. I (DATE>(LDATE-1))&(DATE<(UDATE+1)) S FLAG=1
  1. ;CHECK TO MAKE SURE IT HAS A SPECIFIC PROVIDER
  1. D CHKSPEC
  1. I FLAG=1,FLAG2 D GETSPEC D GETNAME S Y=DATE D DD^%DT S DATE=Y D WRITETMP
  1. Q
  1. CHKSPEC ;CHECK TO MAKE SURE IT HAS A SPECIFIC PROVIDER
  1. ;INITIALIZE VARIABLES
  1. S FLAG2=0 ;1 = SPECIFIC PROVIDER EXISTS;0 = NO SPEC. PROV.
  1. S SPEC=0 ;SPEC = NUMBER OF SPECIFIC PROVIDERS LISTED
  1. I $D(^AAPCRCDS(INUM2,5,0)) S SPEC=$P(^AAPCRCDS(INUM2,5,0),U,4)
  1. I SPEC>0 S FLAG2=1 F J=1:1:SPEC S SPECPVDR(J)=$P(^AAPCRCDS(INUM2,5,J,0),U,1)
  1. Q
  1. GETSPEC ;GET SPECIFIC DISCIPLINE CODES (PROVIDER)
  1. I SPEC>0 F J=1:1:SPEC S INUM3=0,INUM3=$O(^DIC(6,"B",SPECPVDR(J),INUM3)),SPECNUM(J)=$P(^DIC(6,INUM3,0),U,4)
  1. Q
  1. GETNAME ;GET REAL NAME OF SPECIFIC PROVIDER, PROVIDER CLASS NAME AND CODE
  1. ;(PROVIDER CLASS, PERSON)
  1. I SPEC>0 F J=1:1:SPEC S PVDRDISC(J)=$P(^DIC(7,SPECPVDR(J),0),U,1),SPECCODE(J)=$P(^DIC(7,SPECPVDR(J),9999999),U,1)
  1. I SPEC>0 F J=1:1:SPEC S PVDRNAME(J)=$P(^DIC(16,SPECPVDR(J),0),U,1)
  1. Q
  1. WRITETMP ;WRITE DATA OUT TO TEMPORARY GLOBAL (^AZXZTMP3)
  1. ;WRITE SPECIFIC PROVIDER TO TMP GLOBAL
  1. I SPEC>0 F J=1:1:SPEC S DFN=DFN+1,^AZXZTMP3(DFN)=PVDRNAME(J)_"^"_PVDRDISC(J)_"^"_SPECCODE(J)
  1. I SPEC>0 S DFN=DFN-SPEC ;RESET DFN COUNTER BACK BY SPEC
  1. I SPEC>0 F J=1:1:SPEC S DFN=DFN+1,^AZXZTMP3("B",PVDRNAME(J),PVDRDISC(J),DFN)=""
  1. K SPECPVDR,SPECNUM,PVDRDISC,PVDRNAME,SPECCODE ;KILL ARRAYS
  1. Q
  1. GETDATA ;GETDATA GATHERS ALL DATA, CALLS PRINT TO PRINT TO DEVICE
  1. ;INITIALIZE LOCAL VARIABLES
  1. S PVDR="" ;PVDR = PROVIDER IN "B" CROSS-REF
  1. S DISC="" ;DISC = PROVIDER DISCIPLINE NAME IN "B" CROSS-REF
  1. S INUM=0 ;INUM = INTERNAL ENTRY # IN "B" CROSS-REF
  1. S SUBTOTAL=0 ;SUBTOTAL = SUBTOTAL OF # OF VISITS PER PAGE
  1. S TOTAL=0 ;TOTAL = TOTAL # OF VISITS PER PROVIDER TYPE
  1. F S PVDR=$O(^AZXZTMP3("B",PVDR)) Q:PVDR="" S DISC="" F S DISC=$O(^AZXZTMP3("B",PVDR,DISC)) Q:DISC="" S INUM=0 F S INUM=$O(^AZXZTMP3("B",PVDR,DISC,INUM)) Q:'INUM D SETVARS D PRINT I RET="^" S PVDR="ZZZZZZZZ" Q
  1. I RET="",SUBTOTAL W !,?73,"_______",!,?64,"Subtotal:",?73,$J(SUBTOTAL,7,0)
  1. I RET="",TOTAL S TOTAL=TOTAL+SUBTOTAL W !,?73,"_______",!,?67,"Total:",?73,$J(TOTAL,7,0)
  1. I IO=DEV,RET="" R !,"Press return to continue...",RET W @IOF
  1. R !!,"Do you want to print another report? YES// ",YN I ("Yy"[$E(X,1))!(YN="") K ^AZXZTMP3 S DFN=0 G MAIN
  1. ;KILL OFF LOCAL AND TEMPORARY VARIABLES
  1. K ^AZXZTMP3
  1. Q
  1. SETVARS ;SET CURRENT VALUES OF VARIABLES TO PRINT OUT
  1. S PVDRNAME=$P(^AZXZTMP3(INUM),U,1)
  1. S PVDRDISC=$P(^AZXZTMP3(INUM),U,2)
  1. S SPECCODE=$P(^AZXZTMP3(INUM),U,3)
  1. Q
  1. PRINT ;PRINT ALL DATA TO DEVICE
  1. ;CHECK = ONLY ON FIRST TIME THRU
  1. I CHECK=1 S PVDRCHK=PVDRNAME,DISCCHK=PVDRDISC,SPECCHK=SPECCODE,SITE=$P(^DIC(4,DUZ(2),0),U,1)
  1. ;CLEAR SCREEN IF IO=DEV, 1ST TIME
  1. I (CHECK=1),(IO=DEV) W @IOF S CHECK=CHECK+1
  1. I COUNTER=1 W !,"********************************************************************************" S PAGE=PAGE+1
  1. I COUNTER=1 W !,"APC Visit Counts by Provider of Service From: ",LDATE1," To: ",UDATE1,!,SITE,?68,"Page: ",PAGE,!,"********************************************************************************"
  1. I COUNTER=1 W !!,"Provider of Service",?25,"Provider Discipline",?54,"Code",?64,"Number of Visits",! S COUNTER=COUNTER+7
  1. I PVDRCHK'=PVDRNAME W !,PVDRCHK,?25,DISCCHK,?54,SPECCHK,?73,$J(COUNTER2,7,0) S SUBTOTAL=SUBTOTAL+COUNTER2,COUNTER2=0,COUNTER=COUNTER+1,PVDRCHK=PVDRNAME,DISCCHK=PVDRDISC,SPECCHK=SPECCODE
  1. S COUNTER2=COUNTER2+1 ;INCREMENT # OF VISITS COUNTER
  1. I IO=DEV,COUNTER>18 W !,?73,"_______",!,?64,"Subtotal:",?73,$J(SUBTOTAL,7,0) R !,"Press return to continue...",RET S COUNTER=1,TOTAL=TOTAL+SUBTOTAL,SUBTOTAL=0 W @IOF
  1. I IO'=DEV,COUNTER>57 W !,?73,"_______",!,?64,"Subtotal:",?73,$J(SUBTOTAL,7,0) S COUNTER=1,TOTAL=TOTAL+SUBTOTAL,SUBTOTAL=0 W #
  1. Q