| [613] | 1 | PSBVAR ;BIRMINGHAM/EFC-BCMA VARIANCE LOG FUNCTIONS ;Mar 2004
 | 
|---|
 | 2 |  ;;3.0;BAR CODE MED ADMIN;*31*;Mar 2004;Build 1
 | 
|---|
 | 3 |  ;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  ; Reference/IA
 | 
|---|
 | 6 |  ; ^DPT/10035
 | 
|---|
 | 7 |  ; ^DIC(42/10039
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 | EN ;
 | 
|---|
 | 10 |  Q
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 | CHKPRN(DFN,PSBMIN,PSBLOG) ;
 | 
|---|
 | 13 |  Q:PSBMIN=""
 | 
|---|
 | 14 |  Q:PSBMIN'>$$GET^XPAR("DIV","PSB ADMIN PRN EFFECT")
 | 
|---|
 | 15 |  D ADD(.RESULTS,DFN,3,PSBMIN,"",PSBLOG)
 | 
|---|
 | 16 |  Q
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ;CHECK^PSBVAR() calling point is used to create a new variance entry.  Triggered by Order Administration Variance Field # 14 in the BCMA Medication Log File (#53.79).
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 | CHECK(DFN,PSBMIN,PSBLOG) ;
 | 
|---|
 | 21 |  Q:PSBMIN=""
 | 
|---|
 | 22 |  N RESULTS
 | 
|---|
 | 23 |  ; Checks the timing from the Med Log Entry X-Ref
 | 
|---|
 | 24 |  I PSBMIN<0 D:(PSBMIN*-1)>$$GET^XPAR("DIV","PSB ADMIN BEFORE") ADD(.RESULTS,DFN,2,PSBMIN,"",PSBLOG)
 | 
|---|
 | 25 |  I PSBMIN>0 D:PSBMIN>$$GET^XPAR("DIV","PSB ADMIN AFTER") ADD(.RESULTS,DFN,2,PSBMIN,"",PSBLOG)
 | 
|---|
 | 26 |  Q
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 | ADD(RESULTS,DFN,PSBEVNT,PSBMIN,PSBDRUG,PSBLOG) ;
 | 
|---|
 | 29 |  ;
 | 
|---|
 | 30 |  ; DFN:      Patient File (#2) Pointer
 | 
|---|
 | 31 |  ; PSBEVNT:  Event Code (See DD for 53.78)
 | 
|---|
 | 32 |  ; PSBMIN:   Minutes off of schedule (Optional)
 | 
|---|
 | 33 |  ; PSBDRUG:  Drug File (#50) Pointer (Optional)
 | 
|---|
 | 34 |  ; PSBLOG:   BCMA Med Log IEN (Optional)
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ;Do not create variance for med order with missing dose status.
 | 
|---|
 | 37 |  I $G(PSBLOG),$P($G(^PSB(53.79,PSBLOG,0)),U,9)="M" Q
 | 
|---|
 | 38 |  ;
 | 
|---|
 | 39 |  N PSBDT,PSBRB,PSBWRD,PSBXX
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  D EN^DDIOL("Filing Variance...")
 | 
|---|
 | 42 |  D NOW^%DTC
 | 
|---|
 | 43 |  L +(^PSB(53.78,0)):5 E  S RESULTS(0)="-1^Variance Log Locked" Q
 | 
|---|
 | 44 |  S PSBXX=$O(^PSB(53.78,"A"),-1)+1
 | 
|---|
 | 45 |  S $P(^PSB(53.78,0),U,3)=PSBXX
 | 
|---|
 | 46 |  S $P(^PSB(53.78,0),U,4)=$P(^PSB(53.78,0),U,4)+1
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 | WARD ;Extract the ward and room/bed information.
 | 
|---|
 | 49 |  ;DFN is pre-defined.
 | 
|---|
 | 50 |  S PSBRB=$P($G(^DPT(DFN,.101)),U)
 | 
|---|
 | 51 |  S PSBRB=$S(PSBRB'="":PSBRB,1:"***")
 | 
|---|
 | 52 |  S PSBWRD=$P($G(^DPT(DFN,.1)),U)
 | 
|---|
 | 53 |  ;Convert Ward Name to Ward IEN
 | 
|---|
 | 54 |  I PSBWRD'="" D
 | 
|---|
 | 55 |  . S PSBDT=%
 | 
|---|
 | 56 |  . S PSBWRD=$$FIND1^DIC(42,"","X",PSBWRD,"","","ERR")
 | 
|---|
 | 57 |  . S %=PSBDT ;reset after $$FIND1^DIC fileman call
 | 
|---|
 | 58 |  S PSBWRD=$S($G(PSBWRD):PSBWRD,1:"***")
 | 
|---|
 | 59 |  ;
 | 
|---|
 | 60 |  ; Set Variance Entry
 | 
|---|
 | 61 |  S ^PSB(53.78,PSBXX,0)=DFN_U_PSBRB_U_DUZ_U_%_U_PSBEVNT_U_$G(PSBMIN)_U_$G(PSBDRUG)_U_$G(PSBLOG)_U_PSBWRD
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 |  S ^PSB(53.78,"ADT",%,PSBXX)=""
 | 
|---|
 | 64 |  S ^PSB(53.78,"B",DFN,PSBXX)=""
 | 
|---|
 | 65 |  L -(^PSB(53.78,0))
 | 
|---|
 | 66 |  S RESULTS(0)="1^Data Filed"
 | 
|---|
 | 67 |  Q
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  ; Unable to UPDATE^DIE WHILE IN UPDATE^DIE
 | 
|---|
 | 70 |  W !,"Filing Variance..."
 | 
|---|
 | 71 |  D EN^DDIOL("Filing Variance...")
 | 
|---|
 | 72 |  N PSBVFDA,PSBVMSG,PSBVIEN
 | 
|---|
 | 73 |  D VAL(.01,"`"_DFN) ; Patient Pointer
 | 
|---|
 | 74 |  S Y=$G(^DPT(DFN,.1),"Unk Ward")_" "_$G(^DPT(DFN,.101),"Unk Bed")
 | 
|---|
 | 75 |  D VAL(.02,Y) ; Patient Location
 | 
|---|
 | 76 |  D VAL(.03,"`"_DUZ) ; New Person Pointer
 | 
|---|
 | 77 |  D VAL(.04,"NOW") ; DT Entered
 | 
|---|
 | 78 |  D VAL(.05,PSBEVNT) ; Event Code
 | 
|---|
 | 79 |  D:$G(PSBMIN) VAL(.06,PSBMIN) ; Minutes Early/Late
 | 
|---|
 | 80 |  D:$G(PSBDRUG) VAL(.07,"`"_PSBDRUG) ; Drug File Pointer
 | 
|---|
 | 81 |  D:$G(PSBLOG) VAL(.08,"`"_PSBLOG)
 | 
|---|
 | 82 |  ; Call UPDATE^DIE and set Results(0)
 | 
|---|
 | 83 |  D UPDATE^DIE("","PSBVFDA","PSBVIEN","PSBVMSG")  ; PSBVFDA set into file 53.68, BCMA MEDICATION VARIANCE LOG at VAL+3
 | 
|---|
 | 84 |  I $D(PSBVMSG) S RESULTS(0)="-1^"_PSBVMSG("DIERR",1)_": "_PSBVMSG("DIERR",1,"TEXT",1)
 | 
|---|
 | 85 |  E  S RESULTS(0)="1^Data Successfully Filed^"_PSBVIEN(1)
 | 
|---|
 | 86 |  W !,RESULTS(0)
 | 
|---|
 | 87 |  Q
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 | VAL(PSBVFLD,PSBVVAL) ;
 | 
|---|
 | 90 |  N PSBVRET
 | 
|---|
 | 91 |  K ^TMP("DIERR",$J)
 | 
|---|
 | 92 |  D VAL^DIE(53.78,"+1,",PSBVFLD,"F",PSBVVAL,.PSBVRET,"PSBVFDA")
 | 
|---|
 | 93 |  I PSBVRET="^" F X=0:0 S X=$O(^TMP("DIERR",$J,X)) Q:'X  S Y=^TMP("DIERR",$J,X)_": "_$G(^(X,"TEXT",1),"**"),RESULTS($O(RESULTS(""),-1)+1)="Data Validation Error: "_Y
 | 
|---|
 | 94 |  K ^TMP("DIERR",$J)
 | 
|---|
 | 95 |  Q
 | 
|---|
 | 96 |  ;
 | 
|---|