1 | RCXVUTIL ;DAOU/ALA-AR Data Extract Utility Program ;29-JUL-03
|
---|
2 | ;;4.5;Accounts Receivable;**201**;Mar 20, 1995
|
---|
3 | ;
|
---|
4 | SPAR(REF) ; HL7 Segment Parsing
|
---|
5 | ; Input Parameter
|
---|
6 | ; REF = Array or global reference
|
---|
7 | ; Global or array should end with ')'
|
---|
8 | ; e.g. ^TMP($J,"XXX",#)
|
---|
9 | ;
|
---|
10 | ; Output Parameters
|
---|
11 | ; RCXSEG(#) = Each sequence of the segment in the array
|
---|
12 | ;
|
---|
13 | NEW ISCT,II,IJ,IK,ISDATA,ISPEC,ISBEG,ISEND,IS,LSDATA,IM,NPC
|
---|
14 | ;
|
---|
15 | S ISCT="",II=0,IS=0
|
---|
16 | F S ISCT=$O(@REF@(ISCT)) Q:ISCT="" D
|
---|
17 | . S IS=IS+1
|
---|
18 | . S ISDATA(IS)=$G(@REF@(ISCT))
|
---|
19 | . I $O(@REF@(ISCT))="" S ISDATA(IS)=ISDATA(IS)_HLFS
|
---|
20 | . S ISPEC(IS)=$L(ISDATA(IS),HLFS)
|
---|
21 | ;
|
---|
22 | S IM=0,LSDATA=""
|
---|
23 | LP S IM=IM+1 Q:IM>IS
|
---|
24 | S LSDATA=LSDATA_ISDATA(IM),NPC=ISPEC(IM)
|
---|
25 | F IJ=1:1:NPC-1 D
|
---|
26 | . S II=II+1,RCXSEG(II)=$$CLNSTR($P(LSDATA,HLFS,IJ),HL("ECH"),$E(HL("ECH")))
|
---|
27 | S LSDATA=$P(LSDATA,HLFS,NPC)
|
---|
28 | G LP
|
---|
29 | ;
|
---|
30 | CLNSTR(STRING,CHARS,SUBSEP) ; Remove extra trailing components and subcomponents
|
---|
31 | ; in the HL7 segment
|
---|
32 | ;
|
---|
33 | ; Input parameters
|
---|
34 | ; STRING - The data value to be 'cleansed'
|
---|
35 | ; CHARS - The component character to be removed
|
---|
36 | ; SUSEP - The subcomponent character to be removed
|
---|
37 | ;
|
---|
38 | N RTSTRING,NUMPEC,PEC
|
---|
39 | S RTSTRING=$$RTRIMCH(STRING,CHARS)
|
---|
40 | ; Now we have string without trailing chars, remove from subs
|
---|
41 | S NUMPEC=$L(RTSTRING,SUBSEP)
|
---|
42 | F PEC=1:1:NUMPEC S $P(RTSTRING,SUBSEP,PEC)=$$RTRIMCH($P(RTSTRING,SUBSEP,PEC),CHARS)
|
---|
43 | Q RTSTRING
|
---|
44 | ;
|
---|
45 | RTRIMCH(STR,CHRS) ; Remove the trailing chars from string
|
---|
46 | N R,L
|
---|
47 | S L=1,CHRS=$G(CHRS," ")
|
---|
48 | F R=$L(STR):-1:1 Q:CHRS'[$E(STR,R)
|
---|
49 | I L=R,(CHRS[$E(STR)) S STR=""
|
---|
50 | Q $E(STR,L,R)
|
---|
51 | ;
|
---|
52 | DFP(IBN) ; Date of First Payment Function
|
---|
53 | ; Input Parameter
|
---|
54 | ; IBN = IEN of the bill number from file 430
|
---|
55 | ;
|
---|
56 | N VAL,IBPAY,IBT,IBT0,IBT1
|
---|
57 | S VAL=0
|
---|
58 | ; No payments made.
|
---|
59 | I '$P($G(^PRCA(430,IBN,7)),U,7) Q ""
|
---|
60 | S (IBPAY,IBT)=0 F S IBT=$O(^PRCA(433,"C",IBN,IBT)) Q:'IBT D Q:IBPAY
|
---|
61 | . S IBT0=$G(^PRCA(433,IBT,0)),IBT1=$G(^(1))
|
---|
62 | . I $P(IBT0,U,4)'=2 Q ; Not complete.
|
---|
63 | . I $P(IBT1,U,2)'=2,$P(IBT1,U,2)'=34 Q ; Not a payment.
|
---|
64 | . S X=$S(+IBT1:+IBT1,1:$P(IBT1,U,9)\1),$P(VAL,U,4)=X,IBPAY=1
|
---|
65 | Q $P(VAL,U,4)
|
---|
66 | ;
|
---|
67 | DATE(X) ; Pass in External Date and get FileMan date format
|
---|
68 | ;
|
---|
69 | ; Input Parameter
|
---|
70 | ; X = a date in any regular date format
|
---|
71 | ; Output Parameter
|
---|
72 | ; Y = a date in FileMan format
|
---|
73 | ; Parameters
|
---|
74 | ; DIC(0) = FileMan date parameter
|
---|
75 | ;
|
---|
76 | I X["@" S %DT="T"
|
---|
77 | I $G(DIC(0))="" S DIC(0)=""
|
---|
78 | D ^%DT
|
---|
79 | I Y=-1 S Y=""
|
---|
80 | K DIC,%DT
|
---|
81 | Q Y
|
---|
82 | ;
|
---|
83 | TASK(RCDSC) ; Check on Task Status
|
---|
84 | ;
|
---|
85 | ; Input Parameter
|
---|
86 | ; RCDSC = Task Description
|
---|
87 | ;
|
---|
88 | NEW RTASKS,RTSK,ZTSK,ZTKEY
|
---|
89 | D DESC^%ZTLOAD(RCDSC,"RTASKS")
|
---|
90 | S RTSK=""
|
---|
91 | F S RTSK=$O(RTASKS(RTSK)) Q:RTSK="" D
|
---|
92 | . S ZTSK=RTSK D STAT^%ZTLOAD
|
---|
93 | ;
|
---|
94 | K RTASKS
|
---|
95 | I $G(ZTSK(2))="Inactive: Finished" Q 0
|
---|
96 | I $G(ZTSK(2))="Inactive: Interrupted" Q 0
|
---|
97 | I $G(ZTSK(2))="Active: Pending" Q 1
|
---|
98 | Q 0
|
---|
99 | ;
|
---|
100 | SAT(RDATE) ; Find the next Saturday date from the passed in date
|
---|
101 | NEW CDOW,FDATE,NDAYS
|
---|
102 | S CDOW=$$DOW^XLFDT(RDATE,1),NDAYS=6-CDOW
|
---|
103 | I NDAYS=0 S NDAYS=7
|
---|
104 | S FDATE=$$FMADD^XLFDT(RDATE,NDAYS)
|
---|
105 | Q FDATE
|
---|
106 | ;
|
---|
107 | CARE(RCXVIEN) ; Is bill VA or NON-VA care?
|
---|
108 | ;
|
---|
109 | ; Input parameter
|
---|
110 | ; RCXVIEN = Bill ien
|
---|
111 | ;
|
---|
112 | ; Output parameter
|
---|
113 | ; RCXVCFL = Care Flag
|
---|
114 | ; 0 = Non-VA Care
|
---|
115 | ; 1 = VA Care
|
---|
116 | ;
|
---|
117 | NEW RCXVCARE,RCXVRATE,RCXVODT,RPTF
|
---|
118 | S RCXVCFL=0
|
---|
119 | ;
|
---|
120 | ; If not Reimbursable Insurance, it's VA CARE
|
---|
121 | S RCXVRATE=$O(^DGCR(399.3,"B","REIMBURSABLE INS.",""))
|
---|
122 | I $P($G(^DGCR(399,RCXVIEN,0)),U,7)'=RCXVRATE S RCXVCFL=1 Q
|
---|
123 | ;
|
---|
124 | ; If prescription, it's VA Care
|
---|
125 | I $D(^IBA(362.4,"C",RCXVIEN))>0 S RCXVCFL=1 Q
|
---|
126 | ;
|
---|
127 | I $P($G(^DGCR(399,RCXVIEN,0)),U,16)'="" Q
|
---|
128 | ;
|
---|
129 | S RCXVCARE=$G(^DGCR(399,RCXVIEN,"U2"))
|
---|
130 | I $P(RCXVCARE,U,10)'="" Q
|
---|
131 | I $P(RCXVCARE,U,11)'="" Q
|
---|
132 | I $P(RCXVCARE,U,12)'="" Q
|
---|
133 | I $P(RCXVCARE,U,13)'="" Q
|
---|
134 | I $P(RCXVCARE,U,14)'="" Q
|
---|
135 | I $P(RCXVCARE,U,15)'="" Q
|
---|
136 | ;
|
---|
137 | ; Check inpatient
|
---|
138 | I $P($G(^DGCR(399,RCXVIEN,0)),U,5)<3 D Q:RCXVCFL
|
---|
139 | . S RPTF=$P($G(^DGCR(399,RCXVIEN,0)),U,8)
|
---|
140 | . I RPTF="" Q
|
---|
141 | . I $P($G(^DGPT(RPTF,0)),U,4)=1 Q
|
---|
142 | . S RCXVCFL=1
|
---|
143 | ;
|
---|
144 | ; Check outpatient encounter
|
---|
145 | NEW IBCBK,IBVAL
|
---|
146 | S IBCBK="I '$P(Y0,U,6) S ^TMP(""RCXVOE"",$J,+$P(Y0,U,8),Y)=Y0"
|
---|
147 | S IBVAL("DFN")=$P(^DGCR(399,RCXVIEN,0),U,2)
|
---|
148 | S RCXVODT=0 K ^TMP("RCXVOE",$J)
|
---|
149 | F S RCXVODT=$O(^DGCR(399,RCXVIEN,"OP",RCXVODT)) Q:'RCXVODT D
|
---|
150 | . S IBVAL("BDT")=RCXVODT,IBVAL("EDT")=RCXVODT+.9999
|
---|
151 | . D SCAN^IBSDU("PATIENT/DATE",.IBVAL,"",IBCBK,1)
|
---|
152 | I $O(^TMP("RCXVOE",$J,""))'="" S RCXVCFL=1 K ^TMP("RCXVOE",$J) Q
|
---|
153 | Q
|
---|