| 1 | RMPR5HQ5 ;HCIOFO/ODJ - INVENTORY REPORT - BUILD ^TMP SORT ARRAY ; 20 SEP 00 | 
|---|
| 2 | ;;3.0;PROSTHETICS;**51,61,127**;Feb 09, 1996 | 
|---|
| 3 | ; | 
|---|
| 4 | ;RVD -patch #61 - modified to read the new PIP files; 661.11, 661.6 | 
|---|
| 5 | ;                 661.7, 661.9 | 
|---|
| 6 | Q | 
|---|
| 7 | ; | 
|---|
| 8 | ; Start of Report build and print. Enter here after report params. | 
|---|
| 9 | ; entered by user (see RMPR5HQ4). | 
|---|
| 10 | ; Also called by TaskMan if report queued. | 
|---|
| 11 | ; | 
|---|
| 12 | ; Variables required | 
|---|
| 13 | ; | 
|---|
| 14 | ; RMPR("STA") | 
|---|
| 15 | ; RMPRSDT | 
|---|
| 16 | ; RMPREDT | 
|---|
| 17 | ; RMPRDET | 
|---|
| 18 | ; RMPRSEL | 
|---|
| 19 | ; {IO vars} | 
|---|
| 20 | ; | 
|---|
| 21 | REPORT I $E(IOST)["C" W !!,"Processing report......." | 
|---|
| 22 | D GEN(RMPRSDT,RMPREDT,RMPRDET,.RMPRSEL,RMPR("STA")) ;generate ^TMP sort array | 
|---|
| 23 | D CALC^RMPR5HQ6 ;calculations | 
|---|
| 24 | U IO D ^RMPR5HQ2     ;print report | 
|---|
| 25 | D ^%ZISC | 
|---|
| 26 | ;K ^TMP($J,"RMPR5") ;make live after testing | 
|---|
| 27 | N RMPR,RMPRSITE D KILL^XUSCLEAN | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | ; Entry point for national roll-up | 
|---|
| 31 | NATION N RMPRSEL,RMPRDET,RMPRSTN,RMPRSDT,RMPREDT,X,RSTN | 
|---|
| 32 | S RMPRSTN="*" | 
|---|
| 33 | S RMPRDET="H" | 
|---|
| 34 | ;D NOW^%DTC S RMPREDT=X S %H=%H-30 D YMD^%DTC S RMPRSDT=X | 
|---|
| 35 | S RMPRSDT=RMPRPIP1,RMPREDT=RMPRPIP2 | 
|---|
| 36 | S RMPRSEL("*")="" | 
|---|
| 37 | D GEN(RMPRSDT,RMPREDT,RMPRDET,.RMPRSEL,RMPRSTN) | 
|---|
| 38 | D CALC^RMPR5HQ6 ;put calcs in TMP array | 
|---|
| 39 | D MAIL^RMPR5HQ7 ;build ^TMP($J,"RMPR5A" array for mailing | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | ; | 
|---|
| 43 | ; Generate temporary index global ^TMP($J,"RMPR5" | 
|---|
| 44 | ; (as of 11/29/00 we use the 660 file, not 661.2) | 
|---|
| 45 | ; | 
|---|
| 46 | GEN(STDT,ENDT,DETAIL,RMPRSEL,RMPRSTN) ; | 
|---|
| 47 | N TNAM,FROM,EOF,DAT,HCDAT,HCPCIEN,NPGRP,NPLIN,S,HCPC,HCPCITEM | 
|---|
| 48 | N OUPIEN,ITEM,ALLGRP,HCPCREF,SELECTED,STATION,QTY,STR,MULITEM | 
|---|
| 49 | N ITMIEN,INVDT,SOURCE,ISCOST,PATIENT,COST | 
|---|
| 50 | S TNAM="RMPR5" ;TMP global name | 
|---|
| 51 | K ^TMP($J,TNAM) | 
|---|
| 52 | D CURVAL(TNAM,RMPRSTN,.RMPRSEL,DETAIL) | 
|---|
| 53 | ;S FROM="" S:$G(STDT)'="*" FROM=STDT-1 | 
|---|
| 54 | S RSTN=RMPRSTN | 
|---|
| 55 | S:RMPRSTN="*" RSTN=0 | 
|---|
| 56 | S EOF=0,ENDT=ENDT+1 | 
|---|
| 57 | F RSTN=RSTN:0 S RSTN=$O(^RMPR(661.6,"XSTD",RSTN)) Q:RSTN'>0  D | 
|---|
| 58 | .F RSDT=STDT:0 S RSDT=$O(^RMPR(661.6,"XSTD",RSTN,3,RSDT)) Q:(RSDT>ENDT)!(RSDT="")  D  Q:EOF | 
|---|
| 59 | .. S OUPIEN=0 | 
|---|
| 60 | .. F  S OUPIEN=$O(^RMPR(661.6,"XSTD",RSTN,3,RSDT,OUPIEN)) Q:OUPIEN'>0  D | 
|---|
| 61 | ... S S=$G(^RMPR(661.6,OUPIEN,0)) | 
|---|
| 62 | ... S PATIENT=$P(S,"^",2) Q:PATIENT="" | 
|---|
| 63 | ... S QTY=+$P(S,"^",5) Q:QTY<1 | 
|---|
| 64 | ... S HCPC=$P(S,"^",1) Q:HCPC="" | 
|---|
| 65 | ... S HCPCIEN=$O(^RMPR(661.1,"B",HCPC,0)) Q:HCPCIEN="" | 
|---|
| 66 | ... S STATION=RSTN Q:STATION="" | 
|---|
| 67 | ... I RMPRSTN'="*",STATION'=RSTN Q | 
|---|
| 68 | ... Q:'$D(^TMP($J,TNAM,"Z",HCPCIEN)) | 
|---|
| 69 | ... Q:$P(^TMP($J,TNAM,"Z",HCPCIEN),"^",3)=1 | 
|---|
| 70 | ... S HCPCITEM=HCPC_"-"_$P(S,"^",11) | 
|---|
| 71 | ... S ITEM=$P(HCPCITEM,"-",2) | 
|---|
| 72 | ... S:ITEM="" ITEM="?" | 
|---|
| 73 | ... S ISCOST=$P(S,"^",6) | 
|---|
| 74 | ...; S COST=$$PRECOST(OUPIEN,HCPCIEN,HCPCITEM,STATION) | 
|---|
| 75 | ...; I COST'="" S ISCOST=COST-ISCOST | 
|---|
| 76 | ...; S:COST="" ISCOST=QTY*$P(S,"^",5) | 
|---|
| 77 | ... S R11=$O(^RMPR(661.11,"C",HCPCITEM,0)) | 
|---|
| 78 | ... S R11DAT=$G(^RMPR(661.11,R11,0)) | 
|---|
| 79 | ... S SOURCE=$P(R11DAT,"^",5) | 
|---|
| 80 | ... S STR=^TMP($J,TNAM,"Z",HCPCIEN) | 
|---|
| 81 | ... S NPGRP=$P(STR,"^",1) | 
|---|
| 82 | ... S NPLIN=$P(STR,"^",2) | 
|---|
| 83 | ... S HCPCREF=HCPC,$P(HCPCREF,"/",2)=HCPCIEN | 
|---|
| 84 | ... I '$D(^TMP($J,TNAM,STATION,NPGRP,NPLIN,HCPCREF,ITEM)) D  Q:'+QTY | 
|---|
| 85 | .... S:+QTY ^TMP($J,TNAM,STATION,NPGRP,NPLIN,HCPCREF,ITEM)="" | 
|---|
| 86 | .... Q | 
|---|
| 87 | ... S ^TMP($J,TNAM,STATION,NPGRP,NPLIN,HCPCREF,ITEM,OUPIEN)=QTY_"^"_ISCOST_"^"_SOURCE | 
|---|
| 88 | ... Q | 
|---|
| 89 | .. Q | 
|---|
| 90 | Q | 
|---|
| 91 | ; | 
|---|
| 92 | ; Get total cost of item just prior to current issue | 
|---|
| 93 | PRECOST(INVIEN,HCPCIEN,HCPCITEM,STATION) ; | 
|---|
| 94 | N IEN,COST,STR,LOC | 
|---|
| 95 | S COST="" | 
|---|
| 96 | S IEN=INVIEN,RD=RMPRSDT | 
|---|
| 97 | S RD=$O(^RMPR(661.9,"ASHID",RSTN,HCPC,IEN,RD),-1) | 
|---|
| 98 | Q:'$G(RD) COST  S RIEN=$O(^RMPR(661.9,"ASHID",RSTN,HCPC,IEN,RD,0)) | 
|---|
| 99 | S STR=^RMPR(661.9,RIEN,0) | 
|---|
| 100 | S COST=$P(STR,"^",9) | 
|---|
| 101 | Q COST | 
|---|
| 102 | ; | 
|---|
| 103 | ; Get QOH for HCPC | 
|---|
| 104 | CURVAL(RMPRNAM,RMPRSTN,RMPRSEL,DETAIL) ; | 
|---|
| 105 | N INVIEN,STR,IEN1,IEN2,LOCN,HCPCIEN,HCDAT,NPLIN,NPGRP,ALLGRP,SELECTED | 
|---|
| 106 | N S,SOURCE,STATION,QOH,COST,HCPC,HCPCREF,ITEM,RSTN | 
|---|
| 107 | S ALLGRP=0 S:$O(RMPRSEL(""))="*" ALLGRP=1 | 
|---|
| 108 | S RSTN=RMPRSTN | 
|---|
| 109 | S:RMPRSTN="*" RSTN=0 | 
|---|
| 110 | F RSTN=RSTN:0 S RSTN=$O(^RMPR(661.9,"ASHID",RSTN)) Q:RSTN'>0  D | 
|---|
| 111 | .S RH="" | 
|---|
| 112 | .F  S RH=$O(^RMPR(661.9,"ASHID",RSTN,RH)) Q:RH=""  D | 
|---|
| 113 | .. S IEN1=0 | 
|---|
| 114 | .. F  S IEN1=$O(^RMPR(661.9,"ASHID",RSTN,RH,IEN1)) Q:'+IEN1  D | 
|---|
| 115 | ... S HCPCIEN=$O(^RMPR(661.1,"B",RH,0)) Q:HCPCIEN="" | 
|---|
| 116 | ... I '$D(^TMP($J,RMPRNAM,"Z",HCPCIEN)) D | 
|---|
| 117 | .... S S=^RMPR(661.1,HCPCIEN,0) | 
|---|
| 118 | .... S NPLIN=$P(S,"^",7) | 
|---|
| 119 | .... S:NPLIN="" NPLIN="999 X" | 
|---|
| 120 | .... S NPGRP=$P(NPLIN," ",1) ;group num. is 1st set of digits of new line | 
|---|
| 121 | .... S STR=NPGRP | 
|---|
| 122 | .... S $P(STR,"^",2)=NPLIN | 
|---|
| 123 | .... S ^TMP($J,RMPRNAM,"Z",HCPCIEN)=STR | 
|---|
| 124 | .... Q | 
|---|
| 125 | ... E  D  Q:$P(S,"^",3)=1 | 
|---|
| 126 | .... S S=^TMP($J,RMPRNAM,"Z",HCPCIEN) | 
|---|
| 127 | .... S NPGRP=$P(S,"^",1) | 
|---|
| 128 | .... S NPLIN=$P(S,"^",2) | 
|---|
| 129 | .... Q | 
|---|
| 130 | ... ; | 
|---|
| 131 | ... ; Test if record matches selection criteria | 
|---|
| 132 | ... ; (only needed if not all groups selected) | 
|---|
| 133 | ... I 'ALLGRP D  I 'SELECTED S $P(^TMP($J,RMPRNAM,"Z",HCPCIEN),"^",3)=1 Q | 
|---|
| 134 | .... S SELECTED=0 | 
|---|
| 135 | .... I '$D(RMPRSEL(NPGRP)) Q | 
|---|
| 136 | .... I DETAIL="G" S SELECTED=1 Q | 
|---|
| 137 | .... I $O(RMPRSEL(NPGRP,""))="*" S SELECTED=1 Q | 
|---|
| 138 | .... I '$D(RMPRSEL(NPGRP,NPLIN)) Q | 
|---|
| 139 | .... I DETAIL="L" S SELECTED=1 Q | 
|---|
| 140 | .... I $O(RMPRSEL(NPGRP,NPLIN,""))="*" S SELECTED=1 Q | 
|---|
| 141 | .... I '$D(RMPRSEL(NPGRP,NPLIN,HCPCIEN)) Q | 
|---|
| 142 | .... S SELECTED=1 | 
|---|
| 143 | .... Q | 
|---|
| 144 | ... S RD=ENDT+1 | 
|---|
| 145 | ... S RD=$O(^RMPR(661.9,"ASHID",RSTN,RH,IEN1,RD),-1) Q:RD=""  S RIEN=$O(^RMPR(661.9,"ASHID",RSTN,RH,IEN1,RD,""),-1) D | 
|---|
| 146 | .... S HCPC=RH,S=^RMPR(661.9,RIEN,0) | 
|---|
| 147 | .... S QOH=+$P(S,"^",8) Q:'QOH | 
|---|
| 148 | .... S COST=$P(S,"^",9) | 
|---|
| 149 | .... S ITEM=IEN1 | 
|---|
| 150 | .... S RS=$O(^RMPR(661.11,"C",HCPC_"-"_ITEM,0)) Q:RS="" | 
|---|
| 151 | .... S SOURCE=$P($G(^RMPR(661.11,RS,0)),U,5) | 
|---|
| 152 | .... S HCPCREF=HCPC,$P(HCPCREF,"/",2)=HCPCIEN | 
|---|
| 153 | .... S S=$G(^TMP($J,RMPRNAM,RSTN,NPGRP,NPLIN,HCPCREF,ITEM)) | 
|---|
| 154 | .... I SOURCE="C" D | 
|---|
| 155 | ..... S $P(S,"^",9)=QOH+$P(S,"^",9) | 
|---|
| 156 | ..... S $P(S,"^",11)=COST+$P(S,"^",11) | 
|---|
| 157 | ..... Q | 
|---|
| 158 | .... E  D | 
|---|
| 159 | ..... S $P(S,"^",8)=QOH+$P(S,"^",8) | 
|---|
| 160 | ..... S $P(S,"^",10)=COST+$P(S,"^",10) | 
|---|
| 161 | ..... Q | 
|---|
| 162 | .... S ^TMP($J,RMPRNAM,RSTN,NPGRP,NPLIN,HCPCREF,ITEM)=S | 
|---|
| 163 | .... Q | 
|---|
| 164 | ... Q | 
|---|
| 165 | .. Q | 
|---|
| 166 | Q | 
|---|
| 167 | ; | 
|---|
| 168 | ; return item text string given HCPC and ITEM IENs to 661.11 | 
|---|
| 169 | ; if null ITEMIEN passed the just return the HCPC short name text | 
|---|
| 170 | GETITEM(HCPCIEN,ITEMIEN) ; | 
|---|
| 171 | N STR,ITEMTXT | 
|---|
| 172 | S ITEMTXT="" | 
|---|
| 173 | I ITEMIEN="" D  G GETITEMX | 
|---|
| 174 | . S STR=$G(^RMPR(661.1,HCPCIEN,0)) | 
|---|
| 175 | . S ITEMTXT=$P(STR,"^",2) | 
|---|
| 176 | . Q | 
|---|
| 177 | S HCPC=$P($G(^RMPR(661.1,HCPCIEN,0)),U,1) | 
|---|
| 178 | S STR=$G(^RMPR(661.11,"C",HCPC_"-"_ITEMIEN,0)) | 
|---|
| 179 | I STR="" D | 
|---|
| 180 | . S ITEMTXT=$P(^RMPR(661.1,HCPCIEN,0),"^",2) | 
|---|
| 181 | . Q | 
|---|
| 182 | E  D | 
|---|
| 183 | . S ITEMTXT=$P(STR,"^",1) | 
|---|
| 184 | . Q | 
|---|
| 185 | S:ITEMTXT="" ITEMTXT="ITEM "_ITEMIEN | 
|---|
| 186 | GETITEMX Q ITEMTXT | 
|---|
| 187 | ; | 
|---|
| 188 | ; return NPPD line text from line code (New lines only) | 
|---|
| 189 | NPLIN(CODE) ; | 
|---|
| 190 | N I,S,LINTXT | 
|---|
| 191 | S LINTXT="" | 
|---|
| 192 | F I=1:1 S S=$P($T(DES+I^RMPRN62),";;",2) Q:$E(S,1,3)="END"  D  Q:LINTXT'="" | 
|---|
| 193 | . I $P(S,";",1)=CODE S LINTXT=$P(S,";",2) | 
|---|
| 194 | . Q | 
|---|
| 195 | Q LINTXT | 
|---|