[613] | 1 | ALPBUTL3 ;OIFO-DALLAS MW,SED,KC-BCBU BACKUP REPORT FUNCTIONS AND UTILITIES ;01/01/03
|
---|
| 2 | ;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004
|
---|
| 3 | START(DAY) ;Get current date
|
---|
| 4 | D NOW^%DTC
|
---|
| 5 | S Y=X
|
---|
| 6 | S STARD=%I(2)
|
---|
| 7 | D DD^%DT
|
---|
| 8 | S MON=$E(Y,1,3)
|
---|
| 9 | S LD=$S(MON="JAN":31,MON="FEB":29,MON="MAR":31,MON="APR":30,MON="MAY":31,MON="JUN":30,MON="JUL":31,MON="AUG":31,MON="SEP":30,MON="OCT":31,MON="NOV":30,MON="DEC":31)
|
---|
| 10 | S LDD=LD+1
|
---|
| 11 | S SP=69,CNT=0
|
---|
| 12 | S SS=STARD+DAY
|
---|
| 13 | I SS>LDD S SS=LDD
|
---|
| 14 | I SS<LDD S LDD=SS
|
---|
| 15 | F J=STARD:0 DO Q:J=LDD
|
---|
| 16 | .S SP=SP+6,CNT=CNT+1
|
---|
| 17 | .W ?SP,J
|
---|
| 18 | .S J=J+1
|
---|
| 19 | .I J=SS Q
|
---|
| 20 | I CNT'=DAY F J=1:1 DO Q:CNT=DAY
|
---|
| 21 | .S SP=SP+6,CNT=CNT+1
|
---|
| 22 | .W ?SP,J
|
---|
| 23 | Q
|
---|
| 24 | MON(DAY) ;Get the month
|
---|
| 25 | D NOW^%DTC
|
---|
| 26 | S Y=X
|
---|
| 27 | S STARD=%I(2)
|
---|
| 28 | D DD^%DT
|
---|
| 29 | S MON=$E(Y,1,3)
|
---|
| 30 | S LD=$S(MON="JAN":31,MON="FEB":29,MON="MAR":31,MON="APR":30,MON="MAY":31,MON="JUN":30,MON="JUL":31,MON="AUG":31,MON="SEP":30,MON="OCT":31,MON="NOV":30,MON="DEC":31)
|
---|
| 31 | Q
|
---|
| 32 | ARRAY(DAY) ;BUILD ARRAY FOR TO FIND NEXT MONTH
|
---|
| 33 | S MONT("JAN")="FEB"
|
---|
| 34 | S MONT("FEB")="MAR"
|
---|
| 35 | S MONT("MAR")="APR"
|
---|
| 36 | S MONT("APR")="MAY"
|
---|
| 37 | S MONT("MAY")="JUN"
|
---|
| 38 | S MONT("JUN")="JUL"
|
---|
| 39 | S MONT("JUL")="AUG"
|
---|
| 40 | S MONT("AUG")="SEP"
|
---|
| 41 | S MONT("SEP")="OCT"
|
---|
| 42 | S MONT("OCT")="NO"
|
---|
| 43 | S MONT("NOV")="DEC"
|
---|
| 44 | S MONT("DEC")="JAN"
|
---|
| 45 | D NOW^%DTC
|
---|
| 46 | S Y=X
|
---|
| 47 | S STARD=%I(2)
|
---|
| 48 | D DD^%DT
|
---|
| 49 | S MON=$E(Y,1,3)
|
---|
| 50 | S LD=$S(MON="JAN":31,MON="FEB":29,MON="MAR":31,MON="APR":30,MON="MAY":31,MON="JUN":30,MON="JUL":31,MON="AUG":31,MON="SEP":30,MON="OCT":31,MON="NOV":30,MON="DEC":31)
|
---|
| 51 | S LDD=LD+1
|
---|
| 52 | S SP=69,CNT=0
|
---|
| 53 | S SS=STARD+DAY
|
---|
| 54 | I SS>LDD S SS=LDD
|
---|
| 55 | I SS<LDD S LDD=SS
|
---|
| 56 | F J=STARD:0 DO Q:J=LDD
|
---|
| 57 | .S SP=SP+6,CNT=CNT+1
|
---|
| 58 | .S J=J+1
|
---|
| 59 | .I J=SS Q
|
---|
| 60 | I CNT'=DAY W ?SP+6,$P(MONT(MON),"^",1)
|
---|
| 61 | Q
|
---|
| 62 | DEFML() ; fetch and return default med log print...
|
---|
| 63 | ; returns default number of med log entries to print based on entry in
|
---|
| 64 | ; MED-LOG NUMBER field in BCMA BACKUP PARAMETERS file (53.71)
|
---|
| 65 | N X
|
---|
| 66 | S X=$S(+$P($G(^ALPB(53.71,1,2)),U,4)>0:+$P(^ALPB(53.71,1,2),U,4),1:1)
|
---|
| 67 | Q X
|
---|
| 68 | DEFOR() ; fetch and return purge order flag...
|
---|
| 69 | ; returns the number of day to hold a patient order after
|
---|
| 70 | ; the Stop Date. Default is 7
|
---|
| 71 | ; Based on entry in PURGE ORDER DAYS field in BCMA BACKUP
|
---|
| 72 | ; PARAMETERS file (53.71)
|
---|
| 73 | N X
|
---|
| 74 | S X=$S(+$P($G(^ALPB(53.71,1,2)),U,2)>0:+$P(^ALPB(53.71,1,2),U,2),1:7)
|
---|
| 75 | Q X
|
---|
| 76 | DEFPR() ; fetch and return purge patient flag...
|
---|
| 77 | ; returns the number of days to hold the patient record
|
---|
| 78 | ; with no orders. Default is 30
|
---|
| 79 | ; Based on entry in PURGE PATIENT field in BCMA BACKUP
|
---|
| 80 | ; PARAMETERS file (53.71)
|
---|
| 81 | N X
|
---|
| 82 | S X=$S(+$P($G(^ALPB(53.71,1,2)),U,3)>0:+$P(^ALPB(53.71,1,2),U,3),1:30)
|
---|
| 83 | Q X
|
---|
| 84 | LSTACT ; Build a cross reference by patient by drug to keep up
|
---|
| 85 | ; with the last action of the drug. The x-ref is built but stays
|
---|
| 86 | ; even if order is purged. The x-ref gets removed when the patient
|
---|
| 87 | ; is purged.
|
---|
| 88 | ; ^ALPB(53.1,DFN,"LSTACT",DRUG,ACTION DATE)=PERSON^ACTION
|
---|
| 89 | N ALP,DRUG,DATE
|
---|
| 90 | ;Q:+$G(DA(2))'>0!(+$G(DA(1))'>0)!(+$G(DA)'>0)
|
---|
| 91 | ; get drug info - can be multiple
|
---|
| 92 | S ALP=0 F ALP=$O(^ALPB(53.7,DA(2),2,DA(1),7,ALP)) Q:+ALP'>0 D
|
---|
| 93 | . S DRUG=$P($G(^ALPB(53.7,DA(2),2,DA(1),7,ALP,0)),U,1)
|
---|
| 94 | . Q:+DRUG'>0
|
---|
| 95 | . S DATE=$P($G(^ALPB(53.7,DA(2),2,DA(1),10,DA,0)),U,1)
|
---|
| 96 | . S ^ALPB(53.7,DA(2),"LSTACT",DRUG,(9999999-DATE))=$G(^ALPB(53.7,DA(2),2,DA(1),10,DA,0))
|
---|
| 97 | Q
|
---|
| 98 | LACT(ALPDFN,ALPDRUG) ; Retrieve the last action infor for a patient
|
---|
| 99 | ; for a certian drug
|
---|
| 100 | ; ALPDFN = Patient DFN
|
---|
| 101 | ; ALPDRUG = Drug Ordable Item IEN
|
---|
| 102 | N DATA,ALP
|
---|
| 103 | Q:+$G(ALPDFN)'>0 ""
|
---|
| 104 | Q:+$G(ALPDRUG)'>0 ""
|
---|
| 105 | I '$D(^ALPB(53.7,ALPDFN,"LSTACT",ALPDRUG)) Q ""
|
---|
| 106 | S ALP=$O(^ALPB(53.7,ALPDFN,"LSTACT",ALPDRUG,0))
|
---|
| 107 | S DATA=$G(^ALPB(53.7,ALPDFN,"LSTACT",ALPDRUG,ALP))
|
---|
| 108 | Q DATA
|
---|