| 1 | PSBVDLTB ;BIRMINGHAM/EFC-BCMA VIRTUAL DUE LIST FUNCTIONS (CONT) ;Mar 2004 | 
|---|
| 2 | ;;3.0;BAR CODE MED ADMIN;**3,4,16**;Mar 2004 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Reference/IA | 
|---|
| 5 | ; EN^PSJBCMA/2828 | 
|---|
| 6 | ; IN5^VADPT/10061 | 
|---|
| 7 | ; DEM^VADPT/10061 | 
|---|
| 8 | ; INP^VADPT/10061 | 
|---|
| 9 | ; $$FMADD^XLFDT/10103 | 
|---|
| 10 | ; $$GET^XPAR/2263 | 
|---|
| 11 | ; | 
|---|
| 12 | ; | 
|---|
| 13 | RPC(RESULTS,DFN,PSBTAB,PSBDT) ; | 
|---|
| 14 | K RESULTS,^TMP("PSB",$J),^TMP("PSJ",$J) | 
|---|
| 15 | N PSBCNT | 
|---|
| 16 | S PSBTRFL=0 | 
|---|
| 17 | S RESULTS=$NAME(^TMP("PSB",$J,PSBTAB)) | 
|---|
| 18 | ; | 
|---|
| 19 | Q:$$DISCHRGD(DFN) | 
|---|
| 20 | ; | 
|---|
| 21 | S PSBNOW=+$G(PSBDT) | 
|---|
| 22 | I 'PSBNOW D NOW^%DTC S PSBNOW=+$E(%,1,10),PSBDT=$P(%,".",1) | 
|---|
| 23 | ; use fileman function to determine window | 
|---|
| 24 | S PSBWBEG=$$FMADD^XLFDT(PSBNOW,"",-12) | 
|---|
| 25 | S PSBWEND=$$FMADD^XLFDT(PSBNOW,"",12) | 
|---|
| 26 | ; | 
|---|
| 27 | ; Create variable for valid order start date/time against admin window | 
|---|
| 28 | S PSBWADM=$$GET^XPAR("DIV","PSB ADMIN BEFORE") | 
|---|
| 29 | D NOW^%DTC S PSBWADM=$$FMADD^XLFDT(%,"","",+PSBWADM) | 
|---|
| 30 | ; | 
|---|
| 31 | ; use last movement for API | 
|---|
| 32 | S VAIP("D")="LAST" D IN5^VADPT S PSBTRDT=+VAIP(3),PSBTRTYP=$P(VAIP(2),U,2),PSBMVTYP=$P(VAIP(4),U,2) K VAIP | 
|---|
| 33 | ; | 
|---|
| 34 | ;Get patient transfer notification timeframe to determine pop-up box | 
|---|
| 35 | S PSBPTTR=$$GET^XPAR("DIV","PSB PATIENT TRANSFER") I PSBPTTR="" S PSBPTTR=72 | 
|---|
| 36 | D NOW^%DTC S PSBNTDT=$$FMADD^XLFDT(%,"",-PSBPTTR) I PSBNTDT'>PSBTRDT S PSBTRFL=1 | 
|---|
| 37 | ;determine order type and load to table | 
|---|
| 38 | ; | 
|---|
| 39 | ; Setup the ^TMP("PSJ",$J global for use below | 
|---|
| 40 | ; Passing PSBDT as 3rd parameter turns off the V.1.0 One-Time lookback | 
|---|
| 41 | D EN^PSJBCMA(DFN,PSBNOW,PSBDT) | 
|---|
| 42 | ;initialize tabs | 
|---|
| 43 | D TABINIT | 
|---|
| 44 | ; | 
|---|
| 45 | ;The following calls must be made in the order below since the ^TMP global is reused | 
|---|
| 46 | D EN^PSBVDLUD(DFN,PSBDT),EN^PSBVDLPB(DFN,PSBDT),EN^PSBVDLIV(DFN,PSBDT) | 
|---|
| 47 | S $P(PSBATAB,U,1)=$S($D(^TMP("PSB",$J,"UDTAB",2))>0:1,1:0) | 
|---|
| 48 | S $P(PSBATAB,U,2)=$S($D(^TMP("PSB",$J,"PBTAB",2))>0:1,1:0) | 
|---|
| 49 | S $P(PSBATAB,U,3)=$S($D(^TMP("PSB",$J,"IVTAB",2))>0:1,1:0) | 
|---|
| 50 | S:PSBTAB="UDTAB" PSBCNT=$O(^TMP("PSB",$J,"UDTAB",""),-1) | 
|---|
| 51 | S:PSBTAB="IVTAB" PSBCNT=$O(^TMP("PSB",$J,"IVTAB",""),-1) | 
|---|
| 52 | S:PSBTAB="PBTAB" PSBCNT=$O(^TMP("PSB",$J,"PBTAB",""),-1) | 
|---|
| 53 | I PSBTAB="NO TAB" D | 
|---|
| 54 | .S ^TMP("PSB",$J,PSBTAB,0)=1 | 
|---|
| 55 | .S ^TMP("PSB",$J,PSBTAB,1)=PSBATAB | 
|---|
| 56 | E  D | 
|---|
| 57 | .I $G(PSBCNT)>0 S ^TMP("PSB",$J,PSBTAB,0)=PSBCNT | 
|---|
| 58 | .I $G(PSBCNT)>1 S ^TMP("PSB",$J,PSBTAB,1)=PSBATAB_U_$S(PSBTRFL:PSBTRTYP_U_PSBMVTYP,1:"") | 
|---|
| 59 | .I $G(PSBCNT)'>1 S ^TMP("PSB",$J,PSBTAB,1)=PSBATAB_U_^TMP("PSB",$J,PSBTAB,1) | 
|---|
| 60 | F X="UDTAB","PBTAB","IVTAB" I X'=PSBTAB K ^TMP("PSB",$J,X) | 
|---|
| 61 | D CLEAN^PSBVT K ^TMP("PSJ",$J),PSBATAB,PSBWADM,PSBWBEG,PSBWEND,PSBNOW,PSBTRDT,PSBPTTR,PSBTRFL,PSBNTDT,PSBTRTYP,PSBMVTYP | 
|---|
| 62 | Q | 
|---|
| 63 | ; | 
|---|
| 64 | TABINIT ; | 
|---|
| 65 | F PSBX="UDTAB","PBTAB","IVTAB" D | 
|---|
| 66 | .K ^TMP("PSB",$J,PSBX) | 
|---|
| 67 | .S ^TMP("PSB",$J,PSBX,0)=1 | 
|---|
| 68 | .S ^TMP("PSB",$J,PSBX,1)="-1^No Administration(s) due at this time." Q | 
|---|
| 69 | Q | 
|---|
| 70 | ; | 
|---|
| 71 | DISCHRGD(DFN) ; Patient Discharged OR Deceased? | 
|---|
| 72 | ; | 
|---|
| 73 | S DISCHRGD=0 | 
|---|
| 74 | D DEM^VADPT I VADM(6)]"" S DISCHRGD=1 K VADM D  Q DISCHRGD | 
|---|
| 75 | .F PSBX="UDTAB","PBTAB","IVTAB","NO TAB" D | 
|---|
| 76 | ..K ^TMP("PSB",$J,PSBX) | 
|---|
| 77 | ..S ^TMP("PSB",$J,PSBX,0)=1,^TMP("PSB",$J,PSBX,1)="0^0^0^-1^A ""DATE OF DEATH"" has been logged for this patient." | 
|---|
| 78 | D INP^VADPT I VAIN(1)']"" S DISCHRGD=1 K VAIN D  Q DISCHRGD | 
|---|
| 79 | .F PSBX="UDTAB","PBTAB","IVTAB","NO TAB" D | 
|---|
| 80 | ..K ^TMP("PSB",$J,PSBX) | 
|---|
| 81 | ..S ^TMP("PSB",$J,PSBX,0)=1,^TMP("PSB",$J,PSBX,1)="0^0^0^-1^The selected patient has been DISCHARGED." | 
|---|
| 82 | Q DISCHRGD | 
|---|
| 83 | ; | 
|---|