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.
  1. AZXZVSIT ;REPORT -AHCCCS VISIT COUNTS BY PROVIDER (APC) [ 05/01/95 1:25 PM ]
  1. ;06/02/92 JOHN H. LYNCH
  1. ;
  1. ;THIS PROGRAM SEARCHES THE MEDICAID ELIGIBLE
  1. ;FILE AND PRINTS OUT INFORMATION USING THE PATIENT
  1. ;NAME TO PULL INFORMATION FROM THE APC DATA FILE.
  1. ;
  1. ;PATIENT NAME (MEDICAID ELIGIBLE)
  1. ;SSN (APC DATA)
  1. ;DATE OF SERVICE (APC DATA)
  1. ;PRIMARY PROVIDER (APC DATA)
  1. ;MEDICAID NUMBER (MEDICAID ELIGLBLE)
  1. ;CHART NUMBER (APC DATA)
  1. ;
  1. MAIN ;AZXZVSIT 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 !!!,"Visit Counts by Provider Report (APC)..."
  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="FQN" 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^AZXZVSIT",ZTDESC="AHCCCS Visit Counts by Provider (APC)" F G="LDATE","UDATE","LDATE1","UDATE1","PATNUM","INUM2","IO","DEV" S ZTSAVE(G)=""
  1. ;I D ^%ZTLOAD Q
  1. ;S IOP=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. ;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. 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
  1. ;CALL GETDATA
  1. D GETDATA ;THE DEVICE DECIDES WHERE THE DATA GOES
  1. ;CLOSE DEVICE
  1. X ^%ZIS("C")
  1. ;KILL OFF LOCAL AND TEMPORARY VARIABLES
  1. K ^AZXZTMP
  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. I FLAG=1 D GETMED D GETAPC D GETPVDR S Y=DATE D DD^%DT S DATE=Y D WRITETMP
  1. Q
  1. GETMED ;GET THE MEDICAID NUMBER FROM "MEDICAID ELIGIBLE"
  1. S MEDNUM=$P(^AUPNMCD(INUM,0),U,3)
  1. Q
  1. GETAPC ;RETRIEVE DATA FROM "APC DATA"
  1. S SSN=$P(^AAPCRCDS(INUM2,0),U,6) ;SOCIAL SECURITY NUMBER
  1. S PVDRNUM=$P(^AAPCRCDS(INUM2,0),U,14) ;PROVIDER NUMBER
  1. S CHARTNUM=$P(^AAPCRCDS(INUM2,0),U,5) ;CHART NUMBER
  1. Q
  1. GETPVDR ;GET THE ACTUAL PROVIDER NAME USING PROVIDER FILE (PVDRNUM)
  1. S PVDRNAME=$P(^DIC(7,PVDRNUM,0),U,1)
  1. Q
  1. WRITETMP ;WRITE DATA OUT TO TEMPORARY GLOBAL (^AZXZTMP)
  1. S DFN=DFN+1 ;INTERNAL ENTRY NUMBER (COUNTER)
  1. S ^AZXZTMP(DFN)=PVDRNAME_"^"_PATNUM_"^"_SSN_"^"_DATE_"^"_MEDNUM_"^"_CHARTNUM
  1. S ^AZXZTMP("B",PVDRNAME,PATNUM,DFN)=""
  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 PAT="" ;PAT = PATIENT IN "B" CROSS-REF
  1. S INUM=0 ;INUM = INTERNAL ENTRY # IN "B" CROSS-REF
  1. 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
  1. I COUNTER2,RET="" W !!,?49,"Total Number of Visits: ",$J(COUNTER2,6,0),!,"********************************************************************************",!
  1. 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
  1. Q
  1. SETVARS ;SET CURRENT VALUES OF VARIABLES TO PRINT OUT
  1. S PVDRNAME=$P(^AZXZTMP(INUM),U,1)
  1. S PATNUM=$P(^AZXZTMP(INUM),U,2)
  1. S SSN=$P(^AZXZTMP(INUM),U,3)
  1. S DATE=$P(^AZXZTMP(INUM),U,4)
  1. S MEDNUM=$P(^AZXZTMP(INUM),U,5)
  1. S CHARTNUM=$P(^AZXZTMP(INUM),U,6)
  1. S SITE=$P(^DIC(4,DUZ(2),0),U,1) ;DUZ(2) = CURRENT FACILITY
  1. Q
  1. PRINT ;PRINT ALL DATA TO DEVICE
  1. I CHECK=1 S PVDRCHK=PVDRNAME ;CHECK = ONLY ON FIRST TIME THRU
  1. I (CHECK=1),(IO=DEV) W @IOF ;CLEAR SCREEN IF IO=DEV, 1ST TIME
  1. I COUNTER=1 W !,"********************************************************************************" S PAGE=PAGE+1
  1. I COUNTER=1 W !,"AHCCCS Visit Counts by Provider (APC) From: ",LDATE1," To: ",UDATE1,!,SITE,?68,"Page: ",PAGE,!,"********************************************************************************" S COUNTER=COUNTER+4
  1. I PVDRCHK'=PVDRNAME W !!,?49,"Total Number of Visits: ",$J(COUNTER2,6,0),!,"********************************************************************************",! S COUNTER2=0,COUNTER=COUNTER+4
  1. I (COUNTER=5)&(CHECK'=1) W !,"Primary Provider: ",PVDRNAME,?73,"(CON'T)" S COUNTER=COUNTER+1
  1. I (PVDRCHK'=PVDRNAME)!(CHECK=1) W !,"Primary Provider: ",PVDRNAME S COUNTER=COUNTER+1
  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
  1. I (COUNTER=8)!(PVDRCHK'=PVDRNAME) W ! S COUNTER=COUNTER+1,PVDRCHK=PVDRNAME
  1. W !,PATNUM,?9,SSN,?26,DATE,?43,MEDNUM,?61,CHARTNUM S COUNTER=COUNTER+1
  1. S COUNTER2=COUNTER2+1 ;INCREMENT # OF VISITS COUNTER
  1. I IO=DEV,COUNTER>18 R !,"Press return to continue...",RET S COUNTER=1 W @IOF
  1. I IO'=DEV,COUNTER>57 S COUNTER=1 W #
  1. Q