1 | ORWDPS4 ;; SLC/JDL - Order Dialogs CO-PAY and Other;[12/31/01 6:38pm]
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**116,125,131,141,173,187,190,195,215**;Dec 17, 1997
|
---|
3 | ;
|
---|
4 | CPLST(TEST,PTIFN,ORIFNS) ; --Get CP questions
|
---|
5 | N ORIFN,ORDA,ORI,ORPSO,CPX
|
---|
6 | S ORI=0,ORPSO=+$O(^DIC(9.4,"C","PSO",0))
|
---|
7 | F S ORI=$O(ORIFNS(ORI)) Q:'ORI D
|
---|
8 | .S ORIFN=+ORIFNS(ORI),ORDA=$P(ORIFNS(ORI),";",2)
|
---|
9 | .I $D(^OR(100,ORIFN,0)),($P(^OR(100,ORIFN,0),U,14)=ORPSO) D
|
---|
10 | ..N PRIO S PRIO=0
|
---|
11 | ..I $D(^OR(100,ORIFN,4.5,"ID","URGENCY")) S PRIO=$O(^("URGENCY",0))
|
---|
12 | ..S PRIO=$G(^OR(100,ORIFN,4.5,+PRIO,1))
|
---|
13 | ..Q:PRIO=99
|
---|
14 | ..S CPX=$$SC(ORIFN)
|
---|
15 | ..I $L(CPX)>1 S TEST(ORIFN)=ORIFN_";"_ORDA_CPX
|
---|
16 | K PTIFN,ORIFN,ORDA,ORI,CPX
|
---|
17 | Q
|
---|
18 | ;
|
---|
19 | CPINFO(Y,ORINFO) ; -- Save reponses to CP questions
|
---|
20 | Q:'$D(ORINFO)
|
---|
21 | N ORIFN,ORI,ORX,ANS S ORI=0
|
---|
22 | F S ORI=$O(ORINFO(ORI)) Q:'ORI D
|
---|
23 | .S ORIFN=$P($P(ORINFO(ORI),U,1),";",1)
|
---|
24 | .S ANS=$P(ORINFO(ORI),U,2)
|
---|
25 | .D REFMT(.ORX,ANS)
|
---|
26 | .D SC^ORCSAVE2(.ORX,ORIFN)
|
---|
27 | S Y=1
|
---|
28 | K ORIFN,ORX,ORI,ANS
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | SC(ORIFN) ; -- Dialog validation, to ask CP questions
|
---|
32 | ;Expects ORIFN and ORDA
|
---|
33 | ;
|
---|
34 | N DR S DR=""
|
---|
35 | I '$L($T(SCNEW^PSOCP))!('$G(ORIFN))!('$G(ORDA)) Q DR
|
---|
36 | I $P($G(^OR(100,ORIFN,8,ORDA,0)),U,2)'="NW" Q DR
|
---|
37 | ;
|
---|
38 | N OR3,ORDRUG,ORENEW,ORX,I,XACT,YACT,CPNODE,ASC,AAO,AIR,AEC,AMST,AHNC,ACV
|
---|
39 | S ORX="",XACT=""
|
---|
40 | ;--Only new, renew, edited, copied outpatient order can continue...
|
---|
41 | ;AGP CHANGE 26.65, will returned service connection data for change orders
|
---|
42 | S OR3=$G(^OR(100,ORIFN,3)),XACT=$P(OR3,U,11) I (XACT'=0)&(XACT'=1)&((XACT'=2)&(XACT'="C")) Q DR
|
---|
43 | I (XACT=1)&($D(^OR(100,ORIFN,5))=0) Q DR
|
---|
44 | I $D(^OR(100,ORIFN,5))>0 D
|
---|
45 | .S CPNODE=$G(^OR(100,ORIFN,5))
|
---|
46 | .S ASC=$S($L($P(CPNODE,"^",1)):"SC;"_$P(CPNODE,"^",1),1:"")
|
---|
47 | .S DR=$S($L(ASC):DR_U_ASC,1:DR)
|
---|
48 | .S AAO=$S($L($P(CPNODE,"^",3)):"AO;"_$P(CPNODE,"^",3),1:"")
|
---|
49 | .S DR=$S($L(AAO):DR_U_AAO,1:DR)
|
---|
50 | .S AIR=$S($L($P(CPNODE,"^",4)):"IR;"_$P(CPNODE,"^",4),1:"")
|
---|
51 | .S DR=$S($L(AIR):DR_U_AIR,1:DR)
|
---|
52 | .S AEC=$S($L($P(CPNODE,"^",5)):"EC;"_$P(CPNODE,"^",5),1:"")
|
---|
53 | .S DR=$S($L(AEC):DR_U_AEC,1:DR)
|
---|
54 | .S AMST=$S($L($P(CPNODE,"^",2)):"MST;"_$P(CPNODE,"^",2),1:"")
|
---|
55 | .S DR=$S($L(AMST):DR_U_AMST,1:DR)
|
---|
56 | .S AHNC=$S($L($P(CPNODE,"^",6)):"HNC;"_$P(CPNODE,"^",6),1:"")
|
---|
57 | .S DR=$S($L(AHNC):DR_U_AHNC,1:DR)
|
---|
58 | .S ACV=$S($L($P(CPNODE,"^",7)):"CV;"_$P(CPNODE,"^",7),1:"")
|
---|
59 | .S DR=$S($L(ACV):DR_U_ACV,1:DR)
|
---|
60 | .D CPCOMP(.DR)
|
---|
61 | .K ASC,AAO,AIR,AEC,AMST,AHNC,CPNODE
|
---|
62 | I $L(DR)>0 Q DR
|
---|
63 | I XACT=2 S YACT=$P(OR3,U,5),ORENEW=$G(^OR(100,YACT,4)) ;get PS# if renewal
|
---|
64 | S ORDRUG=$$VALUE^ORCSAVE2(ORIFN,"DRUG")
|
---|
65 | D SCNEW^PSOCP(.ORX,+PTIFN,ORDRUG,$G(ORENEW)) I '$D(ORX) Q DR
|
---|
66 | F I="SC","AO","IR","EC","MST","HNC","CV" D
|
---|
67 | . I $D(ORX(I)) S DR=DR_U_I_$S($L(ORX(I)):";"_ORX(I),1:"")
|
---|
68 | Q DR
|
---|
69 | REFMT(ORX,INFO) ;
|
---|
70 | ;"U": Unchecked ("NO")
|
---|
71 | ;"C": Checked ("YES")
|
---|
72 | ;"N" : Question not asked
|
---|
73 | N RST,RST1
|
---|
74 | S RST=""
|
---|
75 | F I=1:1:$L(INFO) S RST=RST_U_$S($E(INFO,I)="U":0,$E(INFO,I)="C":1,1:"")
|
---|
76 | S RST1=$E(RST,2,$L(RST))
|
---|
77 | S ORX("SC")=$P(RST1,U,1)
|
---|
78 | S ORX("MST")=$P(RST1,U,5)
|
---|
79 | S ORX("AO")=$P(RST1,U,2)
|
---|
80 | S ORX("IR")=$P(RST1,U,3)
|
---|
81 | S ORX("EC")=$P(RST1,U,4)
|
---|
82 | S ORX("HNC")=$P(RST1,U,6)
|
---|
83 | S ORX("CV")=$P(RST1,U,7)
|
---|
84 | K RST,RST1
|
---|
85 | Q
|
---|
86 | CPCOMP(PREX) ; -- Compare the existed exemptions with new exemption questions
|
---|
87 | N ORX1,ORDRUG1,CPI,LSTCP,TMPVAL
|
---|
88 | S LSTCP=""
|
---|
89 | S ORDRUG1=$$VALUE^ORCSAVE2(ORIFN,"DRUG")
|
---|
90 | D SCNEW^PSOCP(.ORX1,+PTIFN,ORDRUG1,$G(ORENEW)) I '$D(ORX1) Q
|
---|
91 | F CPI="SC","AO","IR","EC","MST","HNC","CV" D
|
---|
92 | . I $D(ORX1(CPI)) D
|
---|
93 | . . S TMPVAL=""
|
---|
94 | . . I $F(PREX,CPI) D
|
---|
95 | . . . S TMPVAL=+$E(PREX,$F(PREX,CPI)+1)
|
---|
96 | . . . I $L(TMPVAL),((TMPVAL=0)!(TMPVAL=1)) S TMPVAL=CPI_";"_TMPVAL
|
---|
97 | . . . E S TMPVAL=CPI
|
---|
98 | . . E S TMPVAL=CPI
|
---|
99 | . . S LSTCP=LSTCP_U_TMPVAL
|
---|
100 | S PREX=LSTCP
|
---|
101 | Q
|
---|
102 | IPOD4OP(ORY,ORID) ;True: is an Inpt (IV OI) order on an OutPatient
|
---|
103 | Q:'$D(^OR(100,+ORID,0))
|
---|
104 | S ORY=0
|
---|
105 | N APKG,ADLG,ADG,APTCLS,RXDG,UDDLG,IPPKG
|
---|
106 | S (RXDG,UDDLG,IPPKG)=0
|
---|
107 | S RXDG=+$O(^ORD(100.98,"B","O RX",0))
|
---|
108 | S UDDLG=+$O(^ORD(101.41,"B","PSJ OR PAT OE",0))
|
---|
109 | S IPPKG=+$O(^DIC(9.4,"B","INPATIENT MEDICATIONS",0))
|
---|
110 | S ADLG=+$P($G(^OR(100,+ORID,0)),U,5)
|
---|
111 | S ADG=$P($G(^OR(100,+ORID,0)),U,11)
|
---|
112 | S APKG=$P($G(^OR(100,+ORID,0)),U,14)
|
---|
113 | S APTCLS=$P($G(^OR(100,+ORID,0)),U,12)
|
---|
114 | I ADG=RXDG,(ADLG=UDDLG),(APKG=IPPKG),(APTCLS="I") S ORY=1
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | UPDTDG(ORY,ORID) ;Update Inpt order for outpatient DG to Inpt DG
|
---|
118 | Q:'$D(^OR(100,+ORID,0))
|
---|
119 | N UDDG
|
---|
120 | S UDDG=$O(^ORD(100.98,"B","UD RX",0))
|
---|
121 | S $P(^OR(100,+ORID,0),U,11)=UDDG
|
---|
122 | Q
|
---|
123 | ISUDIV(ORY,ORIFN) ;True: OI of the order is for both UD and IV
|
---|
124 | N OI
|
---|
125 | S (OI,ORY)=0
|
---|
126 | S OI=+$O(^OR(100,+$G(ORIFN),.1,"B",0)) Q:OI<1
|
---|
127 | I $O(^ORD(101.43,OI,9,"B","IVM RX",0)) S ORY=1
|
---|
128 | Q
|
---|