| 1 | PSBOPE ;BIRMINGHAM/EFC-PRN EFFECTIVENESS WORKSHEET ;Mar 2004
 | 
|---|
| 2 |  ;;3.0;BAR CODE MED ADMIN;**5,23,32**;Mar 2004;Build 32
 | 
|---|
| 3 |  ;Per VHA Directive 2004-038 (or future revisions regarding same), this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; Reference/IA
 | 
|---|
| 6 |  ; ^DPT/10035
 | 
|---|
| 7 |  ; EN^PSJBCMA/2828
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 | EN ; Called from DQ^PSBO
 | 
|---|
| 10 |  N PSBSTRT,PSBSTOP,DFN
 | 
|---|
| 11 |  K ^TMP("PSB",$J)
 | 
|---|
| 12 |  S PSBSTRT=$P(PSBRPT(.1),U,6)+$P(PSBRPT(.1),U,7)
 | 
|---|
| 13 |  S PSBSTOP=$P(PSBRPT(.1),U,8)+$P(PSBRPT(.1),U,9)
 | 
|---|
| 14 |  F DFN=0:0 S DFN=$O(^TMP("PSBO",$J,DFN)) Q:'DFN  D EN1
 | 
|---|
| 15 |  D PRINT
 | 
|---|
| 16 |  K ^TMP("PSJ",$J),^TMP("PSB",$J)
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 | EN1 ; Expects DFN,PSBSTRT,PSBSTOP from EN
 | 
|---|
| 20 |  N PSBGBL,PSBHDR,PSBX,PSBADMIN,PSBDFN,PSBDT,PSBMED,PSBORD,PSBOSTRT,PSBSCHED
 | 
|---|
| 21 |  K ^TMP("PSJ",$J)
 | 
|---|
| 22 |  S PSBDT=PSBSTRT-.0000001
 | 
|---|
| 23 |  F  S PSBDT=$O(^PSB(53.79,"AADT",DFN,PSBDT)) Q:'PSBDT!(PSBDT>PSBSTOP)  D
 | 
|---|
| 24 |  .S PSBIEN=0
 | 
|---|
| 25 |  .F  S PSBIEN=$O(^PSB(53.79,"AADT",DFN,PSBDT,PSBIEN)) Q:'PSBIEN  D
 | 
|---|
| 26 |  ..Q:$P($G(^PSB(53.79,PSBIEN,.1)),U,2)'="P"  ; Not a PRN Administration
 | 
|---|
| 27 |  ..Q:$P($G(^PSB(53.79,PSBIEN,.2)),U,2)]""  ; Effectiveness entered
 | 
|---|
| 28 |  ..Q:($P($G(^PSB(53.79,PSBIEN,0)),U,9)'="G")&($P($G(^PSB(53.79,PSBIEN,0)),U,9)'="RM")  ;Allow only entries with at status of "GIVEN" and "REMOVED"
 | 
|---|
| 29 |  ..Q:$P($G(^PSB(53.79,PSBIEN,0)),U,6)<PSBDT
 | 
|---|
| 30 |  ..Q:$P($G(^PSB(53.79,PSBIEN,0)),U,6)>PSBSTOP
 | 
|---|
| 31 |  ..S ^TMP("PSB",$J,DFN,PSBIEN)=""
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 | PRINT ; Print meds stored in ^TMP("PSB",$J,DFN,....
 | 
|---|
| 34 |  N PSBHDR,PSBDT,PSBMED,DFN
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ; Print by Patient
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  D:$P(PSBRPT(.1),U,1)="P"
 | 
|---|
| 39 |  .S PSBHDR(1)="PRN EFFECTIVENESS LIST for "_$$FMTE^XLFDT(PSBSTRT)_" to "_$$FMTE^XLFDT(PSBSTOP)
 | 
|---|
| 40 |  .S DFN=$P(PSBRPT(.1),U,2)
 | 
|---|
| 41 |  .W $$PTHDR()
 | 
|---|
| 42 |  .I '$O(^TMP("PSB",$J,DFN,0)) W !,"No PRN Medications Found",$$PTFTR^PSBOHDR() Q
 | 
|---|
| 43 |  .W !  ; Line Break Between Admin Times
 | 
|---|
| 44 |  .S PSBIEN=""
 | 
|---|
| 45 |  .F  S PSBIEN=$O(^TMP("PSB",$J,DFN,PSBIEN)) Q:PSBIEN=""  D
 | 
|---|
| 46 |  ..S PSBIENS=PSBIEN_","
 | 
|---|
| 47 |  ..I $Y>(IOSL-5) W $$PTFTR^PSBOHDR(),$$PTHDR()
 | 
|---|
| 48 |  ..W !,$$GET1^DIQ(53.79,PSBIENS,.06),?30,$$GET1^DIQ(53.79,PSBIENS,.08),?72,$$GET1^DIQ(53.79,PSBIENS,"ACTION BY")
 | 
|---|
| 49 |  ..W !,?5,"PRN Reason: ",$$GET1^DIQ(53.79,PSBIENS,.21)
 | 
|---|
| 50 |  .W $$PTFTR^PSBOHDR()
 | 
|---|
| 51 |  .Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  ; Print by Ward
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  D:$P(PSBRPT(.1),U,1)="W"
 | 
|---|
| 56 |  .S PSBHDR(1)="PRN EFFECTIVENESS LIST  from "_$$FMTE^XLFDT(PSBSTRT)_" thru "_$$FMTE^XLFDT(PSBSTOP)
 | 
|---|
| 57 |  .S PSBWARD=$P(PSBRPT(.1),U,3)
 | 
|---|
| 58 |  .W $$WRDHDR()
 | 
|---|
| 59 |  .I '$O(^TMP("PSB",$J,0)) W !,"No PRN Medications Found" Q
 | 
|---|
| 60 |  .S PSBSORT=$P(PSBRPT(.1),U,5)
 | 
|---|
| 61 |  .F DFN=0:0 S DFN=$O(^TMP("PSB",$J,DFN)) Q:'DFN  D
 | 
|---|
| 62 |  ..S PSBINDX=$S(PSBSORT="P":$P(^DPT(DFN,0),U),1:$G(^DPT(DFN,.1))_" "_$G(^DPT(DFN,.101)))  ;PSB*3*23
 | 
|---|
| 63 |  ..S:PSBINDX="" PSBINDX=$P(^DPT(DFN,0),U)
 | 
|---|
| 64 |  ..S ^TMP("PSB",$J,"B",PSBINDX,DFN)=""
 | 
|---|
| 65 |  .S PSBINDX=""
 | 
|---|
| 66 |  .F  S PSBINDX=$O(^TMP("PSB",$J,"B",PSBINDX)) Q:PSBINDX=""  D
 | 
|---|
| 67 |  ..F DFN=0:0 S DFN=$O(^TMP("PSB",$J,"B",PSBINDX,DFN)) Q:'DFN  D
 | 
|---|
| 68 |  ...W ! ; Line Break Between Pt's
 | 
|---|
| 69 |  ...W:$P(PSBRPT(.1),U,5)="P" !,$$GET1^DIQ(2,DFN_",",.01),?32,$$GET1^DIQ(2,DFN_",",.1),"  ",$$GET1^DIQ(2,DFN_",",.101)
 | 
|---|
| 70 |  ...W:$P(PSBRPT(.1),U,5)="B" !,$$GET1^DIQ(2,DFN_",",.1),"  ",$$GET1^DIQ(2,DFN_",",.101),?20,$$GET1^DIQ(2,DFN_",",.01)
 | 
|---|
| 71 |  ...W !  ; Line Break Between Admin Times
 | 
|---|
| 72 |  ...S PSBIEN=""
 | 
|---|
| 73 |  ...F  S PSBIEN=$O(^TMP("PSB",$J,DFN,PSBIEN)) Q:PSBIEN=""  D
 | 
|---|
| 74 |  ....I $Y>(IOSL-5) W $$WRDHDR()
 | 
|---|
| 75 |  ....W !?5,$$GET1^DIQ(53.79,PSBIEN_",",.06),?35,$$GET1^DIQ(53.79,PSBIEN_",",.08),?77,$$GET1^DIQ(53.79,PSBIEN_",","ACTION BY")
 | 
|---|
| 76 |  ....W !?10,"PRN Reason: ",$$GET1^DIQ(53.79,PSBIEN_",",.21)
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | WRDHDR() ; Ward Header
 | 
|---|
| 80 |  D WARD^PSBOHDR(PSBWRD,.PSBHDR)
 | 
|---|
| 81 |  W:$P(PSBRPT(.1),U,5)="B" !,"Ward Rm-Bed",?20,"Patient"
 | 
|---|
| 82 |  W:$P(PSBRPT(.1),U,5)="P" !,"Patient",?32,"Ward Rm-Bed"
 | 
|---|
| 83 |  W !?5,"Administration Date/Time",?35,"Medication",?77,"Administered By"
 | 
|---|
| 84 |  W !,$TR($J("",IOM)," ","-")
 | 
|---|
| 85 |  Q ""
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | PTHDR() ; Patient Header
 | 
|---|
| 88 |  D PT^PSBOHDR(DFN,.PSBHDR)
 | 
|---|
| 89 |  W !,"Administration Date/Time",?30,"Medication",?72,"Administered By"
 | 
|---|
| 90 |  W !,$TR($J("",IOM)," ","-")
 | 
|---|
| 91 |  Q ""
 | 
|---|
| 92 |  ;
 | 
|---|