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
|
---|