| 1 | TIUPUTD ; SLC/JER - Document filer - delimited header ;5/18/94  10:21
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;;Jun 20, 1997
 | 
|---|
| 3 | MAIN ; Controls branching
 | 
|---|
| 4 |  N TIUDA,TIUBGN,TIUI,TIUHSIG,TIULIM,TIULCNT,TIULINE,TIUREC
 | 
|---|
| 5 |  I '$D(TIUPRM0)!'$D(TIUPRM1) D SETPARM^TIULE
 | 
|---|
| 6 |  S TIUHSIG=$P(TIUPRM0,U,10),TIUBGN=$P(TIUPRM0,U,12)
 | 
|---|
| 7 |  I TIUHSIG']"" D MAIN^TIUPEVNT(DA,1) Q
 | 
|---|
| 8 |  S TIULIM=$P(TIUPRM0,U,13)
 | 
|---|
| 9 |  I TIULIM']"" D MAIN^TIUPEVNT(DA,2) Q
 | 
|---|
| 10 |  S TIUI=0 F  S TIUI=$O(^TIU(8925.2,+DA,"TEXT",TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 11 |  . N TIUFRST
 | 
|---|
| 12 |  . S TIULINE=$G(^TIU(8925.2,+DA,"TEXT",TIUI,0))
 | 
|---|
| 13 |  . I TIULINE[TIUHSIG D
 | 
|---|
| 14 |  . . S TIUFRST=TIUI
 | 
|---|
| 15 |  . . I +$G(TIULCNT),$D(TIUREC("TROOT")),$D(@(TIUREC("TROOT")_"0)")) D
 | 
|---|
| 16 |  . . . D SETROOT(TIULCNT,.TIUREC)
 | 
|---|
| 17 |  . . . D:$G(TIUREC("FILE"))=8925 RELEASE^TIUT(TIUREC("#"),1),UPDTIRT^TIUDIRT(.TIU,TIUREC("#"))
 | 
|---|
| 18 |  . . K TIUREC,TIU D GETREC(TIULINE,.TIUREC)
 | 
|---|
| 19 |  . . I +$G(TIUREC("#"))'>0!($G(TIUREC("ROOT"))']"") Q
 | 
|---|
| 20 |  . . D STUFREC(TIULINE,.TIUREC)
 | 
|---|
| 21 |  . . S TIUREC("TROOT")=TIUREC("ROOT")_TIUREC("#")_","_TIUREC("TEXT")_","
 | 
|---|
| 22 |  . . S:'$D(@(TIUREC("TROOT")_"0)")) @(TIUREC("TROOT")_"0)")="^^^^^"
 | 
|---|
| 23 |  . . S TIULCNT=+$P(@(TIUREC("TROOT")_"0)"),U,4)
 | 
|---|
| 24 |  . . K ^TIU(8925.2,+DA,"TEXT",TIUI,0) ; Delete header line once filed
 | 
|---|
| 25 |  . I TIULINE'[TIUHSIG,(TIULINE'[TIUBGN),$D(TIUREC("TROOT")),$D(@(TIUREC("TROOT")_"0)")) D
 | 
|---|
| 26 |  . . S TIULCNT=+$G(TIULCNT)+1,@(TIUREC("TROOT")_TIULCNT_",0)")=TIULINE
 | 
|---|
| 27 |  . . K ^TIU(8925.2,+DA,"TEXT",TIUI,0) ; Delete buffer line once xferred
 | 
|---|
| 28 |  . I TIULINE'[TIUHSIG,(TIULINE'[TIUBGN),'$D(TIUREC("TROOT")),($G(TIUREC("#"))'=-1) K ^TIU(8925.2,+DA,"TEXT",TIUI,0) ; Remove leading garbage
 | 
|---|
| 29 |  . I TIULINE[TIUBGN K ^TIU(8925.2,+DA,"TEXT",TIUI,0)
 | 
|---|
| 30 |  I +$G(TIULCNT),$D(TIUREC("TROOT")),$D(@(TIUREC("TROOT")_"0)")) D
 | 
|---|
| 31 |  . D SETROOT(TIULCNT,.TIUREC)
 | 
|---|
| 32 |  . D:$G(TIUREC("FILE"))=8925 RELEASE^TIUT(TIUREC("#"),1),UPDTIRT^TIUDIRT(.TIU,TIUREC("#"))
 | 
|---|
| 33 |  I '+$O(^TIU(8925.2,+DA,"TEXT",0)) D BUFPURGE(DA)
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 | GETREC(HEADER,RECORD) ; Look-up or create record (if LAYGO allowed)
 | 
|---|
| 36 |  N DIC,DLAYGO,TIUKEY,X,Y,TIUFPRIV S TIUFPRIV=1
 | 
|---|
| 37 |  S X=$P(HEADER,TIULIM,2),DIC=8925.1,DIC(0)="MZ" D ^DIC
 | 
|---|
| 38 |  I +Y'>0 D MAIN^TIUPEVNT(DA,3) Q
 | 
|---|
| 39 |  S RECORD("TYPE")=+Y,RECORD("FILE")=$P(Y(0),U,5)
 | 
|---|
| 40 |  I RECORD("FILE")']"" D MAIN^TIUPEVNT(DA,4) Q
 | 
|---|
| 41 |  S RECORD("ROOT")=$G(^DIC(+RECORD("FILE"),0,"GL"))
 | 
|---|
| 42 |  I $P(Y(0),U,6)']"" D MAIN^TIUPEVNT(DA,5) Q
 | 
|---|
| 43 |  I $P(Y(0),U,6)]"" D
 | 
|---|
| 44 |  . S RECORD("TEXT")=$P($P(Y(0),U,6),";",2) ; Subscript of TEXT field
 | 
|---|
| 45 |  . I RECORD("TEXT")]"",'+RECORD("TEXT") S RECORD("TEXT")=""""_RECORD("TEXT")_""""
 | 
|---|
| 46 |  S:+$P(Y(0),U,3) DLAYGO=RECORD("FILE")
 | 
|---|
| 47 |  ; If a LOOKUP ROUTINE is defined for a given report type, then call it
 | 
|---|
| 48 |  I $P(Y(0),U,8)]"" D  Q
 | 
|---|
| 49 |  . N TIUI,TIUVAR,TIUVPC S TIUVAR=""
 | 
|---|
| 50 |  . F  S TIUVAR=$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","E",TIUVAR)) Q:TIUVAR=""  D
 | 
|---|
| 51 |  . . S TIUI=+$G(TIUI)+1,TIUVAR(TIUI)=TIUVAR
 | 
|---|
| 52 |  . . S TIUVPC=$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","E",TIUVAR,0))
 | 
|---|
| 53 |  . . S @TIUVAR=$P(HEADER,TIULIM,TIUVPC)
 | 
|---|
| 54 |  . D @$P(Y(0),U,7,8) S RECORD("#")=Y I +Y'>0 D MAIN^TIUPEVNT(DA,6)
 | 
|---|
| 55 |  . S TIUI=0 F  S TIUI=$O(TIUVAR(TIUI)) Q:+TIUI'>0  K @TIUVAR(TIUI)
 | 
|---|
| 56 |  ; Otherwise set-up for ^DIC call
 | 
|---|
| 57 |  S DIC=RECORD("FILE"),DIC(0)="MX"
 | 
|---|
| 58 |  S:+$P(Y(0),U,3) DIC(0)=DIC(0)_"L"
 | 
|---|
| 59 |  S TIUKEY=+$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","D",.001,0))
 | 
|---|
| 60 |  S:TIUKEY DIC(0)=DIC(0)_"N"
 | 
|---|
| 61 |  S:'TIUKEY TIUKEY=+$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","D",.01,0))
 | 
|---|
| 62 |  S X=$S(DIC(0)["N":"`",1:"")_$P(HEADER,TIULIM,TIUKEY) D ^DIC
 | 
|---|
| 63 |  S RECORD("#")=+Y I +Y'>0 D MAIN^TIUPEVNT(DA,6)
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 | STUFREC(HEADER,RECORD) ; Stuffs record with known fixed fields
 | 
|---|
| 66 |  N D0,DA,DR,DIE,TIUI,TIUPC
 | 
|---|
| 67 |  S DIE=+RECORD("FILE"),DA=+RECORD("#")
 | 
|---|
| 68 |  ; Set up DR-string
 | 
|---|
| 69 |  S TIUI=0
 | 
|---|
| 70 |  F  S TIUI=$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","D",TIUI)) Q:+TIUI'>0  D
 | 
|---|
| 71 |  . S TIUPC=$O(^TIU(8925.1,+RECORD("TYPE"),"ITEM","D",TIUI,0)) Q:+TIUPC'>0
 | 
|---|
| 72 |  . S:TIUI'=.001 DR=$G(DR)_$S($L($G(DR)):";",1:"")_TIUI_"///"_$P(HEADER,TIULIM,TIUPC)
 | 
|---|
| 73 |  D ^DIE
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 | SETROOT(LINECNT,RECORD) ; Sets root of WP field
 | 
|---|
| 76 |  S @(RECORD("TROOT")_"0)")="^^"_LINECNT_"^"_LINECNT_"^"_DT_"^^"
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | BUFPURGE(DA) ; Call ^DIK to purge buffer record when all's well
 | 
|---|
| 79 |  N DIK S DIK="^TIU(8925.2," D ^DIK
 | 
|---|
| 80 |  Q
 | 
|---|