- ACKQDWL ;AUG/JLTP BIR/PTD HCIOFO/BH-Compile A&SP Capitation Data ; [ 05/21/96 11:15 ]
- ;;3.0;QUASAR;;Feb 11, 2000
- ;Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
- ;
- OPTN ; Introduce option.
- W @IOF,!,"This option compiles the data for the A&SP Capitation Report.",!
- DIV ; select Division (user may select one/many/ALL)
- S ACKDIV=$$DIV^ACKQUTL2(3,.ACKDIV,"IA") G:'ACKDIV EXIT
- ; get month to be compiled
- D GETDT G:$D(DIRUT) EXIT
- ; initialise other variables
- D INIT S ACKMAN=1,ACKDUZ=DUZ
- ;
- ; Check the status of the workload file
- S ACKWLMSG=$$WLSTATUS^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- ; If status does not allow us to run, then exit
- S ACKSTAT=$$STAQES1^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- ;
- I 'ACKSTAT!(ACKSTAT="^") D EXIT G DIV
- ;
- BKG ; Queue process to run in the background.
- W !!,"QUASAR - Compile A&SP Capitation Data ",!
- ;
- S ZTRTN="DQ^ACKQDWL",ZTIO="",ZTSAVE("ACK*")=""
- S ZTDESC="QUASAR - Compile A&SP Capitation Data" D ^%ZTLOAD
- W:$D(ZTSK) !,"Data generation queued to run in the background."
- G EXIT
- ;
- DQ ; Entry point when queued.
- N CPT,ICD
- S:'$D(ACKM) ACKM=$$LM(DT) D:'$D(ACKDA) INIT
- S ACKWLMSG=$$WLSTATUS^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- S ACKSTAT=$$STAQES^ACKQDWLU(ACKWLMSG) I 'ACKSTAT D:'$D(ACKMAN) ABORT^ACKQDWB(ACKWLMSG) G EXIT
- I ACKSTAT=2 D CREATE^ACKQDWLU(ACKDA,ACKM,.ACKDIV) G:$D(DIRUT) EXIT
- D BEGIN
- D ^ACKQDWL1
- D END
- ;
- ;
- EXIT ; ALWAYS EXIT HERE
- K ACKBFY,ACKCP,ACKCPP,ACKCPT,ACKD,ACKDA,ACKDUZ,ACKEM,ACKICP,ACKICD,ACKM,ACKMAN,ACKMO,ACKNU,ACKNV,ACKST,ACKSTOP,ACKV,ACKXFT,ACKXST,ACKZIP
- K %X,%Y,D0,DA,DFN,DIE,DIRUT,DTOUT,DUOUT,DR,I,VAERR,VAPA,X,XMZ,Y,ZTSK
- K ^TMP("ACKQWL",$J),ACKXSDTE,ACKXEDTE,ACKDIV
- K ACKSTAT,ACKST,ACKK1,ACKN,ACKDEF,ACKVDVN,ACKX,DIVIEN,DIVARR
- S:$D(ZTQUEUED) ZTREQ="@"
- Q
- ;
- GETDT ; Select month for report.
- N DIR,X,Y
- GDT1 S DIR(0)="D^::APE",DIR("A")="Select Month & Year"
- S DIR("B")=$$XDAT^ACKQUTL($$LM(DT)),DIR("?")="^D HELP^%DTC"
- S DIR("??")="^D DATHLP^ACKQDWL"
- D ^DIR Q:$D(DIRUT)
- S ACKM=$E(Y,1,5)_"00"
- I ACKM>DT W !,$C(7),"Can't run capitation report for future months!" G GDT1
- Q
- ;
- INIT ; Initialize important variables.
- N MON
- S MON=$E(ACKM,1,5),ACKEM=MON_"99",ACKDA=+$$SITE^VASITE()_MON
- S ACKBFY=$$BFY^ACKQUTL(ACKM)
- Q
- ;
- LM(X) ; Find month previous to X.
- N M,D,Y S M=$E(X,4,5),D=$E(X,6,7),Y=$E(X,1,3),M=M-1
- S:M<1 M=12,Y=Y-1 S:M<10 M="0"_M
- Q Y_M_"00"
- ;
- DATHLP ; Extended help - select month for capitation report. (ACKQWL)
- W !?5,"Enter a date, in the past, for which you wish to",!?5,"compile data for the A&SP Capitation Report."
- Q
- ;
- END ; Set END date field into header for Division and Date
- N ACKARR
- D NOW^%DTC
- S DIVNUM=""
- F S DIVNUM=$O(ACKDIV(DIVNUM)) Q:DIVNUM="" D
- . S DIVIEN=$P(ACKDIV(DIVNUM),U,1)
- . S ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.04)=%
- D FILE^DIE("K","ACKARR")
- D NOW^%DTC
- S Y=X D DD^%DT S ACKXEDTE=Y
- S ACKXFT=$$HTIM^ACKQUTL(),ACKMO=$$XDAT^ACKQUTL(ACKM) D BUILD^ACKQDWB
- K ACKDIV
- Q
- ;
- BEGIN ; Set START date and Job # into header record for Division and date
- N ACKARR
- D NOW^%DTC
- S Y=X D DD^%DT S ACKXSDTE=Y
- S ACKXST=$$HTIM^ACKQUTL
- S DIVNUM=""
- F S DIVNUM=$O(ACKDIV(DIVNUM)) Q:DIVNUM="" D
- . S DIVIEN=$P(ACKDIV(DIVNUM),U,1)
- . S ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.02)=%
- . S ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.03)=$J
- D FILE^DIE("K","ACKARR")
- Q
- ;
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HACKQDWL 3439 printed Feb 18, 2025@23:58:37 Page 2
- ACKQDWL ;AUG/JLTP BIR/PTD HCIOFO/BH-Compile A&SP Capitation Data ; [ 05/21/96 11:15 ]
- +1 ;;3.0;QUASAR;;Feb 11, 2000
- +2 ;Per VHA Directive 10-93-142, this routine SHOULD NOT be modified.
- +3 ;
- OPTN ; Introduce option.
- +1 WRITE @IOF,!,"This option compiles the data for the A&SP Capitation Report.",!
- DIV ; select Division (user may select one/many/ALL)
- +1 SET ACKDIV=$$DIV^ACKQUTL2(3,.ACKDIV,"IA")
- if 'ACKDIV
- GOTO EXIT
- +2 ; get month to be compiled
- +3 DO GETDT
- if $DATA(DIRUT)
- GOTO EXIT
- +4 ; initialise other variables
- +5 DO INIT
- SET ACKMAN=1
- SET ACKDUZ=DUZ
- +6 ;
- +7 ; Check the status of the workload file
- +8 SET ACKWLMSG=$$WLSTATUS^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- +9 ; If status does not allow us to run, then exit
- +10 SET ACKSTAT=$$STAQES1^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- +11 ;
- +12 IF 'ACKSTAT!(ACKSTAT="^")
- DO EXIT
- GOTO DIV
- +13 ;
- BKG ; Queue process to run in the background.
- +1 WRITE !!,"QUASAR - Compile A&SP Capitation Data ",!
- +2 ;
- +3 SET ZTRTN="DQ^ACKQDWL"
- SET ZTIO=""
- SET ZTSAVE("ACK*")=""
- +4 SET ZTDESC="QUASAR - Compile A&SP Capitation Data"
- DO ^%ZTLOAD
- +5 if $DATA(ZTSK)
- WRITE !,"Data generation queued to run in the background."
- +6 GOTO EXIT
- +7 ;
- DQ ; Entry point when queued.
- +1 NEW CPT,ICD
- +2 if '$DATA(ACKM)
- SET ACKM=$$LM(DT)
- if '$DATA(ACKDA)
- DO INIT
- +3 SET ACKWLMSG=$$WLSTATUS^ACKQDWLU(ACKDA,.ACKDIV,.ACKWLMSG)
- +4 SET ACKSTAT=$$STAQES^ACKQDWLU(ACKWLMSG)
- IF 'ACKSTAT
- if '$DATA(ACKMAN)
- DO ABORT^ACKQDWB(ACKWLMSG)
- GOTO EXIT
- +5 IF ACKSTAT=2
- DO CREATE^ACKQDWLU(ACKDA,ACKM,.ACKDIV)
- if $DATA(DIRUT)
- GOTO EXIT
- +6 DO BEGIN
- +7 DO ^ACKQDWL1
- +8 DO END
- +9 ;
- +10 ;
- EXIT ; ALWAYS EXIT HERE
- +1 KILL ACKBFY,ACKCP,ACKCPP,ACKCPT,ACKD,ACKDA,ACKDUZ,ACKEM,ACKICP,ACKICD,ACKM,ACKMAN,ACKMO,ACKNU,ACKNV,ACKST,ACKSTOP,ACKV,ACKXFT,ACKXST,ACKZIP
- +2 KILL %X,%Y,D0,DA,DFN,DIE,DIRUT,DTOUT,DUOUT,DR,I,VAERR,VAPA,X,XMZ,Y,ZTSK
- +3 KILL ^TMP("ACKQWL",$JOB),ACKXSDTE,ACKXEDTE,ACKDIV
- +4 KILL ACKSTAT,ACKST,ACKK1,ACKN,ACKDEF,ACKVDVN,ACKX,DIVIEN,DIVARR
- +5 if $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +6 QUIT
- +7 ;
- GETDT ; Select month for report.
- +1 NEW DIR,X,Y
- GDT1 SET DIR(0)="D^::APE"
- SET DIR("A")="Select Month & Year"
- +1 SET DIR("B")=$$XDAT^ACKQUTL($$LM(DT))
- SET DIR("?")="^D HELP^%DTC"
- +2 SET DIR("??")="^D DATHLP^ACKQDWL"
- +3 DO ^DIR
- if $DATA(DIRUT)
- QUIT
- +4 SET ACKM=$EXTRACT(Y,1,5)_"00"
- +5 IF ACKM>DT
- WRITE !,$CHAR(7),"Can't run capitation report for future months!"
- GOTO GDT1
- +6 QUIT
- +7 ;
- INIT ; Initialize important variables.
- +1 NEW MON
- +2 SET MON=$EXTRACT(ACKM,1,5)
- SET ACKEM=MON_"99"
- SET ACKDA=+$$SITE^VASITE()_MON
- +3 SET ACKBFY=$$BFY^ACKQUTL(ACKM)
- +4 QUIT
- +5 ;
- LM(X) ; Find month previous to X.
- +1 NEW M,D,Y
- SET M=$EXTRACT(X,4,5)
- SET D=$EXTRACT(X,6,7)
- SET Y=$EXTRACT(X,1,3)
- SET M=M-1
- +2 if M<1
- SET M=12
- SET Y=Y-1
- if M<10
- SET M="0"_M
- +3 QUIT Y_M_"00"
- +4 ;
- DATHLP ; Extended help - select month for capitation report. (ACKQWL)
- +1 WRITE !?5,"Enter a date, in the past, for which you wish to",!?5,"compile data for the A&SP Capitation Report."
- +2 QUIT
- +3 ;
- END ; Set END date field into header for Division and Date
- +1 NEW ACKARR
- +2 DO NOW^%DTC
- +3 SET DIVNUM=""
- +4 FOR
- SET DIVNUM=$ORDER(ACKDIV(DIVNUM))
- if DIVNUM=""
- QUIT
- Begin DoDot:1
- +5 SET DIVIEN=$PIECE(ACKDIV(DIVNUM),U,1)
- +6 SET ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.04)=%
- End DoDot:1
- +7 DO FILE^DIE("K","ACKARR")
- +8 DO NOW^%DTC
- +9 SET Y=X
- DO DD^%DT
- SET ACKXEDTE=Y
- +10 SET ACKXFT=$$HTIM^ACKQUTL()
- SET ACKMO=$$XDAT^ACKQUTL(ACKM)
- DO BUILD^ACKQDWB
- +11 KILL ACKDIV
- +12 QUIT
- +13 ;
- BEGIN ; Set START date and Job # into header record for Division and date
- +1 NEW ACKARR
- +2 DO NOW^%DTC
- +3 SET Y=X
- DO DD^%DT
- SET ACKXSDTE=Y
- +4 SET ACKXST=$$HTIM^ACKQUTL
- +5 SET DIVNUM=""
- +6 FOR
- SET DIVNUM=$ORDER(ACKDIV(DIVNUM))
- if DIVNUM=""
- QUIT
- Begin DoDot:1
- +7 SET DIVIEN=$PIECE(ACKDIV(DIVNUM),U,1)
- +8 SET ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.02)=%
- +9 SET ACKARR(509850.75,DIVIEN_","_ACKDA_",",5.03)=$JOB
- End DoDot:1
- +10 DO FILE^DIE("K","ACKARR")
- +11 QUIT
- +12 ;
- +13 ;