| 1 | GMRCPSL2 ;SLC/MA - Special Consult Reports;9/21/01  05:25 ;1/17/02  18:19 | 
|---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**23,22**;DEC 27, 1997 | 
|---|
| 3 | ; This routine is used by GMRCPSL1 to build ^TMP("GMRCRPT",$J) | 
|---|
| 4 | ; which will be passed to GMRCPSL3. | 
|---|
| 5 | PRINT(GMRCSRCH,GMRCARRY,GMRCDT1,GMRCDT2,GMRCSTAT,GMRCRPT,GMRCBRK) ; Untasked Print | 
|---|
| 6 | PRTTSK ; Print report | 
|---|
| 7 | ; GMRCARRY = Array contains search values. | 
|---|
| 8 | ; GMRCSRCH = Indicates which field to search on | 
|---|
| 9 | ; GMRCDT1  = Start date | 
|---|
| 10 | ; GMRCDT2  = Stop date | 
|---|
| 11 | ; GMRCSTAT = CPRS status to include in report | 
|---|
| 12 | ; SUBTOT   = Counter for different groups | 
|---|
| 13 | ; GMRCRPT  = 80 - 132 character report & data only output | 
|---|
| 14 | ; GMRCBRK  = Print page break between sub-totals <Y-N> | 
|---|
| 15 | ; TOTCNTR  = Count for total records | 
|---|
| 16 | I GMRCSRCH=1 D BLDPROV(.GMRCARRY)   ;BLD PROVIDER  ^TMP(GLOBAL) | 
|---|
| 17 | I GMRCSRCH=2 D BLDLOC(.GMRCARRY)    ;BLD LOCATION  ^TMP(GLOBAL) | 
|---|
| 18 | I GMRCSRCH=3 D BLDPROC(.GMRCARRY)   ;BLD PROCEDURE ^TMP(GLOBAL) | 
|---|
| 19 | N TOTCNTR,SUBTOT S (SUBTOT,TOTCNTR)=0 | 
|---|
| 20 | I GMRCRPT=1 D REPORT80^GMRCPSL3(.SUBTOT,.TOTCNTR,GMRCSRCH,GMRCBRK) | 
|---|
| 21 | I GMRCRPT=2 D REPORT32^GMRCPSL3(.SUBTOT,.TOTCNTR,GMRCSRCH,GMRCBRK) | 
|---|
| 22 | I GMRCRPT=3 D DATAONLY^GMRCPSL4 Q | 
|---|
| 23 | W !!,"SUB TOTAL= ",SUBTOT,! | 
|---|
| 24 | W !,"TOTAL RECORDS= ",TOTCNTR | 
|---|
| 25 | D ^%ZISC | 
|---|
| 26 | K ^TMP("GMRCRPT",$J) | 
|---|
| 27 | I ($E(IOST)="C") D | 
|---|
| 28 | .N DIR | 
|---|
| 29 | .S DIR(0)="E" | 
|---|
| 30 | .W ! | 
|---|
| 31 | .D ^DIR K DIR | 
|---|
| 32 | Q | 
|---|
| 33 | ; | 
|---|
| 34 | BLDLOC(GMRCARRY) ; Build ^TMP were search was on location. | 
|---|
| 35 | K ^TMP("GMRCRPT",$J) | 
|---|
| 36 | N GMRCCNTR,LOCATION,GMRCSRT1,GMRCSRT2,GMRCLOC1,GMRCLOC2,IEN | 
|---|
| 37 | N GMRCREM,LOCPN | 
|---|
| 38 | S GMRCCNTR=0 | 
|---|
| 39 | ; | 
|---|
| 40 | ; get all Locations by date range | 
|---|
| 41 | I GMRCARRY(1)="ALL" D | 
|---|
| 42 | .  S GMRCLOC1=GMRCDT1,GMRCLOC2=GMRCDT2 | 
|---|
| 43 | .  F  S GMRCLOC1=$O(^GMR(123,"E",GMRCLOC1)) Q:GMRCLOC1>GMRCLOC2  Q:GMRCLOC1=""  D | 
|---|
| 44 | . .  S IEN=0 | 
|---|
| 45 | . .  F  S IEN=$O(^GMR(123,"E",GMRCLOC1,IEN)) Q:IEN'>0  D | 
|---|
| 46 | . . .  ; | 
|---|
| 47 | . . .  ; Check for Patient Location | 
|---|
| 48 | . . .  I "LB"[GMRCARRY,$$CKSTAT(IEN,GMRCSTAT),+$P(^GMR(123,IEN,0),"^",4) D  Q | 
|---|
| 49 | . . . .  S LOCATION=$P(^GMR(123,IEN,0),"^",4)   ; PATIENT LOCATION | 
|---|
| 50 | . . . .  S GMRCSRT1=$$GET1^DIQ(44,LOCATION,.01)  ; PATIENT LOCATION | 
|---|
| 51 | . . . .  S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)   ; DATE OF REQUEST | 
|---|
| 52 | . . . .  S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 53 | . . .  ; | 
|---|
| 54 | . . .  ; If no patient location, check for Ordering Facility | 
|---|
| 55 | . . .  I $$CKSTAT(IEN,GMRCSTAT),'+$P(^GMR(123,IEN,0),"^",4),+$P(^GMR(123,IEN,0),"^",21),("L"[GMRCARRY&'+$P(^GMR(123,IEN,0),"^",23)!("RB"[GMRCARRY&+$P(^GMR(123,IEN,0),"^",23))) D  Q | 
|---|
| 56 | . . . .  S LOCATION=$P(^GMR(123,IEN,0),"^",21)  ;ORDERING FACILITY | 
|---|
| 57 | . . . .  S GMRCSRT1=$$GET1^DIQ(4,LOCATION,.01)  ;ORDERING FACILITY | 
|---|
| 58 | . . . .  S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)   ;DATE OF REQUEST | 
|---|
| 59 | . . . .  S GMRCREM=$P($G(^GMR(123,IEN,12)),"^",6) | 
|---|
| 60 | . . . .  S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_GMRCREM | 
|---|
| 61 | . . .  ; | 
|---|
| 62 | . . .  ; If no patient location & NO Ordering Facility, then | 
|---|
| 63 | . . .  ; check for Routing Facility | 
|---|
| 64 | . . .  I "RB"[GMRCARRY,$$CKSTAT(IEN,GMRCSTAT),'+$P(^GMR(123,IEN,0),"^",4),'+$P(^GMR(123,IEN,0),"^",21),+$P(^GMR(123,IEN,0),"^",23) D  Q | 
|---|
| 65 | . . . .  S LOCATION=$P(^GMR(123,IEN,0),"^",23)  ;ROUTING FACILITY | 
|---|
| 66 | . . . .  S GMRCSRT1=$$GET1^DIQ(4,LOCATION,.01)  ;ROUTING FACILITY | 
|---|
| 67 | . . . .  S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)   ;DATE OF REQUEST | 
|---|
| 68 | . . . .  S GMRCREM=$P($G(^GMR(123,IEN,12)),"^",6) | 
|---|
| 69 | . . . .  S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_GMRCREM | 
|---|
| 70 | ; Get location list from GMRCARRY and then go to global using location | 
|---|
| 71 | I GMRCARRY(1)="ALL" Q | 
|---|
| 72 | F  S GMRCCNTR=$O(GMRCARRY(GMRCCNTR)) Q:'GMRCCNTR  D | 
|---|
| 73 | .  S LOCATION=$P(GMRCARRY(GMRCCNTR),"^",1) | 
|---|
| 74 | . I "LB"[GMRCARRY,$P(GMRCARRY(GMRCCNTR),"^",3)=44 D | 
|---|
| 75 | . .  N IEN S IEN=0 | 
|---|
| 76 | . .  F  S IEN=$O(^GMR(123,"AL",LOCATION,IEN)) Q:IEN'>0  D | 
|---|
| 77 | . . .  I $P(^GMR(123,IEN,0),"^",7)>GMRCDT1,$P(^GMR(123,IEN,0),"^",7)<GMRCDT2,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 78 | . . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",2)   ; Patient Location | 
|---|
| 79 | . . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)      ; DATE OF REQUEST | 
|---|
| 80 | . . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 81 | . I "RB"[GMRCARRY,$P(GMRCARRY(GMRCCNTR),"^",3)=4 D | 
|---|
| 82 | . . S GMRCLOC1=GMRCDT1,GMRCLOC2=GMRCDT2 | 
|---|
| 83 | . . F  S GMRCLOC1=$O(^GMR(123,"E",GMRCLOC1)) Q:GMRCLOC1>GMRCLOC2  Q:GMRCLOC1=""  D | 
|---|
| 84 | . . .  N IEN S IEN=0 | 
|---|
| 85 | . . .  F  S IEN=$O(^GMR(123,"E",GMRCLOC1,IEN)) Q:IEN'>0  D | 
|---|
| 86 | . . . . I $$CKSTAT(IEN,GMRCSTAT),$P($G(^GMR(123,IEN,12)),"^",5)="F",+$P($G(^GMR(123,IEN,0)),"^",21)=LOCATION D  Q | 
|---|
| 87 | . . . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",2) | 
|---|
| 88 | . . . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7) | 
|---|
| 89 | . . . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 90 | . . . . I $$CKSTAT(IEN,GMRCSTAT),$P($G(^GMR(123,IEN,12)),"^",5)="F",'+$P(^GMR(123,IEN,0),"^",21),+$P($G(^GMR(123,IEN,0)),"^",23)=LOCATION D  Q | 
|---|
| 91 | . . . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",2) | 
|---|
| 92 | . . . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7) | 
|---|
| 93 | . . . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 94 | Q | 
|---|
| 95 | BLDPROC(GMRCARRY) ; Build ^TMP were search was on procedure. | 
|---|
| 96 | K ^TMP("GMRCRPT",$J) | 
|---|
| 97 | N GMRCCNTR,PROCEDUR,GMRCSRT1,GMRCSRT2,GMRCPRC1,GMRCPRC2,IEN,GMRCREM | 
|---|
| 98 | S GMRCCNTR=0 | 
|---|
| 99 | ; get all Procedures by date range | 
|---|
| 100 | I GMRCARRY(1)="ALL" D | 
|---|
| 101 | .  S GMRCPRC1=GMRCDT1,GMRCPRC2=GMRCDT2 | 
|---|
| 102 | .  F  S GMRCPRC1=$O(^GMR(123,"E",GMRCPRC1)) Q:GMRCPRC1>GMRCPRC2  Q:GMRCPRC1=""  D | 
|---|
| 103 | . .  S IEN=0 | 
|---|
| 104 | . .  F  S IEN=$O(^GMR(123,"E",GMRCPRC1,IEN)) Q:IEN'>0  D | 
|---|
| 105 | . . .  I $$CKSTAT(IEN,GMRCSTAT) D        ; Ck Status | 
|---|
| 106 | . . . .  I $P(^GMR(123,IEN,0),"^",8)>"" D              ; Ck for Proc | 
|---|
| 107 | . . . . .  S PROCEDUR=$P($P(^GMR(123,IEN,0),"^",8),";",1) | 
|---|
| 108 | . . . . .  S GMRCSRT1=$$GET1^DIQ(123.3,PROCEDUR,.01)   ;Procedure | 
|---|
| 109 | . . . . .  S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)        ;Req Date | 
|---|
| 110 | . . . . .  S GMRCREM=$P($G(^GMR(123,IEN,12)),"^",6) | 
|---|
| 111 | . . . . .  S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_GMRCREM | 
|---|
| 112 | ; Get each procedure from GMRCARRY and then go to global using procedure | 
|---|
| 113 | I GMRCARRY(1)="ALL" Q | 
|---|
| 114 | F  S GMRCCNTR=$O(GMRCARRY(GMRCCNTR)) Q:'GMRCCNTR  D | 
|---|
| 115 | .  S PROCEDUR=$P(GMRCARRY(GMRCCNTR),"^",1) | 
|---|
| 116 | .  N IEN S IEN=0 | 
|---|
| 117 | .  F  S IEN=$O(^GMR(123,"AP",PROCEDUR_";GMR(123.3,",IEN)) Q:IEN'>0  D | 
|---|
| 118 | . .  I $P(^GMR(123,IEN,0),"^",7)>GMRCDT1,$P(^GMR(123,IEN,0),"^",7)<GMRCDT2,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 119 | . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",2)   ; PROCEDURE TYPE | 
|---|
| 120 | . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)      ; DATE OF REQUEST | 
|---|
| 121 | . . . S GMRCREM=$P($G(^GMR(123,IEN,12)),"^",6) | 
|---|
| 122 | . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_GMRCREM | 
|---|
| 123 | Q | 
|---|
| 124 | BLDPROV(GMRCARRY) ; Build ^TMP were search was on provider. | 
|---|
| 125 | K ^TMP("GMRCRPT",$J) | 
|---|
| 126 | N GMRCCNTR,PROVIDER,GMRCSRT1,GMRCSRT2,GMRCPRV1,GMRCPRV2,IEN | 
|---|
| 127 | N GMRCPROV | 
|---|
| 128 | S GMRCCNTR=0 | 
|---|
| 129 | ; get all providers by date range | 
|---|
| 130 | I GMRCARRY(1)="ALL" D | 
|---|
| 131 | .  S GMRCPRV1=GMRCDT1,GMRCPRV2=GMRCDT2 | 
|---|
| 132 | .  F  S GMRCPRV1=$O(^GMR(123,"E",GMRCPRV1)) Q:GMRCPRV1>GMRCPRV2  Q:GMRCPRV1=""  D | 
|---|
| 133 | . .  S IEN=0 | 
|---|
| 134 | . .  F  S IEN=$O(^GMR(123,"E",GMRCPRV1,IEN)) Q:IEN'>0  D | 
|---|
| 135 | . . .  ; Provider not null | 
|---|
| 136 | . . .  I "LB"[GMRCARRY,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 137 | . . . .  I +$P(^GMR(123,IEN,0),"^",14) D | 
|---|
| 138 | . . . . .  S GMRCPROV=$P(^GMR(123,IEN,0),"^",14)      ; SENDING PROVIDER | 
|---|
| 139 | . . . . .  S GMRCSRT1=$$GET1^DIQ(200,GMRCPROV,.01)    ; SENDING PROVIDER | 
|---|
| 140 | . . . . .  S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)       ; DATE OF REQUEST | 
|---|
| 141 | . . . . .  S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 142 | . . .  ; Provider null and REMOTE ORDERING PROVIDER not | 
|---|
| 143 | . . .  I "RB"[GMRCARRY,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 144 | . . . .  I '+$P(^GMR(123,IEN,0),"^",14),$P($G(^GMR(123,IEN,12)),"^",6)'="" D | 
|---|
| 145 | . . . . .   S GMRCPROV=$P($G(^GMR(123,IEN,12)),"^",6) | 
|---|
| 146 | . . . . .   S GMRCSRT1=GMRCPROV | 
|---|
| 147 | . . . . .   S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)       ; DATE OF REQUEST | 
|---|
| 148 | . . . . .   S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_GMRCPROV | 
|---|
| 149 | ; Get provider list from GMRCARRY and then go to global using provider | 
|---|
| 150 | I GMRCARRY(1)="ALL" Q | 
|---|
| 151 | F  S GMRCCNTR=$O(GMRCARRY(GMRCCNTR)) Q:'GMRCCNTR  D | 
|---|
| 152 | .  S PROVIDER=$P(GMRCARRY(GMRCCNTR),"^",1) | 
|---|
| 153 | . I "LB"[GMRCARRY,$P(GMRCARRY(GMRCCNTR),"^",3)=200 D | 
|---|
| 154 | . .  S IEN=0 | 
|---|
| 155 | . .  F  S IEN=$O(^GMR(123,"G",PROVIDER,IEN)) Q:IEN'>0  D | 
|---|
| 156 | . . .  I $P(^GMR(123,IEN,0),"^",7)>GMRCDT1,$P(^GMR(123,IEN,0),"^",7)<GMRCDT2,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 157 | . . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",2)   ; SENDING PROVIDER | 
|---|
| 158 | . . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7)      ; DATE OF REQUEST | 
|---|
| 159 | . . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0) | 
|---|
| 160 | . I "RB"[GMRCARRY,'$P(GMRCARRY(GMRCCNTR),"^",2) D | 
|---|
| 161 | . . S IEN=0 | 
|---|
| 162 | . . F  S IEN=$O(^GMR(123,"AIP",PROVIDER,IEN)) Q:IEN'>0  D | 
|---|
| 163 | . . .  I $P(^GMR(123,IEN,0),"^",7)>GMRCDT1,$P(^GMR(123,IEN,0),"^",7)<GMRCDT2,$$CKSTAT(IEN,GMRCSTAT) D | 
|---|
| 164 | . . . . S GMRCSRT1=$P(GMRCARRY(GMRCCNTR),"^",1) | 
|---|
| 165 | . . . . S GMRCSRT2=$P(^GMR(123,IEN,0),"^",7) | 
|---|
| 166 | . . . . S ^TMP("GMRCRPT",$J,GMRCSRT1,GMRCSRT2,IEN)=IEN_"|"_^GMR(123,IEN,0)_"^"_PROVIDER | 
|---|
| 167 | Q | 
|---|
| 168 | CKSTAT(IEN,GMRCSTAT) ; Does entry have selected status | 
|---|
| 169 | ; Input: | 
|---|
| 170 | ;  IEN      = File #123 IEN | 
|---|
| 171 | ;  GMRCSTAT = Selected status(es) | 
|---|
| 172 | ; Output: | 
|---|
| 173 | ;  GMRCKS   = Result (1:yes; 0:no) | 
|---|
| 174 | N GMRCKS,GMRCS,LOOP,STATUS | 
|---|
| 175 | S GMRCKS=0 | 
|---|
| 176 | S GMRCS=+$P(^GMR(123,IEN,0),"^",12) | 
|---|
| 177 | F LOOP=1:1:$L(GMRCSTAT,",") S STATUS=$P(GMRCSTAT,",",LOOP) Q:GMRCKS  D | 
|---|
| 178 | . I STATUS=GMRCS S GMRCKS=1 | 
|---|
| 179 | Q GMRCKS | 
|---|