| 1 | TIUPEFIX ; SLC/JER - Resolve Filing errors for TIU Documents ;11/01/03 | 
|---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**1,21,100,167,113,112**;Jun 20, 1997 | 
|---|
| 3 | MAKE(SUCCESS,DFN,TITLE,TIU,TIUBUF) ; File new TIU Document | 
|---|
| 4 | ; SUCCESS = (by ref) SUCCESS Returns TIU DOCUMENT # (PTR to 8925) | 
|---|
| 5 | ;         = 0^Explanatory message if no SUCCESS | 
|---|
| 6 | ; DFN     = Patient (#2) | 
|---|
| 7 | ; TITLE   = Pointer to TIU Document Definition (#8925.1) | 
|---|
| 8 | ; TIU     = Array of demographic and visit attributes | 
|---|
| 9 | ; TIUBUF  = Record number (ien) of entry in TIU Buffer file (#8925.2) | 
|---|
| 10 | ; | 
|---|
| 11 | ; -- first, get TIU Document record -- | 
|---|
| 12 | ; | 
|---|
| 13 | N TIUDA,LDT,NEWREC,TIUX,TIUTYP,TIUDPRM,HAPPY,TIUCLASS,TIUDTYP,TIUPOST | 
|---|
| 14 | N TIUDFLT,TIUREC | 
|---|
| 15 | S SUCCESS=0 ; Initialize SUCCESS to false | 
|---|
| 16 | I $S($D(TIU)'>9:1,+$G(DFN)'>0:1,+$G(TIUTYPE)'>0:1,1:0) S SUCCESS="0^"_$$EZBLD^DIALOG(89250001) Q | 
|---|
| 17 | ; If target file is not 8925 QUIT | 
|---|
| 18 | I +$G(^TIU(8925.1,+TIUTYPE,1))'=8925 Q | 
|---|
| 19 | S TIUDTYP=$P($G(^TIU(8925.1,+TIUTYPE,0)),U,4) | 
|---|
| 20 | S TIUCLASS=$S(TIUDTYP="CL":+TIUTYPE,1:38) | 
|---|
| 21 | S TIUDFLT=$S(TIUCLASS'=TIUTYPE:TIUTYPE,1:"") | 
|---|
| 22 | I +$G(TITLE)'>0 S TITLE=$$ASKTITLE^TIULA3(TIUCLASS,TIUDFLT) | 
|---|
| 23 | Q:+TITLE'>0 | 
|---|
| 24 | S TIUTYP=TITLE,TIUTYP(1)=1_U_TITLE | 
|---|
| 25 | D DOCPRM^TIULC1(TITLE,.TIUDPRM) | 
|---|
| 26 | ;S TIUDA=$$GETREC^TIUEDI1(DFN,.TIU,1,.NEWREC,.TIUDPRM) ;10/27/00 | 
|---|
| 27 | S TIUDA=$$GETRECNW^TIUEDI3(DFN,.TIU,TIUTYP(1),.NEWREC,.TIUDPRM) | 
|---|
| 28 | I +TIUDA'>0 S SUCCESS="0^"_$$EZBLD^DIALOG(89250002) Q | 
|---|
| 29 | I +$$CANEDIT^TIUPUTU(TIUDA)'>0 D  G MAKEX | 
|---|
| 30 | . D MAKEADD(.TIUADD,+TIUDA,TIUBUF) S SUCCESS=TIUADD | 
|---|
| 31 | S SUCCESS=1 | 
|---|
| 32 | ; | 
|---|
| 33 | ; -- second, load the header elements & text into TIUX array | 
|---|
| 34 | ; | 
|---|
| 35 | D STUFREC(TIUDA,$G(DFN),$P($G(^TIU(8925,TIUDA,0)),U,6),.TIU) | 
|---|
| 36 | D LOADTIUX(.TIUX,TIUBUF) | 
|---|
| 37 | ; | 
|---|
| 38 | ; -- third, file the data in TIU Document record -- | 
|---|
| 39 | ; | 
|---|
| 40 | K ^TIU(8925,+TIUDA,"TEMP"),TIUX(.01),TIUX(.02),TIUX(.03),TIUX(.05) | 
|---|
| 41 | K TIUX(.13),TIUX(1205),TIUX(1211) | 
|---|
| 42 | M ^TIU(8925,+TIUDA,"TEMP")=TIUX("TEXT") K TIUX("TEXT") | 
|---|
| 43 | D FILE(.HAPPY,+TIUDA,.TIUX,TIUTYP) | 
|---|
| 44 | D MERGTEXT^TIUEDI1(+TIUDA,.TIU) | 
|---|
| 45 | S TIUPOST=$$POSTFILE^TIULC1(TITLE) | 
|---|
| 46 | S TIUREC("#")=TIUDA | 
|---|
| 47 | I TIUPOST]"" X TIUPOST | 
|---|
| 48 | MAKEX D ALERTDEL^TIUPEVNT(+TIUBUF) | 
|---|
| 49 | D RESOLVE^TIUPEVNT($S($D(XQADATA):+$P(XQADATA,";",3),1:$G(ERRDA)),1) | 
|---|
| 50 | D BUFPURGE^TIUPUTC(+TIUBUF) | 
|---|
| 51 | K ^TIU(8925,+TIUDA,"TEMP") W "Done." | 
|---|
| 52 | I +$G(TIUDA),+$D(^TIU(8925,+$G(TIUDA),0)) D | 
|---|
| 53 | . N TIU D GETTIU^TIULD(.TIU,+TIUDA) | 
|---|
| 54 | . D EN^VALM("TIU BROWSE FOR MRT") | 
|---|
| 55 | Q | 
|---|
| 56 | LOADTIUX(TIUARR,TIUBUF) ; Load TIUX array with header and text | 
|---|
| 57 | N TIUI,TIUHSIG,TIUBGN,TIULINE,X,Y,TYPE I '$D(TIUPRM0) D SETPARM^TIULE | 
|---|
| 58 | S TIUHSIG=$P(TIUPRM0,U,10),TIUBGN=$P(TIUPRM0,U,12) | 
|---|
| 59 | S TIUI=0 F  S TIUI=$O(^TIU(8925.2,+TIUBUF,"TEXT",TIUI)) Q:+TIUI'>0  D | 
|---|
| 60 | . S TIULINE=$G(^TIU(8925.2,+TIUBUF,"TEXT",TIUI,0)) | 
|---|
| 61 | . I TIULINE[TIUHSIG D | 
|---|
| 62 | . . N TIUD1,TIUD4 | 
|---|
| 63 | . . S X=$$STRIP^TIULS($P(TIULINE,":",2)),Y=$$WHATYPE^TIUPUTU(X) | 
|---|
| 64 | . . I +Y'>0 D MAIN^TIUPEVNT(TIUBUF,1,3,X) Q | 
|---|
| 65 | . . S TIUD1=$G(^TIU(8925.1,+Y,1)),TIUD4=$G(^TIU(8925.1,+Y,4)) | 
|---|
| 66 | . . S TYPE=+Y | 
|---|
| 67 | . . F  D  Q:TIULINE[TIUBGN!(+TIUI'>0) | 
|---|
| 68 | . . . N TIUN,TIUCAP,TIUFLD,TIUREQ S TIUREQ=0 | 
|---|
| 69 | . . . S TIUI=$O(^TIU(8925.2,+TIUBUF,"TEXT",TIUI)) Q:+TIUI'>0 | 
|---|
| 70 | . . . S TIULINE=$G(^TIU(8925.2,+TIUBUF,"TEXT",TIUI,0)) Q:TIULINE[TIUBGN | 
|---|
| 71 | . . . S TIUCAP=$P(TIULINE,":") Q:TIUCAP']"" | 
|---|
| 72 | . . . S TIUN=$O(^TIU(8925.1,+TYPE,"HEAD","B",TIUCAP,0)) | 
|---|
| 73 | . . . Q:+TIUN'>0 | 
|---|
| 74 | . . . S TIUFLD=$P(^TIU(8925.1,+TYPE,"HEAD",+TIUN,0),U,3) | 
|---|
| 75 | . . . Q:TIUFLD']"" | 
|---|
| 76 | . . . S TIUREQ=$P(^TIU(8925.1,+TYPE,"HEAD",+TIUN,0),U,7) | 
|---|
| 77 | . . . S TIUARR(TIUFLD)=$$STRIP^TIULS($P(TIULINE,":",2,99)) | 
|---|
| 78 | . . . S:TIUFLD'=.001 TIUARR(TIUFLD)=$$TRNSFRM(+TYPE,TIUFLD,TIUARR(TIUFLD)) | 
|---|
| 79 | . . . I +TIUREQ,TIUARR(TIUFLD)="" S TIUARR(TIUFLD)="** REQUIRED FIELD MISSING FROM UPLOAD **" | 
|---|
| 80 | . . . I $S(TIUFLD=.01:1,TIUFLD=.02:1,TIUFLD=.07:1,TIUFLD=1301:1,1:0) K TIUARR(TIUFLD) | 
|---|
| 81 | . . I TIULINE[TIUBGN D | 
|---|
| 82 | . . . N TIUJ S TIUJ=0 | 
|---|
| 83 | . . . F  D  Q:+TIUI'>0 | 
|---|
| 84 | . . . . S TIUI=$O(^TIU(8925.2,+TIUBUF,"TEXT",TIUI)) Q:+TIUI'>0 | 
|---|
| 85 | . . . . S TIUJ=TIUJ+1 | 
|---|
| 86 | . . . . S TIUARR("TEXT",TIUJ,0)=$G(^TIU(8925.2,+TIUBUF,"TEXT",TIUI,0)) | 
|---|
| 87 | Q | 
|---|
| 88 | STUFREC(DA,DFN,PARENT,TIU) ; Stuff fixed field data | 
|---|
| 89 | N FDA,FDARR,IENS,FLAGS,TIUMSG,TIURDT | 
|---|
| 90 | S IENS=""""_DA_",""",FDARR="FDA(8925,"_IENS_")",FLAGS="K" | 
|---|
| 91 | I +$G(PARENT)'>0 D | 
|---|
| 92 | . S @FDARR@(.02)=$G(DFN),@FDARR@(.03)=$P($G(TIU("VISIT")),U) | 
|---|
| 93 | . S @FDARR@(.05)=$S(+$$REQVER(+$P($G(TIUDPRM(0)),U,3)):4,1:5) | 
|---|
| 94 | . S @FDARR@(.07)=$P(TIU("EDT"),U) | 
|---|
| 95 | . S @FDARR@(.08)=$P(TIU("LDT"),U),@FDARR@(1401)=$P($G(TIU("AD#")),U) | 
|---|
| 96 | . S @FDARR@(1402)=$P($G(TIU("TS")),U),@FDARR@(1201)=$$NOW^TIULC | 
|---|
| 97 | . S @FDARR@(1205)=$S(+$P($G(TIU("LOC")),U):$P($G(TIU("LOC")),U),1:$P($G(TIU("VLOC")),U)) | 
|---|
| 98 | . S @FDARR@(1212)=$S(+$P($G(TIU("INST")),U):$P($G(TIU("INST")),U),1:DUZ(2)) | 
|---|
| 99 | . S @FDARR@(1404)=$P($G(TIU("SVC")),U) | 
|---|
| 100 | I +$G(PARENT)>0 D | 
|---|
| 101 | . S @FDARR@(.02)=+$P(^TIU(8925,+PARENT,0),U,2) | 
|---|
| 102 | . S @FDARR@(.03)=$P(^TIU(8925,+PARENT,0),U,3) | 
|---|
| 103 | . S @FDARR@(.05)=$S(+$$REQVER(+$P($G(TIUDPRM(0)),U,3)):4,1:5) | 
|---|
| 104 | . S @FDARR@(.06)=PARENT | 
|---|
| 105 | . S @FDARR@(.07)=$P($G(TIU("EDT")),U),@FDARR@(.08)=$P($G(TIU("LDT")),U) | 
|---|
| 106 | . S @FDARR@(1205)=$P($G(^TIU(8925,+PARENT,12)),U,5) | 
|---|
| 107 | . S @FDARR@(1212)=$P($G(^TIU(8925,+PARENT,12)),U,12) ; if parent's div null so is addendum's div | 
|---|
| 108 | . S @FDARR@(1401)=$P($G(^TIU(8925,+PARENT,14)),U) | 
|---|
| 109 | . S @FDARR@(1402)=$P($G(^TIU(8925,+PARENT,14)),U,2) | 
|---|
| 110 | . S @FDARR@(1404)=$P($G(^TIU(8925,+PARENT,14)),U,4) | 
|---|
| 111 | . S @FDARR@(1405)=$P($G(^TIU(8925,+PARENT,14)),U,5) | 
|---|
| 112 | S @FDARR@(1201)=$$NOW^XLFDT | 
|---|
| 113 | I +$G(TIU("LDT")) S TIURDT=+$G(TIU("LDT")) | 
|---|
| 114 | I +$G(TIU("LDT"))'>0 D | 
|---|
| 115 | . S TIUDICDT=+$$IDATE^TIULC($G(TIUDICDT)) | 
|---|
| 116 | . I +TIUDICDT,($P(TIUDICDT,".",2)'>0) D | 
|---|
| 117 | . . S TIUDICDT=$S($P(TIU("VSTR"),";",3)'="H":$P($G(TIU("EDT")),U),1:"") | 
|---|
| 118 | . S TIURDT=$S(+$G(TIUDICDT)>0:+$G(TIUDICDT),1:+$$NOW^TIULC) | 
|---|
| 119 | . S:+$G(TIUTYPE)=1 @FDARR@(.12)=1 | 
|---|
| 120 | . K TIUDICDT | 
|---|
| 121 | S @FDARR@(1301)=TIURDT,@FDARR@(1303)="U" | 
|---|
| 122 | D FILE^DIE(FLAGS,"FDA","TIUMSG") | 
|---|
| 123 | Q | 
|---|
| 124 | REQVER(VPARM) ; Evaluate whether verification is required | 
|---|
| 125 | Q $S(VPARM=1:1,VPARM=2:1,1:0) | 
|---|
| 126 | MAKEADD(TIUDADD,TIUDA,TIUBUF) ; Create an addendum record | 
|---|
| 127 | N DIE,DR,DA,DIC,X,Y,DLAYGO,TIUATYP,TIUCAN,TIUFPRIV,TIU,TIUX S TIUFPRIV=1 | 
|---|
| 128 | N TIUDTTL,TIUPOST,TIUREC | 
|---|
| 129 | S TIUDTTL=+$G(^TIU(8925,+TIUDA,0)) | 
|---|
| 130 | S TIUATYP=+$$WHATITLE^TIUPUTU("ADDENDUM") | 
|---|
| 131 | S (DIC,DLAYGO)=8925,DIC(0)="L",X=""""_"`"_TIUATYP_"""" | 
|---|
| 132 | D ^DIC | 
|---|
| 133 | S TIUDADD=+Y | 
|---|
| 134 | I +Y'>0 S TIUDADD=TIUDADD_"^Could not create addendum." Q | 
|---|
| 135 | D GETTIU^TIULD(.TIU,TIUDA) | 
|---|
| 136 | S TIU("DOCTYP")=TIUATYP_U_$$PNAME^TIULC1(TIUATYP) | 
|---|
| 137 | D STUFREC(TIUDADD,DFN,+TIUDA,.TIU) | 
|---|
| 138 | D LOADTIUX(.TIUX,TIUBUF) | 
|---|
| 139 | K ^TIU(8925,+TIUDADD,"TEMP"),TIUX(.001),TIUX(1405) | 
|---|
| 140 | M ^TIU(8925,+TIUDADD,"TEMP")=TIUX("TEXT") K TIUX("TEXT") | 
|---|
| 141 | D FILE(.SUCCESS,+TIUDADD,.TIUX,TIUATYP) | 
|---|
| 142 | D MERGTEXT^TIUEDI1(+TIUDADD,.TIU) | 
|---|
| 143 | S TIUPOST=$$POSTFILE^TIULC1(TIUDTTL) | 
|---|
| 144 | S TIUREC("#")=TIUDADD | 
|---|
| 145 | I TIUPOST]"" X TIUPOST | 
|---|
| 146 | K ^TIU(8925,+TIUDADD,"TEMP") | 
|---|
| 147 | Q | 
|---|
| 148 | FILE(SUCCESS,TIUDA,TIUX,RTYPE) ; Call FM Filer to commit updates to DB | 
|---|
| 149 | N FDA,FDARR,IENS,FLAGS,TIUMSG | 
|---|
| 150 | S IENS=""""_TIUDA_",""",FDARR="FDA(8925,"_IENS_")",FLAGS="KE" | 
|---|
| 151 | M @FDARR=TIUX | 
|---|
| 152 | D FILE^DIE(FLAGS,"FDA","TIUMSG") ; File record | 
|---|
| 153 | I $D(TIUMSG)>9 D | 
|---|
| 154 | . S SUCCESS=0_U_$G(TIUMSG("DIERR",1,"TEXT",1)) | 
|---|
| 155 | . D MAIN^TIUPEVNT(TIUBUF,2,"",$P($G(^TIU(8925.1,+RTYPE,0)),U),.FDA,.TIUMSG) | 
|---|
| 156 | E  S SUCCESS=TIUDA | 
|---|
| 157 | Q | 
|---|
| 158 | TRNSFRM(RTYPE,FLD,X) ; Executes Transform code for a given header field | 
|---|
| 159 | N XFORM | 
|---|
| 160 | S FLD=$O(^TIU(8925.1,+RTYPE,"HEAD","D",+FLD,0)) | 
|---|
| 161 | I +FLD'>0 G TRNSFRMX | 
|---|
| 162 | S XFORM=$G(^TIU(8925.1,+RTYPE,"HEAD",+FLD,1)) | 
|---|
| 163 | I XFORM']"" G TRNSFRMX | 
|---|
| 164 | X XFORM | 
|---|
| 165 | TRNSFRMX Q X | 
|---|