| [613] | 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 | 
|---|