| 1 | TIUFLF ; SLC/MAM - Library; File 8925.1 Related: NODE0ARR(FILEDA,NODE0,PFILEDA), HASBOIL(FILEDA,NODE0), DDEFUSED(FILEDA), DESCUSED(FILEDA) ;10/24/95  23:35
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;;Jun 20, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | HASBOIL(FILEDA,NODE0) ;Function Returns 0, 1, 10, or 11 (like $D) if FILEDA/any descendant has Boilerplate Text, or NA if nonapplicable (neither DOC nor CO).
 | 
|---|
| 5 |  ; Requires FILEDA, NODE0.
 | 
|---|
| 6 |  N ANS,ANSONE,ANSTEN
 | 
|---|
| 7 |  I $P(NODE0,U,4)'="DOC"&($P(NODE0,U,4)'="CO") S ANS="NA" G HASBX
 | 
|---|
| 8 |  S ANSONE=+$O(^TIU(8925.1,FILEDA,"DFLT",0)) S:ANSONE ANSONE=1
 | 
|---|
| 9 |  S ANSTEN=$$DHASBOIL(FILEDA)
 | 
|---|
| 10 |  S ANS=ANSTEN_ANSONE
 | 
|---|
| 11 |  I ANS="00" S ANS=0
 | 
|---|
| 12 |  I ANS="01" S ANS=1
 | 
|---|
| 13 | HASBX Q ANS
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | DHASBOIL(FILEDA) ; Function Returns 1 if any descendant has Boilerplate Text.
 | 
|---|
| 16 |  ; Requires FILEDA.
 | 
|---|
| 17 |  N TIUI,IFILEDA,ANS
 | 
|---|
| 18 |  I '$G(FILEDA) S ANS="ERR" G DHASX
 | 
|---|
| 19 |  S (TIUI,ANS)=0
 | 
|---|
| 20 |  F  S TIUI=$O(^TIU(8925.1,FILEDA,10,TIUI)) G:'TIUI!ANS DHASX  D
 | 
|---|
| 21 |  . S IFILEDA=+^TIU(8925.1,FILEDA,10,TIUI,0)
 | 
|---|
| 22 |  . I $D(^TIU(8925.1,IFILEDA,"DFLT")) S ANS=1 Q
 | 
|---|
| 23 |  . S ANS=$$DHASBOIL(IFILEDA)
 | 
|---|
| 24 |  . Q
 | 
|---|
| 25 | DHASX Q ANS
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | NODE0ARR(FILEDA,NODE0,PFILEDA) ; Sets NODE0 = ^TIU(8925.1,FILEDA,0)_U_PIECE20, where
 | 
|---|
| 28 |  ;PIECE20= 0,1,10,11 if FILEDA/any descendant has Boilerplate text
 | 
|---|
| 29 |  ;(Like $D), or NA.
 | 
|---|
| 30 |  ; IF NODE0 IS NOT NULL, Passes back NODE0 as an array. If NODE0 is null,
 | 
|---|
| 31 |  ;doesn't set subscripts, writes warning.
 | 
|---|
| 32 |  ; When return from this call, if FILEDA is not already on the screen but taken from an item multiple, a name xfef, etc, check for NODE0="".  This will catch broken pointers to 8925.1.
 | 
|---|
| 33 |  ; Sets Subscript TYPE = Stnd Abbrev = ^TMP("TIUF",$J,"TYPE"_INTERNALTYPE)). See TIUFL.
 | 
|---|
| 34 |  ; Sets Subscripts COWNER, STATUS = Mixed case(external value);
 | 
|---|
| 35 |  ; Sets Subscript POWNER = external value;
 | 
|---|
| 36 |  ; Sets Subscript NATL= Yes, or No;
 | 
|---|
| 37 |  ; Sets Subscript SHARE = Yes, No, or "" for NA;
 | 
|---|
| 38 |  ; Sets Subscript ORPHAN = Yes, No, or "" for NA (Object);
 | 
|---|
| 39 |  ; Sets Subscript ITEMS = Yes, No, or "" for NA (Object);
 | 
|---|
| 40 |  ; Sets Subscript BOILPT = Yes if entry or descendants have Boiltxt, No, or "" for NA (Type not Doc or CO);
 | 
|---|
| 41 |  ; Sets Subscript INUSE = Yes, No, ?, or "" for NA (Object).
 | 
|---|
| 42 |  ; Requires FILEDA = file 8925.1 IFN of 8925.1 entry.
 | 
|---|
| 43 |  ; Optional PFILEDA = parent IFN of FILEDA. Used for Computed Field .08 In Use for EN^DIQ.
 | 
|---|
| 44 |  S NODE0=$G(^TIU(8925.1,FILEDA,0))
 | 
|---|
| 45 |  I '$D(PFILEDA) S PFILEDA=0
 | 
|---|
| 46 |  I PFILEDA,NODE0="" W !!," File entry "_PFILEDA_" has Nonexistent Item "_FILEDA_"; See IRM.",! D PAUSE^TIUFXHLX G NODEX
 | 
|---|
| 47 |  I NODE0="" W !!," ",FILEDA_" doesn't exist in the file; See IRM.",! D PAUSE^TIUFXHLX G NODEX
 | 
|---|
| 48 |  N DIC,DA,DR,TIUFQ,SHARE,ORPHAN,BOILPT,TYPE,ITEMS,DIQ,USED
 | 
|---|
| 49 |  S DIC=8925.1,DR=".04:.13",DIQ(0)="I,E",DA=FILEDA,DIQ="TIUFQ" D EN^DIQ1
 | 
|---|
| 50 |  S TYPE=$G(TIUFQ(8925.1,FILEDA,.04,"I")) S:TYPE="DOC" TYPE="TL"
 | 
|---|
| 51 |  S NODE0("TYPE")=$G(^TMP("TIUF",$J,"TYPE"_TYPE))
 | 
|---|
| 52 |  S NODE0("POWNER")=$G(TIUFQ(8925.1,FILEDA,.05,"E"))
 | 
|---|
| 53 |  S NODE0("COWNER")=$$MIXED^TIULS($G(TIUFQ(8925.1,FILEDA,.06,"E")))
 | 
|---|
| 54 |  S NODE0("STATUS")=$$MIXED^TIULS($G(TIUFQ(8925.1,FILEDA,.07,"E")))
 | 
|---|
| 55 |  S NODE0("NATL")=$$MIXED^TIULS($G(TIUFQ(8925.1,FILEDA,.13,"E")))
 | 
|---|
| 56 |  I NODE0("NATL")="" S NODE0("NATL")="No"
 | 
|---|
| 57 |  S USED=$G(TIUFQ(8925.1,FILEDA,.08,"E")),NODE0("INUSE")=$S(USED="NA":"",USED="?":"?",1:$$MIXED^TIULS(USED))
 | 
|---|
| 58 |  S SHARE=$G(TIUFQ(8925.1,FILEDA,.1,"E"))
 | 
|---|
| 59 |  S NODE0("SHARE")=$S(SHARE="YES":"Yes",SHARE="NO":"No",SHARE=""&(TYPE'="O"):"No",1:"")
 | 
|---|
| 60 |  S ORPHAN=$$ORPHAN^TIUFLF4(FILEDA,NODE0)
 | 
|---|
| 61 |  S NODE0("ORPHAN")=$S(ORPHAN="NA":"",1:$$MIXED^TIULS(ORPHAN))
 | 
|---|
| 62 |  S BOILPT=$$HASBOIL(FILEDA,NODE0),$P(NODE0,U,20)=BOILPT
 | 
|---|
| 63 |  S NODE0("BOILPT")=$S(BOILPT="NA":"",BOILPT:"Yes",1:"No")
 | 
|---|
| 64 |  S ITEMS=$S($O(^TIU(8925.1,FILEDA,10,0)):1,1:0)
 | 
|---|
| 65 |  S NODE0("ITEMS")=$S(ITEMS:"Yes",$P(NODE0,U,4)="O":"",1:"No")
 | 
|---|
| 66 | NODEX Q
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 | DESCUSED(FILEDA) ; Function returns 1 if FILEDA has
 | 
|---|
| 69 |  ;descendant item of Type DOC with TIU documents (file 8925 entries)
 | 
|---|
| 70 |  ;pointing to it; Else returns 0.
 | 
|---|
| 71 |  ; Assumes DDEFs cannot be reused Except SHARED Components; stops
 | 
|---|
| 72 |  ;check at DOC level. It is enough to check descendants down to type
 | 
|---|
| 73 |  ;DOC since if a component is used, its ancestor of type DOC is used.
 | 
|---|
| 74 |  ;Therefore reusing COMPONENTS does not present a difficulty for
 | 
|---|
| 75 |  ;DDEFUSED or for DESCUSED IF CHECKING FOR USE STOPS AT THE DOC LEVEL
 | 
|---|
| 76 |  ;AND DOES NOT CHECK COMPONENTS.
 | 
|---|
| 77 |  ; Requires FILEDA.
 | 
|---|
| 78 |  ; Requires FILEDA's node 0 to exist.
 | 
|---|
| 79 |  N DESCANS,TIUI,IFILEDA,ITYPE,INODE0
 | 
|---|
| 80 |  S (TIUI,DESCANS)=0
 | 
|---|
| 81 |  F  S TIUI=$O(^TIU(8925.1,FILEDA,10,TIUI)) Q:'TIUI  D  Q:DESCANS=1
 | 
|---|
| 82 |  . S IFILEDA=+^TIU(8925.1,FILEDA,10,TIUI,0)
 | 
|---|
| 83 |  . I $O(^TIU(8925,"B",IFILEDA,0)) S DESCANS=1 Q
 | 
|---|
| 84 |  . S INODE0=$G(^TIU(8925.1,IFILEDA,0)),ITYPE=$P(INODE0,U,4)
 | 
|---|
| 85 |  . I INODE0="" S DESCANS="?" Q
 | 
|---|
| 86 |  . I ITYPE="DOC" Q
 | 
|---|
| 87 |  . S DESCANS=$$DESCUSED(IFILEDA)
 | 
|---|
| 88 |  . Q
 | 
|---|
| 89 | DESCX Q DESCANS
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | DDEFUSED(FILEDA) ; Function called by 8925.1 computed field .08 USED BY DOCMTS.
 | 
|---|
| 92 |  ; Assumes DDEFs CANNOT be reused except for SHARED Components.
 | 
|---|
| 93 |  ; Returns YES if FILEDA is pointed to by 8925 docmts or components.
 | 
|---|
| 94 |  ;         YES if FILEDA itself is not pointed to, but descendants
 | 
|---|
| 95 |  ;           of Type DOC(Title) under FILEDA in the hierarchy are 
 | 
|---|
| 96 |  ;           pointed to.
 | 
|---|
| 97 |  ;         NA if FILEDA has Type Object.
 | 
|---|
| 98 |  ;         ? if not known to be YES and FILEDA has Item w broken pointer.
 | 
|---|
| 99 |  ;         NO if not YES, not ?, and not NA.
 | 
|---|
| 100 |  ; Requires FILEDA = 8925.1 IFN of Entry.
 | 
|---|
| 101 |  ; Requires Node 0 of FILEDA to exist.
 | 
|---|
| 102 |  N DDEFUSED,NODE0,TYPE,DESCUSED
 | 
|---|
| 103 |  S NODE0=^TIU(8925.1,FILEDA,0),DDEFUSED=0
 | 
|---|
| 104 |  I $O(^TIU(8925,"B",FILEDA,0)) S DDEFUSED="YES" G DDEFX
 | 
|---|
| 105 |  S TYPE=$P(NODE0,U,4)
 | 
|---|
| 106 |  I TYPE="O" S DDEFUSED="NA" G DDEFX
 | 
|---|
| 107 |  I TYPE="DOC" S DDEFUSED="NO" G DDEFX
 | 
|---|
| 108 |  S DESCUSED=$$DESCUSED(FILEDA)
 | 
|---|
| 109 |  S DDEFUSED=$S(DESCUSED:"YES",DESCUSED="?":"?",1:"NO")
 | 
|---|
| 110 | DDEFX Q DDEFUSED
 | 
|---|
| 111 |  ;
 | 
|---|