1 | ORWPCE2 ; ISL/JM - wrap calls to PCE ;9/25/2001
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10,85,109,116,173,195**;Dec 17, 1997
|
---|
3 | GETSET(ORWLST,ORWFILE,ORWFIELD,ORWNULL) ;gets set of codes
|
---|
4 | ; ORWLST(n)=code^text for code
|
---|
5 | N ORWPCE,ORWPCEL,ORWPCEC,ORWPCELO,ORWPCEHI,ORWPCECD,ORWPCET
|
---|
6 | S ORWPCELO="abcdefghijklmnopqrstuvwxyz"
|
---|
7 | S ORWPCEHI="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
---|
8 | D FIELD^DID(ORWFILE,ORWFIELD,"","POINTER","ORWPCE","ORWPCE")
|
---|
9 | S ORWPCEL=$L(ORWPCE("POINTER"),";")-1
|
---|
10 | F ORWPCEC=1:1:ORWPCEL D
|
---|
11 | . S ORWPCECD=$P($P(ORWPCE("POINTER"),";",ORWPCEC),":",1)
|
---|
12 | . S ORWPCET=$P($P(ORWPCE("POINTER"),";",ORWPCEC),":",2)
|
---|
13 | . S ORWLST(ORWPCEC)=ORWPCECD_"^"_$E(ORWPCET)_$TR($E(ORWPCET,2,99),ORWPCEHI,ORWPCELO)
|
---|
14 | S:$G(ORWNULL) ORWLST(0)="@^(None selected)"
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | IMMTYPE(ORWLST) ;get the list of active immunizations
|
---|
18 | N IEN,CNT,BINDEX S (IEN,CNT,BINDEX)=0
|
---|
19 | F S BINDEX=$O(^AUTTIMM("B",BINDEX)) Q:BINDEX']"" F S IEN=$O(^(BINDEX,IEN)) Q:'+IEN I $D(^AUTTIMM(IEN,0))#2,+$P(^(0),"^",7)=0 S CNT=CNT+1,ORWLST(CNT)=IEN_"^"_$P(^(0),"^")
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | SKTYPE(ORWLST) ;get the list of active skin test
|
---|
23 | N IEN,CNT,BINDEX S (IEN,CNT,BINDEX)=0
|
---|
24 | F S BINDEX=$O(^AUTTSK("B",BINDEX)) Q:BINDEX']"" F S IEN=$O(^(BINDEX,IEN)) Q:'+IEN I $D(^AUTTSK(IEN,0))#2,+$P(^(0),"^",3)=0 S CNT=CNT+1,ORWLST(CNT)=IEN_"^"_$P(^(0),"^")
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | EDTTYPE(ORWLST) ;get the list of active education topics
|
---|
28 | N IEN,CNT,BINDEX S (IEN,CNT,BINDEX)=0
|
---|
29 | F S BINDEX=$O(^AUTTEDT("B",BINDEX)) Q:BINDEX']"" F S IEN=$O(^(BINDEX,IEN)) Q:'+IEN I $D(^AUTTEDT(IEN,0))#2,+$P(^(0),"^",3)=0 S CNT=CNT+1,ORWLST(CNT)=IEN_"^"_$P(^(0),"^")
|
---|
30 | Q
|
---|
31 | ;
|
---|
32 | HFTYPE(ORWLST,ADDCATS) ;get the list of active health factors
|
---|
33 | N IEN,CNT,BINDEX,REC
|
---|
34 | S (IEN,CNT,BINDEX)=0,ADDCATS=+$G(ADDCATS)
|
---|
35 | F S BINDEX=$O(^AUTTHF("B",BINDEX)) Q:BINDEX']"" D
|
---|
36 | .F S IEN=$O(^AUTTHF("B",BINDEX,IEN)) Q:'+IEN D
|
---|
37 | ..S REC=$G(^AUTTHF(IEN,0))
|
---|
38 | ..I +$P(REC,U,11) S REC=""
|
---|
39 | ..I 'ADDCATS,$P(REC,U,10)="C" S REC=""
|
---|
40 | ..I REC'="" D
|
---|
41 | ...S CNT=CNT+1,ORWLST(CNT)=IEN_U_$P(REC,U)
|
---|
42 | ...I ADDCATS S ORWLST(CNT)=ORWLST(CNT)_U_$P(REC,U,10)_U_$P(REC,U,3)
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | EXAMTYPE(ORWLST) ;get the list of active exams
|
---|
46 | N IEN,CNT,BINDEX S (IEN,CNT,BINDEX)=0
|
---|
47 | F S BINDEX=$O(^AUTTEXAM("B",BINDEX)) Q:BINDEX']"" F S IEN=$O(^(BINDEX,IEN)) Q:'+IEN I $D(^AUTTEXAM(IEN,0))#2,+$P(^(0),"^",4)=0 S CNT=CNT+1,ORWLST(CNT)=IEN_"^"_$P(^(0),"^")
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | TRTTYPE(ORWLST) ;get the list of active treatments
|
---|
51 | N IEN,CNT,BINDEX S (IEN,CNT,BINDEX)=0
|
---|
52 | F S BINDEX=$O(^AUTTTRT("B",BINDEX)) Q:BINDEX']"" F S IEN=$O(^(BINDEX,IEN)) Q:'+IEN I $D(^AUTTTRT(IEN,0))#2,+$P(^(0),"^",4)=0 S CNT=CNT+1,ORWLST(CNT)=IEN_"^"_$P(^(0),"^")
|
---|
53 | Q
|
---|
54 | ;
|
---|
55 | ACTIVPRV(ORRETURN,ORWPROV,ORWDT) ;get if provider is active or not
|
---|
56 | S ORRETURN=$$ACTIVPRV^PXAPI(ORWPROV,ORWDT)
|
---|
57 | Q
|
---|
58 | GETVISIT(VISIT,IEN,DFN,VSITSTR) ;Get the visit IEN
|
---|
59 | I +$G(IEN)<1 D I 1
|
---|
60 | .S VISIT=$$GETENC^PXAPI(DFN,$P(VSITSTR,";",2),$P(VSITSTR,";"))
|
---|
61 | E S VISIT=$P(^TIU(8925,IEN,0),U,3)
|
---|
62 | Q
|
---|
63 | GAFOK(ORY) ; Returns true if all supporting MH GAF Code exists
|
---|
64 | S ORY=0
|
---|
65 | I $T(GAFHX^YSGAFAPI)'="",$T(ENT^YSGAFAP1)'="" S ORY=1
|
---|
66 | Q
|
---|
67 | MHCLINIC(ORY,ORIEN) ; See if this is a mental health clinic
|
---|
68 | I $T(MHCLIN^SDUTL2)="" S ORY=1
|
---|
69 | E S ORY=$$MHCLIN^SDUTL2(ORIEN)
|
---|
70 | Q
|
---|
71 | LOADGAF(ORY,ORINPUT) ; Retrieve GAF scores
|
---|
72 | D GAFHX^YSGAFAPI(.ORY,.ORINPUT)
|
---|
73 | Q
|
---|
74 | SAVEGAF(ORY,ORINPUT) ; Save new GAF score
|
---|
75 | N ORDATA
|
---|
76 | D ENT^YSGAFAP1(.ORDATA,.ORINPUT)
|
---|
77 | S ORY=($G(ORDATA(1))="[DATA]")
|
---|
78 | Q
|
---|
79 | FORCE(ORY,USER,LOC) ; Retrieve FORCE GUI PCE Entry for a given User/Location
|
---|
80 | N SRV,ORTMP,ORERR
|
---|
81 | S USER=$G(USER,DUZ)
|
---|
82 | S SRV=$P($G(^VA(200,USER,5)),U)
|
---|
83 | D GETLST^XPAR(.ORTMP,"USR^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORWPCE FORCE PCE ENTRY","Q",.ORERR)
|
---|
84 | S ORY=+$P($G(ORTMP(1)),U,2)
|
---|
85 | Q
|
---|
86 | HASCPT(ORY,ORLIST) ; Returns true if there are any mapped CPT Codes
|
---|
87 | N IEN,IDX,FOUND
|
---|
88 | S IDX=0
|
---|
89 | F S IDX=$O(ORLIST(IDX)) Q:'+IDX D
|
---|
90 | . S FOUND=0
|
---|
91 | . S IEN=$$FIND1^DIC(811.1,"","QX",ORLIST(IDX))
|
---|
92 | . I +IEN S FOUND=+$$GET1^DIQ(811.1,IEN,.05,"I")
|
---|
93 | . S ORY(IDX)=ORLIST(IDX)_"="_FOUND
|
---|
94 | Q
|
---|
95 | ASKPCE(ORY,USER,LOC) ; Returns ORWPCE ASK ENCOUNTER UPDATE parameter value
|
---|
96 | N SRV,ORTMP,ORERR
|
---|
97 | S USER=$G(USER,DUZ)
|
---|
98 | S SRV=$P($G(^VA(200,USER,5)),U)
|
---|
99 | D GETLST^XPAR(.ORTMP,"USR^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG","ORWPCE ASK ENCOUNTER UPDATE","Q",.ORERR)
|
---|
100 | S ORY=+$P($G(ORTMP(1)),U,2)
|
---|
101 | Q
|
---|
102 | GAFURL(URL) ;Returns the MH GAF Web Page URL
|
---|
103 | S URL=""
|
---|
104 | I $T(GAFURL^YTAPI5)'="" D
|
---|
105 | .N ORY
|
---|
106 | .D GAFURL^YTAPI5(.ORY)
|
---|
107 | .I $G(ORY(1))="[DATA]" S URL=$G(ORY(2))
|
---|
108 | Q
|
---|
109 | MHTESTOK(ORY) ; Returns True if all supporting MH Test APIs exist
|
---|
110 | D GAFOK(.ORY)
|
---|
111 | I +ORY,+$G(DUZ),$T(SAVEIT^YTAPI1)'="",$T(PREVIEW^YTAPI4)'="",$T(SHOWALL^YTAPI3)'="",$T(LISTONE^YTAPI)'="",$T(MHS^PXRMRPCC)'="",$T(MHR^PXRMRPCC)'="",$T(MH^PXRMRPCC)'="" D
|
---|
112 | . N SRV
|
---|
113 | . S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
114 | . S ORY=$$GET^XPAR(DUZ_";VA(200,^SRV.`"_+$G(SRV)_"^DIV^SYS","PXRM MENTAL HEALTH ACTIVE",1,"Q")
|
---|
115 | . I +ORY S ORY=1
|
---|
116 | Q
|
---|
117 | MHATHRZD(ORY,TEST,USER) ;Indicates that user can score test
|
---|
118 | N ORYS,ORANS
|
---|
119 | I $T(PRIVL^YTAPI5)="" S ORY=1 Q
|
---|
120 | S ORY=0
|
---|
121 | S ORYS("CODE")=TEST
|
---|
122 | S ORYS("STAFF")=USER
|
---|
123 | D PRIVL^YTAPI5(.ORANS,.ORYS)
|
---|
124 | I $G(ORANS(1))="[DATA]" S ORY=+$P($G(ORANS(2)),U,1)
|
---|
125 | Q
|
---|
126 | ANYTIME(ORY) ;Returns status of the ORWPCE ANYTIME ENCOUNTERS parameter
|
---|
127 | N SRV
|
---|
128 | S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
129 | S ORY=$$GET^XPAR(DUZ_";VA(200,^SRV.`"_+$G(SRV)_"^DIV^SYS","ORWPCE ANYTIME ENCOUNTERS",1,"Q")
|
---|
130 | I +ORY S ORY=1
|
---|
131 | Q
|
---|
132 | AUTOVSIT(ORY,LOC) ; Returns TRUE if automatic selection of Visit Type
|
---|
133 | N SRV
|
---|
134 | S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
135 | S ORY=$$GET^XPAR(DUZ_";VA(200,^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS","ORWPCE DISABLE AUTO VISIT TYPE",1,"Q")
|
---|
136 | I +ORY S ORY=1
|
---|
137 | S ORY='ORY
|
---|
138 | Q
|
---|
139 | DOCHKOUT(ORY,LOC) ; Returns TRUE if automatic selection of Visit Type
|
---|
140 | N SRV
|
---|
141 | S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
142 | S ORY=$$GET^XPAR(DUZ_";VA(200,^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS","ORWPCE DISABLE AUTO CHECKOUT",1,"Q")
|
---|
143 | I +ORY S ORY=1
|
---|
144 | S ORY='ORY
|
---|
145 | Q
|
---|
146 | CHKOUT(LOC) ; Returns TRUE if automatic selection of Visit Type
|
---|
147 | N ORY
|
---|
148 | D DOCHKOUT(.ORY,LOC)
|
---|
149 | Q ORY
|
---|
150 | EXCLUDED(ORY,LOC,TYPE) ; Returns list of excluded PCE data elements
|
---|
151 | N SRV,PARAM
|
---|
152 | S PARAM=$S(TYPE=1:"IMMUNIZATIONS",TYPE=2:"SKIN TESTS",TYPE=3:"PATIENT ED",TYPE=4:"HEALTH FACTORS",TYPE=5:"EXAMS",1:"")
|
---|
153 | Q:PARAM=""
|
---|
154 | S SRV=$P($G(^VA(200,DUZ,5)),U)
|
---|
155 | S PARAM="ORWPCE EXCLUDE "_PARAM
|
---|
156 | D GETLST^XPAR(.ORY,"USR^LOC.`"_$G(LOC)_"^SRV.`"_+$G(SRV)_"^DIV^SYS^PKG",PARAM,"Q",.ORERR)
|
---|
157 | Q
|
---|
158 | ISCLINIC(ORY,ORLOC) ; Returns TRUE if location is a clinic
|
---|
159 | N ORTYP
|
---|
160 | S ORY=0
|
---|
161 | S ORTYP=$$GET1^DIQ(44,+ORLOC,2,"I")
|
---|
162 | I (ORTYP="C")!(ORTYP="M") S ORY=1
|
---|
163 | Q
|
---|
164 | HNCOK(ORY) ; Returns true if Head and/or Neck Cancer is enabled
|
---|
165 | S ORY=0
|
---|
166 | I $$PATCH^XPDUTL("DG*5.3*397"),$$PATCH^XPDUTL("SD*5.3*244"),$$PATCH^XPDUTL("PX*1.0*111"),$$PATCH^XPDUTL("IVM*2.0*46") S ORY=1
|
---|
167 | Q
|
---|
168 | ;
|
---|
169 | CODACTIV(ORY,ORCODE,ORAPP,ORDATE) ; Is code active on the given date?
|
---|
170 | ; Remote procedure: ORWPCE ACTIVE CODE
|
---|
171 | ; ORCODE = ICD or CPT code to be checked
|
---|
172 | ; ORAPP = "ICD" or "CHP"
|
---|
173 | ; ORDATE = Date to be checked (defaults to current date)
|
---|
174 | S:'+$G(ORDATE) ORDATE=DT
|
---|
175 | S ORY=1
|
---|
176 | I ORAPP="ICD" D
|
---|
177 | . S ORY=+$$STATCHK^ICDAPIU(ORCODE,ORDATE)
|
---|
178 | E I ORAPP="CHP" D
|
---|
179 | . S ORY=+$$STATCHK^ICPTAPIU(ORCODE,ORDATE)
|
---|
180 | Q
|
---|
181 | ICDACTIV(ORCODE,ORDATE) ; Check for active ICD code
|
---|
182 | D CODACTIV(.ORY,ORCODE,"ICD",$G(ORDATE))
|
---|
183 | Q +ORY
|
---|
184 | CPTACTIV(ORCODE,ORDATE) ; Check for active CPT code
|
---|
185 | D CODACTIV(.ORY,ORCODE,"CHP",$G(ORDATE))
|
---|
186 | Q +ORY
|
---|
187 | CXNOSHOW(ORY,ORDOCIEN) ; Should workload requirement be skipped for this note's visit?
|
---|
188 | ; RETURN VALUE: 0=SKIP ALL GUI WORKLOAD REQUIREMENTS
|
---|
189 | ; 1=CONTINUE WITH OTHER GUI WORKLOAD LOGIC
|
---|
190 | N ORTIU
|
---|
191 | D DOCPARM^TIUSRVP1(.ORTIU,ORDOCIEN) ; DBIA #4331
|
---|
192 | S ORY=+$$CHKWKL^TIUPXAP2(ORDOCIEN,ORTIU(0)) ; DBIA #4332
|
---|
193 | Q
|
---|