1 | RAO7PC1 ;HISC/GJC,SS-Procedure Call utilities. ;12/9/02 08:41
|
---|
2 | ;;5.0;Radiology/Nuclear Medicine;**1,16,18,26,36,45,75**;Mar 16, 1998;Build 4
|
---|
3 | ;
|
---|
4 | EN1(RADFN,RABDT,RAEDT,RAEXN,RACINC) ;
|
---|
5 | ;
|
---|
6 | ; DBIA#2043 - Return list of exams within date range
|
---|
7 | ;
|
---|
8 | ; ** See routines RAO7PC1A and RAO7PC2 for additional comments **
|
---|
9 | ; ** and output node descriptions **
|
---|
10 | ;
|
---|
11 | ; Input: RADFN-> Patient IEN RABDT-> beginning date
|
---|
12 | ; RAEDT-> ending date RAEXN-> max # of exams
|
---|
13 | ; RACINC-> include cancelled exams? (1 if yes, default no)
|
---|
14 | ;
|
---|
15 | ; Output:
|
---|
16 | ; ^TMP($J,"RAE1",Patient IEN,Exam ID)=Procedure name^Case number^
|
---|
17 | ; Report status^Abnormal alert flag^Report ien^
|
---|
18 | ; Exam status order #~Exam status name^
|
---|
19 | ; Imaging location name^Imaging type abbr~
|
---|
20 | ; Imaging type name^abnormal results flag^CPT Code
|
---|
21 | ; ^CPRS Order ien^Images exist flag
|
---|
22 | ;
|
---|
23 | ;if there are one or more CPT modifiers:
|
---|
24 | ; ^TMP($J,"RAE1",Patient IEN,Exam ID,"CMOD",n)=CPT Mod^CPT Mod Name
|
---|
25 | ; n+1)=CPT Mod^CPT Mod Name
|
---|
26 | ;
|
---|
27 | ;if CPRS asks to display parent procs, and case is descendent of parent:
|
---|
28 | ; ^TMP($J,"RAE1",Patient IEN,Exam ID,"CPRS")=memb of set^parent prc name
|
---|
29 | ;
|
---|
30 | ; Note: It is possible for the ^TMP global data returned to contain
|
---|
31 | ; 'No Report' and a Report file ien for the same exam. This is
|
---|
32 | ; because Imaging can create a report stub in the Report file,
|
---|
33 | ; but no report interpretation exists and no status is assigned
|
---|
34 | ; to the report record.
|
---|
35 | ;
|
---|
36 | ; Exam ID: exam date/time (inverse) concatenated with the case IEN
|
---|
37 | ; Abnormal alert flag: Y or blank
|
---|
38 | ; Abnormal results flag: Y or blank, may be turned on even if
|
---|
39 | ; abnormal alert flag is not
|
---|
40 | ;
|
---|
41 | Q:'RADFN!('RABDT)!('RAEDT)
|
---|
42 | N RAEXNP S RAEXNP=RAEXN ;save original value of RAEXN
|
---|
43 | ; if last char RAEXNP has "P", then count max no. by parent and
|
---|
44 | ; single, not by individual cases
|
---|
45 | S RACINC=+$G(RACINC)
|
---|
46 | Q:RABDT>RAEDT ; quit if ending date before beginning date
|
---|
47 | K ^TMP($J,"RAE1") S RAEXN=+$G(RAEXN)
|
---|
48 | S:$P(RABDT,".",2) RABDT=RABDT\1 S:$P(RAEDT,".",2) RAEDT=RAEDT\1
|
---|
49 | N RABNOR,RACNST,RACNT,RACPT,RACSE,RADIAG,RAIBDT,RAIEDT,RAILOC,RAITY
|
---|
50 | N RANO,RAPRC,RAREX,RARPT,RARPTST
|
---|
51 | N RAXAM,RAXID,RAXIT,RAXSTAT,RABNORMR,RASHOCAN
|
---|
52 | S RACNST=9999999.9999
|
---|
53 | S RAIBDT=RACNST-(RAEDT+.9999),RAIEDT=RACNST-(RABDT-.0001)
|
---|
54 | S (RACNT,RAXIT)=0
|
---|
55 | F S RAIBDT=$O(^RADPT(RADFN,"DT",RAIBDT)) Q:RAIBDT'>0!(RAIBDT>RAIEDT) D Q:RAXIT
|
---|
56 | . D SETDATA^RAO7PC1A ; obtain exam data, set ^TMP($J,"RAE1",Patient IEN,Exam ID)
|
---|
57 | . Q
|
---|
58 | Q
|
---|
59 | EN2(RADFN) ;
|
---|
60 | ;
|
---|
61 | ; DBIA#2012 - Return last 7 days of non-cancelled exams
|
---|
62 | ;
|
---|
63 | ; Input: RADFN-> Patient IEN
|
---|
64 | ;
|
---|
65 | ; Output:
|
---|
66 | ; ^TMP($J,"RAE7",Patient IEN,Exam ID)=procedure name^case number^
|
---|
67 | ; report status^imaging location IEN^imaging location name^
|
---|
68 | ; contrast medium or media used
|
---|
69 | ; Note: Single characters in parenthesis indicate contrast
|
---|
70 | ; involvement: (I)=Iodinated ionic; (N)=Iodinated non-ionic;
|
---|
71 | ; (L)=Gadolinium; (C)=Oral Cholecystographic; (G)=Gastrografin;
|
---|
72 | ; (B)=Barium; (M)=unspecified contrast media
|
---|
73 | ;
|
---|
74 | ; Exam ID: exam date/time (inverse) concatenated with the case IEN
|
---|
75 | ;
|
---|
76 | Q:'RADFN D EN2^RAO7PC1A Q
|
---|
77 | ;
|
---|
78 | EN3(X) ; DBIA#2265 - Return narrative text for exam(s)
|
---|
79 | ; Input:
|
---|
80 | ; X-> Exam id in one of two forms:
|
---|
81 | ; 1) Pat. DFN^inv. exam date^Case IEN
|
---|
82 | ; Retrieves a single report for a single exam
|
---|
83 | ; 2) Pat. DFN^inv. exam date^
|
---|
84 | ; Retrieves all reports for a set of exams ordered on one order
|
---|
85 | ;
|
---|
86 | ; Note: Input delimiter can be any of the following: ^~\&;-
|
---|
87 | ; a delimiter may be a single space i.e, " "
|
---|
88 | ;
|
---|
89 | ; Output:
|
---|
90 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name)=report status^
|
---|
91 | ; abnormal alert flag^CPRS Order ien^amended report?
|
---|
92 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"CM",n)=contrast
|
---|
93 | ; media used during exam (internal)^contrast media used during exam
|
---|
94 | ; (external)
|
---|
95 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"D",n)=diagnostic
|
---|
96 | ; code (n=1, this is the primary code)
|
---|
97 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"H",n)=clin history
|
---|
98 | ; (a line of text)
|
---|
99 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"I",n)=impression
|
---|
100 | ; (a line of text)
|
---|
101 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"M",n)=modifier
|
---|
102 | ; (external format)
|
---|
103 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"P")=primary
|
---|
104 | ; interpreting staff IEN^primary interpreting resident IEN^date
|
---|
105 | ; report entered
|
---|
106 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"R",n)=report
|
---|
107 | ; (a line of text)
|
---|
108 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"RFS")=REASON
|
---|
109 | ; FOR STUDY; the reason the study was conducted (a line of text)
|
---|
110 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"V",n)=verifier IEN
|
---|
111 | ; ^signature block name
|
---|
112 | ; ^TMP($J,"RAE2",Patient IEN,case IEN,procedure name,"TCOM",1)=techno-
|
---|
113 | ; logist comment (a line of text)
|
---|
114 | ; ^TMP($J,"RAE2",Patient IEN,"PRINT_SET")=null (IFF this is a printset)
|
---|
115 | ; ^TMP($J,"RAE2",Patient IEN,"ORD")=name of ordered procedure for
|
---|
116 | ; examsets and printsets
|
---|
117 | ; ^TMP($J,"RAE2",Patient IEN,"ORD",case IEN)=name of ordered procedure
|
---|
118 | ; for that case; not part of an examset or printset
|
---|
119 | ;
|
---|
120 | K RAU,^TMP($J,"RAE2") S RAU=$$DEL(X)
|
---|
121 | I RAU="" K RAU Q
|
---|
122 | Q:'$P(X,RAU)!('$P(X,RAU,2)) ; Quit if no Pat. DFN -or- no inv. exam DT
|
---|
123 | N RACIEN,RADFN,RAINVXDT,RAPSET,Y S RAPSET=0
|
---|
124 | S RADFN=$P(X,RAU),RAINVXDT=$P(X,RAU,2),RACIEN=+$P(X,RAU,3)
|
---|
125 | K RAU Q:'($D(^RADPT(RADFN,"DT",RAINVXDT,0))#2)
|
---|
126 | SS I RACIEN D CASE^RAO7PC2(RACIEN) D SVTCOM^RAUTL11(RADFN,RAINVXDT,RACIEN) Q ;P18 mod by SS
|
---|
127 | S Y=0
|
---|
128 | F S Y=$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y)) Q:Y'>0 D
|
---|
129 | . D CASE^RAO7PC2(Y)
|
---|
130 | . D SVTCOM^RAUTL11(RADFN,RAINVXDT,Y) ;P18 save TCOM in ^TMP
|
---|
131 | . S RAPSET=0 ;P18 modified
|
---|
132 | . Q
|
---|
133 | Q
|
---|
134 | ;
|
---|
135 | EN30(RAOIFN) ; DBIA#2266 - Return narrative text for exam(s). To be used
|
---|
136 | ; with the EN3 entry point above.
|
---|
137 | ; Input: RAOIFN -> the ien of Rad/Nuc Med Order
|
---|
138 | Q:'RAOIFN ; order passed in as 0 or null
|
---|
139 | Q:'$D(^RAO(75.1,RAOIFN,0)) ; no such order
|
---|
140 | Q:'$D(^RADPT("AO",RAOIFN)) ; no exam associated with this order
|
---|
141 | N RADFN,RADTI,RACNI,RAXSET
|
---|
142 | S RADFN=+$O(^RADPT("AO",RAOIFN,0)) Q:'RADFN
|
---|
143 | S RADTI=+$O(^RADPT("AO",RAOIFN,RADFN,0)) Q:'RADTI
|
---|
144 | S RAXSET=+$P($G(^RADPT(RADFN,"DT",RADTI,0)),"^",5) ; set if RAXSET=1
|
---|
145 | I RAXSET D EN3(RADFN_"^"_RADTI_"^") Q ; exam set, hit EN3 code
|
---|
146 | ; the following code is executed for non-exam set examinations
|
---|
147 | S RACNI=+$O(^RADPT("AO",RAOIFN,RADFN,RADTI,0)) Q:'RACNI
|
---|
148 | D EN3(RADFN_"^"_RADTI_"^"_RACNI)
|
---|
149 | Q
|
---|
150 | EN4(RABBRV,RAARY) ; Return Imaging Locations
|
---|
151 | ; Input: RABBRV-> Abbreviation for I-Type RAARY-> data storage array
|
---|
152 | ;
|
---|
153 | ; Output:
|
---|
154 | ; array name(location IEN)=File 79.1 IEN^File 44 name^division IEN
|
---|
155 | ; ^division name
|
---|
156 | ;
|
---|
157 | Q:RABBRV']"" ; quit no I-Type abbreviation
|
---|
158 | Q:RAARY']"" ; quit no data storage array
|
---|
159 | N RADIV,RAITY,RALOC,RAX
|
---|
160 | S RAITY=+$O(^RA(79.2,"C",RABBRV,0)) Q:'RAITY
|
---|
161 | S RAX=0 F S RAX=$O(^RA(79.1,"BIMG",RAITY,RAX)) Q:RAX'>0 D
|
---|
162 | . S RADIV(79)=$G(^RA(79.1,RAX,"DIV"))
|
---|
163 | . S RALOC(0)=$G(^RA(79.1,RAX,0))
|
---|
164 | . Q:$P(RALOC(0),"^",19)]"" ;inactive DT present, can't be a future DT
|
---|
165 | . S RALOC=$P($G(^SC(+RALOC(0),0)),U)
|
---|
166 | . S RALOC=$S(RALOC]"":RALOC,1:"Unknown")
|
---|
167 | . S RADIV=+$P($G(^RA(79,+RADIV(79),0)),U),RADIV(4)=$G(^DIC(4,RADIV,0))
|
---|
168 | . S RADIV=$S($P(RADIV(4),U)]"":$P(RADIV(4),U),1:"Unknown")
|
---|
169 | . S @(RAARY_"("_RAX_")")=RAX_U_RALOC_U_+RADIV(79)_U_RADIV
|
---|
170 | . Q
|
---|
171 | Q
|
---|
172 | CASE(RAOIFN,RARRAY) ; Return the case numbers and the total number of
|
---|
173 | ; case numbers associated with a particular order.
|
---|
174 | ; Input: RAOIFN-order ien (75.1)
|
---|
175 | ; RARRAY-data storage (local array)
|
---|
176 | ; Return: RATTL-n^x where n is the number of cases in the array
|
---|
177 | ; x=PRINTSET if a single report covers many cases.
|
---|
178 | ; -1 if error (invalid order ien)
|
---|
179 | ; -2 no registered case to date -OR- case(s) cancelled
|
---|
180 | ; If -1 or -2, second piece of RATTL gives the reason
|
---|
181 | ; RARRAY-local data array, array_name(case #)
|
---|
182 | N RATTL S RATTL="" D CASE^RAO7PC1A
|
---|
183 | Q RATTL
|
---|
184 | DEL(X) ; Determine the delimiter used to seperate the data
|
---|
185 | ; Input: 'X'-> data seperated by a delimiter (first & second pieces
|
---|
186 | ; will follow null)
|
---|
187 | N Y,Z
|
---|
188 | F Y="^","~","\","&",";","-"," " S Z=$F(X,Y) I +Z Q
|
---|
189 | Q $S(+Z>0:Y,1:"") ; pass back the delimiter used, or null if not found
|
---|