1 | RORXU005 ;HCIOFO/SG - REPORT BUILDER UTILITIES ; 5/17/06 1:45pm
|
---|
2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
|
---|
3 | ;
|
---|
4 | ; This routine uses the following IAs:
|
---|
5 | ;
|
---|
6 | ; #10035 Direct read of the DOD field of the file #2
|
---|
7 | ;
|
---|
8 | Q
|
---|
9 | ;
|
---|
10 | ;***** CALLBACK FUNCTION FOR DRUG SEARCH API
|
---|
11 | REIMBCB(RORDST,ORDER,FLAGS,DRUG,DATE) ;
|
---|
12 | S RORDST=1
|
---|
13 | Q 2
|
---|
14 | ;
|
---|
15 | ;***** RETURNS THE REIMBURSEMENT LEVEL FOR THE PATIENT
|
---|
16 | ;
|
---|
17 | ; RORIEN IEN of the patient's record in the registry
|
---|
18 | ;
|
---|
19 | ; ROR8DRGS Either closed root of the ARV drug list prepared by
|
---|
20 | ; the $$DRUGLIST^RORUTL16 or the Registry IEN. In the
|
---|
21 | ; latter case, the list will be compiled automatically.
|
---|
22 | ;
|
---|
23 | ; STDT Start date
|
---|
24 | ; ENDT End date
|
---|
25 | ;
|
---|
26 | ; Return Values:
|
---|
27 | ; <0 Error code
|
---|
28 | ; 0 Neither Clinical AIDS nor ARV drugs
|
---|
29 | ; 10 ARV drugs
|
---|
30 | ; 20 Clinical AIDS
|
---|
31 | ; 30 Both Clinical AIDS and ARV drugs
|
---|
32 | ;
|
---|
33 | REIMBLVL(RORIEN,ROR8DRGS,STDT,ENDT) ;
|
---|
34 | N PATIEN,RC,RLVL,RORDST
|
---|
35 | S RLVL=0
|
---|
36 | ;--- Clinical AIDS
|
---|
37 | S:$$CLINAIDS^RORHIVUT(+RORIEN,ENDT) RLVL=RLVL+20
|
---|
38 | ;--- ARV Drugs
|
---|
39 | S PATIEN=$$PTIEN^RORUTL01(RORIEN)
|
---|
40 | S RORDST("RORCB")="$$REIMBCB^RORXU005"
|
---|
41 | S RC=$$RXSEARCH^RORUTL14(PATIEN,ROR8DRGS,.RORDST,"IOV",STDT,ENDT)
|
---|
42 | S:$G(RORDST)>0 RLVL=RLVL+10
|
---|
43 | ;--- Reimbursement level
|
---|
44 | Q $S(RC<0:RC,1:RLVL)
|
---|
45 | ;
|
---|
46 | ;***** RETURNS THE PATIENT'S LIST OF RISK FACTORS
|
---|
47 | ;
|
---|
48 | ; RORIEN IEN of the patient's record in the registry
|
---|
49 | ;
|
---|
50 | ; Return Values:
|
---|
51 | ; <0 Error code
|
---|
52 | ; "" No risk factors have been found
|
---|
53 | ; " ... " A string containing the risk factor numbers
|
---|
54 | ; separated by commas and spaces
|
---|
55 | ;
|
---|
56 | RISKS(RORIEN) ;
|
---|
57 | Q:'$D(^RORDATA(799.4,+RORIEN,0)) ""
|
---|
58 | N FLD,FLDLST,I,RISKLST,RORBUF,RORMSG
|
---|
59 | S FLDLST="14.01;14.02;14.03;14.04;14.08;14.07;14.09;14.1;14.11;14.12;14.13;14.16;14.17"
|
---|
60 | ;--- Load the risk fields
|
---|
61 | S IENS=(+RORIEN)_","
|
---|
62 | D GETS^DIQ(799.4,IENS,FLDLST,"I","RORBUF","RORMSG")
|
---|
63 | Q:$G(DIERR) $$DBS^RORERR(799.4,-9,,,799.4,IENS)
|
---|
64 | ;--- Process the data
|
---|
65 | S RISKLST=""
|
---|
66 | F I=1:1 S FLD=$P(FLDLST,";",I) Q:FLD="" D:FLD>0
|
---|
67 | . S:$G(RORBUF(799.4,IENS,FLD,"I"))=1 RISKLST=RISKLST_", "_I
|
---|
68 | Q $P(RISKLST,", ",2,999)
|
---|
69 | ;
|
---|
70 | ;***** DETERMINES IF THE PATIENT SHOULD NOT BE INCLUDED IN THE REPORT
|
---|
71 | ;
|
---|
72 | ; RORIEN IEN of the patient's record in the registry
|
---|
73 | ;
|
---|
74 | ; FLAGS Flags that control the execution (can be combined)
|
---|
75 | ;
|
---|
76 | ; C Skip confirmed patients
|
---|
77 | ; G Skip pending patients
|
---|
78 | ;
|
---|
79 | ; D Skip deceased patients
|
---|
80 | ; L Skip alive patients
|
---|
81 | ;
|
---|
82 | ; P Skip patients confirmed before the start date
|
---|
83 | ; N Skip patients confirmed during the report
|
---|
84 | ; time frame
|
---|
85 | ; F Skip patients added after the end date
|
---|
86 | ;
|
---|
87 | ; O Process LOCAL_FIELDS
|
---|
88 | ; R Process OTHER_REGISTRIES
|
---|
89 | ;
|
---|
90 | ; [STDT] Start date of the report (FileMan).
|
---|
91 | ; Time is ignored and the beginning of the day is
|
---|
92 | ; considered as the boundary (STDT\1).
|
---|
93 | ;
|
---|
94 | ; If not defined or not greater than 0 then 0 is used.
|
---|
95 | ;
|
---|
96 | ; [ENDT] End date of the report (FileMan).
|
---|
97 | ; Time is ignored and the end of the day is
|
---|
98 | ; considered as the boundary (ENDT\1+1).
|
---|
99 | ;
|
---|
100 | ; If not defined or not greater than 0 then 9999999
|
---|
101 | ; is used.
|
---|
102 | ;
|
---|
103 | ; Return Values:
|
---|
104 | ; 0 Include the patient's data in the report
|
---|
105 | ; 1 Skip the patient
|
---|
106 | ;
|
---|
107 | SKIP(RORIEN,FLAGS,STDT,ENDT) ;
|
---|
108 | N DOD,IEN,MODE,NODE,PTIEN,REGIEN,SKIP,STATUS,TMP
|
---|
109 | S SKIP=0
|
---|
110 | ;--- Always skip patients marked for deletion
|
---|
111 | Q:$$SKIPNA(RORIEN,FLAGS,.STATUS) 1
|
---|
112 | ;---Include all registry patients if flags are not provided
|
---|
113 | Q:FLAGS="" 0
|
---|
114 | ;
|
---|
115 | ;--- Confirmed
|
---|
116 | I FLAGS["C" Q:STATUS'=4 1
|
---|
117 | ;
|
---|
118 | ;--- Alive/Deceased patients
|
---|
119 | S STDT=$S($G(STDT)>0:STDT\1,1:0)
|
---|
120 | I $TR(FLAGS,"LD")'=FLAGS D Q:$S(TMP:FLAGS["L",1:FLAGS["D") 1
|
---|
121 | . S:'$D(PTIEN) PTIEN=+$$PTIEN^RORUTL01(RORIEN)
|
---|
122 | . S DOD=+$P($G(^DPT(PTIEN,.35)),U)
|
---|
123 | . S TMP=$S(DOD>0:DOD'<STDT,1:1)
|
---|
124 | ;
|
---|
125 | ;--- Confirmed before/during/after the date range
|
---|
126 | S ENDT=$S($G(ENDT)>0:ENDT\1,1:9999999)+1
|
---|
127 | I $TR(FLAGS,"PNF")'=FLAGS D Q:TMP 1
|
---|
128 | . S TMP=+$$CONFDT^RORUTL18(RORIEN) ; Date Confirmed
|
---|
129 | . S TMP=$S(TMP<STDT:FLAGS["P",TMP>ENDT:FLAGS["F",1:FLAGS["N")
|
---|
130 | ;
|
---|
131 | ;--- Other registries
|
---|
132 | I FLAGS["R" D Q:SKIP 1
|
---|
133 | . S NODE=$NA(RORTSK("PARAMS","OTHER_REGISTRIES","C"))
|
---|
134 | . Q:$D(@NODE)<10
|
---|
135 | . S:'$D(PTIEN) PTIEN=+$$PTIEN^RORUTL01(RORIEN)
|
---|
136 | . S REGIEN=0
|
---|
137 | . F S REGIEN=$O(@NODE@(REGIEN)) Q:REGIEN'>0 D Q:SKIP
|
---|
138 | . . S MODE=+$G(@NODE@(REGIEN)) Q:'MODE
|
---|
139 | . . S IEN=$$PRRIEN^RORUTL01(PTIEN,REGIEN)
|
---|
140 | . . I IEN'>0 S SKIP=1
|
---|
141 | . . E S:$$SKIPNA(IEN,FLAGS) SKIP=1
|
---|
142 | . . S:MODE<0 SKIP='SKIP ; Exclude
|
---|
143 | ;
|
---|
144 | ;--- Local Fields
|
---|
145 | I FLAGS["O" D Q:SKIP 1
|
---|
146 | . S NODE=$NA(RORTSK("PARAMS","LOCAL_FIELDS","C"))
|
---|
147 | . Q:$D(@NODE)<10
|
---|
148 | . S IEN=0
|
---|
149 | . F S IEN=$O(@NODE@(IEN)) Q:IEN'>0 D Q:SKIP
|
---|
150 | . . S MODE=+$G(@NODE@(IEN)) Q:'MODE
|
---|
151 | . . S:'$D(^RORDATA(798,RORIEN,20,"B",IEN)) SKIP=1
|
---|
152 | . . S:MODE<0 SKIP='SKIP ; Exclude
|
---|
153 | ;
|
---|
154 | ;--- Include in the report
|
---|
155 | Q 0
|
---|
156 | ;
|
---|
157 | ;***** CHECKS STATUS OF THE PATIENT'S REGISTRY RECORD (internal)
|
---|
158 | ;
|
---|
159 | ; IEN798 IEN of the patient's record in the registry
|
---|
160 | ;
|
---|
161 | ; FLAGS Flags that control the execution
|
---|
162 | ;
|
---|
163 | ; [.STATUS] Status code is returned via this parameter.
|
---|
164 | ;
|
---|
165 | ; Return Values:
|
---|
166 | ; 0 Continue processing of the patient's data
|
---|
167 | ; 1 Skip the patient
|
---|
168 | ;
|
---|
169 | SKIPNA(IEN798,FLAGS,STATUS) ;
|
---|
170 | Q:$$ACTIVE^RORDD(IEN798,,.STATUS) 0 ; Active patient
|
---|
171 | Q:(STATUS=5)!(STATUS="") 1 ; Deleted patient
|
---|
172 | Q:(STATUS=4)&(FLAGS["G") 1 ; Pending patient
|
---|
173 | Q 0
|
---|