| 1 | TIUFLA ; SLC/MAM - Library; Template A Related: SELSTART, MATCH(FILEDA), TYPMATCH(FILEDA,ATYPE), OWNMATCH(FILEDA,AOWN), STTMATCH(FILEDA,ASTAT), USEMATCH(FILEDA,AUSE), STRMATCH(FILEDA,NODE0), PARMATCH(FILEDA,APARE) ;4/23/97  11:02
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;;Jun 20, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | SELSTART ; Select Docmt Def to Start with and to Go To
 | 
|---|
| 5 |  ; Sets TIUFSTRT = Start^Stop where Start and Stop are characters to
 | 
|---|
| 6 |  ;start and stop display with.
 | 
|---|
| 7 |  N DIR,X,Y,START,GOTO
 | 
|---|
| 8 |  W !! S DIR(0)="FO^1:60^S:$L($T(^TIULS)) X=$$UPPER^TIULS(X) K:'(X'?1P.E) X",(DIR("?"),DIR("??"))="^D HELP^TIUFLA(""start"")"
 | 
|---|
| 9 |  S DIR("A")="START WITH DOCUMENT DEFINITION",DIR("B")="FIRST"
 | 
|---|
| 10 |  I TIUFTMPL="J" S DIR("A")="START DISPLAY WITH OBJECT"
 | 
|---|
| 11 |  D ^DIR I $D(DIRUT),'$D(TIUFSTRT) G SELSX
 | 
|---|
| 12 |  S START=Y,START=$$UPPER^TIULS(START)
 | 
|---|
| 13 |  I START="FIRST" S TIUFSTRT=" ^ZZZZZZZZ" G SELSX
 | 
|---|
| 14 |  S DIR("A")="GO TO DOCUMENT DEFINITION",DIR("B")="LAST"
 | 
|---|
| 15 |  I TIUFTMPL="J" S DIR("A")="GO TO OBJECT"
 | 
|---|
| 16 |  S (DIR("?"),DIR("??"))="^D HELP^TIUFLA(""end"")"
 | 
|---|
| 17 |  D ^DIR I $D(DIRUT) G SELSX
 | 
|---|
| 18 |  S GOTO=$S(Y="LAST":"ZZZZZZZZ",1:Y),GOTO=$$UPPER^TIULS(GOTO)
 | 
|---|
| 19 |  S TIUFSTRT=START_U_GOTO
 | 
|---|
| 20 | SELSX Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | HELP(STRTEND) ; Writes help for SELSTART
 | 
|---|
| 23 |  N DDEFOBJ S DDEFOBJ=$S(TIUFTMPL'="J":"Document Definition",1:"Object")
 | 
|---|
| 24 |  W !,"What ",DDEFOBJ," would you like to ",STRTEND," the display with?  Enter a",!,"partial/whole ",DDEFOBJ," name, or just enter some letters."
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | MATCH(FILEDA) ; Function returns 1 if FILEDA matches Template A Sort
 | 
|---|
| 28 |  ;Attribute, and Sort Attribute Value.
 | 
|---|
| 29 |  ;Else Returns e.g. 0^TYPE if Type is where match fails.
 | 
|---|
| 30 |  ; Requires TIUFATTR, TIUFAVAL.  See HDR^TIUFA
 | 
|---|
| 31 |  N ANS,ATTR1 S ANS=0
 | 
|---|
| 32 |  S ATTR1=$P(TIUFATTR,U)
 | 
|---|
| 33 |  I ATTR1="T" S ANS=$S($$TYPMATCH(FILEDA,TIUFAVAL):1,1:"0^TYPE")
 | 
|---|
| 34 |  I ATTR1="O" S ANS=$S($$OWNMATCH(FILEDA,TIUFAVAL):1,1:"0^OWNER")
 | 
|---|
| 35 |  I ATTR1="S" S ANS=$S($$STTMATCH(FILEDA,TIUFAVAL):1,1:"0^STATUS")
 | 
|---|
| 36 |  I ATTR1="U" S ANS=$S($$USEMATCH(FILEDA,TIUFAVAL):1,1:"0^WAY USED")
 | 
|---|
| 37 |  I ATTR1="P" S ANS=$S($$PARMATCH(FILEDA,TIUFAVAL):1,1:"0^PARENTAGE")
 | 
|---|
| 38 |  I ATTR1="A" S ANS=1
 | 
|---|
| 39 |  Q ANS
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | TYPMATCH(FILEDA,ATYPE) ; Function returns 1 if Type of FILEDA matches
 | 
|---|
| 42 |  ;Template A Type Value, else 0.
 | 
|---|
| 43 |  ; Requires FILEDA; Requires ATYPE=TIUFAVAL when TIUFATTR="T^TYPE".
 | 
|---|
| 44 |  ;See HDR^TIUFA.  Requires TIUFATTR.
 | 
|---|
| 45 |  N MATCH
 | 
|---|
| 46 |  I '$G(FILEDA)!'$D(ATYPE)!(TIUFATTR'="T^TYPE") S MATCH="ERR" G TYPMX
 | 
|---|
| 47 |  S MATCH=0,ATYPE=$P(ATYPE,U) I ATYPE="TL" S ATYPE="DOC"
 | 
|---|
| 48 |  I ATYPE="NONE" S:($P(^TIU(8925.1,FILEDA,0),U,4)="") MATCH=1 G TYPMX
 | 
|---|
| 49 |  I '$D(^TIU(8925.1,"AT",ATYPE,FILEDA)) G TYPMX
 | 
|---|
| 50 |  S MATCH=1
 | 
|---|
| 51 | TYPMX Q MATCH
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | OWNMATCH(FILEDA,AOWN) ; Function returns 1 if FILEDA matches Template A Owner
 | 
|---|
| 54 |  ;Value, Else 0.
 | 
|---|
| 55 |  ; Requires FILEDA; Requires AOWN=TIUFAVAL when TIUFATTR="O^OWNER".
 | 
|---|
| 56 |  ;See HDR^TIUFA.  Requires TIUFATTR.
 | 
|---|
| 57 |  N MATCH,PERSOWNS,NODE0
 | 
|---|
| 58 |  S MATCH=0
 | 
|---|
| 59 |  I '$G(FILEDA)!'$D(AOWN) G OWNMX
 | 
|---|
| 60 |  I $P(AOWN,U,3)="P"!($P(AOWN,U,3)="I")!(TIUFATTR'="O^OWNER") D  G OWNMX
 | 
|---|
| 61 |  . S PERSOWNS=$$PERSOWNS^TIUFLF2(FILEDA,+AOWN)
 | 
|---|
| 62 |  . I $P(AOWN,U,3)="P",$P(PERSOWNS,U,2)'="P" Q
 | 
|---|
| 63 |  . I $P(AOWN,U,3)="I",'PERSOWNS Q
 | 
|---|
| 64 |  . S MATCH=1
 | 
|---|
| 65 |  . Q
 | 
|---|
| 66 |  I $P(AOWN,U,3)="C",'$D(^TIU(8925.1,"AC",+AOWN,FILEDA)) G OWNMX
 | 
|---|
| 67 |  I $P(AOWN,U,2)="NONE" S NODE0=^TIU(8925.1,FILEDA,0) I $L($P(NODE0,U,5))!$L($P(NODE0,U,6)) G OWNMX
 | 
|---|
| 68 |  S MATCH=1
 | 
|---|
| 69 | OWNMX Q MATCH
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | STTMATCH(FILEDA,ASTAT) ; Function returns 1 if Status of FILEDA matches
 | 
|---|
| 72 |  ;Template A STatus Value ASTAT, else 0.
 | 
|---|
| 73 |  ; Fudge:  If ASTAT is A, I, or T, don't match a shared Component no matter what its .07 fld value is.  However, if ASTAT=0 (NONE), match Shared Component no matter what its .07 fld value is.
 | 
|---|
| 74 |  ; Requires FILEDA; Requires ASTAT=TIUFAVAL when TIUFATTR="S^STATUS".
 | 
|---|
| 75 |  ;See HDR^TIUFA.  Requires TIUFATTR.
 | 
|---|
| 76 |  N MATCH,NODE0
 | 
|---|
| 77 |  S MATCH=0,ASTAT=$P(ASTAT,U)
 | 
|---|
| 78 |  I '$G(FILEDA)!'$D(ASTAT)!(TIUFATTR'="S^STATUS") S MATCH="ERR" G STTMX
 | 
|---|
| 79 |  I $D(^TIU(8925.1,"AS",ASTAT,FILEDA)) S NODE0=^TIU(8925.1,FILEDA,0) I '$P(NODE0,U,10) S MATCH=1 G STTMX
 | 
|---|
| 80 |  I (ASTAT=0),'$P(^TIU(8925.1,FILEDA,0),U,7) S MATCH=1 G STTMX
 | 
|---|
| 81 |  I (ASTAT=0) S NODE0=^TIU(8925.1,FILEDA,0) I $P(NODE0,U,10) S MATCH=1
 | 
|---|
| 82 | STTMX Q MATCH
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | USEMATCH(FILEDA,AUSE) ; Function returns 1 if Way Used By Docmts of
 | 
|---|
| 85 |  ;FILEDA matches Template A Way Used Value, else 0.
 | 
|---|
| 86 |  ; Requires FILEDA; Requires AUSE=TIUFAVAL when TIUFATTR="U^WAY USED",
 | 
|---|
| 87 |  ;=YES,NO,NA or UNKNOWN.
 | 
|---|
| 88 |  ;See HDR^TIUFA.  Requires TIUFATTR.
 | 
|---|
| 89 |  N MATCH,DDEFUSED
 | 
|---|
| 90 |  I '$G(FILEDA)!'$D(AUSE)!(TIUFATTR'="U^WAY USED") S MATCH="ERR" G USEMX
 | 
|---|
| 91 |  S MATCH=0,DDEFUSED=$$DDEFUSED^TIUFLF(FILEDA)
 | 
|---|
| 92 |  I DDEFUSED["UNKNOWN",AUSE="UNKNOWN" S MATCH=1 G USEMX ; UNKNOWN[NO!!!
 | 
|---|
| 93 |  I DDEFUSED=AUSE S MATCH=1 G USEMX
 | 
|---|
| 94 | USEMX Q MATCH
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | PARMATCH(FILEDA,APARE) ; Function returns 1 if Parentage of FILEDA matches
 | 
|---|
| 97 |  ;Template A Parentage Value, else 0.
 | 
|---|
| 98 |  ; Requires FILEDA; Requires APARE=TIUFAVAL when TIUFATTR="P^PARENTAGE".
 | 
|---|
| 99 |  ;See HDR^TIUFA.  Requires TIUFATTR.
 | 
|---|
| 100 |  N MATCH,ORPHAN,NODE0
 | 
|---|
| 101 |  S MATCH=0,APARE=$P(APARE,U)
 | 
|---|
| 102 |  I '$G(FILEDA)!'$D(APARE)!(TIUFATTR'="P^PARENTAGE") S MATCH="ERR" G PARMX
 | 
|---|
| 103 |  S NODE0=^TIU(8925.1,FILEDA,0),ORPHAN=$$ORPHAN^TIUFLF4(FILEDA,NODE0)
 | 
|---|
| 104 |  I ORPHAN="YES",$P(APARE,U)="O" S MATCH=1
 | 
|---|
| 105 |  I ORPHAN="NO",$P(APARE,U)="N" S MATCH=1
 | 
|---|
| 106 | PARMX Q MATCH
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | STRMATCH(FILEDA,NODE0) ; Function returns 1 if FILEDA Name matches Template A
 | 
|---|
| 109 |  ;Start With/Go To Value, Else 0.
 | 
|---|
| 110 |  ; Requires FILEDA, NODE0= ^TIU(8925.1,FILEDA,0).
 | 
|---|
| 111 |  ; Requires TIUFSTRT as set in SELSTART^TIUFLA.
 | 
|---|
| 112 |  N NAME,ANS
 | 
|---|
| 113 |  S NAME=$P(NODE0,U)
 | 
|---|
| 114 |  I $P(TIUFSTRT,U)']NAME,NAME']$P(TIUFSTRT,U,2) S ANS=1 G STRMX
 | 
|---|
| 115 |  S ANS=0
 | 
|---|
| 116 | STRMX Q ANS
 | 
|---|
| 117 |  ;
 | 
|---|