| 1 | PRCHLO ;WOIFO/RLL-EXTRACT ROUTINE CLO REPORT SERVER ; 7/31/06 12:33pm | 
|---|
| 2 | V ;;5.1;IFCAP;**83,104**; Oct 20, 2000 | 
|---|
| 3 | ; Per VHA Directive 10-93-142, this routine should not be modified | 
|---|
| 4 | ; | 
|---|
| 5 | ; PRCHLO* routines are used to build the extract files from | 
|---|
| 6 | ; file 442 for the clinical logistics report server. | 
|---|
| 7 | ; PRCHLO thru PRCHLO5 perform the following: | 
|---|
| 8 | ; 1. Initialize environment | 
|---|
| 9 | ; 2. Get parameters for the month being run | 
|---|
| 10 | ; 3. Pull data from file 442 for month being run | 
|---|
| 11 | ; 4. Create multiple "^" delimited flat files for report server | 
|---|
| 12 | ; 5. At the completion of extracts FTP files to report server | 
|---|
| 13 | ; 6. Clean up / remove any temp files | 
|---|
| 14 | ; 7. logout | 
|---|
| 15 | ; CALC is the programmer entry point used to test the extract | 
|---|
| 16 | ; options for the first iteration of coding | 
|---|
| 17 | ; | 
|---|
| 18 | Q | 
|---|
| 19 | INIT ; Initialize environment | 
|---|
| 20 | ; | 
|---|
| 21 | ; | 
|---|
| 22 | ; Get todays date | 
|---|
| 23 | N % | 
|---|
| 24 | S %=$P(($$NOW^XLFDT),".",1) | 
|---|
| 25 | ; (old logic) | 
|---|
| 26 | ; Always start from the 1st of the month to the end of month | 
|---|
| 27 | ; and at least 45 days prior to todays date | 
|---|
| 28 | ; | 
|---|
| 29 | ; (new logic) | 
|---|
| 30 | ; Always start from the beginning of the Fiscal Year and run | 
|---|
| 31 | ; the extract up until the Date of the extract run (NOW) | 
|---|
| 32 | ; | 
|---|
| 33 | ; The CALC entry point is used for testing from programmer mode | 
|---|
| 34 | ; and allows the programmer to pass a specific date | 
|---|
| 35 | ; in the variable %=FM date format | 
|---|
| 36 | ; | 
|---|
| 37 | CALC ;test entry point, set %I to FM date | 
|---|
| 38 | ; | 
|---|
| 39 | N CLO1,CLO2,CLO2B,CLO2E,CLO3,CLOBGN,CLOEND,POND1,POND2,CLO1A | 
|---|
| 40 | N MTHRUN,YRRUN,PYRRUN | 
|---|
| 41 | S CLO1=$E(%,1,3) | 
|---|
| 42 | ; | 
|---|
| 43 | S CLO2=$E(%,4,5) | 
|---|
| 44 | S YRRUN=+(CLO1) | 
|---|
| 45 | S PYRRUN=YRRUN-1  ; previous Year Run | 
|---|
| 46 | S MTHRUN=+(CLO2) | 
|---|
| 47 | I +CLO2>2  D | 
|---|
| 48 | . S CLO2B=CLO2-2 | 
|---|
| 49 | . I $L(CLO2B)<2 S CLO2B=0_CLO2B | 
|---|
| 50 | . S CLO2E=CLO2-1 | 
|---|
| 51 | . I $L(CLO2E)<2 S CLO2E=0_CLO2E | 
|---|
| 52 | . S CLOBGN=+(CLO1_(CLO2B)_"00") | 
|---|
| 53 | . S CLOEND=+(CLO1_(CLO2E)_"01") | 
|---|
| 54 | . Q | 
|---|
| 55 | ; | 
|---|
| 56 | ; check for January run, and Feb run | 
|---|
| 57 | I +CLO2=1  D | 
|---|
| 58 | . S CLO1=CLO1-1 | 
|---|
| 59 | . S CLOBGN=+(CLO1_11_"00")  ; Start date is Nov 1st | 
|---|
| 60 | . S CLOEND=+(CLO1_12_"01")  ; End date is   Dec 1st | 
|---|
| 61 | . Q | 
|---|
| 62 | I +CLO2=2  D | 
|---|
| 63 | . S CLO1A=CLO1-1  ; Need to get Dec, previous year | 
|---|
| 64 | . S CLOBGN=+(CLO1A_12_"00")  ; Start date is Dec 1st | 
|---|
| 65 | . S CLOEND=+(CLO1_"01"_"01")  ; End date is  Jan 1st | 
|---|
| 66 | . Q | 
|---|
| 67 | ; | 
|---|
| 68 | ; (Begin new logic) | 
|---|
| 69 | FYRNOW ; Changes added 07/31/06 RLL for new extract date range. | 
|---|
| 70 | ; CLOBGN will always be the beginning of the Fiscal Year (Oct 1st) | 
|---|
| 71 | ; This will be the start range for each extract. | 
|---|
| 72 | ; This routine is called through the option : | 
|---|
| 73 | ; [PRCHLO CLO PROCUREMENT] which is queued to run in TaskMan | 
|---|
| 74 | ; This option should be queued to run 2 hours AFTER | 
|---|
| 75 | ; [PRCHLO GIP OPTION] and should be run on the same day | 
|---|
| 76 | ; (after midnight) as the [PRCHLO GIP OPTION]. As an example: | 
|---|
| 77 | ; 1.  Que [PRCHLO GIP OPTION] to run 12:00am the 1st of the month | 
|---|
| 78 | ; 2.  Que [PRCHLO CLO PROCUREMENT] to run 1:00am the 1st of the month | 
|---|
| 79 | ; | 
|---|
| 80 | ; | 
|---|
| 81 | ; The following new Variables were added to the CALC entry point: | 
|---|
| 82 | ; YRRUN  ; year option run | 
|---|
| 83 | ; PYRRUN  ; previous year option run | 
|---|
| 84 | ; MTHRUN  ; MONTHRUN | 
|---|
| 85 | ; listed below are 3 examples: | 
|---|
| 86 | ; | 
|---|
| 87 | ; Month Option Run  |  Date Range for Run       | # of months of data | 
|---|
| 88 | ; Dec 1st, 2005    | Oct 1, 2005 to Dec 1st 2005|       2 | 
|---|
| 89 | ; Apr 1st, 2006    | Oct 1, 2005 to Apr 1st 2006|       6 | 
|---|
| 90 | ; Oct 1st, 2006    | Oct 1, 2005 to Oct 1st 2006|      12 | 
|---|
| 91 | ; | 
|---|
| 92 | STCLOBGN ; Set CLOBGN to Beginning of Fiscal Year (Oct. 1) | 
|---|
| 93 | ; | 
|---|
| 94 | I MTHRUN=12!(MTHRUN=11)  D | 
|---|
| 95 | . ; For Nov or Dec, CLOBGN set to Begin of FY(Oct 1st) in same year | 
|---|
| 96 | . S CLOBGN=+(YRRUN_"10"_"00") | 
|---|
| 97 | . S CLOEND=%  ; CLOEND is Date Extract Run | 
|---|
| 98 | . Q | 
|---|
| 99 | I (MTHRUN<11)  D  ; (CLOBGN set to Prev FY for all other conditions) | 
|---|
| 100 | . S CLOBGN=+(PYRRUN_"10"_"00") | 
|---|
| 101 | . S CLOEND=%  ; CLOEND is Date Extract Run | 
|---|
| 102 | . Q | 
|---|
| 103 | ; (End new logic) | 
|---|
| 104 | ; | 
|---|
| 105 | DEBUGFY ; Debug Fiscal Year logic by uncommenting code below 7/31/06 RLL | 
|---|
| 106 | ; W !,"CLOBGN is ",CLOBGN," CLOEND is ",CLOEND,!   ; Write date range | 
|---|
| 107 | ; Q  ; Quit added here for debugging 7/31/06 RLL | 
|---|
| 108 | ; | 
|---|
| 109 | D GPARM | 
|---|
| 110 | ; Make sure ^TMP($J) is set with data, otherwise return error | 
|---|
| 111 | N CKTP | 
|---|
| 112 | S CKTP=$O(^TMP($J,0)) | 
|---|
| 113 | I CKTP=""  D | 
|---|
| 114 | . S CLRSERR=1  ; error flag indicates no data in ^TMP($J) | 
|---|
| 115 | . Q | 
|---|
| 116 | Q | 
|---|
| 117 | ; | 
|---|
| 118 | GPARM ; Get parameters for monthly extract | 
|---|
| 119 | ; | 
|---|
| 120 | ; need to set monthyear for data file | 
|---|
| 121 | ; | 
|---|
| 122 | N MNTHYR,FMDT1,MYRVAL | 
|---|
| 123 | S FMDT1=$P(($$NOW^XLFDT),".",1) | 
|---|
| 124 | S MYRVAL=$$FMTE^XLFDT(FMDT1) | 
|---|
| 125 | S MNTHYR=$P(MYRVAL," ",1)_","_$P(MYRVAL," ",3) | 
|---|
| 126 | ; | 
|---|
| 127 | ; $O through the "AB" x-ref based on CLOBGN and CLOEND | 
|---|
| 128 | ; | 
|---|
| 129 | S CLO1=CLOBGN,CLO2="",CLO3="" | 
|---|
| 130 | F  S CLO1=$O(^PRC(442,"AB",CLO1)) Q:CLO1=""  D | 
|---|
| 131 | . F  S CLO2=$O(^PRC(442,"AB",CLO1,CLO2)) Q:CLO2=""  D | 
|---|
| 132 | . . Q:CLO1>(CLOEND-1) | 
|---|
| 133 | . . D GKEY | 
|---|
| 134 | . . Q | 
|---|
| 135 | . Q | 
|---|
| 136 | Q | 
|---|
| 137 | EXTR ; Extract the data, create files | 
|---|
| 138 | ; | 
|---|
| 139 | GKEY ; get key for all tables | 
|---|
| 140 | N POID,POND0,POND1,POCRDAT | 
|---|
| 141 | S POND0=$G(^PRC(442,CLO2,0)) | 
|---|
| 142 | S POND1=$G(^PRC(442,CLO2,1)) | 
|---|
| 143 | S POID=CLO2 | 
|---|
| 144 | S POCRDAT=CLO1  ; PO Date from x-ref value | 
|---|
| 145 | D GPOMAST^PRCHLO1  ; | 
|---|
| 146 | Q | 
|---|