| 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
 | 
|---|