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