1 | TIUFIX1 ; SLC/JER - Resolve Upload Filing Errors Library One ;05/06/2002
|
---|
2 | ;;1.0;TEXT INTEGRATION UTILITIES;**131**;Jun 20, 1997
|
---|
3 | ;
|
---|
4 | ;MAKE is intended to be called by the filing error resolution
|
---|
5 | ;code for various types of documents being uploaded into TIU.
|
---|
6 | ;It is intended to be used in conjunction with a GETCHECK
|
---|
7 | ;module written specifically for the particular type of
|
---|
8 | ;document being uploaded. For examples of its use, see
|
---|
9 | ;TIUPNFIX and TIUCNFIX.
|
---|
10 | ;Since types of documents evolve and change, MAKE must be tested
|
---|
11 | ;for each new type of document which uses it, and may require
|
---|
12 | ;changes.
|
---|
13 | ;MAKE takes a stub IEN or pt/visit/title info, locates or creates
|
---|
14 | ;a TIU document, and attempts to complete the upload process
|
---|
15 | ;for that document.
|
---|
16 | ; **WARNING**
|
---|
17 | ;MAKE calls FILE, which files ALL NODES of TIUFLDS which it
|
---|
18 | ;receives. If data already exist for a given field, such filing
|
---|
19 | ;OVERWRITES the existing value with a possibly erroneous,
|
---|
20 | ;transcribed value. To prevent such overwriting of critical
|
---|
21 | ;fields, MAKE kills certain nodes of TIUFLDS just before calling
|
---|
22 | ;FILE. Nodes killed in MAKE include .01, .02, .07, and 1301,
|
---|
23 | ;which were NOT previously killed when the header info was
|
---|
24 | ;loaded into array TIUHDR. (LOADHDR^TIUFIX2 does NOT kill nodes,
|
---|
25 | ;in contrast to LOADTIUX^TIUPEFIX.)
|
---|
26 | ;Certain document types may NEED TO KILL ADDITIONAL NODES of
|
---|
27 | ;TIUFLDS. For example, if a document type uploads into an
|
---|
28 | ;existing stub which already HAS a Requesting Package value,
|
---|
29 | ;that document type should also kill node 1405 of TIUFLDS to
|
---|
30 | ;ensure that the existing Requesting Package data is not
|
---|
31 | ;overwritten with possibly erroneous, transcribed Requesting
|
---|
32 | ;Package data. Such nodes of TIUFLDS can be killed
|
---|
33 | ;before calling MAKE.
|
---|
34 | MAKE(SUCCESS,TIUEVNT,TIUBUF,TIUTYPE,TIUFLDS,DFN,TITLDA,TIU,TIUPRM0,TIUSTUB) ; File
|
---|
35 | ;new TIU Document or use stub docmt
|
---|
36 | ; SUCCESS = (by ref) Returns TIU DOCUMENT # (PTR to 8925) or
|
---|
37 | ; = 0^Explanatory message if no SUCCESS. Required.
|
---|
38 | ; DFN = Patient (#2). Required if no stub.
|
---|
39 | ; TITLDA = Pointer to TIU Document Definition (#8925.1). Required
|
---|
40 | ; if no stub.
|
---|
41 | ; TIU = Array of demographic and visit attributes. Required if
|
---|
42 | ; no stub.
|
---|
43 | ; TIUEVNT = Record number (ien) of event in TIU Upload Log
|
---|
44 | ; file (#8925.4). Required.
|
---|
45 | ; TIUTYPE = IEN of docmt def whose Filing Error Resolution Code
|
---|
46 | ; is being invoked. Required.
|
---|
47 | ; TIUFLDS = Array of field data from upload buffer. Required.
|
---|
48 | ; MAKE kills certain nodes of TIUFLDS. Additional
|
---|
49 | ; nodes may need to be killed before calling MAKE.
|
---|
50 | ; See warning, above.
|
---|
51 | ; TIUPRM0 = String of upload params like hdr signal. See
|
---|
52 | ; SETPARM^TIULE. Required
|
---|
53 | ; TIUSTUB = Valid Record number of stub document. Required
|
---|
54 | ; if file is being uploaded into a stub
|
---|
55 | ; document. MAKE assumes flds stuffed in
|
---|
56 | ; STUFREC^TIUPEFIX already exist in stub. Assumes
|
---|
57 | ; stub is NOT an addendum.
|
---|
58 | ;
|
---|
59 | ; -- first, get TIU Document record:
|
---|
60 | ;
|
---|
61 | N TIUDA,LDT,NEWREC,TIUX,TIUTYP,TIUDPRM,TIUCLASS,TIUDTYP,TIUPOST
|
---|
62 | N TIUDFLT,TIUREC,TITL1,TIUADD
|
---|
63 | ; -- If no docmt type or Upload event, or target file
|
---|
64 | ; is not 8925, QUIT:
|
---|
65 | I '$G(TIUTYPE)!'$G(TIUEVNT) S SUCCESS="0^Document type and Upload Log Event Required." Q
|
---|
66 | I +$G(^TIU(8925.1,+TIUTYPE,1))'=8925 S SUCCESS="0^Target file not 8925." Q
|
---|
67 | ; -- If stub IEN is not defined, create new record with user-
|
---|
68 | ; supplied pt/visit/title info (or return an existing docmt):
|
---|
69 | I '$G(TIUSTUB) D Q:$P($G(SUCCESS),U)=0
|
---|
70 | . I $S($D(TIU)'>9:1,+$G(DFN)'>0:1,+$G(TITLDA)'>0:1,1:0) S SUCCESS="0^Invalid Patient, Visit, or Title." Q
|
---|
71 | . S TITL1=1_U_TITLDA
|
---|
72 | . D DOCPRM^TIULC1(TITLDA,.TIUDPRM)
|
---|
73 | . ; -- NOTE: If GETRECNW finds existing documents which have
|
---|
74 | . ; requesting packages (e.g. Consults), it ignores them
|
---|
75 | . ; and returns exclusively new documents.
|
---|
76 | . S TIUDA=$$GETRECNW^TIUEDI3(DFN,.TIU,TITL1,.NEWREC,.TIUDPRM)
|
---|
77 | . I +TIUDA'>0 S SUCCESS="0^Document could not be filed even though data appear complete and consistent."
|
---|
78 | ; -- If stub IEN is defined, set docmt IEN = stub
|
---|
79 | I $G(TIUSTUB) D Q:$P($G(SUCCESS),U)=0
|
---|
80 | . I $D(^TIU(8925,TIUSTUB,0)) S TIUDA=TIUSTUB Q
|
---|
81 | . S SUCCESS="0^The stub document does not exist in TIU."
|
---|
82 | ; -- Leave lock til later; check GUI - when does it lock? 4/21/02
|
---|
83 | ; -- Lock Document:
|
---|
84 | ;L +^TIU(8925,TIUDA):1
|
---|
85 | ;E S SUCCESS="0^Document is being edited by another user; please try again later." Q
|
---|
86 | ; -- If docmt is not new (new docmts leave GETRECNW already
|
---|
87 | ; released) and is already released, create an addendum
|
---|
88 | ; (addm does its own stuffing, filing, ... post filing):
|
---|
89 | I '$G(NEWREC),+$P(^TIU(8925,TIUDA,0),U,5)'<4 D Q:$P($G(SUCCESS),U)=0 G MAKEX
|
---|
90 | . D MAKEADD(.TIUADD,+TIUDA,TIUBUF,.TIUFLDS,TIUPRM0)
|
---|
91 | . S SUCCESS=TIUADD
|
---|
92 | . I SUCCESS S TIUDA=+TIUADD ;browse addm, not docmt
|
---|
93 | S SUCCESS=1
|
---|
94 | ; -- Stuff visit-related data:
|
---|
95 | I '$G(TIUSTUB) D STUFREC^TIUPEFIX(TIUDA,$G(DFN),0,.TIU) ;0 parent
|
---|
96 | ; -- Kill header array nodes that have already been filed
|
---|
97 | ; in GETRECNW^TIUEDI3 or STUFREC^TIUPEFIX and which mustn't
|
---|
98 | ; be overwritten with possibly erroneous, transcribed data:
|
---|
99 | K TIUFLDS(.01),TIUFLDS(.02),TIUFLDS(.03),TIUFLDS(.05),TIUFLDS(.07)
|
---|
100 | K TIUFLDS(.13),TIUFLDS(1205),TIUFLDS(1211),TIUFLDS(1301)
|
---|
101 | ; -- File transcribed header fields (those not killed) in Document
|
---|
102 | ; and create missing field errors:
|
---|
103 | D FILE(+TIUDA,.TIUFLDS,TITLDA)
|
---|
104 | ; -- Load transcribed text into TIUX array and merge into TEMP array:
|
---|
105 | D LOADTEXT(.TIUX,TIUBUF,TIUPRM0)
|
---|
106 | K ^TIU(8925,+TIUDA,"TEMP")
|
---|
107 | M ^TIU(8925,+TIUDA,"TEMP")=TIUX("TEXT")
|
---|
108 | ; -- File text in Document:
|
---|
109 | I '$D(TIU) D GETTIU^TIULD(.TIU,+TIUDA)
|
---|
110 | D MERGTEXT^TIUEDI1(+TIUDA,.TIU)
|
---|
111 | S TIUPOST=$$POSTFILE^TIULC1(TITLDA)
|
---|
112 | S TIUREC("#")=TIUDA
|
---|
113 | I TIUPOST]"" X TIUPOST
|
---|
114 | MAKEX D ALERTDEL^TIUPEVNT(+TIUBUF)
|
---|
115 | D RESOLVE^TIUPEVNT(TIUEVNT,1)
|
---|
116 | D BUFPURGE^TIUPUTC(+TIUBUF)
|
---|
117 | K ^TIU(8925,+TIUDA,"TEMP") W "Done."
|
---|
118 | ;L -^TIU(8925,TIUDA)
|
---|
119 | I +$G(TIUDA),+$D(^TIU(8925,+$G(TIUDA),0)) D
|
---|
120 | . N TIU D GETTIU^TIULD(.TIU,+TIUDA)
|
---|
121 | . D EN^VALM("TIU BROWSE FOR MRT")
|
---|
122 | Q
|
---|
123 | LOADTEXT(TIUARR,TIUBUF,TIUPRM0) ; Load array TIUARR with text
|
---|
124 | N TIUI,TIUBGN,TIULINE
|
---|
125 | S TIUBGN=$P(TIUPRM0,U,12)
|
---|
126 | S TIUI=0 F S TIUI=$O(^TIU(8925.2,+TIUBUF,"TEXT",TIUI)) Q:+TIUI'>0 D
|
---|
127 | . S TIULINE=$G(^TIU(8925.2,+TIUBUF,"TEXT",TIUI,0))
|
---|
128 | . I TIULINE[TIUBGN D
|
---|
129 | . . N TIUJ S TIUJ=0
|
---|
130 | . . F D Q:+TIUI'>0
|
---|
131 | . . . S TIUI=$O(^TIU(8925.2,+TIUBUF,"TEXT",TIUI)) Q:+TIUI'>0
|
---|
132 | . . . S TIUJ=TIUJ+1
|
---|
133 | . . . S TIUARR("TEXT",TIUJ,0)=$G(^TIU(8925.2,+TIUBUF,"TEXT",TIUI,0))
|
---|
134 | Q
|
---|
135 | MAKEADD(TIUDADD,TIUDA,TIUBUF,TIUFLDS,TIUPRM0) ; Create an addendum record
|
---|
136 | ; [TIUDADD] - passed back = IEN of addm to docmt TIUDA
|
---|
137 | N DIE,DR,DA,DIC,X,Y,DLAYGO,TIUATYP,TIUCAN,TIUFPRIV,TIU,TIUX S TIUFPRIV=1
|
---|
138 | N TIUDTTL,TIUPOST,TIUREC
|
---|
139 | S TIUDTTL=+$G(^TIU(8925,+TIUDA,0))
|
---|
140 | S TIUATYP=+$$WHATITLE^TIUPUTU("ADDENDUM")
|
---|
141 | S (DIC,DLAYGO)=8925,DIC(0)="L",X=""""_"`"_TIUATYP_""""
|
---|
142 | D ^DIC
|
---|
143 | S TIUDADD=+Y
|
---|
144 | I +Y'>0 S TIUDADD="0^Could not create addendum." Q
|
---|
145 | D GETTIU^TIULD(.TIU,TIUDA)
|
---|
146 | S TIU("DOCTYP")=TIUATYP_U_$$PNAME^TIULC1(TIUATYP)
|
---|
147 | D STUFREC^TIUPEFIX(TIUDADD,DFN,+TIUDA,.TIU)
|
---|
148 | ; -- Kill header array nodes that have already been filed
|
---|
149 | ; when addm created or in STUFREC^TIUPEFIX, and which mustn't
|
---|
150 | ; be overwritten with possibly erroneous, transcribed data:
|
---|
151 | K TIUFLDS(.01),TIUFLDS(.02),TIUFLDS(.07),TIUFLDS(1301)
|
---|
152 | ; -- File header fields in addendum record:
|
---|
153 | D FILE(+TIUDADD,.TIUFLDS,TIUATYP)
|
---|
154 | ; -- Load text into TIUX array and merge into TEMP array:
|
---|
155 | D LOADTEXT(.TIUX,TIUBUF,TIUPRM0)
|
---|
156 | K ^TIU(8925,+TIUDADD,"TEMP")
|
---|
157 | M ^TIU(8925,+TIUDADD,"TEMP")=TIUX("TEXT")
|
---|
158 | ; -- File text in addendum record:
|
---|
159 | D MERGTEXT^TIUEDI1(+TIUDADD,.TIU)
|
---|
160 | S TIUPOST=$$POSTFILE^TIULC1(TIUDTTL)
|
---|
161 | S TIUREC("#")=TIUDADD
|
---|
162 | I TIUPOST]"" X TIUPOST
|
---|
163 | Q
|
---|
164 | FILE(TIUDA,TIUFLDS,RTYPE) ; File header data; set missing field
|
---|
165 | ;alerts for fields that fail to file
|
---|
166 | ; [TIUDA] - IEN of 8925 document
|
---|
167 | ; [TIUFLDS] - array of header data from upload buffer record.
|
---|
168 | ; ALL nodes received by FILE will be filed. See
|
---|
169 | ; warning for MAKE, concerning possible overwriting
|
---|
170 | ; of good data with faulty data.
|
---|
171 | ; [RTYPE] - Record type, i.e. IEN of 8925.1 title of docmt
|
---|
172 | N FDA,FDARR,IENS,FLAGS,TIUMSG,MSG,REQMSG
|
---|
173 | S IENS=""""_TIUDA_",""",FDARR="FDA(8925,"_IENS_")",FLAGS="KE"
|
---|
174 | M @FDARR=TIUFLDS
|
---|
175 | D FILE^DIE(FLAGS,"FDA","TIUMSG") ; File record
|
---|
176 | I $D(TIUMSG)>9 D
|
---|
177 | . D MAIN^TIUPEVNT(TIUBUF,2,"",$P($G(^TIU(8925.1,+RTYPE,0)),U),.FDA,.TIUMSG)
|
---|
178 | Q
|
---|