TIUEDI4 ; SLC/JER - Enter/Edit a Document ; 7-FEB-2001 08:01:51
;;1.0;TEXT INTEGRATION UTILITIES;**100,109,216**;Jun 20, 1997
;new rtn in TSC, created feb 2 from TIUEDIT
; 2/2: Moved LOADDFLT, BOIL, CANXEC, REPLACE, INSMULT to TIUEDI4
; 2/3 moved DIE, TEXTEDIT from TIUEDIT to TIUEDI4
; 3/2 moved SETTL, GETVST, ASKOK from TIUEDIT to TIUEDI4
;
SETTL(TIUTYP,TIUCLASS,TIUTITLE) ; Set array TIUTYP w/ title info
; e.g. TIUTYP(1) = 1^113^CRISIS, where 113 is IFN of CRISIS title,
; TIUTYP = 1 if gotten from TIUTITLE
; TIUTYP = 113 if gotten from user
; Requires TIUCLASS
; Receives TIUTITLE - optional = Title DA or Title Name or DA^Name
N TIUDFLT
; -- Get title from TIUTITLE if it's there: --
I $G(TIUTITLE)]"",$S(+$G(NOSAVE):1,+$P(TIUTITLE,U,2):1,1:0) D I 1
. S TIUTYP=1,TIUTITLE=$P(TIUTITLE,U)
. S TIUTYP(1)=1_U_$S(+$G(TIUTITLE)>0:+$G(TIUTITLE),1:+$O(^TIU(8925.1,"B",TIUTITLE,0)))
. S $P(TIUTYP(1),U,3)=$$PNAME^TIULC1(+$P(TIUTYP(1),U,2))
; -- If not, ask user: --
E D
. S TIUDFLT="LAST" ; use user's preferred list of docmts
. D DOCSPICK^TIULA2(.TIUTYP,TIUCLASS,"1A",TIUDFLT,"","+$$CANPICK^TIULP(+Y),+$$CANENTR^TIULP(+Y)")
I +$G(TIUTYP)'>0 S TIUOUT=1 Q
S TIUTYP=+$P($G(TIUTYP(1)),U,2)
Q
;
GETVST(DFN,TIUTYP,TIU,EVNTFLAG) ; Get visit, set array TIU
; -- If no eventflag & don't suppress visit, then execute
; visit linkage method: --
; Requires DFN
; Requires simple variable TIUTYP = title DA
; Optional EVNTFLAG
; Returns array TIU
N TIUVSUPP,TIULMETH
S TIUVSUPP=0
I '$G(EVNTFLAG) S TIUVSUPP=+$$SUPPVSIT^TIULC1(TIUTYP)
; -- execute visit linkage method for TIUTYP --
I 'TIUVSUPP,'$G(EVNTFLAG) D I 1
. S TIULMETH=$$GETLMETH^TIUEDI1(TIUTYP)
. I '$L(TIULMETH) D S TIUOUT=1 Q
. . W !,$C(7),"No Visit Linkage Method defined for "
. . W $$PNAME^TIULC1(TIUTYP),".",!,"Please contact IRM..."
. ; -- TIULMETH for PN: D ENPN^TIUVSIT(.TIU,.DFN,1) --
. X TIULMETH
; -- else create new historical "E" visit: --
E D EVENT^TIUSRVP1(.TIU,DFN)
I $S($D(DIROUT):1,$D(DTOUT):1,1:0) S TIUQUIT=1 Q
I '$D(TIU("VSTR")) D
. W !,$C(7),"Patient & Visit required." H 2
Q
;
ASKOK(TIUTYP,TIU,TIUBY,TIUASK) ; X Validation method.
; Receives and returns array TIU, simple var TIUTYP, [array TIUBY]
; Sets TIUASK = answer, = 0 for not OK or 1 for OK
N TIUVMETH
S TIUVMETH=$$GETVMETH^TIUEDI1(TIUTYP)
I '$L(TIUVMETH) D S TIUOUT=1 Q
. W !,$C(7),"No Validation Method defined for "
. W $$PNAME^TIULC1(TIUTYP),".",!,"Please contact IRM..."
; -- TIUVMETH for PN: S TIUASK=$$CHEKPN^TIULD(.TIU,.TIUBY) --
X TIUVMETH
; -- If finish without a visit, then quit: --
I '$D(TIU("VSTR")) D
. W !,$C(7),"Patient & Visit required." H 2
Q
;
DIE(DA,TIUQUIT,TIUCHNG) ; Invoke ^DIE
N Y,DIE,DR
I '$D(TIUPREF) S TIUPREF=$$PERSPRF^TIULE(DUZ)
L +^TIU(8925,+DA):1
E D Q
. W !!?5,$C(7),"Another user is editing this entry.",! S TIUQUIT=2
. I $$READ^TIUU("FOA","Press RETURN to continue...") W ""
S ^TIU(8925,"ASAVE",DUZ,DA)=""
S DR=$$GETTMPL^TIUEDI1(+$P(^TIU(8925,+DA,0),U))
I DR']"" W !?5,$C(7),"No Edit template defined for ",$$PNAME^TIULC1(+$P(^TIU(8925,+DA,0),U)),! S TIUQUIT=2 Q
S DIE=8925 D ^DIE
I $D(Y)!($D(DTOUT)) S TIUQUIT=1
I +$G(TIUQUIT)>0,+$G(TIUNEW)>0 Q
D:+$G(TIUQUIT) UPDTIRT^TIUDIRT(.TIU,DA),SEND^TIUALRT(DA)
Q:+$G(TIUQUIT)
D TEXTEDIT(DA,.TIUCHNG)
I +$G(^TIU(8925,DA,0))'>0 S TIUQUIT=2 Q
S DR=".05///"_$$STATUS^TIULC(DA),DIE=8925 D ^DIE
D UPDTIRT^TIUDIRT(.TIU,DA),SEND^TIUALRT(DA)
L -^TIU(8925,+DA)
Q
TEXTEDIT(DA,TIUCMMT,TIUCHNG) ; Call DIWE
N DIC,DIWE,DIWESUB,DIWPT,DR,DWHD,DWI,DWLC,DWLR,DWLW,DWO,DWPK,DDWRW
N TIUCKSM0,TIUCKSM1,TIUESNM,TIUESBLK
S TIUESNM=$$DECRYPT^TIULC1($P($G(^TIU(8925,DA,15)),U,3),1,$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEXT"")"))
S TIUESBLK=$$DECRYPT^TIULC1($P($G(^TIU(8925,DA,15)),U,4),1,$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEXT"")"))
W !!,"Calling text editor, please wait..." H 1
X:$L($G(TIUPRM3)) TIUPRM3
D BUFFER^TIUEDIU(DA) ; Load edit buffer to protect original from booboos
S TIUCKSM0=$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEMP"")")
I $D(^TIU(8925,+DA,"TEXT"))'>9 D LOADDFLT(DA,+$P(TIUTYP(1),U,2))
S DIWESUB="Patient: "_$G(TIU("PNM")),DIC="^TIU(8925,"_+DA_",""TEMP"","
I $G(VALMAR)="^TMP(""TIUVIEW"",$J)",(+$G(VALMBG)>5),(+$G(VALMBG)'>(+$P($G(^TIU(8925,+DA,"TEXT",0)),U,3)+4)) S DDWRW=+$G(VALMBG)-4
S DWPK=1,DWLW=74 D EN^DIWE
; DELETE if NOSAVE
I +$G(NOSAVE) D DELETE^TIUEDIT(DA,0) S TIUQUIT=2 Q
; Save edit buffer
S TIUCKSM1=$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEMP"")")
I TIUCKSM0'=TIUCKSM1 D I 1
. D COMMIT^TIUEDIU(DA),AUDIT^TIUEDI1(DA,TIUCKSM0,TIUCKSM1)
. S TIUCHNG=1
. ; re-file /es/-block
. I $L(TIUESNM) D
. . S DR="1503///^S X=TIUESNM;1504///^S X=TIUESBLK",DIE=8925
. . D ^DIE
E W !,"No changes made..." D COMMIT^TIUEDIU(DA,1) S TIUCHNG=0
S DIE=8925,DR=".1///"_$$LINECNT^TIULC(DA) D ^DIE
Q
;
LOADDFLT(DA,TIUTYP) ; Load bp text
N TIUI,TIUJ,TIUK,TIUL S TIUI=0
S TIUJ=+$P($G(^TIU(8925,+DA,"TEMP",0)),U,3)+1
; - Set comp hdr -
S ^TIU(8925,+DA,"TEMP",TIUJ,0)=$S($P($G(^TIU(8925.1,+TIUTYP,0)),U,4)="CO":$P(^TIU(8925.1,+TIUTYP,0),U)_": ",1:"")
I +TIUJ=1,($G(^TIU(8925,+DA,"TEMP",TIUJ,0))']"") K ^TIU(8925,+DA,"TEMP",TIUJ,0) S TIUJ=0
S ^TIU(8925,+DA,"TEMP",0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
F S TIUI=$O(^TIU(8925.1,+TIUTYP,"DFLT",TIUI)) Q:+TIUI'>0 D
. S TIUJ=TIUJ+1,X=$G(^TIU(8925.1,+TIUTYP,"DFLT",TIUI,0))
. I $L($T(DOLMLINE^TIUSRVF1)),'$D(XWBOS),(X["{FLD:") S X=$$DOLMLINE^TIUSRVF1(X)
. I X["|" S X=$$BOIL(X,TIUJ)
. I X["~@" D INSMULT(X,"^TIU(8925,"_+DA_",""TEMP"")",.TIUJ) I 1
. E S ^TIU(8925,+DA,"TEMP",TIUJ,0)=X
. S ^TIU(8925,+DA,"TEMP",0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
I +$O(^TIU(8925.1,+TIUTYP,10,0)) D
. N TIUFITEM,TIUI
. D ITEMS^TIUFLT(+TIUTYP)
. S TIUI=0 F S TIUI=$O(TIUFITEM(TIUI)) Q:+TIUI'>0 D
. . S TIUL=+$G(TIUFITEM(+TIUI)) D LOADDFLT(DA,TIUL)
Q
BOIL(LINE,COUNT) ; execute objects
N TIUI,DIC,X,Y,TIUFPRIV S TIUFPRIV=1
N TIUOLDR,TIUNEWR,TIUOLDG,TIUNEWG
S DIC=8925.1,DIC(0)="FMXZ"
S DIC("S")="I $P($G(^TIU(8925.1,+Y,0)),U,4)=""O"""
F TIUI=2:2:$L(LINE,"|") S X=$P(LINE,"|",TIUI) D
. D ^DIC
. I +Y'>0 S X="The OBJECT "_X_" was NOT found...Contact IRM."
. I +Y>0 D
. . I $D(^TIU(8925.1,+Y,9)),+$$CANXEC(+Y) X ^(9) S:X["~@" X=$$APPEND(X) I 1
. . E S X="The OBJECT "_X_" is INACTIVE...Contact IRM."
. . I X["~@" D
. . . I X'["^" D
. . . . S TIUOLDR=$P(X,"~@",2),TIUNEWR=TIUOLDR_TIUI
. . . . M @TIUNEWR=@TIUOLDR K @TIUOLDR
. . . . S $P(X,"~@",2)=TIUNEWR
. . . I X["^" D
. . . . S TIUOLDG=$P(X,"~@",2),TIUNEWG="^TMP("_"""TIU201"""_","_$J_","_TIUI_")"
. . . . M @TIUNEWG=@TIUOLDG
. . . . S $P(X,"~@",2)=TIUNEWG
. S LINE=$$REPLACE(LINE,X,TIUI)
Q $TR(LINE,"|","")
CANXEC(TIUODA) ; Eval Obj Status
N TIUOST,TIUY S TIUOST=+$P($G(^TIU(8925.1,+TIUODA,0)),U,7)
S TIUY=$S(TIUOST=11:1,+$G(NOSAVE):1,1:0)
Q +$G(TIUY)
REPLACE(LINE,X,TIUI) ; Replace TIUIth object in LINE
S $P(LINE,"|",TIUI)=X
Q LINE
INSMULT(LINE,TARGET,TIULCNT) ; Mult-valued results
N TIUPC
F TIUPC=2:2:$L(LINE,"~@") D
. N TIUI,TIULINE,TIUX,TIUSRC,TIUSCNT,TIUTAIL
. S TIUSRC=$P(LINE,"~@",TIUPC)
. S TIUTAIL=$P(LINE,"~@",TIUPC+1)
. S TIULINE=$P(LINE,"~@",(TIUPC-1)),(TIUI,TIUSCNT)=0
. I $E(TIULINE)=" ",(TIUPC>2) S $E(TIULINE)=""
. F S TIUI=$O(@TIUSRC@(TIUI)) Q:+TIUI'>0 D
. . N TIUSLINE
. . S TIUSCNT=TIUSCNT+1
. . S TIUSLINE=$G(@TIUSRC@(TIUI,0))
. . S:'+$O(@TIUSRC@(TIUI))&(TIUPC+2>$L(LINE,"~@")) TIUSLINE=TIUSLINE_TIUTAIL
. . I TIUSCNT=1,($L(TIULINE_TIUSLINE)>73) D Q
. . . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
. . . S @TARGET@(TIULCNT,0)=TIULINE
. . . S TIULCNT=TIULCNT+1
. . . S @TARGET@(TIULCNT,0)=TIUSLINE
. . I TIUSCNT=1,($L(TIULINE_TIUSLINE)'>73) D Q
. . . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
. . . S @TARGET@(TIULCNT,0)=TIULINE_TIUSLINE
. . S:$D(@TARGET@(TIULCNT,0)) TIULCNT=TIULCNT+1
. . S @TARGET@(TIULCNT,0)=$G(TIUSLINE)
. K @TIUSRC
Q
APPEND(X) ;
N TIUXL S TIUXL=$L(X)
I $E(X,TIUXL-1,TIUXL)'="~@" S X=X_"~@"
Q X
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HTIUEDI4 8097 printed Oct 16, 2024@18:40:35 Page 2
TIUEDI4 ; SLC/JER - Enter/Edit a Document ; 7-FEB-2001 08:01:51
+1 ;;1.0;TEXT INTEGRATION UTILITIES;**100,109,216**;Jun 20, 1997
+2 ;new rtn in TSC, created feb 2 from TIUEDIT
+3 ; 2/2: Moved LOADDFLT, BOIL, CANXEC, REPLACE, INSMULT to TIUEDI4
+4 ; 2/3 moved DIE, TEXTEDIT from TIUEDIT to TIUEDI4
+5 ; 3/2 moved SETTL, GETVST, ASKOK from TIUEDIT to TIUEDI4
+6 ;
SETTL(TIUTYP,TIUCLASS,TIUTITLE) ; Set array TIUTYP w/ title info
+1 ; e.g. TIUTYP(1) = 1^113^CRISIS, where 113 is IFN of CRISIS title,
+2 ; TIUTYP = 1 if gotten from TIUTITLE
+3 ; TIUTYP = 113 if gotten from user
+4 ; Requires TIUCLASS
+5 ; Receives TIUTITLE - optional = Title DA or Title Name or DA^Name
+6 NEW TIUDFLT
+7 ; -- Get title from TIUTITLE if it's there: --
+8 IF $GET(TIUTITLE)]""
IF $SELECT(+$GET(NOSAVE):1,+$PIECE(TIUTITLE,U,2):1,1:0)
Begin DoDot:1
+9 SET TIUTYP=1
SET TIUTITLE=$PIECE(TIUTITLE,U)
+10 SET TIUTYP(1)=1_U_$SELECT(+$GET(TIUTITLE)>0:+$GET(TIUTITLE),1:+$ORDER(^TIU(8925.1,"B",TIUTITLE,0)))
+11 SET $PIECE(TIUTYP(1),U,3)=$$PNAME^TIULC1(+$PIECE(TIUTYP(1),U,2))
End DoDot:1
IF 1
+12 ; -- If not, ask user: --
+13 IF '$TEST
Begin DoDot:1
+14 ; use user's preferred list of docmts
SET TIUDFLT="LAST"
+15 DO DOCSPICK^TIULA2(.TIUTYP,TIUCLASS,"1A",TIUDFLT,"","+$$CANPICK^TIULP(+Y),+$$CANENTR^TIULP(+Y)")
End DoDot:1
+16 IF +$GET(TIUTYP)'>0
SET TIUOUT=1
QUIT
+17 SET TIUTYP=+$PIECE($GET(TIUTYP(1)),U,2)
+18 QUIT
+19 ;
GETVST(DFN,TIUTYP,TIU,EVNTFLAG) ; Get visit, set array TIU
+1 ; -- If no eventflag & don't suppress visit, then execute
+2 ; visit linkage method: --
+3 ; Requires DFN
+4 ; Requires simple variable TIUTYP = title DA
+5 ; Optional EVNTFLAG
+6 ; Returns array TIU
+7 NEW TIUVSUPP,TIULMETH
+8 SET TIUVSUPP=0
+9 IF '$GET(EVNTFLAG)
SET TIUVSUPP=+$$SUPPVSIT^TIULC1(TIUTYP)
+10 ; -- execute visit linkage method for TIUTYP --
+11 IF 'TIUVSUPP
IF '$GET(EVNTFLAG)
Begin DoDot:1
+12 SET TIULMETH=$$GETLMETH^TIUEDI1(TIUTYP)
+13 IF '$LENGTH(TIULMETH)
Begin DoDot:2
+14 WRITE !,$CHAR(7),"No Visit Linkage Method defined for "
+15 WRITE $$PNAME^TIULC1(TIUTYP),".",!,"Please contact IRM..."
End DoDot:2
SET TIUOUT=1
QUIT
+16 ; -- TIULMETH for PN: D ENPN^TIUVSIT(.TIU,.DFN,1) --
+17 XECUTE TIULMETH
End DoDot:1
IF 1
+18 ; -- else create new historical "E" visit: --
+19 IF '$TEST
DO EVENT^TIUSRVP1(.TIU,DFN)
+20 IF $SELECT($DATA(DIROUT):1,$DATA(DTOUT):1,1:0)
SET TIUQUIT=1
QUIT
+21 IF '$DATA(TIU("VSTR"))
Begin DoDot:1
+22 WRITE !,$CHAR(7),"Patient & Visit required."
HANG 2
End DoDot:1
+23 QUIT
+24 ;
ASKOK(TIUTYP,TIU,TIUBY,TIUASK) ; X Validation method.
+1 ; Receives and returns array TIU, simple var TIUTYP, [array TIUBY]
+2 ; Sets TIUASK = answer, = 0 for not OK or 1 for OK
+3 NEW TIUVMETH
+4 SET TIUVMETH=$$GETVMETH^TIUEDI1(TIUTYP)
+5 IF '$LENGTH(TIUVMETH)
Begin DoDot:1
+6 WRITE !,$CHAR(7),"No Validation Method defined for "
+7 WRITE $$PNAME^TIULC1(TIUTYP),".",!,"Please contact IRM..."
End DoDot:1
SET TIUOUT=1
QUIT
+8 ; -- TIUVMETH for PN: S TIUASK=$$CHEKPN^TIULD(.TIU,.TIUBY) --
+9 XECUTE TIUVMETH
+10 ; -- If finish without a visit, then quit: --
+11 IF '$DATA(TIU("VSTR"))
Begin DoDot:1
+12 WRITE !,$CHAR(7),"Patient & Visit required."
HANG 2
End DoDot:1
+13 QUIT
+14 ;
DIE(DA,TIUQUIT,TIUCHNG) ; Invoke ^DIE
+1 NEW Y,DIE,DR
+2 IF '$DATA(TIUPREF)
SET TIUPREF=$$PERSPRF^TIULE(DUZ)
+3 LOCK +^TIU(8925,+DA):1
+4 IF '$TEST
Begin DoDot:1
+5 WRITE !!?5,$CHAR(7),"Another user is editing this entry.",!
SET TIUQUIT=2
+6 IF $$READ^TIUU("FOA","Press RETURN to continue...")
WRITE ""
End DoDot:1
QUIT
+7 SET ^TIU(8925,"ASAVE",DUZ,DA)=""
+8 SET DR=$$GETTMPL^TIUEDI1(+$PIECE(^TIU(8925,+DA,0),U))
+9 IF DR']""
WRITE !?5,$CHAR(7),"No Edit template defined for ",$$PNAME^TIULC1(+$PIECE(^TIU(8925,+DA,0),U)),!
SET TIUQUIT=2
QUIT
+10 SET DIE=8925
DO ^DIE
+11 IF $DATA(Y)!($DATA(DTOUT))
SET TIUQUIT=1
+12 IF +$GET(TIUQUIT)>0
IF +$GET(TIUNEW)>0
QUIT
+13 if +$GET(TIUQUIT)
DO UPDTIRT^TIUDIRT(.TIU,DA)
DO SEND^TIUALRT(DA)
+14 if +$GET(TIUQUIT)
QUIT
+15 DO TEXTEDIT(DA,.TIUCHNG)
+16 IF +$GET(^TIU(8925,DA,0))'>0
SET TIUQUIT=2
QUIT
+17 SET DR=".05///"_$$STATUS^TIULC(DA)
SET DIE=8925
DO ^DIE
+18 DO UPDTIRT^TIUDIRT(.TIU,DA)
DO SEND^TIUALRT(DA)
+19 LOCK -^TIU(8925,+DA)
+20 QUIT
TEXTEDIT(DA,TIUCMMT,TIUCHNG) ; Call DIWE
+1 NEW DIC,DIWE,DIWESUB,DIWPT,DR,DWHD,DWI,DWLC,DWLR,DWLW,DWO,DWPK,DDWRW
+2 NEW TIUCKSM0,TIUCKSM1,TIUESNM,TIUESBLK
+3 SET TIUESNM=$$DECRYPT^TIULC1($PIECE($GET(^TIU(8925,DA,15)),U,3),1,$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEXT"")"))
+4 SET TIUESBLK=$$DECRYPT^TIULC1($PIECE($GET(^TIU(8925,DA,15)),U,4),1,$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEXT"")"))
+5 WRITE !!,"Calling text editor, please wait..."
HANG 1
+6 if $LENGTH($GET(TIUPRM3))
XECUTE TIUPRM3
+7 ; Load edit buffer to protect original from booboos
DO BUFFER^TIUEDIU(DA)
+8 SET TIUCKSM0=$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEMP"")")
+9 IF $DATA(^TIU(8925,+DA,"TEXT"))'>9
DO LOADDFLT(DA,+$PIECE(TIUTYP(1),U,2))
+10 SET DIWESUB="Patient: "_$GET(TIU("PNM"))
SET DIC="^TIU(8925,"_+DA_",""TEMP"","
+11 IF $GET(VALMAR)="^TMP(""TIUVIEW"",$J)"
IF (+$GET(VALMBG)>5)
IF (+$GET(VALMBG)'>(+$PIECE($GET(^TIU(8925,+DA,"TEXT",0)),U,3)+4))
SET DDWRW=+$GET(VALMBG)-4
+12 SET DWPK=1
SET DWLW=74
DO EN^DIWE
+13 ; DELETE if NOSAVE
+14 IF +$GET(NOSAVE)
DO DELETE^TIUEDIT(DA,0)
SET TIUQUIT=2
QUIT
+15 ; Save edit buffer
+16 SET TIUCKSM1=$$CHKSUM^TIULC("^TIU(8925,"_+DA_",""TEMP"")")
+17 IF TIUCKSM0'=TIUCKSM1
Begin DoDot:1
+18 DO COMMIT^TIUEDIU(DA)
DO AUDIT^TIUEDI1(DA,TIUCKSM0,TIUCKSM1)
+19 SET TIUCHNG=1
+20 ; re-file /es/-block
+21 IF $LENGTH(TIUESNM)
Begin DoDot:2
+22 SET DR="1503///^S X=TIUESNM;1504///^S X=TIUESBLK"
SET DIE=8925
+23 DO ^DIE
End DoDot:2
End DoDot:1
IF 1
+24 IF '$TEST
WRITE !,"No changes made..."
DO COMMIT^TIUEDIU(DA,1)
SET TIUCHNG=0
+25 SET DIE=8925
SET DR=".1///"_$$LINECNT^TIULC(DA)
DO ^DIE
+26 QUIT
+27 ;
LOADDFLT(DA,TIUTYP) ; Load bp text
+1 NEW TIUI,TIUJ,TIUK,TIUL
SET TIUI=0
+2 SET TIUJ=+$PIECE($GET(^TIU(8925,+DA,"TEMP",0)),U,3)+1
+3 ; - Set comp hdr -
+4 SET ^TIU(8925,+DA,"TEMP",TIUJ,0)=$SELECT($PIECE($GET(^TIU(8925.1,+TIUTYP,0)),U,4)="CO":$PIECE(^TIU(8925.1,+TIUTYP,0),U)_": ",1:"")
+5 IF +TIUJ=1
IF ($GET(^TIU(8925,+DA,"TEMP",TIUJ,0))']"")
KILL ^TIU(8925,+DA,"TEMP",TIUJ,0)
SET TIUJ=0
+6 SET ^TIU(8925,+DA,"TEMP",0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
+7 FOR
SET TIUI=$ORDER(^TIU(8925.1,+TIUTYP,"DFLT",TIUI))
if +TIUI'>0
QUIT
Begin DoDot:1
+8 SET TIUJ=TIUJ+1
SET X=$GET(^TIU(8925.1,+TIUTYP,"DFLT",TIUI,0))
+9 IF $LENGTH($TEXT(DOLMLINE^TIUSRVF1))
IF '$DATA(XWBOS)
IF (X["{FLD:")
SET X=$$DOLMLINE^TIUSRVF1(X)
+10 IF X["|"
SET X=$$BOIL(X,TIUJ)
+11 IF X["~@"
DO INSMULT(X,"^TIU(8925,"_+DA_",""TEMP"")",.TIUJ)
IF 1
+12 IF '$TEST
SET ^TIU(8925,+DA,"TEMP",TIUJ,0)=X
+13 SET ^TIU(8925,+DA,"TEMP",0)="^^"_TIUJ_U_TIUJ_U_DT_"^^"
End DoDot:1
+14 IF +$ORDER(^TIU(8925.1,+TIUTYP,10,0))
Begin DoDot:1
+15 NEW TIUFITEM,TIUI
+16 DO ITEMS^TIUFLT(+TIUTYP)
+17 SET TIUI=0
FOR
SET TIUI=$ORDER(TIUFITEM(TIUI))
if +TIUI'>0
QUIT
Begin DoDot:2
+18 SET TIUL=+$GET(TIUFITEM(+TIUI))
DO LOADDFLT(DA,TIUL)
End DoDot:2
End DoDot:1
+19 QUIT
BOIL(LINE,COUNT) ; execute objects
+1 NEW TIUI,DIC,X,Y,TIUFPRIV
SET TIUFPRIV=1
+2 NEW TIUOLDR,TIUNEWR,TIUOLDG,TIUNEWG
+3 SET DIC=8925.1
SET DIC(0)="FMXZ"
+4 SET DIC("S")="I $P($G(^TIU(8925.1,+Y,0)),U,4)=""O"""
+5 FOR TIUI=2:2:$LENGTH(LINE,"|")
SET X=$PIECE(LINE,"|",TIUI)
Begin DoDot:1
+6 DO ^DIC
+7 IF +Y'>0
SET X="The OBJECT "_X_" was NOT found...Contact IRM."
+8 IF +Y>0
Begin DoDot:2
+9 IF $DATA(^TIU(8925.1,+Y,9))
IF +$$CANXEC(+Y)
XECUTE ^(9)
if X["~@"
SET X=$$APPEND(X)
IF 1
+10 IF '$TEST
SET X="The OBJECT "_X_" is INACTIVE...Contact IRM."
+11 IF X["~@"
Begin DoDot:3
+12 IF X'["^"
Begin DoDot:4
+13 SET TIUOLDR=$PIECE(X,"~@",2)
SET TIUNEWR=TIUOLDR_TIUI
+14 MERGE @TIUNEWR=@TIUOLDR
KILL @TIUOLDR
+15 SET $PIECE(X,"~@",2)=TIUNEWR
End DoDot:4
+16 IF X["^"
Begin DoDot:4
+17 SET TIUOLDG=$PIECE(X,"~@",2)
SET TIUNEWG="^TMP("_"""TIU201"""_","_$JOB_","_TIUI_")"
+18 MERGE @TIUNEWG=@TIUOLDG
+19 SET $PIECE(X,"~@",2)=TIUNEWG
End DoDot:4
End DoDot:3
End DoDot:2
+20 SET LINE=$$REPLACE(LINE,X,TIUI)
End DoDot:1
+21 QUIT $TRANSLATE(LINE,"|","")
CANXEC(TIUODA) ; Eval Obj Status
+1 NEW TIUOST,TIUY
SET TIUOST=+$PIECE($GET(^TIU(8925.1,+TIUODA,0)),U,7)
+2 SET TIUY=$SELECT(TIUOST=11:1,+$GET(NOSAVE):1,1:0)
+3 QUIT +$GET(TIUY)
REPLACE(LINE,X,TIUI) ; Replace TIUIth object in LINE
+1 SET $PIECE(LINE,"|",TIUI)=X
+2 QUIT LINE
INSMULT(LINE,TARGET,TIULCNT) ; Mult-valued results
+1 NEW TIUPC
+2 FOR TIUPC=2:2:$LENGTH(LINE,"~@")
Begin DoDot:1
+3 NEW TIUI,TIULINE,TIUX,TIUSRC,TIUSCNT,TIUTAIL
+4 SET TIUSRC=$PIECE(LINE,"~@",TIUPC)
+5 SET TIUTAIL=$PIECE(LINE,"~@",TIUPC+1)
+6 SET TIULINE=$PIECE(LINE,"~@",(TIUPC-1))
SET (TIUI,TIUSCNT)=0
+7 IF $EXTRACT(TIULINE)=" "
IF (TIUPC>2)
SET $EXTRACT(TIULINE)=""
+8 FOR
SET TIUI=$ORDER(@TIUSRC@(TIUI))
if +TIUI'>0
QUIT
Begin DoDot:2
+9 NEW TIUSLINE
+10 SET TIUSCNT=TIUSCNT+1
+11 SET TIUSLINE=$GET(@TIUSRC@(TIUI,0))
+12 if '+$ORDER(@TIUSRC@(TIUI))&(TIUPC+2>$LENGTH(LINE,"~@"))
SET TIUSLINE=TIUSLINE_TIUTAIL
+13 IF TIUSCNT=1
IF ($LENGTH(TIULINE_TIUSLINE)>73)
Begin DoDot:3
+14 if $DATA(@TARGET@(TIULCNT,0))
SET TIULCNT=TIULCNT+1
+15 SET @TARGET@(TIULCNT,0)=TIULINE
+16 SET TIULCNT=TIULCNT+1
+17 SET @TARGET@(TIULCNT,0)=TIUSLINE
End DoDot:3
QUIT
+18 IF TIUSCNT=1
IF ($LENGTH(TIULINE_TIUSLINE)'>73)
Begin DoDot:3
+19 if $DATA(@TARGET@(TIULCNT,0))
SET TIULCNT=TIULCNT+1
+20 SET @TARGET@(TIULCNT,0)=TIULINE_TIUSLINE
End DoDot:3
QUIT
+21 if $DATA(@TARGET@(TIULCNT,0))
SET TIULCNT=TIULCNT+1
+22 SET @TARGET@(TIULCNT,0)=$GET(TIUSLINE)
End DoDot:2
+23 KILL @TIUSRC
End DoDot:1
+24 QUIT
APPEND(X) ;
+1 NEW TIUXL
SET TIUXL=$LENGTH(X)
+2 IF $EXTRACT(X,TIUXL-1,TIUXL)'="~@"
SET X=X_"~@"
+3 QUIT X