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

AZXZVSIT.m

Go to the documentation of this file.
AZXZVSIT ;REPORT -AHCCCS VISIT COUNTS BY PROVIDER (APC) [ 05/01/95   1:25 PM ]
 ;06/02/92  JOHN H. LYNCH
 ;
 ;THIS PROGRAM SEARCHES THE MEDICAID ELIGIBLE
 ;FILE AND PRINTS OUT INFORMATION USING THE PATIENT
 ;NAME TO PULL INFORMATION FROM THE APC DATA FILE.
 ;
 ;PATIENT NAME     (MEDICAID ELIGIBLE)
 ;SSN              (APC DATA)
 ;DATE OF SERVICE  (APC DATA)
 ;PRIMARY PROVIDER (APC DATA)
 ;MEDICAID NUMBER  (MEDICAID ELIGLBLE)
 ;CHART NUMBER     (APC DATA)
 ;
MAIN ;AZXZVSIT PROGRAM CONTROL     
 ;INITIALIZE LOCAL VARIABLES
 
 ;DELETE COMMENT ONLY IF RUNNING THIS ROUTINE IN PROGRAMMER MODE
 D ^XBKSET         ;INITIALIZE SYSTEM VARIABLES
 
 W @IOF      ;CLEAR SCREEN
 W !!!,"Visit Counts by Provider Report (APC)..."
LBDATE ;READ USER INPUT ON LOWER BOUND DATE 
 R !!,"Please enter the Lower Date: ",LDATE
 ;IF "^" QUIT AND RETURN TO PREVIOUS MENU
 I (LDATE="^")!(LDATE="") Q
 
 ;IF "?" GIVE HELP AND RETURN TO LDATE PROMPT
 I (LDATE="?") W !!,"Enter Lower Boundary Date to search on for report." G LBDATE
 I (LDATE="??") W !!,"Enter Lower Boundary Date to search on for report."
 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
 I (LDATE="???") W !!,"Enter Lower Boundary Date to search on for report.",!!,"Date Examples:",?15,"Format",?29,"- Example User Input"
 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
 
 ;CHECK TO SEE IF A VALID DATE HAS BEEN ENTERED
 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
 W !!,"Illegal date; check format and re-enter lower boundary date.",!,*7 
 G LBDATE
 
LBDATE2 ;CONVERT LDATE TO NEW FORMATS
 S X=LDATE   ;X = DATE TO CONVERT USING ^%DT
 D CONVERT   ;CONVERT USER DATE TO FILEMAN DATE FORMAT
 ;DATE FORMAT WAS ILLEGAL
 I Y<1 W !!,"Illegal date; check format and re-enter lower boundary date.",!,*7 G LBDATE
 S LDATE=Y
 S Y=LDATE D DD^%DT S LDATE1=Y   ;LDATE1 = DATE IN USER FORMAT
 
UBDATE ;READ USER INPUT ON UPPER BOUND DATE 
 R !!,"Please enter the Upper Date: ",UDATE
 ;IF "^" RETURN TO PREVIOUS PROMPT (LBDATE)
 I (UDATE="^")!(UDATE="") G LBDATE
 ;IF "?" GIVE HELP AND RETURN TO UDATE PROMPT
 I (UDATE="?") W !!,"Enter Upper Boundary Date to search on for report." G UBDATE
 I (UDATE="??") W !!,"Enter Upper Boundary Date to search on for report."
 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
 I (UDATE="???") W !!,"Enter Upper Boundary Date to search on for report.",!!,"Date Examples:",?15,"Format",?29,"- Example User Input"
 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
 
 ;CHECK TO SEE IF A VALID DATE HAS BEEN ENTERED
 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
 W !!,"Illegal date; check format and re-enter upper boundary date.",!,*7 
 G UBDATE
 
UBDATE2 ;CONVERT UDATE TO NEW FORMATS
 S X=UDATE   ;X = DATE TO CONVERT USING ^%DT
 D CONVERT   ;CONVERT USER DATE TO FILEMAN DATE FORMAT
 W !         ;GIVE AN EXTRA LINE FEED
 ;DATE FORMAT WAS ILLEGAL
 I Y<1 W !!,"Illegal date; check format and re-enter upper boundary date.",!,*7 G UBDATE
 S UDATE=Y
 S Y=UDATE D DD^%DT S UDATE1=Y   ;UDATE1 = DATE IN USER FORMAT
 
 ;CHECK TO SEE IF UDATE > LDATE
 I (UDATE<LDATE) W !!,"Upper boundary date must be greater than or equal to lower boundary date.",!,*7 G UBDATE
 
 D GETPNUM   ;RETRIEVE DATA FROM MEDICAID ELIGIBLE
 
 ;KILL LOCAL VARIABLES
 Q
 
GETPNUM ;RETRIEVE DATA FROM "MEDICAID ELIGIBLE"
 ;INITIALIZE LOCAL VARIABLES
 S DEV=$I              ;ORIG. DEVICE
 S PATNUM=0            ;PATIENT NUMBER
 S INUM2=0
 
 ;CALL DEVICE
 ;IS DEVICE VALID (NO, ABORT REPORT)
 ;S %ZIS="FQN" D ^%ZIS K %ZIS   ;CHECK FOR DEVICE CHARACTERISTICS
 ;I (IO="")!(IO="^") W !,*7,"No device specified." H 2 G MAIN
 
 ;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
 ;I $D(IO("Q")) K IO("Q") S ZTRTN="SETUP^AZXZVSIT",ZTDESC="AHCCCS Visit Counts by Provider (APC)" F G="LDATE","UDATE","LDATE1","UDATE1","PATNUM","INUM2","IO","DEV" S ZTSAVE(G)=""
 ;I  D ^%ZTLOAD Q
 ;S IOP=IO D ^%ZIS I 'POP G SETUP
 ;W !,"Device ",IO," busy." G GETPNUM
 D ^%ZIS U IO
 
SETUP ;SETUP FOR CALL FROM TASKMAN (OR DIRECT) 
 ;INITIALIZE LOCAL VARIABLES
 S DFN=0           ;INTERNAL ENTRY NUMBER (COUNTER)
 S COUNTER=1       ;LINES PER PAGE COUNTER
 S COUNTER2=0      ;TOTAL # OF VISITS COUNTER
 S PAGE=0          ;INITIALIZE PAGE #
 S CHECK=1         ;INITIALIZE CHECK VARIABLE (PVDRCHK=PVDRNAME?)
 S RET=""          ;RET = IF IO=DEV CHECK FOR "^" TO EXIT
 
 F  S INUM=0,INUM2=0,PATNUM=$O(^AUPNMCD("B",PATNUM)) Q:PATNUM=""  S INUM=$O(^AUPNMCD("B",PATNUM,INUM)) F  S INUM2=$O(^AAPCRCDS("B",PATNUM,INUM2))  Q:INUM2=""  D CHKDATE
 
 ;CALL GETDATA
 D GETDATA             ;THE DEVICE DECIDES WHERE THE DATA GOES
 
 ;CLOSE DEVICE
 X ^%ZIS("C")
 
 ;KILL OFF LOCAL AND TEMPORARY VARIABLES
 K ^AZXZTMP
 Q
 
CONVERT ;CONVERT USER DATES TO FILEMAN DATE FORMAT
 ;SET LOCAL VARIABLES
 S %DT="EX"       ;E=ECHO ANSWER;X=EXACT DATE
 D ^%DT            ;VALUE RETURNED IN Y
 Q
 
CHKDATE ;CHECK FOR A VALID DATE (WITHIN LDATE & UDATE)
 ;INITIALIZE LOCAL VARIABLES
 S FLAG=0          ;1 = VALID DATE, 0 = INVALID DATE
 S DATE=$P(^AAPCRCDS(INUM2,0),U,3)
 
 ;SET FLAG=1 IF DATE IS WITHING LDATE & UDATE (DO WRITETMP)
 I (DATE>(LDATE-1))&(DATE<(UDATE+1)) S FLAG=1
 I FLAG=1 D GETMED D GETAPC D GETPVDR S Y=DATE D DD^%DT S DATE=Y D WRITETMP
 Q
 
GETMED ;GET THE MEDICAID NUMBER FROM "MEDICAID ELIGIBLE"
 S MEDNUM=$P(^AUPNMCD(INUM,0),U,3)
 Q
 
GETAPC ;RETRIEVE DATA FROM "APC DATA"   
 S SSN=$P(^AAPCRCDS(INUM2,0),U,6)       ;SOCIAL SECURITY NUMBER
 S PVDRNUM=$P(^AAPCRCDS(INUM2,0),U,14)  ;PROVIDER NUMBER
 S CHARTNUM=$P(^AAPCRCDS(INUM2,0),U,5)  ;CHART NUMBER
 Q
 
GETPVDR ;GET THE ACTUAL PROVIDER NAME USING PROVIDER FILE (PVDRNUM)
 S PVDRNAME=$P(^DIC(7,PVDRNUM,0),U,1)
 Q
 
WRITETMP ;WRITE DATA OUT TO TEMPORARY GLOBAL (^AZXZTMP)
 S DFN=DFN+1         ;INTERNAL ENTRY NUMBER (COUNTER)
 S ^AZXZTMP(DFN)=PVDRNAME_"^"_PATNUM_"^"_SSN_"^"_DATE_"^"_MEDNUM_"^"_CHARTNUM
 S ^AZXZTMP("B",PVDRNAME,PATNUM,DFN)=""
 Q
 
GETDATA ;GETDATA GATHERS ALL DATA, CALLS PRINT TO PRINT TO DEVICE
 ;INITIALIZE LOCAL VARIABLES
 S PVDR=""     ;PVDR = PROVIDER IN "B" CROSS-REF
 S PAT=""      ;PAT  = PATIENT IN "B" CROSS-REF
 S INUM=0      ;INUM = INTERNAL ENTRY # IN "B" CROSS-REF
 
 F  S PVDR=$O(^AZXZTMP("B",PVDR)) Q:PVDR=""   S PAT="" F  S PAT=$O(^AZXZTMP("B",PVDR,PAT)) Q:PAT=""  S INUM=0 F  S INUM=$O(^AZXZTMP("B",PVDR,PAT,INUM)) Q:'INUM  D SETVARS D PRINT I RET="^" S PVDR="ZZZZZZZZ" Q
 I COUNTER2,RET="" W !!,?49,"Total Number of Visits:  ",$J(COUNTER2,6,0),!,"********************************************************************************",!
 I IO=DEV,RET="" R !,"Press return to continue...",RET W @IOF R !,"Do you want to print another report? YES//",YN I ("Yy"[$E(X,1))!(YN="") G MAIN
 Q
 
SETVARS ;SET CURRENT VALUES OF VARIABLES TO PRINT OUT  
 S PVDRNAME=$P(^AZXZTMP(INUM),U,1)
 S PATNUM=$P(^AZXZTMP(INUM),U,2)
 S SSN=$P(^AZXZTMP(INUM),U,3)
 S DATE=$P(^AZXZTMP(INUM),U,4)
 S MEDNUM=$P(^AZXZTMP(INUM),U,5)
 S CHARTNUM=$P(^AZXZTMP(INUM),U,6)
 S SITE=$P(^DIC(4,DUZ(2),0),U,1)      ;DUZ(2) = CURRENT FACILITY
 Q
 
PRINT ;PRINT ALL DATA TO DEVICE    
 I CHECK=1 S PVDRCHK=PVDRNAME  ;CHECK = ONLY ON FIRST TIME THRU
 I (CHECK=1),(IO=DEV) W @IOF    ;CLEAR SCREEN IF IO=DEV, 1ST TIME
 I COUNTER=1 W !,"********************************************************************************" S PAGE=PAGE+1
 I COUNTER=1 W !,"AHCCCS Visit Counts by Provider (APC)       From: ",LDATE1,"  To: ",UDATE1,!,SITE,?68,"Page: ",PAGE,!,"********************************************************************************" S COUNTER=COUNTER+4
 I PVDRCHK'=PVDRNAME W !!,?49,"Total Number of Visits:  ",$J(COUNTER2,6,0),!,"********************************************************************************",! S COUNTER2=0,COUNTER=COUNTER+4 
 I (COUNTER=5)&(CHECK'=1) W !,"Primary Provider:  ",PVDRNAME,?73,"(CON'T)" S COUNTER=COUNTER+1
 I (PVDRCHK'=PVDRNAME)!(CHECK=1) W !,"Primary Provider:  ",PVDRNAME S COUNTER=COUNTER+1
 I (COUNTER=6)!(PVDRCHK'=PVDRNAME)!(CHECK=1) W !!,"Patient  ","Social Security  ","Date of Service  ","Medicaid Number  ","Chart Number" S CHECK=CHECK+1,COUNTER=COUNTER+2
 I (COUNTER=8)!(PVDRCHK'=PVDRNAME) W ! S COUNTER=COUNTER+1,PVDRCHK=PVDRNAME
 W !,PATNUM,?9,SSN,?26,DATE,?43,MEDNUM,?61,CHARTNUM S COUNTER=COUNTER+1
 S COUNTER2=COUNTER2+1      ;INCREMENT # OF VISITS COUNTER
 I IO=DEV,COUNTER>18 R !,"Press return to continue...",RET S COUNTER=1 W @IOF
 I IO'=DEV,COUNTER>57 S COUNTER=1 W #
 Q