| 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 |  ;
 | 
|---|