[613] | 1 | PSBMLVAL ;BIRMINGHAM/EFC-BCMA MED LOG VALIDATION ;Mar 2004
|
---|
| 2 | ;;3.0;BAR CODE MED ADMIN;;Mar 2004
|
---|
| 3 | ;
|
---|
| 4 | ;
|
---|
| 5 | ;
|
---|
| 6 | VAL(RESULTS,DFN,PSBIEN,PSBTYPE,PSBADMIN) ;
|
---|
| 7 | ;
|
---|
| 8 | ; RPC: PSB VALIDATE ORDER
|
---|
| 9 | ;
|
---|
| 10 | ; Description: Final check of order against an actual administration
|
---|
| 11 | ; date/time used immediately after scanned med has been
|
---|
| 12 | ; validated to be a good unadministered order and by the
|
---|
| 13 | ; PSBODL (Due List) output.
|
---|
| 14 | ;
|
---|
| 15 | ; Variables: DFN: Patient IEN
|
---|
| 16 | ; PSBIEN: Order IEN
|
---|
| 17 | ; PSBTYPE: U:Unit Dose/V:IV
|
---|
| 18 | ; PSBADMIN: Scheduled Administration Time
|
---|
| 19 | ;
|
---|
| 20 | N PSBOKAY,PSBORD,PSBSCHT,PSBOST,PSBOSP,PSBDT,PSBDA,PSBNOW
|
---|
| 21 | ;
|
---|
| 22 | K PSBORD
|
---|
| 23 | D PSJ1^PSBVT(DFN,PSBIEN_PSBTYPE)
|
---|
| 24 | S PSBCNT=0
|
---|
| 25 | S PSBOKAY="-1^***Unable to determine administration" ; Default Flag
|
---|
| 26 | D NOW^%DTC
|
---|
| 27 | ;
|
---|
| 28 | ;
|
---|
| 29 | I PSBSCHT'="O"&(%>PSBOSP) S RESULTS(0)="-1^Order Not Active",PSBCNT=2 Q
|
---|
| 30 | ; Validate an IV
|
---|
| 31 | I PSBONX?.N1"V" D S RESULTS(0)=PSBOKAY Q
|
---|
| 32 | .I PSBOSTS'="A"&(PSBOSTS'="R") S PSBOKAY="-1^Order Not Active",PSBCNT=2 Q
|
---|
| 33 | .I PSBNGF S PSBOKAY="-1^marked DO NOT GIVE",PSBCNT=2 Q
|
---|
| 34 | .I PSBSCHT="O" D Q ; Make sure One Time is not given.
|
---|
| 35 | ..I $D(^PSB(53.79,"AORD",DFN,PSBONX)) S PSBOKAY="-1^Already Given",PSBCNT=2
|
---|
| 36 | ..E S PSBOKAY="0^Okay to administer"
|
---|
| 37 | .S PSBOKAY="0^Okay to administer"
|
---|
| 38 | ; Validate a Continuous Order
|
---|
| 39 | D:PSBSCHT="C"
|
---|
| 40 | .S (PSBGVN,X,Y)=""
|
---|
| 41 | .I PSBOSTS'="A"&(PSBOSTS'="R") S PSBOKAY="-1^Order Not Active",PSBCNT=2 Q
|
---|
| 42 | .I PSBNGF S PSBOKAY="-1^marked DO NOT GIVE",PSBCNT=2 Q
|
---|
| 43 | .I $D(^PSB(53.79,"AORD",DFN,PSBIEN_PSBTYPE,PSBADMIN)) D Q:X
|
---|
| 44 | ..S X=$O(^PSB(53.79,"AORD",DFN,PSBIEN_PSBTYPE,PSBADMIN,X)) Q:'X
|
---|
| 45 | ..S X=$S($P($G(^PSB(53.79,+X,0)),U,9)="G":1,1:0) Q:'X
|
---|
| 46 | ..S PSBOKAY="-1^Dose already on medication log",PSBCNT=2
|
---|
| 47 | .; Minutes before
|
---|
| 48 | .S PSBWIN1=$$GET^XPAR("DIV","PSB ADMIN BEFORE")*-1
|
---|
| 49 | .; Minutes After
|
---|
| 50 | .S PSBWIN2=$$GET^XPAR("DIV","PSB ADMIN AFTER")
|
---|
| 51 | .D NOW^%DTC S PSBMIN=$$DIFF^PSBUTL(PSBADMIN,%)
|
---|
| 52 | .; PENDING A PC SOLUTION!
|
---|
| 53 | .I PSBMIN<PSBWIN1 S PSBOKAY="1^Admin is "_(PSBMIN*-1)_" minutes before the scheduled administration time" Q
|
---|
| 54 | .I PSBMIN>PSBWIN2 S PSBOKAY="1^Admin is "_(PSBMIN)_" minutes after the scheduled administration time" Q
|
---|
| 55 | .S PSBOKAY="0^Okay to administer"
|
---|
| 56 | ; Validate a PRN Order
|
---|
| 57 | D:PSBSCHT="P"
|
---|
| 58 | .I PSBOSTS'="A"&(PSBOSTS'="R") S PSBOKAY="-1^Order Not Active",PSBCNT=2 Q
|
---|
| 59 | .I PSBNGF S PSBOKAY="-1^marked DO NOT GIVE",PSBCNT=2 Q
|
---|
| 60 | .; CHECK Q4H STUFF SEND 1^TO SOON IF TOO SOON.
|
---|
| 61 | .S PSBOKAY="1^Brief Administration History"
|
---|
| 62 | .; Get Last Four Givens
|
---|
| 63 | .S PSBDT=""
|
---|
| 64 | .F S PSBDT=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,PSBDT),-1) Q:PSBDT="" D
|
---|
| 65 | ..S PSBDA=""
|
---|
| 66 | ..F S PSBDA=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,PSBDT,PSBDA),-1) Q:'PSBDA D
|
---|
| 67 | ...Q:$P(^PSB(53.79,PSBDA,0),U,9)="N"
|
---|
| 68 | ...S X=$$GET1^DIQ(53.79,PSBDA_",",.06)_" "
|
---|
| 69 | ...S X=X_$$GET1^DIQ(53.79,PSBDA_",",.09)_" "
|
---|
| 70 | ...S X=X_$$GET1^DIQ(53.79,PSBDA_",",.12)_" "
|
---|
| 71 | ...S X=X_$$GET1^DIQ(53.79,PSBDA_",",.21)_" "
|
---|
| 72 | ...S X=X_$$GET1^DIQ(53.79,PSBDA_",",.16)_" "
|
---|
| 73 | ...S PSBOKAY($O(PSBOKAY(""),-1)+1)=X
|
---|
| 74 | ...S:$D(PSBOKAY(4)) PSBDT=0
|
---|
| 75 | ; Validate a One-Time Order
|
---|
| 76 | D:PSBSCHT="O"
|
---|
| 77 | .S (PSBGVN,X,Y)=""
|
---|
| 78 | .F S X=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,X),-1) Q:'X D
|
---|
| 79 | ..F S Y=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,X,Y),-1) Q:'Y S:($P(^PSB(53.79,Y,.1),U)=PSBONX)&($P(^PSB(53.79,Y,0),U,9)="G") PSBGVN=1,(X,Y)=0
|
---|
| 80 | .I PSBGVN S PSBOKAY="-1^Dose Already on medication Log",PSBCNT=2 Q
|
---|
| 81 | .; One Time are automatically expired so we don't check STATUS here
|
---|
| 82 | .I PSBNGF S PSBOKAY="-1^marked DO NOT GIVE",PSBCNT=2 Q
|
---|
| 83 | .S PSBOKAY="0^Okay to administer"
|
---|
| 84 | ; Validate an On Call Order
|
---|
| 85 | D:PSBSCHT="OC"
|
---|
| 86 | .S PSBOKAY="0^Okay to administer",(PSBGVN,X,Y)=""
|
---|
| 87 | .F S X=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,X),-1) Q:'X D
|
---|
| 88 | ..F S Y=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,X,Y),-1) Q:'Y S:$P(^PSB(53.79,Y,.1),U)=PSBONX PSBGVN=1,(X,Y)=0
|
---|
| 89 | .I PSBGVN&('$$GET^XPAR("DIV","PSB ADMIN MULTIPLE ONCALL")) S PSBOKAY="-1^Dose Already on medication Log",PSBCNT=2 Q
|
---|
| 90 | .I PSBOSTS'="A"&(PSBOSTS'="R") S PSBOKAY="-1^Order Not Active",PSBCNT=2 Q
|
---|
| 91 | .I PSBNGF S PSBOKAY="-1^marked DO NOT GIVE",PSBCNT=2 Q
|
---|
| 92 | .S PSBOKAY="0^Okay to administer"
|
---|
| 93 | ;
|
---|
| 94 | D:+PSBOKAY'=-1
|
---|
| 95 | .N PSBDIFF,Y,X,PSBSTUS
|
---|
| 96 | .; Ok, now we know it is on-call or cont and not on the log.
|
---|
| 97 | .D:(PSBSCHT="C")!(PSBSCHT="OC"&('$G(PSBGVN)))
|
---|
| 98 | ..S Y=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,""),-1)
|
---|
| 99 | ..S PSBDIFF=$$FMDIFF^XLFDT($$NOW^XLFDT(),Y,2)
|
---|
| 100 | ..Q:PSBDIFF>7200 ; Greater than 2 hours
|
---|
| 101 | ..;Check for the status of the medication and insert status in the text
|
---|
| 102 | ..I Y]"" S X=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,Y,""),-1),PSBSTUS=$P(^PSB(53.79,X,0),U,9)
|
---|
| 103 | ..S PSBSTUS=$S(PSBSTUS="G":"GIVEN",PSBSTUS="H":"HELD",1:"REFUSED")
|
---|
| 104 | ..S Y="*** NOTICE, "_PSBOITX_" was "_PSBSTUS_" "_(PSBDIFF\60)_" minutes ago."
|
---|
| 105 | ..I +PSBOKAY=1 S PSBOKAY(1)=Y
|
---|
| 106 | ..E S PSBOKAY="1^"_Y
|
---|
| 107 | ;
|
---|
| 108 | D NOW^%DTC
|
---|
| 109 | I PSBSCHT'="O"&(%<($$FMADD^XLFDT(PSBOST,"","",$$GET^XPAR("ALL","PSB ADMIN BEFORE")*-1))) S RESULTS(0)="-1^Order Not Active" I PSBCNT=0 S PSBCNT=1 Q
|
---|
| 110 | ;
|
---|
| 111 | S RESULTS(0)=PSBOKAY
|
---|
| 112 | F X=1:1 Q:'$D(PSBOKAY(X)) S RESULTS($O(RESULTS(""),-1)+1)=PSBOKAY(X)
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|