1 | IBCNERP2 ;DAOU/BHS - IBCNE IIV RESPONSE REPORT COMPILE ;03-JUN-2002
|
---|
2 | ;;2.0;INTEGRATED BILLING;**184,271**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Input vars from IBCNERP1:
|
---|
6 | ; IBCNERTN="IBCNERP1"
|
---|
7 | ; IBCNESPC("BEGDT")=Start Dt for rpt
|
---|
8 | ; IBCNESPC("ENDDT")=End Dt for rpt
|
---|
9 | ; IBCNESPC("PYR")=Pyr IEN for rpt. If "", then show all.
|
---|
10 | ; IBCNESPC("PAT")=Pt IEN for rpt. If "", then show all.
|
---|
11 | ; IBCNESPC("TYPE")=A (All Responses) for date range OR M (Most Recent
|
---|
12 | ; Responses) for date range (by unique Pyr/Pt pair)
|
---|
13 | ; IBCNESPC("SORT")=1 (Pyr nm) OR 2 (Pt nm)
|
---|
14 | ; IBCNESPC("TRCN")=Trace #^IEN, if non-null, all other params are null
|
---|
15 | ; IBCNESPC("RFLAG")=Report Flag used to indicate which report is being
|
---|
16 | ; run. Response Report (0), Inactive Report (1), or Ambiguous
|
---|
17 | ; Report (2).
|
---|
18 | ; IBCNESPC("DTEXP")=Expiration date used in the inactive policy report
|
---|
19 | ;
|
---|
20 | ; Output vars used by IBCNERP3:
|
---|
21 | ; Structure of ^TMP based on IIV Response File (#365)
|
---|
22 | ; IBCNERTN="IBCNERP1"
|
---|
23 | ; SORT1=PyrNm (SORT=1) or PtNm(SORT=2)
|
---|
24 | ; SORT2=PtNm (SORT=1) or PyrNm (SORT=2)
|
---|
25 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,CNT,0/1) based on ^IBCN(365,DA,0/1)
|
---|
26 | ; CNT=Seq ct
|
---|
27 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,2,EBCT) based on ^IBCN(365,DA,2,EBCT,0)
|
---|
28 | ; EBCT = Elig/Benefit multiple field IEN (ptr to 365.02)
|
---|
29 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,2,EBCT,NTCT) based on
|
---|
30 | ; ^IBCN(365,DA,2,EB,0,NT,0) Notes for EB seg
|
---|
31 | ; NTCT = Notes Ct may not equal Notes IEN (365.22) if ln must wrap
|
---|
32 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,3,CNCT) based on ^IBCN(365,DA,3,CNCT,0)
|
---|
33 | ; CNCT = Contact Person multiple field IEN (ptr to 365.03)
|
---|
34 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,4,CT) based on ^IBCN(365,DA,4)
|
---|
35 | ; CT=1 if len of text <=70, else ln is split
|
---|
36 | ; ^TMP($J,IBCNERTN,SORT1,SORT2,5,CT) based on # lns of comments reqd
|
---|
37 | ; CT=1 to display future retransmission date
|
---|
38 | ;
|
---|
39 | ; Must call at EN
|
---|
40 | Q
|
---|
41 | ;
|
---|
42 | ;
|
---|
43 | EN(IBCNERTN,IBCNESPC) ; Entry
|
---|
44 | ; Init
|
---|
45 | N IBDT,IBBDT,IBPY,IBPYR,IBPT
|
---|
46 | N IBPAT,IBPTR,SORT1,SORT2,RPTDATA,IBTOT
|
---|
47 | N PYRIEN,PATIEN,IBTRC,IBTYP,IBCT,IBSRT,IBEXP,FRST,TQN,DONTINC,IPRF
|
---|
48 | ;
|
---|
49 | I '$D(ZTQUEUED),$G(IOST)["C-" W !!,"Compiling report data ..."
|
---|
50 | ;
|
---|
51 | ; Temp ct
|
---|
52 | S (IBTOT,IBCT)=0
|
---|
53 | ;
|
---|
54 | ; Kill scratch globals
|
---|
55 | K ^TMP($J,IBCNERTN),^TMP($J,IBCNERTN_"X")
|
---|
56 | ;
|
---|
57 | S IBTRC=$G(IBCNESPC("TRCN"))
|
---|
58 | ; Skip for TRACE#
|
---|
59 | I IBTRC'="" G TRCN
|
---|
60 | ;
|
---|
61 | S IBBDT=IBCNESPC("BEGDT")
|
---|
62 | S IBPY=$G(IBCNESPC("PYR"))
|
---|
63 | S IBPT=$G(IBCNESPC("PAT"))
|
---|
64 | S IBTYP=$G(IBCNESPC("TYPE"))
|
---|
65 | S IBSRT=$G(IBCNESPC("SORT"))
|
---|
66 | S IBEXP=$G(IBCNESPC("DTEXP"))
|
---|
67 | S IPRF=$G(IBCNESPC("RFLAG"))
|
---|
68 | ;
|
---|
69 | ; Loop thru the IIV Response File (#365) by Date/Time Response Rec X-Ref
|
---|
70 | ; S IBDT=$O(^IBCN(365,"AD",IBCNESPC("ENDDT")))
|
---|
71 | ; Initialize IBDT to end date
|
---|
72 | S IBDT=IBCNESPC("ENDDT")_".999999"
|
---|
73 | F S IBDT=$O(^IBCN(365,"AD",IBDT),-1) Q:IBDT=""!($P(IBDT,".",1)<IBBDT) D Q:$G(ZTSTOP)
|
---|
74 | . S PYRIEN=$S(IBPY="":0,1:$O(^IBCN(365,"AD",IBDT,IBPY),-1))
|
---|
75 | . F S PYRIEN=$O(^IBCN(365,"AD",IBDT,PYRIEN)) Q:'PYRIEN!((IBPY'="")&(PYRIEN'=IBPY)) D Q:$G(ZTSTOP)
|
---|
76 | .. I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 Q
|
---|
77 | .. ; Pyr nm from Pyr File (#365.12)
|
---|
78 | .. S IBPYR=$P($G(^IBE(365.12,PYRIEN,0)),U)
|
---|
79 | .. I IBPYR="" Q
|
---|
80 | .. S PATIEN=$S(IBPT="":0,1:$O(^IBCN(365,"AD",IBDT,PYRIEN,IBPT),-1))
|
---|
81 | .. F S PATIEN=$O(^IBCN(365,"AD",IBDT,PYRIEN,PATIEN)) Q:'PATIEN!((IBPT'="")&(PATIEN'=IBPT)) D Q:$G(ZTSTOP)
|
---|
82 | ... ; Pt nm from Pt File (#2)
|
---|
83 | ... S IBPAT=$P($G(^DPT(PATIEN,0)),U)
|
---|
84 | ... I IBPAT="" Q
|
---|
85 | ... S IBPTR=0
|
---|
86 | ... F S IBPTR=$O(^IBCN(365,"AD",IBDT,PYRIEN,PATIEN,IBPTR)) Q:'IBPTR D Q:$G(ZTSTOP)
|
---|
87 | .... S IBTOT=IBTOT+1
|
---|
88 | .... ; Since non-positive identifications are no longer placed in the
|
---|
89 | .... ; insurance buffer, two new reports were added to allow users to
|
---|
90 | .... ; view the responses. One report (IPFR=1) shows only responses
|
---|
91 | .... ; of inactive policies. The other (IPFR=2) shows ambiguous responses.
|
---|
92 | .... ; Any response that is not active nor inactive is considered
|
---|
93 | .... ; ambiguous for the purposes of this report.
|
---|
94 | .... I IPRF D Q:DONTINC
|
---|
95 | ..... N EBIC,NODE1,PCD
|
---|
96 | ..... S DONTINC=1
|
---|
97 | ..... S TQN=$P($G(^IBCN(365,IBPTR,0)),U,5) Q:TQN="" ; TQ ien (#365.1)
|
---|
98 | ..... S NODE1=$G(^IBCN(365,IBPTR,1))
|
---|
99 | ..... I $P($G(^IBCN(365.1,TQN,0)),U,11)="V" Q ; If verification quit
|
---|
100 | ..... I IPRF=1,($P(NODE1,U,12)="")!($P(NODE1,U,12)<$G(IBEXP)) Q
|
---|
101 | ..... S FRST=$O(^IBCN(365,IBPTR,2,0))
|
---|
102 | ..... I FRST="" Q
|
---|
103 | ..... S PCD=$P($G(^IBCN(365,IBPTR,2,FRST,0)),U,6)
|
---|
104 | ..... I PCD]"",PCD'="IIV Eligibility Determination" Q
|
---|
105 | ..... S EBIC=$$GET1^DIQ(365.02,FRST_","_IBPTR_",","ELIGIBILITY/BENEFIT INFO:CODE")
|
---|
106 | ..... I PCD]"",IPRF=1,EBIC'=6 Q
|
---|
107 | ..... I PCD]"",IPRF=2,EBIC=6!(EBIC=1) Q
|
---|
108 | ..... I $P(NODE1,U,14)]"" Q ; Error Condition
|
---|
109 | ..... I $P(NODE1,U,15)]"" Q ; Error Action
|
---|
110 | ..... I $P($G(^IBCN(365,IBPTR,4)),U)]"" Q ; Error Text
|
---|
111 | ..... S DONTINC=0
|
---|
112 | ....;
|
---|
113 | .... I $D(ZTQUEUED),IBTOT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q
|
---|
114 | .... ; Sort fields
|
---|
115 | .... S SORT1=$S(IBSRT=1:IBPYR,1:IBPAT)
|
---|
116 | .... S SORT2=$S(IBSRT=1:IBPAT,1:IBPYR)
|
---|
117 | .... ; Only check for Most Recent - Pyr/Pt pair
|
---|
118 | .... I IBTYP="M",$D(^TMP($J,IBCNERTN_"X",PYRIEN,PATIEN)) Q
|
---|
119 | .... ; Set temp ind.
|
---|
120 | .... I IBTYP="M" S ^TMP($J,IBCNERTN_"X",PYRIEN,PATIEN)=""
|
---|
121 | .... ; Update ct
|
---|
122 | .... S IBCT=IBCT+1
|
---|
123 | .... ; Sort data - build RPTDATA array
|
---|
124 | .... K RPTDATA
|
---|
125 | .... D GETDATA^IBCNERPE(IBPTR,.RPTDATA)
|
---|
126 | .... ; Merge data from RPTDATA to ^TMP
|
---|
127 | .... ;M ^TMP($J,IBCNERTN,SORT1,SORT2,IBCT)=RPTDATA
|
---|
128 | .... N %X,%Y
|
---|
129 | .... S %X="RPTDATA("
|
---|
130 | .... S %Y="^TMP($J,IBCNERTN,SORT1,SORT2,IBCT,"
|
---|
131 | .... I $D(RPTDATA)#10=1 S ^TMP($J,IBCNERTN,SORT1,SORT2,IBCT)=RPTDATA
|
---|
132 | .... D %XY^%RCR K %X,%Y
|
---|
133 | ;
|
---|
134 | ; Purge index of duplicate Pyr/Pt combos
|
---|
135 | K ^TMP($J,IBCNERTN_"X")
|
---|
136 | ;
|
---|
137 | G EXIT
|
---|
138 | ;
|
---|
139 | TRCN ; Trace # proc.
|
---|
140 | S IBPTR=$P(IBTRC,U,2)
|
---|
141 | I IBPTR="" G EXIT
|
---|
142 | ; Sort the data - build RPTDATA array
|
---|
143 | KILL RPTDATA
|
---|
144 | D GETDATA^IBCNERPE(IBPTR,.RPTDATA)
|
---|
145 | ; Default sort - one record
|
---|
146 | ; Pyr nm from Pyr File (#365.12)
|
---|
147 | S PYRIEN=$P(RPTDATA(0),U,3)
|
---|
148 | I PYRIEN="" G EXIT
|
---|
149 | S SORT1=$P($G(^IBE(365.12,PYRIEN,0)),U,1)
|
---|
150 | I SORT1="" G EXIT
|
---|
151 | ; Pt nm from Pt File (#2)
|
---|
152 | S PATIEN=$P(RPTDATA(0),U,2)
|
---|
153 | I PATIEN="" G EXIT
|
---|
154 | S SORT2=$P($G(^DPT(PATIEN,0)),U,1)
|
---|
155 | I SORT2="" G EXIT
|
---|
156 | ; Merge data- RPTDATA to ^TMP
|
---|
157 | ;M ^TMP($J,IBCNERTN,SORT1,SORT2,1)=RPTDATA
|
---|
158 | N %X,%Y
|
---|
159 | S %X="RPTDATA("
|
---|
160 | S %Y="^TMP($J,IBCNERTN,SORT1,SORT2,1,"
|
---|
161 | I $D(RPTDATA)#10=1 S ^TMP($J,IBCNERTN,SORT1,SORT2,1)=RPTDATA
|
---|
162 | D %XY^%RCR K %X,%Y
|
---|
163 | ;
|
---|
164 | EXIT ;
|
---|
165 | Q
|
---|
166 | ;
|
---|
167 | X12(FILE,CODE,FLD) ; Output based on File # and X12 code
|
---|
168 | I $G(FILE)=""!($G(CODE)="") Q ""
|
---|
169 | ; Quit w/o label if not defined in File Def.
|
---|
170 | Q $$LBL(365.02,$G(FLD))_$P($G(^IBE(FILE,CODE,0)),U,2)
|
---|
171 | ;
|
---|
172 | LBL(FILE,FLD) ; Determine label from File Def.
|
---|
173 | N IBLBL
|
---|
174 | ;
|
---|
175 | I $G(FILE)=""!($G(FLD)="") Q ""
|
---|
176 | S IBLBL=$$GET1^DID(FILE,FLD,"","TITLE")
|
---|
177 | Q $S(IBLBL'="":IBLBL_": ",1:"")
|
---|
178 | ;
|
---|