1 | TIUSROI ; SLC/JER - TIU/Surgery Interface Routine ; 04/19/2004
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**112,187,173**;Jun 20, 1997
|
---|
3 | Q
|
---|
4 | GETOP(TIUY,TIUDA,SROTYP) ; Get Op-Top
|
---|
5 | N SROVP
|
---|
6 | S SROVP=$P($G(^TIU(8925,TIUDA,14)),U,5),SROTYP=$G(SROTYP,"OP")
|
---|
7 | S TIUY=$S(SROTYP="OP":$NA(^TMP("SROP",$J,+SROVP)),1:$NA(^TMP("SRNOR",$J,+SROVP)))
|
---|
8 | I $P(SROVP,";",2)'="SRF(" Q
|
---|
9 | D @$S(SROTYP="OP":"OPTOP^SROSRPT(+SROVP)",1:"OPTOP^SRONP(+SROVP)")
|
---|
10 | I +$G(@TIUY@(0))=0 K @TIUY Q
|
---|
11 | I '$D(XWBOS),'$D(ZTQUEUED),($E($G(IOST))="C"),(@TIUY@(0)=2) D
|
---|
12 | . N SEEOP S SEEOP=0
|
---|
13 | . I $S(+$D(XQADATA):1,$G(TIUEVNT)["SIGN":1,1:0) D Q:+SEEOP
|
---|
14 | . . W ! S SEEOP=+$$READ^TIUU("YA","Do you want to see the Op Top? ","YES")
|
---|
15 | . K @TIUY
|
---|
16 | I $D(XWBOS),($G(@TIUY@(0))'=1) K @TIUY
|
---|
17 | Q
|
---|
18 | GETCASE(DFN,DA) ; Match Operation Report to an open Surgical Case
|
---|
19 | ; Call with: [DFN] - patient file entry number
|
---|
20 | ; Returns: TIUY - Variable pointer to Surgical Case
|
---|
21 | AGN ; Loop for handling repeated attempts
|
---|
22 | N TIUI,TIUII,TIUER,TIUOK,TIUOUT,TIUX,TIUY,TIUMTSTR,TIUMLST,TIUCNT,X,TIULIST
|
---|
23 | I +DFN'>0 S TIUOUT=1 Q 0
|
---|
24 | I +$G(DA) D G:+TIUX>0 GETX
|
---|
25 | . I +$P($G(^TIU(8925,+DA,14)),U,5) S TIUX=+$P($G(^(14)),U,5) Q
|
---|
26 | . I +$$ISADDNDM^TIULC1(+DA) S TIUX=+$$DADSC(DA)
|
---|
27 | D ISSURG^TIUSROI(.TIUY,+$G(^TIU(8925,+TIUDA,0))) I +TIUY W !,"This action is no longer permitted for SURGICAL REPORTS" H 3 Q 0
|
---|
28 | D LIST^SROESTV(.TIULIST,DFN,"","","",0) ; Call Surgery to get list of cases
|
---|
29 | ; If no Surgeries for patient, then quit
|
---|
30 | I '$D(@TIULIST) D Q -1
|
---|
31 | . W !!,$C(7),"No SURGICAL CASES to Result for ",$$PTNAME^TIULC1(DFN),".",!
|
---|
32 | S (TIUCNT,TIUI)=0 F S TIUI=+$O(@TIULIST@(TIUI)) Q:+TIUI'>0 D
|
---|
33 | . S TIUCNT=+$G(TIUCNT)+1
|
---|
34 | W !,"You must link your Result to a SURGICAL CASE...",!
|
---|
35 | D INDEX(TIULIST)
|
---|
36 | D I +TIUER Q:+$G(TIUOUT) 0 G AGN
|
---|
37 | . W !,"The following SURGICAL CASE",$S(+TIUCNT>1:"(S) are",1:" is")," available:"
|
---|
38 | . S (TIUER,TIUOK,TIUI)=0
|
---|
39 | . F S TIUI=$O(@TIULIST@(TIUI)) Q:+TIUI'>0!+TIUER!+TIUOK D
|
---|
40 | . . S TIUII=TIUI,TIUX=$G(@TIULIST@(TIUI))
|
---|
41 | . . D WRITE I '(TIUI#5) D BREAK
|
---|
42 | . Q:$D(TIUOUT)
|
---|
43 | . I +TIUER S TIUOUT=1 Q
|
---|
44 | . I TIUII#5 D BREAK Q:$D(TIUOUT)
|
---|
45 | . I +TIUER S TIUOUT=1 Q
|
---|
46 | . S TIUX=+@TIULIST@(TIUOK),^DISV(DUZ,"^SRF(",DFN)=+TIUX
|
---|
47 | . W " ",+TIUX
|
---|
48 | GETX S TIUY=+TIUX_";SRF(" K @TIULIST
|
---|
49 | Q $G(TIUY)
|
---|
50 | BREAK ; Handle prompting
|
---|
51 | W !,"CHOOSE 1-",TIUII W:$D(@TIULIST@(TIUII+1)) !,"<RETURN> TO CONTINUE",!,"OR '^' TO QUIT" W ": " R X:DTIME
|
---|
52 | I $S('$T!(X["^"):1,X=""&'$D(@TIULIST@(TIUII+1)):1,1:0) S TIUER=1 Q
|
---|
53 | I X="" Q
|
---|
54 | I X=" ",$D(^DISV(DUZ,"^SRF(",DFN)) S TIUX=^(DFN) S TIUOK=+$O(@TIULIST@("C",+TIUX,0)) Q
|
---|
55 | I X'=+X!'$D(@TIULIST@(+X)) W !!,$C(7),"INVALID RESPONSE",! G BREAK
|
---|
56 | S TIUOK=X
|
---|
57 | Q
|
---|
58 | DADSC(DA) ; Get the Surgical Case associated with the parent record
|
---|
59 | N TIUDADA,TIUY S TIUDADA=$P($G(^TIU(8925,+DA,0)),U,6)
|
---|
60 | S TIUY=$P($G(^TIU(8925,TIUDADA,14)),U,5)
|
---|
61 | Q TIUY
|
---|
62 | WRITE ; Writes each case
|
---|
63 | W !,$J(TIUI,4),"> ",$$DATE^TIULS($P(TIUX,U,3),"AMTH DD, CCYY")
|
---|
64 | W " Case #",$P(TIUX,U),?34,$E($P(TIUX,U,2),1,25),?60,$E($P($P(TIUX,U,4),";",2),1,20)
|
---|
65 | Q
|
---|
66 | INDEX(TIULIST) ; Build index of list
|
---|
67 | N TIUI S TIUI=0
|
---|
68 | F S TIUI=$O(@TIULIST@(TIUI)) Q:+TIUI'>0 D
|
---|
69 | . S @TIULIST@("C",+@TIULIST@(TIUI),TIUI)=""
|
---|
70 | Q
|
---|
71 | ISSURG(TIUY,TITLE) ; Boolean RPC to evaluate whether TITLE is a SURGERY REPORT
|
---|
72 | N TIUCLASS,TIUI S TIUY=0
|
---|
73 | F TIUI="SURGICAL REPORTS","PROCEDURE REPORTS (NON-O.R.)" D Q:TIUY>0
|
---|
74 | . S TIUCLASS=+$$CLASS(TIUI)
|
---|
75 | . I +TIUCLASS'>0 Q
|
---|
76 | . S TIUY=+$$ISA^TIULX(TITLE,TIUCLASS)
|
---|
77 | Q
|
---|
78 | RBOR(TIUDA) ; Roll back OPERATION REPORT when TIU changes require it
|
---|
79 | N SRODA S SRODA=+$P($G(^TIU(8925,TIUDA,14)),U,5) Q:+SRODA'>0
|
---|
80 | D OS^SROTIUD(SRODA)
|
---|
81 | Q
|
---|
82 | RBPR(TIUDA) ; Roll back NON-O.R. PROC REPORT when TIU changes require it
|
---|
83 | N SRODA S SRODA=+$P($G(^TIU(8925,TIUDA,14)),U,5)
|
---|
84 | Q:+SRODA'>0
|
---|
85 | D NON^SROTIUD(SRODA)
|
---|
86 | Q
|
---|
87 | CLASS(CLNAME) ; What is the TIU Class (or Document Class) for SURGERY REPORTS
|
---|
88 | N TIUY S TIUY=+$O(^TIU(8925.1,"B",CLNAME,0))
|
---|
89 | I +TIUY>0,$S($P($G(^TIU(8925.1,+TIUY,0)),U,4)="CL":0,$P($G(^(0)),U,4)="DC":0,1:1) S TIUY=0
|
---|
90 | Q TIUY
|
---|
91 | ES(TIUDA,TIUDUZ) ; Apply user's e-Sig to Document
|
---|
92 | N TIUES S TIUDUZ=$G(TIUDUZ,DUZ)
|
---|
93 | I '+$G(^TIU(8925,TIUDA,0)) Q
|
---|
94 | S TIUES="1^"_$$SIGNAME^TIULS(TIUDUZ)_U_$$SIGTITL^TIULS(TIUDUZ)
|
---|
95 | D ES^TIURS(TIUDA,TIUES)
|
---|
96 | Q
|
---|
97 | ENTEROP(DFN,TIUTYP) ; Re-direct entry of Op and Proc Reports
|
---|
98 | N TIUDA,TIUD0,TIUX,TIUPRM0,TIUPRM1,SUCCESS,TIUBUF,TIUTNM
|
---|
99 | S TIUTNM=$$PNAME^TIULC1(TIUTYP)
|
---|
100 | ; -- Exclude NIR and AR from Entry
|
---|
101 | I $S(TIUTNM["ANESTH":1,TIUTNM["NURS":1,1:0) D Q
|
---|
102 | . W !!,TIUTNM,"s may only be entered through the Surgery Options.",!
|
---|
103 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
104 | . W !
|
---|
105 | ; -- first, determine the correct TIU DOCUMENT record --
|
---|
106 | F D Q:$D(DUOUT)!$D(DIROUT)!+$G(TIUOUT)
|
---|
107 | . N D,D0,DK,DL,DIC,X,Y,DA,DX,A,S,TIUFPRIV
|
---|
108 | . S X=+$G(DFN)
|
---|
109 | . I X'>0 D Q
|
---|
110 | . . W !!,"No Patient Specified...",!
|
---|
111 | . . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
112 | . . S TIUOUT=1 W !
|
---|
113 | . S DIC=8925,DIC(0)="UXEV",D="C"
|
---|
114 | . W ! S DIC("W")="D DICW^TIUPUTS(+Y)",DIC("S")="I +$G(^TIU(8925,+Y,0))=TIUTYP"
|
---|
115 | . D IX^DIC
|
---|
116 | . I +Y'>0 D Q
|
---|
117 | . . W !!,$S(+$O(^TIU(8925,"C",+X,0))'>0:"No "_TIUTNM_"s Available.",1:"No "_TIUTNM_" Selected..."),!
|
---|
118 | . . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
119 | . . S TIUOUT=1 W !
|
---|
120 | . D BROWS1^TIURA2("TIU BROWSE FOR TRANSCRIPTION",+Y)
|
---|
121 | . S TIUOUT=1 W !
|
---|
122 | Q
|
---|
123 | REASSOP(DFN,TIUODA) ; Re-direct REASSIGNMENT of Op and Proc Reports
|
---|
124 | N TIUDA,TIUD0,TIUD12,TIUTYP,TIUTNM,TIUSCRN
|
---|
125 | S TIUD0(0)=$G(^TIU(8925,+TIUODA,0)),TIUD12(0)=$G(^(12))
|
---|
126 | I DFN=$P(TIUD0(0),U,2) D CHANGE^TIUSROI1(TIUODA) Q
|
---|
127 | S TIUTYP=+TIUD0(0)
|
---|
128 | S TIUTNM=$$PNAME^TIULC1(TIUTYP)
|
---|
129 | I +$$ISADDNDM^TIULC1(TIUODA),$S($$GET1^DIQ(8925,TIUODA,.06)["ANESTH":1,$$GET1^DIQ(8925,TIUODA,.06)["NURS":1,1:0) D G REASSOPX
|
---|
130 | . W !!,"ADDENDUMs to ",$$GET1^DIQ(8925,TIUODA,.06),"s may not be reassigned.",!
|
---|
131 | . I $$READ^TIUU("EA","Press RETURN to continue...")
|
---|
132 | . S TIUOUT=1 W !
|
---|
133 | S TIUDA=0
|
---|
134 | I $S(TIUTNM["ANESTH":1,TIUTNM["NURS":1,1:0) D G REASSOPX
|
---|
135 | . W !!,TIUTNM,"s may only be created through the Surgery Options..."
|
---|
136 | . W !,"Reassignment is not allowed.",!
|
---|
137 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
138 | . S TIUOUT=1 W !
|
---|
139 | W ! S SROVP=$$GETCASE^TIUSROI(DFN)
|
---|
140 | I +SROVP'>0 D Q
|
---|
141 | . W !!,$C(7),"Okay, no harm done...",!
|
---|
142 | . W:$$READ^TIUU("EA","Press RETURN to continue...") ""
|
---|
143 | ; if target case is same as current, quit
|
---|
144 | I +SROVP=+$P(^TIU(8925,TIUODA,14),U,5) D Q
|
---|
145 | . W !!,$C(7),"You've selected the original case. No changes made.",!
|
---|
146 | . W:$$READ^TIUU("EA","Press RETURN to continue...") ""
|
---|
147 | ; Get the document for the target surgical case
|
---|
148 | S TIUDA=$$TARGET^TIUSROI1(SROVP)
|
---|
149 | ; if target document is of a different type than source, quit
|
---|
150 | I $$TYPE^TIUSROI1(TIUDA)'=$$TYPE^TIUSROI1(TIUODA) D Q
|
---|
151 | . W !!,$C(7),"Incompatible document type. No changes made.",!
|
---|
152 | . W:$$READ^TIUU("EA","Press RETURN to continue...") ""
|
---|
153 | I +TIUDA'>0 D G REASSOPX
|
---|
154 | . W !!,"No Destination Document Selected: Aborting Transaction,",!," No Harm Done...",!
|
---|
155 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
156 | ; -- If original and target are the same --
|
---|
157 | I +TIUDA=+TIUODA D G REASSOPX
|
---|
158 | . W !!,$C(7),"You've selected the original case. No changes made.",!
|
---|
159 | . W:$$READ^TIUU("EA","Press RETURN to continue...") ""
|
---|
160 | ; -- Confirm selection --
|
---|
161 | I '$$FROMTO^TIUSROI1(TIUODA,TIUDA,TIUTNM) D G REASSOPX
|
---|
162 | . W !!,"Aborting Transaction, No Harm Done...",!
|
---|
163 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
164 | ; -- Conditionally Retract Original --
|
---|
165 | I (+$P(TIUD0(0),U,5)>5) D
|
---|
166 | . N TIUMSG,TIURTCT S TIUMSG=$S(DFN=+$P(TIUD0(0),U,2):"Reassigning document...",DFN'=+$P(TIUD0(0),U,2):"Moving signed document to another Patient...")
|
---|
167 | . W !!,TIUMSG,!,"A RETRACTED copy will be retained.",!
|
---|
168 | . S TIURTCT=$$RETRACT^TIURD2(TIUODA,"",15)
|
---|
169 | ; -- Copy AUTHOR from original to target/Update target status --
|
---|
170 | D AUTHSTAT(TIUDA,TIUODA,.TIUD12)
|
---|
171 | ; -- Copy contents of original into target --
|
---|
172 | D COPYTEXT^TIURC1(TIUODA,TIUDA) K ^TIU(8925,TIUDA,15)
|
---|
173 | I $D(^TIU(8925,TIUDA,"TEMP")) D
|
---|
174 | . N TIU
|
---|
175 | . D GETTIU^TIULD(.TIU,TIUDA)
|
---|
176 | . D MERGTEXT^TIUEDI1(TIUDA,.TIU)
|
---|
177 | . K ^TIU(8925,TIUDA,"TEMP")
|
---|
178 | ; -- Conditionally roll back original --
|
---|
179 | I +$P(TIUD0(0),U,5)>5 D
|
---|
180 | . N TIUDA,TIUDELX
|
---|
181 | . S TIUDA=TIUODA
|
---|
182 | . S TIUDELX=$$DELETE^TIULC1(+$G(TIUD0(0)))
|
---|
183 | . I TIUDELX]"" X TIUDELX
|
---|
184 | I +$P(TIUD0(0),U,5)'>5 D
|
---|
185 | . N TIUX,SUCCESS
|
---|
186 | . K ^TIU(8925,TIUODA,"TEXT")
|
---|
187 | . S TIUX(.05)=1
|
---|
188 | . D FILE^TIUSRVP(.SUCCESS,TIUODA,.TIUX,1)
|
---|
189 | ; -- Send Signature Alerts for target --
|
---|
190 | D SEND^TIUALRT(TIUDA)
|
---|
191 | ; -- Delete Signature Alerts for Original --
|
---|
192 | D ALERTDEL^TIUALRT(TIUODA)
|
---|
193 | ; -- Audit Reassignment of target --
|
---|
194 | S TIUD0(1)=$G(^TIU(8925,+TIUDA,0)),TIUD12(1)=$G(^(12))
|
---|
195 | D AUDREASS^TIURB1(TIUDA,.TIUD0,.TIUD12)
|
---|
196 | ; -- Register audit trail for original
|
---|
197 | I +$G(TIUODA) D AUDREASS^TIURB1(TIUODA,.TIUD0,.TIUD12)
|
---|
198 | S TIUCHNG=1
|
---|
199 | REASSOPX Q
|
---|
200 | AUTHSTAT(TIUDA,TIUODA,TIUD12) ; Copy Author, update status
|
---|
201 | N TIUX,SUCCESS
|
---|
202 | S TIUX(.05)=5
|
---|
203 | S TIUX(1406)=TIUODA
|
---|
204 | I +$P(TIUD12(0),U,2) S TIUX(1202)=$P(TIUD12(0),U,2)
|
---|
205 | D FILE^TIUSRVP(.SUCCESS,TIUDA,.TIUX,1)
|
---|
206 | Q
|
---|
207 | SELOP(DFN,TIUTYP,TIUSCRN) ; Select an Op or Proc Report
|
---|
208 | N DUOUT,DTOUT,D,D0,DK,DL,DIC,X,Y,DA,DX,A,S,TIUFPRIV,TIUY,TIUTNM
|
---|
209 | S TIUY=0
|
---|
210 | S TIUTNM=$$PNAME^TIULC1(TIUTYP)
|
---|
211 | S TIUSCRN=$G(TIUSCRN,"I +$G(^TIU(8925,+Y,0))=TIUTYP")
|
---|
212 | S X=+$G(DFN)
|
---|
213 | I X'>0 D G SELOPX
|
---|
214 | . W !!,"No Patient Specified...",!
|
---|
215 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
216 | . W !
|
---|
217 | S DIC=8925,DIC(0)="UXEV",D="C"
|
---|
218 | W !
|
---|
219 | S DIC("W")="D DICW^TIUPUTS(+Y)"
|
---|
220 | S DIC("S")=TIUSCRN
|
---|
221 | D IX^DIC
|
---|
222 | I +Y'>0 D
|
---|
223 | . W !!,"No "_TIUTNM
|
---|
224 | . W $S(+$O(^TIU(8925,"APT",DFN,TIUTYP,0))'>0:"s On File.",+$O(^(0))>2:"s Available.",1:" Selected..."),!
|
---|
225 | . I $$READ^TIUU("EA","Press RETURN to continue...") ; pause
|
---|
226 | . W !
|
---|
227 | S TIUY=+Y
|
---|
228 | SELOPX Q TIUY
|
---|