| 1 | ORWDPS ; SLC/KCM - Pharmacy Calls for Windows Dialog [ 08/04/96  6:57 PM ]
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | LOAD(LST,OI,PTYP) ;
 | 
|---|
| 5 |  ; -- For a given orderable item, load appropriate lists & defaults
 | 
|---|
| 6 |  N I,X,CNT,ORTMP,ILST S ILST=0
 | 
|---|
| 7 |  S LST($$NXT)="~FORMULTN" D FRMLTN
 | 
|---|
| 8 |  S LST($$NXT)="~INSTRUCT" D INSTRCT
 | 
|---|
| 9 |  S LST($$NXT)="~ROUTE" D ROUTE
 | 
|---|
| 10 |  S LST($$NXT)="~SCHEDULE" D SCHED
 | 
|---|
| 11 |  S LST($$NXT)="~PRIORITY" D PRIOR
 | 
|---|
| 12 |  S LST($$NXT)="~MESSAGE" D MESSAGE
 | 
|---|
| 13 |  I PTYP="O" D
 | 
|---|
| 14 |  . S LST($$NXT)="~PICKUP" D PICKUP
 | 
|---|
| 15 |  . S LST($$NXT)="~SCSTATUS" D SCSTS
 | 
|---|
| 16 |  . S LST($$NXT)="~REFILLS" D REFILLS
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | DISPDRUG(LST,OI) ; list dispense drugs for an orderable item
 | 
|---|
| 19 |  N ILST,PTYP S ILST=0,PTYP="U" D FRMLTN
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | FRMLTN ; formulations
 | 
|---|
| 22 |  D ENDD^PSJORUTL("^^^"_+$P($G(^ORD(101.43,OI,0)),"^",2),PTYP,.ORTMP)
 | 
|---|
| 23 |  S I="" F  S I=$O(ORTMP(I)) Q:I=""  S LST($$NXT)="i"_ORTMP(I)
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 | INSTRCT ; instructions
 | 
|---|
| 26 |  D ^PSSJORDF(+$P(^ORD(101.43,OI,0),U,2))
 | 
|---|
| 27 |  S I="" F  S I=$O(^TMP("PSJINS",$J,I)) Q:I=""  S X=^(I) D
 | 
|---|
| 28 |  . I PTYP="U",$P(X,U,1)="TAKE" S $P(X,U,1)="GIVE"
 | 
|---|
| 29 |  . S LST($$NXT)="i"_$P(X,U,2)_U_$P(X,U,1)_" "_$P(X,U,2)
 | 
|---|
| 30 |  ; S I=$O(^TMP("PSJINS",$J,0))  (default instruction text)
 | 
|---|
| 31 |  ; I I S X=$P($G(^TMP("PSJINS",$J,I)),U) S:$L(X) LST($$NXT)="d"_X_" "
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 | ROUTE ; routes
 | 
|---|
| 34 |  S I="",CNT=0
 | 
|---|
| 35 |  F  S I=$O(^TMP("PSJMR",$J,I)) Q:I=""  D 
 | 
|---|
| 36 |  . S LST($$NXT)="i"_I_U_^(I),CNT=CNT+1
 | 
|---|
| 37 |  I CNT=1 S X=LST(ILST),LST($$NXT)="d"_$P(X,"^",3)
 | 
|---|
| 38 |  K ^TMP("PSJINS",$J),^TMP("PSJMR",$J)
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 | SCHED ; schedules
 | 
|---|
| 41 |  S I="" F  S I=$O(^PS(51.1,"APPSJ",I)) Q:I=""  D
 | 
|---|
| 42 |  . S LST($$NXT)="i"_$O(^(I,0))_U_I
 | 
|---|
| 43 |  Q
 | 
|---|
| 44 | PRIOR ; priorities
 | 
|---|
| 45 |  F X="ROUTINE","ASAP","STAT","DONE" D
 | 
|---|
| 46 |  . S LST($$NXT)="i"_$O(^ORD(101.42,"B",X,0))_U_X
 | 
|---|
| 47 |  S LST($$NXT)="dROUTINE"
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 | PICKUP ; routing
 | 
|---|
| 50 |  F X="W^at Window","M^by Mail","C^in Clinic" S LST($$NXT)="i"_X
 | 
|---|
| 51 |  S LST($$NXT)="dat Window"
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | SCSTS ; SC for drug
 | 
|---|
| 54 |  F X="0^No","1^Yes" S LST($$NXT)="i"_X
 | 
|---|
| 55 |  ; later: see if last order for this OI was SC and set default
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 | REFILLS ; refills
 | 
|---|
| 58 |  F X=0:1:11 S LST($$NXT)="i"_X_U_X
 | 
|---|
| 59 |  S LST($$NXT)="d0"
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 | MESSAGE ; message
 | 
|---|
| 62 |  S I=0 F  S I=$O(^ORD(101.43,OI,8,I)) Q:I'>0  S LST($$NXT)="i"_^(I,0)
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 | NXT() ; -- Function returns next available index in return data array
 | 
|---|
| 65 |  S ILST=ILST+1
 | 
|---|
| 66 |  Q ILST
 | 
|---|
| 67 | DEF(LST,INOUT)     ; Load defaults for pharmacy dialogs (common lists)
 | 
|---|
| 68 |  N TMPLST,IEN,I,X,ILST S ILST=0
 | 
|---|
| 69 |  S LST($$NXT)="~Common" D COMMON
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 | COMMON ; get list of common meds
 | 
|---|
| 72 |  S X="ORWD COMMON MED "_$S($G(INOUT)="O":"OUTPT",1:"INPT")
 | 
|---|
| 73 |  D GETLST^XPAR(.TMPLST,"ALL",X)
 | 
|---|
| 74 |  S I=0 F  S I=$O(TMPLST(I)) Q:'I  D
 | 
|---|
| 75 |  . S IEN=$P(TMPLST(I),U,2)
 | 
|---|
| 76 |  . S LST($$NXT)="i"_IEN_U_$P(^ORD(101.43,IEN,0),U,1)
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | INPT(OK,DFN,PRV) ; For inpatient meds, check restrictions
 | 
|---|
| 79 |  N NAME,AUTH,INACT,X S OK=0
 | 
|---|
| 80 |  I '$D(^DPT(DFN,.1)) S OK="1^Patient is not an inpatient." Q
 | 
|---|
| 81 |  S NAME=$P($G(^VA(200,PRV,20)),U,2) S:'$L(NAME) NAME=$P(^(0),U)
 | 
|---|
| 82 |  S X=$G(^VA(200,PRV,"PS")),AUTH=$P(X,U),INACT=$P(X,U,4)
 | 
|---|
| 83 |  I 'AUTH!(INACT&(DT>INACT)) D
 | 
|---|
| 84 |  . S OK="1^"_NAME_" is not authorized to write medication orders."
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 | OUTPT(OK,PRV) ; For outpatient meds, check restrictions
 | 
|---|
| 87 |  N NAME,AUTH,INACT,X S OK=0
 | 
|---|
| 88 |  S NAME=$P($G(^VA(200,PRV,20)),U,2) S:'$L(NAME) NAME=$P(^(0),U)
 | 
|---|
| 89 |  S X=$G(^VA(200,PRV,"PS")),AUTH=$P(X,U),INACT=$P(X,U,4)
 | 
|---|
| 90 |  I 'AUTH!(INACT&(DT>INACT)) D
 | 
|---|
| 91 |  . S OK="1^"_NAME_" is not authorized to write medication orders."
 | 
|---|
| 92 |  Q
 | 
|---|