| 1 | PSJBCBU ;BIR/LDT-RETURN INFORMATION FOR AN ORDER IN HL7 FORMAT FOR BCMA CONTINGENCY PLAN;16 Mar 99 / 10:59 AM
 | 
|---|
| 2 |  ;;5.0; INPATIENT MEDICATIONS ;**102**;16 DEC 97
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Reference to ^PS(55 is supported by DBIA 2191.
 | 
|---|
| 5 |  ; Reference to ^%DTC is supported by DBIA 10000.
 | 
|---|
| 6 |  ; Usage of this routine by BCMA BACKUP Software is supported by DBIA 3876.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | EN(DFN,ON,PSJNAME)         ; return detail data for Inpatient Meds.
 | 
|---|
| 9 |  ;Input
 | 
|---|
| 10 |  ;               DFN - Patient's IEN
 | 
|---|
| 11 |  ;               ON - Order number for patient including "U" for Unit Dose, "V" for IV, and "P" for pending orders
 | 
|---|
| 12 |  ;               PSJNAME - Array name to return information in
 | 
|---|
| 13 |  N PSJBCBU S PSJBCBU=1
 | 
|---|
| 14 |  I $G(ON)["U",$D(^PS(55,+$G(DFN),5,+ON,0)) D EN1^PSJHL2(DFN,"XX",ON)
 | 
|---|
| 15 |  I $G(ON)["V",$D(^PS(55,+$G(DFN),"IV",+ON,0)) D EN1^PSJHL2(DFN,"XX",ON)
 | 
|---|
| 16 |  I $G(ON)["P",$D(^PS(53.1,+ON,0)),$P($G(^PS(53.1,+ON,0)),"^",15)=DFN D EN1^PSJHL2(DFN,"XX",ON)
 | 
|---|
| 17 |  I '$D(PSJNAME) S PSJNAME(0)=-1
 | 
|---|
| 18 |  K ^TMP("PSJHLS",$J,"PS")
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | EN2(DFN,BDT)         ; return condensed list of inpat meds
 | 
|---|
| 22 |  K ^TMP("PSJBU",$J)
 | 
|---|
| 23 |  NEW FON,ON,WBDT,Y,%
 | 
|---|
| 24 |  D:+$G(DFN) ORDER
 | 
|---|
| 25 |  I '$D(^TMP("PSJBU",$J,1,0)) S ^(0)=-1
 | 
|---|
| 26 |  K PSJINX
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | ORDER ;Loop thru the orders.
 | 
|---|
| 29 |  I '+$G(BDT) D NOW^%DTC S BDT=%
 | 
|---|
| 30 |  I BDT'["." S BDT=BDT_".0001"
 | 
|---|
| 31 |  S PSJINX=0
 | 
|---|
| 32 |  ;* U/D orders
 | 
|---|
| 33 |  S WBDT=BDT
 | 
|---|
| 34 |  F  S WBDT=$O(^PS(55,DFN,5,"AUS",WBDT)) Q:'WBDT  D
 | 
|---|
| 35 |  . F ON=0:0 S ON=$O(^PS(55,DFN,5,"AUS",WBDT,ON)) Q:'ON  S FON=ON_"U" D TMP
 | 
|---|
| 36 |  ;* IV orders
 | 
|---|
| 37 |  S WBDT=BDT
 | 
|---|
| 38 |  F  S WBDT=$O(^PS(55,DFN,"IV","AIS",WBDT)) Q:'WBDT  D
 | 
|---|
| 39 |  . F ON=0:0 S ON=$O(^PS(55,DFN,"IV","AIS",WBDT,ON)) Q:'ON  S FON=ON_"V" D TMP
 | 
|---|
| 40 |  ;* Pending orders
 | 
|---|
| 41 |  F PST="P","N" F ON=0:0 S ON=$O(^PS(53.1,"AS",PST,DFN,ON)) Q:'ON  D
 | 
|---|
| 42 |  . S FON=ON_"P" D TMP
 | 
|---|
| 43 |  Q
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 | TMP ;* Setup ^TMP that have common fields between IV and U/D
 | 
|---|
| 46 |  S PSJINX=PSJINX+1
 | 
|---|
| 47 |  S ^TMP("PSJBU",$J,PSJINX,0)=DFN_U_+ON_U_FON
 | 
|---|
| 48 |  Q
 | 
|---|