1 | TIUSRVD ; SLC/JER - RPC's for document definition ; 09/12/2003 [6/8/05 8:07am]
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**1,7,22,47,103,100,115,164,112,186,201**;Jun 20, 1997
|
---|
3 | NOTES(TIUY) ; Get list of PN Titles
|
---|
4 | D LIST(.TIUY,3)
|
---|
5 | Q
|
---|
6 | SUMMARY(TIUY) ; Get list of DS Titles
|
---|
7 | D LIST(.TIUY,244)
|
---|
8 | Q
|
---|
9 | LIST(TIUY,CLASS,TYPE,TIUK) ; Get list of document titles
|
---|
10 | N TIUDFLT
|
---|
11 | ; TIUK is STATIC
|
---|
12 | S TIUK=+$G(TIUK)
|
---|
13 | I $G(TYPE)']"" S TYPE="DOC"
|
---|
14 | ; If the user has a preferred list of titles for the CLASS, get it
|
---|
15 | I +$O(^TIU(8925.98,"AC",DUZ,CLASS,0)) D PERSLIST(.TIUY,DUZ,CLASS,.TIUK,1)
|
---|
16 | S TIUK=+$G(TIUK)+1 S TIUY(TIUK)="~LONG LIST"
|
---|
17 | D TRAVERSE(.TIUY,CLASS,$G(TYPE),.TIUK)
|
---|
18 | S TIUDFLT=$$PERSDOC^TIULE(DUZ,+CLASS)
|
---|
19 | I +TIUDFLT S TIUK=+$G(TIUK)+1,TIUY(TIUK)="d"_$P(TIUDFLT,U,2)
|
---|
20 | Q
|
---|
21 | TRAVERSE(TIUY,CLASS,TYPE,TIUK) ; Get all selectable titles for the CLASS
|
---|
22 | N I,J,X,CURTYP,Y,TIUI,TIUC,TYPMATCH S (TIUC,TIUI)=0
|
---|
23 | S TIUK=+$G(TIUK)
|
---|
24 | I $S(+$$CANENTR^TIULP(CLASS)'>0:1,+$$CANPICK^TIULP(CLASS)'>0:1,1:0) Q
|
---|
25 | S CURTYP=$P(^TIU(8925.1,+CLASS,0),U,4)
|
---|
26 | S TYPMATCH=$$TYPMATCH^TIULA1(TYPE,CURTYP)
|
---|
27 | I +TYPMATCH S TIUK=+$G(TIUK)+1
|
---|
28 | I S TIUY(TIUK)="i"_+CLASS_U_$$PNAME^TIULC1(+CLASS)
|
---|
29 | S I=0 F S I=$O(^TIU(8925.1,+CLASS,10,I)) Q:+I'>0 D
|
---|
30 | . N J
|
---|
31 | . S J=+$G(^TIU(8925.1,+CLASS,10,+I,0)) Q:+J'>0
|
---|
32 | . D TRAVERSE(.TIUY,+J,TYPE,.TIUK)
|
---|
33 | Q
|
---|
34 | PERSLIST(TIUY,DUZ,CLASS,TIUC,TIUFLG) ; Get personal list for a user
|
---|
35 | N TIUI,TIUDA,TIUDFLT,INLST
|
---|
36 | S TIUDA=+$O(^TIU(8925.98,"AC",DUZ,CLASS,0))
|
---|
37 | Q:+TIUDA'>0
|
---|
38 | I +$G(TIUFLG) S TIUC=1,TIUY(TIUC)="~SHORT LIST"
|
---|
39 | S TIUI=0,TIUC=+$G(TIUC)
|
---|
40 | F S TIUI=$O(^TIU(8925.98,TIUDA,10,TIUI)) Q:+TIUI'>0 D
|
---|
41 | . N TIUPL,TIUTNM,TIUDTYP,TIUSEQ
|
---|
42 | . S TIUPL=$G(^TIU(8925.98,TIUDA,10,TIUI,0))
|
---|
43 | . S TIUDTYP=$P(TIUPL,U)
|
---|
44 | . I $S(+$$CANENTR^TIULP(TIUDTYP)'>0:1,+$$CANPICK^TIULP(TIUDTYP)'>0:1,1:0) Q
|
---|
45 | . S TIUTNM=$S($P(TIUPL,U,3)]"":$P(TIUPL,U,3),1:$$PNAME^TIULC1(+TIUDTYP))
|
---|
46 | . S TIUSEQ=+$P(TIUPL,U,2),TIUC=+$G(TIUC)+1
|
---|
47 | . S TIUSEQ=$S(+TIUSEQ:$S('$D(TIUY(TIUSEQ)):TIUSEQ,1:(TIUSEQ+1)),1:TIUC)
|
---|
48 | . S TIUY(TIUSEQ)="i"_TIUDTYP_U_TIUTNM,TIUC=+TIUSEQ
|
---|
49 | I +$G(TIUFLG) Q
|
---|
50 | S TIUDFLT=$$PERSDOC^TIULE(DUZ,+CLASS)
|
---|
51 | S (TIUI,TIUC)=0
|
---|
52 | F S TIUI=$O(TIUY(TIUI)) Q:+TIUI'>0 D
|
---|
53 | . S TIUC=TIUI
|
---|
54 | . I +TIUDFLT,($P($G(TIUY(TIUI)),U)=("i"_+TIUDFLT)) S $P(TIUDFLT,U,2)=$P(TIUY(TIUI),U,2),INLST=TIUI
|
---|
55 | I +TIUDFLT D
|
---|
56 | . ;if default isn't in list, append it as an item
|
---|
57 | . I '$G(INLST) S TIUC=+$G(TIUC)+1,TIUY(TIUC)="i"_TIUDFLT
|
---|
58 | . ;otherwise, just append as default
|
---|
59 | . S TIUC=+$G(TIUC)+1,TIUY(TIUC)="d"_TIUDFLT
|
---|
60 | Q
|
---|
61 | BLRSHELL(TIUY,TITLE,DFN,VSTR) ; Shell for boilerplate RPC
|
---|
62 | K ^TMP("TIUBOIL",$J)
|
---|
63 | D BLRPLT(.TIUY,TITLE,DFN,$G(VSTR))
|
---|
64 | K ^TMP("TIUBOIL",$J,0)
|
---|
65 | Q
|
---|
66 | BLRPLT(TIUY,TITLE,DFN,VSTR,ROOT) ; Load/Execute the Boilerplate for TITLE
|
---|
67 | ; or ROOT
|
---|
68 | N TIU,TIUI,TIUJ,TIUK,TIUL,VADM,VAIN,VA,VAERR S TIUI=0
|
---|
69 | S:'$D(TIUY) TIUY=$NA(^TMP("TIUBOIL",$J))
|
---|
70 | S:'$D(ROOT) ROOT=$NA(^TIU(8925.1,+TITLE,"DFLT")) ; **47**
|
---|
71 | I $L($G(VSTR)) D PATVADPT^TIULV(.TIU,DFN,"",$G(VSTR)) ; **47**
|
---|
72 | S TIUJ=+$P($G(^TMP("TIUBOIL",$J,0)),U,3)+1
|
---|
73 | ; --- Set component header ---
|
---|
74 | I ROOT["^TIU(8925.1," D
|
---|
75 | . S ^TMP("TIUBOIL",$J,TIUJ,0)=$S($P($G(^TIU(8925.1,+TITLE,0)),U,4)="CO":$P(^TIU(8925.1,+TITLE,0),U)_": ",1:"")
|
---|
76 | I +TIUJ=1,($G(^TMP("TIUBOIL",$J,TIUJ,0))']"") K ^TMP("TIUBOIL",$J,TIUJ,0) S TIUJ=0
|
---|
77 | S ^TMP("TIUBOIL",$J,0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
|
---|
78 | F S TIUI=$O(@ROOT@(TIUI)) Q:+TIUI'>0 D
|
---|
79 | . S TIUJ=TIUJ+1,X=$G(@ROOT@(TIUI,0))
|
---|
80 | . I $L($T(DOLMLINE^TIUSRVF1)),'$D(XWBOS),(X["{FLD:") S X=$$DOLMLINE^TIUSRVF1(X)
|
---|
81 | . I X["|" S X=$$BOIL(X,TIUJ)
|
---|
82 | . I X["~@" D INSMULT(X,"^TMP(""TIUBOIL"",$J)",.TIUJ) I 1
|
---|
83 | . E S ^TMP("TIUBOIL",$J,TIUJ,0)=X
|
---|
84 | . S ^TMP("TIUBOIL",$J,0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
|
---|
85 | I ROOT["^TIU(8925.1,",+$O(^TIU(8925.1,+TITLE,10,0)) D
|
---|
86 | . N TIUFITEM,TIUI D ITEMS^TIUFLT(+TITLE)
|
---|
87 | . S TIUI=0 F S TIUI=$O(TIUFITEM(TIUI)) Q:+TIUI'>0 D
|
---|
88 | . . S TIUL=+$G(TIUFITEM(+TIUI)) D BLRPLT(.TIUY,TIUL,DFN,$G(VSTR))
|
---|
89 | Q
|
---|
90 | BOIL(LINE,COUNT) ; Execute Boilerplates
|
---|
91 | N TIUNEWG,TIUNEWR,TIUOLDG,TIUOLDR
|
---|
92 | N TIUI,DIC,X,Y,TIUFPRIV S TIUFPRIV=1
|
---|
93 | S DIC=8925.1,DIC(0)="FMXZ"
|
---|
94 | S DIC("S")="I $P($G(^TIU(8925.1,+Y,0)),U,4)=""O"""
|
---|
95 | F TIUI=2:2:$L(LINE,"|") S X=$P(LINE,"|",TIUI) D
|
---|
96 | . D ^DIC
|
---|
97 | . I +Y'>0 S X="The OBJECT "_X_" was NOT found...Contact IRM."
|
---|
98 | . I +Y>0 D
|
---|
99 | . . I $D(^TIU(8925.1,+Y,9)),+$$CANXEC(+Y) X ^(9) S:X["~@" X=$$APPEND(X) I 1
|
---|
100 | . . E S X="The OBJECT "_X_" is INACTIVE...Contact IRM."
|
---|
101 | . . I X["~@" D
|
---|
102 | . . . I X'["^" D
|
---|
103 | . . . . S TIUOLDR=$P(X,"~@",2),TIUNEWR=TIUOLDR_TIUI
|
---|
104 | . . . . M @TIUNEWR=@TIUOLDR K @TIUOLDR
|
---|
105 | . . . . S $P(X,"~@",2)=TIUNEWR
|
---|
106 | . . . I X["^" D
|
---|
107 | . . . . S TIUOLDG=$P(X,"~@",2),TIUNEWG="^TMP("_"""TIU201"""_","_$J_","_TIUI_")"
|
---|
108 | . . . . M @TIUNEWG=@TIUOLDG K @TIUOLDG
|
---|
109 | . . . . S $P(X,"~@",2)=TIUNEWG
|
---|
110 | . S LINE=$$REPLACE(LINE,X,TIUI)
|
---|
111 | Q $TR(LINE,"|","")
|
---|
112 | CANXEC(TIUODA) ; Evaluate Object Status
|
---|
113 | N TIUOST,TIUY S TIUOST=+$P($G(^TIU(8925.1,+TIUODA,0)),U,7)
|
---|
114 | S TIUY=$S(TIUOST=11:1,+$G(NOSAVE):1,1:0)
|
---|
115 | Q +$G(TIUY)
|
---|
116 | APPEND(X) ;
|
---|
117 | N TIUXL S TIUXL=$L(X)
|
---|
118 | I $E(X,TIUXL-1,TIUXL)'="~@" S X=X_"~@"
|
---|
119 | Q X
|
---|
120 | REPLACE(LINE,X,TIUI) ; Replace the TIUIth object in LINE w/X
|
---|
121 | S $P(LINE,"|",TIUI)=X
|
---|
122 | Q LINE
|
---|
123 | INSMULT(LINE,TARGET,TIULCNT) ; Mult-valued results
|
---|
124 | N TIUPC,TIULGTH
|
---|
125 | ; TIU*1*164 ;
|
---|
126 | S TIULGTH=73 ; 2 replacements of 73 below for TIULGTH
|
---|
127 | S:$$BROKER^XWBLIB TIULGTH=80
|
---|
128 | F TIUPC=2:2:$L(LINE,"~@") D
|
---|
129 | . N TIUI,TIULINE,TIUX,TIUSRC,TIUSCNT,TIUTAIL
|
---|
130 | . S TIUSRC=$P(LINE,"~@",TIUPC)
|
---|
131 | . S TIUTAIL=$P(LINE,"~@",TIUPC+1)
|
---|
132 | . S TIULINE=$P(LINE,"~@",(TIUPC-1)),(TIUI,TIUSCNT)=0
|
---|
133 | . I $E(TIULINE)=" ",(TIUPC>2) S $E(TIULINE)=""
|
---|
134 | . F S TIUI=$O(@TIUSRC@(TIUI)) Q:+TIUI'>0 D
|
---|
135 | . . N TIUSLINE
|
---|
136 | . . S TIUSCNT=TIUSCNT+1
|
---|
137 | . . S TIUSLINE=$G(@TIUSRC@(TIUI,0))
|
---|
138 | . . S:'+$O(@TIUSRC@(TIUI))&(TIUPC+2>$L(LINE,"~@")) TIUSLINE=TIUSLINE_TIUTAIL
|
---|
139 | . . I TIUSCNT=1,($L(TIULINE_TIUSLINE)>TIULGTH) D Q
|
---|
140 | . . . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
|
---|
141 | . . . S @TARGET@(TIULCNT,0)=TIULINE
|
---|
142 | . . . S TIULCNT=TIULCNT+1
|
---|
143 | . . . S @TARGET@(TIULCNT,0)=TIUSLINE
|
---|
144 | . . I TIUSCNT=1,($L(TIULINE_TIUSLINE)'>TIULGTH) D Q
|
---|
145 | . . . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
|
---|
146 | . . . S @TARGET@(TIULCNT,0)=TIULINE_TIUSLINE
|
---|
147 | . . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
|
---|
148 | . . S @TARGET@(TIULCNT,0)=$G(TIUSLINE)
|
---|
149 | . K @TIUSRC
|
---|
150 | Q
|
---|
151 | LNGCNSLT(Y,FROM,DIR) ; Handle long list of titles for CONSULTS
|
---|
152 | N CLASS S CLASS=+$$CLASS^TIUCNSLT Q:+CLASS'>0
|
---|
153 | D LONGLIST(.Y,CLASS,$G(FROM),$G(DIR,1))
|
---|
154 | Q
|
---|
155 | LNGSURG(Y,FROM,DIR,CLNAME) ; long list SURGICAL REPORT titles
|
---|
156 | ; CLNAME = "SURGICAL REPORTS" or "PROCEDURE REPORTS (NON-O.R.)"
|
---|
157 | ; depending on context
|
---|
158 | N CLASS S CLNAME=$S($G(CLNAME)]"":CLNAME,1:"OPERATION REPORTS")
|
---|
159 | S CLASS=$$CLASS^TIUSROI(CLNAME) Q:+CLASS'>0
|
---|
160 | D LONGLIST(.Y,CLASS,$G(FROM),$G(DIR,1))
|
---|
161 | Q
|
---|
162 | LONGLIST(Y,CLASS,FROM,DIR,IDNOTE) ; long list of titles for a class
|
---|
163 | ; .Y=returned list, CLASS=ptr to class in 8925.1, FROM=text to $O from,
|
---|
164 | ; DIR=$O direction, IDNOTE=flag to indicate selection for ID Entry
|
---|
165 | N I,DA,CNT S I=0,CNT=44,DIR=$G(DIR,1)
|
---|
166 | F Q:I'<CNT S FROM=$O(^TIU(8925.1,"ACL",CLASS,FROM),DIR) Q:FROM="" D
|
---|
167 | . S DA=0
|
---|
168 | . F Q:I'<CNT S DA=$O(^TIU(8925.1,"ACL",CLASS,FROM,DA)) Q:+DA'>0 D
|
---|
169 | . . I $S(+$$CANENTR^TIULP(DA)'>0:1,+$$CANPICK^TIULP(DA)'>0:1,1:0) Q
|
---|
170 | . . I +$L($T(CANLINK^TIULP)),+$G(IDNOTE),(+$$CANLINK^TIULP(DA)'>0) Q
|
---|
171 | . . S I=I+1,Y(I)=DA_"^"_FROM
|
---|
172 | Q
|
---|
173 | CNSLCLAS(Y) ; RPC to identify class CONSULTS
|
---|
174 | S Y=$$CLASS^TIUCNSLT
|
---|
175 | Q
|
---|
176 | SURGCLAS(Y,CLNAME) ; RPC to identify class
|
---|
177 | ; CLNAME = "SURGICAL REPORTS" or "PROCEDURE REPORTS (NON-O.R.)"
|
---|
178 | S CLNAME=$G(CLNAME,"SURGICAL REPORTS")
|
---|
179 | S Y=$$CLASS^TIUSROI(CLNAME)
|
---|
180 | Q
|
---|
181 | CANLINK(Y,TIUTTL) ; Wrap call to $$CANLINK^TIULP
|
---|
182 | S Y=$$CANLINK^TIULP(TIUTTL)
|
---|
183 | Q
|
---|