| 1 | PSIVBCID ;BIR/JLC - BAR CODE ID SUBROUTINES ;16 FEB 01
|
---|
| 2 | ;;5.0; INPATIENT MEDICATIONS ;**58,80,146**;16 DEC 97
|
---|
| 3 | ;
|
---|
| 4 | ; Reference to ^PS(55 supported by DBIA 2191.
|
---|
| 5 | ;
|
---|
| 6 | BCMA(PSJDFN,PSJON,PSIVCTD,PSIV1,PSIV2,PSIVNOL) ;determine unique ID# for bar code labels and update initial data for bar code ID
|
---|
| 7 | ;Input: PSJDFN - patient's DFN
|
---|
| 8 | ; PSJON - patient's ON - order number
|
---|
| 9 | ; PSJBCID - bar code ID to be filed
|
---|
| 10 | ; PSIVCTD - the $D(PSIVCT) from the calling routine, if PSIVCT was defined, then the labels won't be counted
|
---|
| 11 | ; PSIV1 - current label number
|
---|
| 12 | ; PSIV2 -
|
---|
| 13 | ; PSIVNOL - total number of labels
|
---|
| 14 | ;
|
---|
| 15 | ;Output: PSJBCID - unique ID# for this label
|
---|
| 16 | ; format: DFN_"A"_ON"_seq#
|
---|
| 17 | ; If unable to calculate ID #, return "ERROR"
|
---|
| 18 | ;
|
---|
| 19 | S PSIV1=$G(PSIV1),PSIV2=$G(PSIV2),PSIVNOL=$G(PSIVNOL)
|
---|
| 20 | L +^PS(55,PSJDFN,"IVBCMA"):10
|
---|
| 21 | E W "Waiting for lock..." F L +^PS(55,PSJDFN,"IVBCMA"):5 Q:$T W "."
|
---|
| 22 | S SEQ=$O(^PS(55,PSJDFN,"IVBCMA"," "),-1)
|
---|
| 23 | S PSJBCID=PSJDFN_"V"_(SEQ+1)
|
---|
| 24 | D UP1^PSIVBCID(DFN,ON,PSJBCID,PSIVCTD,PSIV1,PSIV2,PSIVNOL)
|
---|
| 25 | L -^PS(55,PSJDFN,"IVBCMA")
|
---|
| 26 | Q PSJBCID
|
---|
| 27 | ;
|
---|
| 28 | UP1(DFN,ON,PSJBCID,PSIVCTD,PSIV1,PSIV2,PSIVNOL) ;update initial data for bar code ID
|
---|
| 29 | ;Input: DFN - patient's IEN
|
---|
| 30 | ; ON - Order number for this bar code ID
|
---|
| 31 | ; PSJBCID - bar code ID to be filed
|
---|
| 32 | ; PSIVCTD - the $D(PSIVCT) from the calling routine, if PSIVCT was defined, then the labels won't be counted
|
---|
| 33 | ; PSIV1 - current label number
|
---|
| 34 | ; PSIV2 -
|
---|
| 35 | ; PSIVNOL - total number of labels
|
---|
| 36 | ;
|
---|
| 37 | ;Output: PSJBLN - label sequence number
|
---|
| 38 | ;
|
---|
| 39 | S PSIV1=$G(PSIV1),PSIV2=$G(PSIV2),PSIVNOL=$G(PSIVNOL)
|
---|
| 40 | K DIC,DIE,DO S DIC(0)="L",DA(1)=DFN,X=PSJBCID,DIC="^PS(55,"_DA(1)_",""IVBCMA""," D FILE^DICN
|
---|
| 41 | K DA,DR,DIE S DIE=DIC,DA=+Y,DA(1)=DFN,PSJBLN=DA D NOW^%DTC
|
---|
| 42 | S DR=".02////"_+ON_";3////"_$S(PSIVCTD:0,1:1)_";4////"_$E(%,1,12)_";6////"_PSIV1_"["_$S(PSIV1:PSIVNOL,1:PSIV2)_"]" D ^DIE
|
---|
| 43 | K DIC,DIE,D0,DA,DR
|
---|
| 44 | Q
|
---|
| 45 | UP2(DFN,PSJBLN,PSIV,YY) ;update additive data for bar code ID
|
---|
| 46 | ;
|
---|
| 47 | ;Input: DFN - Patient's IEN
|
---|
| 48 | ; PSJBLN - The IEN for the bar code ID
|
---|
| 49 | ; PSIV - the sequence number for this additive
|
---|
| 50 | ; YY - ADDITIVE ^ STRENGTH ^ BOTTLE
|
---|
| 51 | ;
|
---|
| 52 | K DA,DR,DIC,DO S DIC(0)="L",DA(1)=DFN,DA(2)=PSJBLN,X=PSIV,DIC="^PS(55,"_DA(1)_",""IVBCMA"","_DA(2)_",""AD""," D FILE^DICN
|
---|
| 53 | K DA,DR,DIE S DIE=DIC,DA=+Y,DA(1)=PSJBLN,DA(2)=DFN S DR=".01////"_$P(YY,U)_";1////"_$P(YY,U,2)_";2////"_$P(YY,U,3) D ^DIE
|
---|
| 54 | K DA,DR,DIC,D0,DIE
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | UP3(DFN,PSJBLN,PSIV,YY) ;update solution data for bar code ID
|
---|
| 58 | ;
|
---|
| 59 | ;Input: DFN - Patient's IEN
|
---|
| 60 | ; PSJBLN - The IEN for the bar code ID
|
---|
| 61 | ; PSIV - the sequence number for this solution
|
---|
| 62 | ; YY - SOLUTION ^ VOLUME
|
---|
| 63 | ;
|
---|
| 64 | K DA,DR,DIC,DO S DIC(0)="L",DA(1)=DFN,DA(2)=PSJBLN,X=$P(PSIV,U),DIC="^PS(55,"_DA(1)_",""IVBCMA"","_DA(2)_",""SOL""," D FILE^DICN
|
---|
| 65 | K DA,DR,DIE S DIE=DIC,DA=+Y,DA(1)=PSJBLN,DA(2)=DFN S DR=".01////"_$P(YY,U)_";1////"_$P(YY,U,2) D ^DIE
|
---|
| 66 | K DA,DR,DIC,D0,DIE
|
---|
| 67 | Q
|
---|