1 | LRBEBA4 ;DALOI/JAH/FHS - ORDERING AND RESULTING OUTPATIENT ;8/10/04
|
---|
2 | ;;5.2;LAB SERVICE;**291,359**;Sep 27, 1994
|
---|
3 | ;
|
---|
4 | GPRO(LRBEDN,LRBECDT,LRBESPC,LRBETST) ; Get the Procedure (CPT)
|
---|
5 | ; A qualified coder will setup the CPTs in #60. The routine look for
|
---|
6 | ; CPTs by specimen, then HCPCS, and lasty, by a default.
|
---|
7 | ;
|
---|
8 | S X="CH;"_LRBEDN_";1",Y=$O(^LAB(60,"C",X,0))
|
---|
9 | Q:+Y<0
|
---|
10 | S LRBETST=+Y
|
---|
11 | PANEL ;Entry point for panel cpt
|
---|
12 | N X,Y,DIC,LRBEIEN,LRBENLT,LRN
|
---|
13 | S:$G(LRSPEC)="" LRSPEC=$G(LRBESPC)
|
---|
14 | S (LRI,LRBECPT)=""
|
---|
15 | ; #60 Specimen CPT
|
---|
16 | SP60 D GCPT(LRBETST,LRBECDT,LRSPEC) Q:$O(LRBECPT(LRBETST,0))
|
---|
17 | ;HCPCS CODE
|
---|
18 | HCPCS D
|
---|
19 | . S LRBECPT=$$GET1^DIQ(60,LRBETST_",","HCPCS CODE","I")
|
---|
20 | . I LRBECPT D
|
---|
21 | . . S LRBECPT=$$CPT^ICPTCOD(LRBECPT,LRBECDT)
|
---|
22 | . . I '$P(LRBECPT,U,7) S LRBECPT="" Q
|
---|
23 | . . S LRBECPT(LRBETST,$G(LRI)+1,$P(LRBECPT,U))="HCPCS CODE",LRI=$G(LRI)+1
|
---|
24 | ;Try file #64
|
---|
25 | NLT Q:$O(LRBECPT(LRBETST,0)) D
|
---|
26 | . N I,LRBENLT,LRX,LRN,LRNM,SUFX
|
---|
27 | . S LRBENLT=$$GET1^DIQ(60,LRBETST_",",64,"I")
|
---|
28 | . Q:'LRBENLT
|
---|
29 | . S LRNM=$P($G(^LAM(LRBENLT,0)),U,2)
|
---|
30 | . S LRNM(1)=LRNM
|
---|
31 | . S SUFX=$P(LRNM,".",2)
|
---|
32 | . I $G(LRCDEF),SUFX'=LRCDEF S LRNM(2)=$P(LRNM,".",1)_"."_LRCDEF
|
---|
33 | . I SUFX S LRNM(3)=$P(LRNM,".",1)_"."_"0000"
|
---|
34 | . S I=0 F S I=$O(LRNM(I)) Q:'I Q:$O(LRBECPT(LRBETST,0)) D
|
---|
35 | . . S LRBENLT=$O(^LAM("C",LRNM(I)_" ",0)) Q:'LRBENLT
|
---|
36 | . . S LRN=0 F S LRN=$O(^LAM(LRBENLT,4,"AC","CPT",LRN)) Q:LRN<1 D
|
---|
37 | . . . S LRX=$G(^LAM(LRBENLT,4,LRN,0)) Q:'LRX D
|
---|
38 | . . . . Q:'$P(LRX,U,3)!($P(LRX,U,3)>LRBECDT)!($P(LRX,U,4)&($P(LRX,U,4)<LRBECDT))
|
---|
39 | . . . . S LRBECPT=+LRX
|
---|
40 | . . . . I '$P($$CPT^ICPTCOD(LRBECPT,LRBECDT),U,7) Q
|
---|
41 | . . . . S LRBECPT(LRBETST,($G(LRI)+1),LRBECPT)="WKLD CODE-"_LRNM(I),LRI=$G(LRI)+1
|
---|
42 | . . . . I LRI>1,LRBECPT(LRBETST,LRI,LRBECPT)=$G(LRBECPT(LRBETST,($G(LRI)-1),LRBECPT)) D
|
---|
43 | . . . . . S LRBECPT(LRBETST,($G(LRI)-1),LRBECPT,"COUNT")=+$G(LRBECPT(LRBETST,($G(LRI)-1),LRBECPT,"COUNT"))+1
|
---|
44 | . . . . . K LRBECPT(LRBETST,LRI,LRBECPT) S LRI=$G(LRI)-1
|
---|
45 | ;Default Site/Spec CPT
|
---|
46 | SPCPT Q:$O(LRBECPT(LRBETST,0)) D
|
---|
47 | . S LRBECPT=$$GET1^DIQ(60,LRBETST_",","DEFAULT SITE/SPECIMEN CPT","E")
|
---|
48 | . I LRBECPT D
|
---|
49 | . . I '$P($$CPT^ICPTCOD(LRBECPT,LRBECDT),U,7) S LRBECPT="" Q
|
---|
50 | . . S LRBECPT(LRBETST,$G(LRI)+1,LRBECPT)="DEFAULT SITE/SPECIMEN CPT",LRI=$G(LRI)+1
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | SCPT(CPT,TDAT) ; Get the CPT/HCPCS Code
|
---|
54 | Q $$CPT^ICPTCOD(CPT,TDAT)
|
---|
55 | ;
|
---|
56 | GCPT(LRBETST,LRBECDT,LRSPEC) ; Get the CPT
|
---|
57 | N A,ARR,LRBEAX,LRBEIEN,LRBEAR60,X,XX
|
---|
58 | S LRBEIEN=LRSPEC_","_LRBETST_",",(LRI,LRBECPT)=""
|
---|
59 | D GETS^DIQ(60.01,LRBEIEN,"96*","I","LRBEAR60")
|
---|
60 | S A="" F S A=$O(LRBEAR60(60.196,A)) Q:A="" D
|
---|
61 | . Q:$G(LRBEAR60(60.196,A,1,"I"))=""
|
---|
62 | . S ARR($G(LRBEAR60(60.196,A,1,"I")))=$G(LRBEAR60(60.196,A,.01,"I"))
|
---|
63 | S XX=$P(LRBECDT,".",1)_"."_9999
|
---|
64 | S X=$O(ARR(XX),-1) I X D
|
---|
65 | .S LRBEAX=ARR(X)
|
---|
66 | .S LRBEAX=$$CPT^ICPTCOD(LRBEAX,LRBECDT)
|
---|
67 | .Q:'$P(LRBEAX,U,7)
|
---|
68 | .S LRBECPT(LRBETST,($G(LRI)+1),$P(LRBEAX,U))="SPECIMEN CPT",LRI=$G(LRI)+1
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | UPDOR(DFN,ORITEM,ORIEN,ORDX,ORSCEI) ; Update CIDC information from OERR
|
---|
72 | I $G(^XTMP("LRPCELOG",0)) D
|
---|
73 | . N LRLNOW,LRI
|
---|
74 | . F S LRLNOW=$$NOW^XLFDT Q:'$D(^XTMP("LRPCELOG",3,LRLNOW))
|
---|
75 | . S ^XTMP("LRPCELOG",3,LRLNOW)=DFN_U_ORITEM_U_ORIEN_U_"["_ORSCEI_"]"
|
---|
76 | . S LRI=0 F S LRI=$O(ORDX(LRI)) Q:LRI="" D
|
---|
77 | . . S ^XTMP("LRPCELOG",3,LRLNOW,"ORDX",LRI)=ORDX(LRI)
|
---|
78 | I $S('$O(ORDX(0)):1,ORSCEI="^^^^^":1,1:0) Q "O^No Diagnosis Entered"
|
---|
79 | N LRBEAR,LRBEDFN,LRDFN,LRBEIEN,LRODT,LRORD,LRSN,LRBERMS,LRBETN,LRBETYP
|
---|
80 | N LRBEVST,LRAA,LRLLOC,LRSAMP,LRSPEC,LRSB,LRBEY
|
---|
81 | S LRBERMS=1,LRORD=$P(ORITEM,";",1),LRODT=$P(ORITEM,";",2)
|
---|
82 | S LRSN=$P(ORITEM,";",3),LRBEIEN=LRSN_","_LRODT_","
|
---|
83 | S (LRBEDFN,LRDFN)=$$GET1^DIQ(69.01,LRBEIEN,.01,"I")
|
---|
84 | S LRSAMP=$$GET1^DIQ(69.01,LRBEIEN,3,"I")
|
---|
85 | S LRLLOC=$$GET1^DIQ(69.01,LRBEIEN,8,"I")
|
---|
86 | S LRSPEC=$$GET1^DIQ(69.02,"1,"_LRBEIEN,.01,"I") S:LRSPEC="" LRSPEC=72
|
---|
87 | I LRORD'=$$GET1^DIQ(69.01,LRBEIEN,9.5,"I") D Q LRBERMS
|
---|
88 | .S LRBERMS="0^"_$$EMSG(1)
|
---|
89 | I DFN'=$$GET1^DIQ(63,LRBEDFN_",",.03,"I") D Q LRBERMS
|
---|
90 | .S LRBERMS="0^"_$$EMSG(2)
|
---|
91 | S LRBEVST=$P($G(^LRO(69,LRODT,1,LRSN,"PCE")),";",1) D WORK
|
---|
92 | Q LRBERMS
|
---|
93 | ;
|
---|
94 | WORK ; Enter the updated information into file
|
---|
95 | N LRBEFND,LRBETNM,LRBETST,LRBEZ,LRBERES
|
---|
96 | S (LRBETN,LRBEFND)=0
|
---|
97 | F S LRBETN=$O(^LRO(69,LRODT,1,LRSN,2,LRBETN)) Q:LRBETN=""!('LRBETN) D
|
---|
98 | .Q:ORIEN'=$$GET1^DIQ(69.03,LRBETN_","_LRBEIEN,6,"I")
|
---|
99 | .S:'LRBEFND LRBEFND=1 S LRAA=""
|
---|
100 | .S LRBETST=$$GET1^DIQ(69.03,LRBETN_","_LRBEIEN,.01,"I")
|
---|
101 | .S LRBETNM=$$GET1^DIQ(60,LRBETST_",",.01,"I")
|
---|
102 | .S LRBEZ(LRBETN)=LRBETST_"^"_LRBETNM K LRBEAR
|
---|
103 | .D BLRSB(.LRSB,LRBETN_","_LRBEIEN,LRBETST,.LRBEY)
|
---|
104 | .D KILL(LRODT,LRSN,LRBETN),SET(DFN,.ORDX,ORSCEI)
|
---|
105 | .D SDG1(LRODT,LRSN,LRBETN,DFN,.LRBEAR)
|
---|
106 | I 'LRBEFND S LRBERMS="0^"_$$EMSG(3) Q
|
---|
107 | I LRBEVST'="",LRAA'="" S LRBERES=1 D BAWRK^LRBEBA(LRODT,LRSN,1,.LRBEY,.LRBEZ,"",LRBEVST,"",ORIEN)
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | KILL(LRBEODT,LRBESN,LRBETN) ; Kill the existing DGX and SC/EI
|
---|
111 | N DA,DIK
|
---|
112 | S DA(1)=LRBETN,DA(2)=LRSN,DA(3)=LRODT
|
---|
113 | S DA="" F S DA=$O(^LRO(69,DA(3),1,DA(2),2,DA(1),2,DA)) Q:DA="" D
|
---|
114 | .S DIK="^LRO(69,"_DA(3)_","_1_","_DA(2)_","_2_","_DA(1)_","_2_","
|
---|
115 | .D ^DIK
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | SET(DFN,ORDX,ORSCEI) ; Set #69 with new DGX and SC/EI
|
---|
119 | N LRBEA
|
---|
120 | S LRBEA="" F S LRBEA=$O(ORDX(LRBEA)) Q:LRBEA="" D
|
---|
121 | .S LRBEAR(DFN,"LRBEDGX",LRBEA,$G(ORDX(LRBEA)))="^^^"_ORSCEI
|
---|
122 | .S:LRBEA=1 $P(LRBEAR(DFN,"LRBEDGX",LRBEA,$G(ORDX(LRBEA))),U,11)=1
|
---|
123 | Q
|
---|
124 | ;
|
---|
125 | SDG1(LRODT,LRSN,LRBETN,DFN,LRBEAR) ; Set the diagnois
|
---|
126 | ; and indicators file #69
|
---|
127 | N LRBEA,LRBEFIL,LRBEIEN,LRFDA,LRFDAIEN,LRERR,LRBEPDGX,LRBETNUM
|
---|
128 | S LRBEFIL=69.05,LRBETNUM=$O(^LRO(69,LRODT,1,LRSN,2,LRBETN,2,""),-1)+1
|
---|
129 | S LRBEA="" F S LRBEA=$O(LRBEAR(DFN,"LRBEDGX",LRBEA)) Q:LRBEA="" D
|
---|
130 | .S LRBEPDGX=""
|
---|
131 | .F S LRBEPDGX=$O(LRBEAR(DFN,"LRBEDGX",LRBEA,LRBEPDGX)) Q:LRBEPDGX="" D
|
---|
132 | ..S LRBEPTDT=$G(LRBEAR(DFN,"LRBEDGX",LRBEA,LRBEPDGX))
|
---|
133 | ..S LRBEIEN="+"_LRBETNUM_","_LRBETN_","_LRSN_","_LRODT_","
|
---|
134 | ..S LRFDAIEN(LRBETNUM)=LRBETNUM,LRFDA(99,LRBEFIL,LRBEIEN,.01)=LRBEPDGX
|
---|
135 | ..S:$P(LRBEPTDT,U,6)'="" LRFDA(99,LRBEFIL,LRBEIEN,1)=$P(LRBEPTDT,U,6)
|
---|
136 | ..S:$P(LRBEPTDT,U,10)'="" LRFDA(99,LRBEFIL,LRBEIEN,2)=$P(LRBEPTDT,U,10)
|
---|
137 | ..S:$P(LRBEPTDT,U,4)'="" LRFDA(99,LRBEFIL,LRBEIEN,3)=$P(LRBEPTDT,U,4)
|
---|
138 | ..S:$P(LRBEPTDT,U,5)'="" LRFDA(99,LRBEFIL,LRBEIEN,4)=$P(LRBEPTDT,U,5)
|
---|
139 | ..S:$P(LRBEPTDT,U,7)'="" LRFDA(99,LRBEFIL,LRBEIEN,5)=$P(LRBEPTDT,U,7)
|
---|
140 | ..S:$P(LRBEPTDT,U,8)'="" LRFDA(99,LRBEFIL,LRBEIEN,6)=$P(LRBEPTDT,U,8)
|
---|
141 | ..S:$P(LRBEPTDT,U,9)'="" LRFDA(99,LRBEFIL,LRBEIEN,7)=$P(LRBEPTDT,U,9)
|
---|
142 | ..S:$P(LRBEPTDT,U,11)=1 LRFDA(99,LRBEFIL,LRBEIEN,8)=1 ;Is Primary?
|
---|
143 | ..S LRBETNUM=LRBETNUM+1
|
---|
144 | D UPDATE^DIE("","LRFDA(99)","LRFDAIEN","LRERR")
|
---|
145 | Q
|
---|
146 | ;
|
---|
147 | EMSG(LRBETYP) ; Return Error Message
|
---|
148 | N LRBEEMS,LRBETYPN
|
---|
149 | S:LRBETYP=1 LRBETYPN="Order Number" S:LRBETYP=2 LRBETYPN="DFN"
|
---|
150 | S:LRBETYP=3 LRBETYPN="Orderable Item"
|
---|
151 | S LRBEEMS="Possible reasons for failure is the "_LRBETYPN_" did not match."
|
---|
152 | Q LRBEEMS
|
---|
153 | ;
|
---|
154 | BLRSB(LRSB,LRBEIENT,LRBETST,LRBEY) ; Build the LRSB global
|
---|
155 | N LRBESS,LRBEIDT,LRBESB,LRBEAA,LRBEAD,LRBEAN,LRBEIEN2,LRBET,NX,XX
|
---|
156 | S (LRAD,LRBEAD)=$$GET1^DIQ(69.03,LRBEIENT,2,"I")
|
---|
157 | S (LRAA,LRBEAA)=$$GET1^DIQ(69.03,LRBEIENT,3,"I") Q:LRAA=""
|
---|
158 | S (LRAN,LRBEAN)=$$GET1^DIQ(69.03,LRBEIENT,4,"I")
|
---|
159 | S LRBEIEN2=LRBEAN_","_LRBEAD_","_LRBEAA_","
|
---|
160 | S (LRSS,LRBESS)=$$GET1^DIQ(68,LRBEAA_",",.02,"I")
|
---|
161 | S (LRIDT,LRBEIDT)=$$GET1^DIQ(68.02,LRBEIEN2,13.5,"I")
|
---|
162 | S XX=$P($P(^LAB(60,LRBETST,0),U,5),";",2) I XX D
|
---|
163 | .S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
|
---|
164 | .I LRSB(XX)="" K LRSB(XX) Q
|
---|
165 | .I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
|
---|
166 | .S LRBEY(LRBETST,XX)=""
|
---|
167 | S NX=0 F S NX=$O(^LAB(60,LRBETST,2,NX)) Q:'NX D
|
---|
168 | .S LRBET=+^LAB(60,LRBETST,2,NX,0)
|
---|
169 | .S XX=$P($P(^LAB(60,LRBET,0),U,5),";",2) I XX D
|
---|
170 | ..S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
|
---|
171 | ..I LRSB(XX)="" K LRSB(XX) Q
|
---|
172 | ..I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
|
---|
173 | ..S LRBEY(LRBETST,XX)=""
|
---|
174 | Q
|
---|
175 | ;
|
---|
176 | CHKINP(LRDFN,LRBEDAT) ; Check for Inpatient Status)
|
---|
177 | N VAIN,VAINDT
|
---|
178 | I '$G(DFN) D
|
---|
179 | . S DFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
|
---|
180 | . S LRDPF=$$GET1^DIQ(63,LRDFN_",",.02,"I")
|
---|
181 | I $G(LRDPF)'=2 Q 0
|
---|
182 | S VAINDT=LRBEDAT D INP^VADPT
|
---|
183 | Q $G(VAIN(1))
|
---|
184 | ;
|
---|
185 | RFLX() ; Ask the Reflex Question
|
---|
186 | N DIR,DUOUT,DTOUT,DIRUT,Y
|
---|
187 | S DIR("A")="Is this a Reflex Test? (Y/N): "
|
---|
188 | S DIR(0)="YA" D ^DIR
|
---|
189 | I $D(DIRUT)!($D(DUOUT)!$D(DTOUT)) Q -1
|
---|
190 | Q +Y
|
---|
191 | ;
|
---|
192 | DEFAULT ;Set Default diagnosis
|
---|
193 | N LRD,LRI,LRX,LRY,LRD
|
---|
194 | S (LRBEDMSG,LRDBEDGX)=""
|
---|
195 | S LRI=$O(^LRO(69,LRODT,1,LRSN,2,1,2,0)) Q:LRI<1
|
---|
196 | S LRD=$G(^LRO(69,LRODT,1,LRSN,2,1,2,LRI,0))
|
---|
197 | Q:'LRD
|
---|
198 | S LRDBEDGX=+LRD
|
---|
199 | S LRBEDMSG=+LRD_"^^^"_$P(LRD,U,4)_U_$P(LRD,U,5)_U_$P(LRD,U,2)
|
---|
200 | S LRBEDMSG=LRBEDMSG_U_$P(LRD,U,6)_U_$P(LRD,U,7)_U_$P(LRD,U,8)
|
---|
201 | S LRBEDMSG=LRBEDMSG_U_$P(LRD,U,3)_U_$P(LRD,U,9)
|
---|
202 | W:$G(LRDBUG) !,LRBEDMSG
|
---|
203 | Q
|
---|