1 | LRBEBA5 ;DALOI/JAH/FHS - PENDING PANEL ROLLUP TO PCE ;11/26/2005
|
---|
2 | ;;5.2;LAB SERVICE;**291,337**;Sep 27, 1994;Build 2
|
---|
3 | ;
|
---|
4 | EN ;Entry point from LRNIGHT
|
---|
5 | ;check rollup date
|
---|
6 | N LRBEROLL,LRBERLDT,DATX,YY,MM,STARTDT,ENDDT,NEWDT,TOTPAN
|
---|
7 | S LRBEROLL=0,LRBERLDT=$P(^LAB(69.9,1,"VSIT"),U,2)
|
---|
8 | S YY=$E(LRBERLDT,1,3),MM=+$E(LRBERLDT,4,5)
|
---|
9 | S MM=$S(MM=1:12,1:MM-1) S YY=$S(MM=12:YY-1,1:YY) I $L(MM)=1 S MM="0"_MM
|
---|
10 | S STARTDT=YY_MM_"01",ENDDT=YY_MM_"31"_".999999"
|
---|
11 | S DATX=$O(^LRO(69,"APP",0))
|
---|
12 | I DATX<STARTDT S STARTDT=DATX-1
|
---|
13 | I LRBERLDT=DT S LRBEROLL=1
|
---|
14 | I (LRBERLDT<DT) I DATX<ENDDT S LRBEROLL=1
|
---|
15 | I LRBEROLL D
|
---|
16 | .K ^TMP("LRROLLUP",$J)
|
---|
17 | .S ^TMP("LRROLLUP",$J,0)=$$NOW^XLFDT_"^"
|
---|
18 | .D START
|
---|
19 | .D NEWDT
|
---|
20 | .S ^TMP("LRROLLUP",$J,0)=^TMP("LRROLLUP",$J,0)_$$NOW^XLFDT()
|
---|
21 | .D MAILRPT
|
---|
22 | Q
|
---|
23 | ;
|
---|
24 | START ;Loop thru pending panel xref in file #69
|
---|
25 | N LINE,LRXDT,LRODT,LRSN,LRTN
|
---|
26 | S LINE=100,TOTPAN=0
|
---|
27 | S LRXDT=STARTDT F S LRXDT=$O(^LRO(69,"APP",LRXDT)) Q:'LRXDT Q:LRXDT>ENDDT D
|
---|
28 | .S LRODT=0 F S LRODT=$O(^LRO(69,"APP",LRXDT,LRODT)) Q:'LRODT D
|
---|
29 | ..S LRSN=0 F S LRSN=$O(^LRO(69,"APP",LRXDT,LRODT,LRSN)) Q:'LRSN D
|
---|
30 | ...S LRTN=0 F S LRTN=$O(^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN)) Q:'LRTN D
|
---|
31 | ....D SET
|
---|
32 | ....I $D(LRBEY)>1 D BAWRK^LRBEBA(LRODT,LRSN,LRTN,.LRBEY,.LRTEST,"","",LRBEROLL)
|
---|
33 | ....I $D(LRBECPT)>1 D SETRPT
|
---|
34 | ....D CLEAN
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | SET ;Setup background variables for call to BAWRK^LRBEBA
|
---|
38 | N LRBET,LRBEIEN,LRFDA,I,NX,XX
|
---|
39 | S LRBEIEN=LRSN_","_LRODT_","
|
---|
40 | S LRDFN=$$GET1^DIQ(69.01,LRBEIEN,.01,"I")
|
---|
41 | S LRORDER=$$GET1^DIQ(69.01,LRBEIEN,9.5,"I")
|
---|
42 | S LRBEIEN=LRTN_","_LRSN_","_LRODT_","
|
---|
43 | I $$GET1^DIQ(69.03,LRBEIEN,8,"I")="CA" D Q
|
---|
44 | .;clear 'pending panel' xref of not performed panel
|
---|
45 | .S LRFDA(1,69.03,LRBEIEN,22.1)=0
|
---|
46 | .D FILE^DIE("KS","LRFDA(1)","ERR")
|
---|
47 | S LRBETST=$$GET1^DIQ(69.03,LRBEIEN,.01,"I")
|
---|
48 | I LRBETST="" K ^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN) Q
|
---|
49 | S LRAD=+$$GET1^DIQ(69.03,LRBEIEN,2,"I")
|
---|
50 | S LRAA=+$$GET1^DIQ(69.03,LRBEIEN,3,"I")
|
---|
51 | S LRAN=+$$GET1^DIQ(69.03,LRBEIEN,4,"I")
|
---|
52 | S LRUID=$$GET1^DIQ(69.03,LRBEIEN,13,"I")
|
---|
53 | S LRBECDT=$$GET1^DIQ(69.03,LRBEIEN,22,"I")
|
---|
54 | S LRBEDFN=$$GET1^DIQ(63,LRDFN,.03,"I")
|
---|
55 | S LRSS=$$GET1^DIQ(68,LRAA,.02,"I")
|
---|
56 | I $G(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRBETST,0))="" K ^LRO(69,"APP",LRXDT,LRODT,LRSN,LRTN) Q
|
---|
57 | S LRIDT=$P($G(^LRO(68,LRAA,1,LRAD,1,LRAN,3)),U,5)
|
---|
58 | S I=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,5,0))
|
---|
59 | I I S X=^LRO(68,LRAA,1,LRAD,1,LRAN,5,I,0),LRSPEC=$P(X,U,1),LRSAMP=$P(X,U,2)
|
---|
60 | S NX=0 F S NX=$O(^LAB(60,LRBETST,2,NX)) Q:'NX D
|
---|
61 | .S LRBET=+^LAB(60,LRBETST,2,NX,0)
|
---|
62 | .S XX=$P($P(^LAB(60,LRBET,0),U,5),";",2)
|
---|
63 | .;if null XX, possibly another panel
|
---|
64 | .I 'XX D ARRS(LRBET,LRBETST) Q
|
---|
65 | .S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
|
---|
66 | .I LRSB(XX)="" K LRSB(XX) Q
|
---|
67 | .I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
|
---|
68 | .I $P(LRSB(XX),U,13) K LRSB(XX) Q
|
---|
69 | .S LRBEY(LRBETST,XX)=""
|
---|
70 | I $D(LRBEY)>1 D
|
---|
71 | .S LRTEST(1)=LRBETST_U_^LAB(60,LRBETST,0),LRTEST(1,"P")=LRBETST_U_$$NLT^LRVER1(LRBETST)
|
---|
72 | Q
|
---|
73 | ;
|
---|
74 | ARRS(XTEST,PTEST) ;
|
---|
75 | N NX,X,XX
|
---|
76 | S NX=0 F S NX=$O(^LAB(60,XTEST,2,NX)) Q:'NX D
|
---|
77 | .S X=+^LAB(60,XTEST,2,NX,0)
|
---|
78 | .S XX=$P($P(^LAB(60,X,0),U,5),";",2)
|
---|
79 | .Q:'XX
|
---|
80 | .S LRSB(XX)=$G(^LR(LRDFN,LRSS,LRIDT,XX))
|
---|
81 | .I LRSB(XX)="" K LRSB(XX) Q
|
---|
82 | .I "pending^canc"[$P(LRSB(XX),U,1) K LRSB(XX) Q
|
---|
83 | .I $P(LRSB(XX),U,13) K LRSB(XX) Q
|
---|
84 | .S LRBEY(PTEST,XX)=""
|
---|
85 | Q
|
---|
86 | ;
|
---|
87 | CLEAN ;Clean-up variables
|
---|
88 | K DFN,LRBEY,LRTEST,LRSB,LRBECPT,LRDFN,LRBEDFN,LRORDER
|
---|
89 | K LRBETST,LRBEVST,LRAA,LRAN,LRAD,LRUID,LRBECDT,LRSS,LRIDT,LRSAMP,LRSPEC
|
---|
90 | Q
|
---|
91 | ;
|
---|
92 | SETRPT ;Set veriables into ^TMP( for report
|
---|
93 | N SETLN,X,C,N,T,TNM,XCODE,LRPCE,LRBETST,LRBETSTN
|
---|
94 | S TOTPAN=TOTPAN+1
|
---|
95 | S SETLN="S LINE=LINE+1,^TMP(""LRROLLUP"",$J,LINE,0)=X"
|
---|
96 | S LRPCE=$P(^LRO(69,LRODT,1,LRSN,"PCE"),U,1)
|
---|
97 | Q:LRPCE=""
|
---|
98 | S LRBETST=$P(LRTEST(1),U,1)
|
---|
99 | S LRBETSTN=$P(^LAB(60,LRBETST,0),U,1),LRBETSTN="["_LRBETST_"] "_$E(LRBETSTN,1,30)
|
---|
100 | S X=$$SETSTR^VALM1(LRORDER,"",1,10),X=$$SETSTR^VALM1(LRUID,X,12,10)
|
---|
101 | S X=$$SETSTR^VALM1(LRPCE,X,26,10),X=$$SETSTR^VALM1(LRBETSTN,X,40,38) X SETLN
|
---|
102 | S T=0,N=0 F S T=$O(LRBECPT(T)) Q:'T D
|
---|
103 | . S N=N+1,TNM="["_T_"] "
|
---|
104 | . I N=1 S X=$$SETSTR^VALM1("CPT Code(s) passed to PCE:","",12,28)
|
---|
105 | . I N>1 S X=""
|
---|
106 | . S C=$O(LRBECPT(T,1,0)),XCODE=$P($$CPT^ICPTCOD(C),U,2,3),XCODE=$TR(XCODE,"^"," "),XCODE=$E(XCODE,1,30)
|
---|
107 | . S XCODE=TNM_XCODE,X=$$SETSTR^VALM1(XCODE,X,40,38) X SETLN
|
---|
108 | S X=" " X SETLN
|
---|
109 | Q
|
---|
110 | ;
|
---|
111 | NEWDT ;Set new roll-up date
|
---|
112 | N DD,MM,MM2,X1,X,YY
|
---|
113 | Q:'$G(LRBERLDT)
|
---|
114 | S MM=+$E(LRBERLDT,4,5) S MM2=$S(MM=12:1,1:MM+1) S:$L(MM2)=1 MM2="0"_MM2
|
---|
115 | S DD=$E(LRBERLDT,6,7) S YY=$E(LRBERLDT,1,3) S:+MM2=1 YY=YY+1
|
---|
116 | S NEWDT=YY_MM2_DD
|
---|
117 | S X1=NEWDT,X=+$E(NEWDT,4,5),X=$S("^1^3^5^7^8^10^12^"[(U_X_U):31,X'=2:30,$E(X1,1,3)#4:28,1:29)
|
---|
118 | I $E(X1,6,7)'<X S $E(NEWDT,6,7)=X-1
|
---|
119 | S $P(^LAB(69.9,1,"VSIT"),U,2)=NEWDT
|
---|
120 | Q
|
---|
121 | ;
|
---|
122 | MAILRPT ;Set intro & send rollup report to mail group
|
---|
123 | N XMY,XMSUB,XMDUZ,XMTEXT,XMZ,X,X1,Y,SETLN,LINE,DASH
|
---|
124 | S ENDDT=$P(ENDDT,".",1),X=ENDDT D
|
---|
125 | .S X1=X,X=+$E(X,4,5),X=$S("^1^3^5^7^8^10^12^"[(U_X_U):31,X'=2:30,$E(X1,1,3)#4:28,1:29)
|
---|
126 | .I $E(X1,6,7)>X S $E(ENDDT,6,7)=X
|
---|
127 | S LINE=0,SETLN="S LINE=LINE+1,^TMP(""LRROLLUP"",$J,LINE,0)=X"
|
---|
128 | S $P(DASH,"-",78)=""
|
---|
129 | S X=" " X SETLN
|
---|
130 | S X="Normally, panel tests flagged as 'AMA/Billable' should be reported to PCE" X SETLN
|
---|
131 | S X="using the CPT Code of the panel. In order for the panel CPT Code to be" X SETLN
|
---|
132 | S X="sent to PCE, a verified result must be present for each 'required' atomic" X SETLN
|
---|
133 | S X="test comprising the panel." X SETLN
|
---|
134 | S X=" " X SETLN
|
---|
135 | S X="This report provides a listing of AMA/Billable panel tests that were pending" X SETLN
|
---|
136 | S X="completion on the Lab Roll-up Date. The Sample Collection Date for the" X SETLN
|
---|
137 | S X="panel test fell within the date range indicated by Start Date and End Date." X SETLN
|
---|
138 | S X="One or more of the 'required' atomic tests comprising the panel were still" X SETLN
|
---|
139 | S X="pending on the Lab Roll-up Date. Therefore, those atomic tests that had" X SETLN
|
---|
140 | S X="been verified have now been sent to PCE. If other atomic tests from the" X SETLN
|
---|
141 | S X="panels listed are verified later, each will be sent to PCE using the CPT" X SETLN
|
---|
142 | S X="Code for the atomic test." X SETLN
|
---|
143 | S X=" " X SETLN
|
---|
144 | S X=" " X SETLN
|
---|
145 | S Y=LRBERLDT D DD^%DT S LRBERLDT=Y
|
---|
146 | S X="Lab Roll-up Date : "_LRBERLDT X SETLN
|
---|
147 | S Y=NEWDT D DD^%DT S NEWDT=Y
|
---|
148 | S X="Next Lab Roll-up Date : "_NEWDT X SETLN
|
---|
149 | S Y=STARTDT D DD^%DT S STARTDT=Y
|
---|
150 | S X="Start Date : "_STARTDT X SETLN
|
---|
151 | S Y=ENDDT D DD^%DT S ENDDT=Y
|
---|
152 | S X="End Date : "_ENDDT X SETLN
|
---|
153 | S X="Total # Panels : "_TOTPAN X SETLN
|
---|
154 | S X=" " X SETLN
|
---|
155 | S X=" " X SETLN
|
---|
156 | S X=$$SETSTR^VALM1("Unique","",12,10),X=$$SETSTR^VALM1("PCE",X,26,10) X SETLN
|
---|
157 | S X=$$SETSTR^VALM1("Order #","",1,10),X=$$SETSTR^VALM1("Identifier",X,12,10),X=$$SETSTR^VALM1("Encounter",X,26,10)
|
---|
158 | S X=$$SETSTR^VALM1("Panel Test",X,40,38) X SETLN
|
---|
159 | S X=$$SETSTR^VALM1(DASH,"",1,78) X SETLN
|
---|
160 | S Y=DT D DD^%DT S XMSUB="Report on Roll-up to PCE for "_Y
|
---|
161 | S XMDUZ=.5
|
---|
162 | S XMY("G.LMI")=""
|
---|
163 | S XMTEXT="^TMP(""LRROLLUP"",$J,"
|
---|
164 | D ^XMD
|
---|
165 | K ^TMP("LRROLLUP",$J)
|
---|
166 | Q
|
---|