| 1 | TIUFLF6 ; SLC/MAM - Library; File 8925.1 Related:  ASKSTAT(FILEDA,NODE0,PFILEDA,NEWFLAG,XFLG), AUTOSTAT(FILEDA,NODE0,STAT),DESCSTAT(FILEDA,NEWSTAT) ; 03/16/2007
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**13,211,225**;Jun 20, 1997;Build 13
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | ASKSTAT(FILEDA,NODE0,PFILEDA,NEWFLAG,XFLG) ; User edit FILEDA Status. Does AUTOSTAT.
 | 
|---|
| 5 |  ; Requires FILEDA,NODE0
 | 
|---|
| 6 |  ; Requires PFILEDA if FILEDA has an actual/prospective parent.
 | 
|---|
| 7 |  ; Returns NEWFLAG=0 if Status unchanged, = 1^ExternalNewStatus if changed, e.g. 1^ACTIVE
 | 
|---|
| 8 |  ; Returns XFLG=1 if user ^exited or timed out, else as received.
 | 
|---|
| 9 |  N XQORM,TIUJ,NEWSTAT,DIR,X,Y,TIUFSTAT,TIUFPFDA,CONTINUE
 | 
|---|
| 10 |  N STATUS,DEFLT
 | 
|---|
| 11 |  S NEWFLAG=0
 | 
|---|
| 12 |  S DEFLT=$$STATWORD^TIUFLF5($P(NODE0,U,7))
 | 
|---|
| 13 | READST K DUOUT S:(DEFLT'="NO/BAD") STATUS=$$SELSTAT^TIUFLF5(FILEDA,PFILEDA,DEFLT) S:(DEFLT="NO/BAD") STATUS=$$SELSTAT^TIUFLF5(FILEDA,PFILEDA)
 | 
|---|
| 14 |  I $D(DUOUT)!$D(DTOUT) G ASKSX
 | 
|---|
| 15 |  I STATUS="" W "  ?? Enter appropriate Status or '^' to exit",! H 2 G READST
 | 
|---|
| 16 |  S NEWSTAT=STATUS I +NEWSTAT'=$P(NODE0,U,7) S NEWFLAG="1^"_$P(NEWSTAT,U,2)
 | 
|---|
| 17 |  S NEWSTAT=$P(NEWSTAT,U,2) ;e.g. ACTIVE
 | 
|---|
| 18 |  I NEWFLAG,NEWSTAT="INACTIVE" D INACTIVE^TIUFHA3($P(NODE0,U,4),FILEDA,NODE0)
 | 
|---|
| 19 |  I 'NEWFLAG!(NEWSTAT'="INACTIVE") D AUTOSTAT(FILEDA,NODE0,NEWSTAT)
 | 
|---|
| 20 | ASKSX S:$D(DUOUT)!$D(DTOUT) XFLG=1
 | 
|---|
| 21 |  Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | AUTOSTAT(FILEDA,NODE0,STAT) ; Auto edit FILEDA to Status STAT; Auto edit FILEDA descendants
 | 
|---|
| 24 |  N DIE,DR,X,Y,DA
 | 
|---|
| 25 |  S DA=FILEDA
 | 
|---|
| 26 |  I STAT="INACTIVE" D
 | 
|---|
| 27 |  . S DIE=8925.1,DR=".07///^S X=STAT" D ^DIE
 | 
|---|
| 28 |  . Q:$P(NODE0,U,4)="O"
 | 
|---|
| 29 |  . ;Inactivate descendants, all the way down
 | 
|---|
| 30 |  . D DESCSTAT(FILEDA,"INACTIVE")
 | 
|---|
| 31 |  I STAT="TEST" D
 | 
|---|
| 32 |  . S DIE=8925.1,DR=".07///^S X=STAT" D ^DIE
 | 
|---|
| 33 |  . D DESCSTAT(FILEDA,"TEST")
 | 
|---|
| 34 |  I STAT="ACTIVE" D
 | 
|---|
| 35 |  . N TIUOUT
 | 
|---|
| 36 |  . I ($P(NODE0,U,4)="DOC"),(+$G(^TIU(8925.1,DA,15))'>0) D  Q:+$G(TIUOUT)
 | 
|---|
| 37 |  . . W !!,$C(7),"You MUST first map ",$P(NODE0,U),!
 | 
|---|
| 38 |  . . D DIRECT^TIUMAP2(DA)
 | 
|---|
| 39 |  . . I +$G(^TIU(8925.1,DA,15))'>0 W $C(7)," Status Unchanged...",! H 2
 | 
|---|
| 40 |  . . I  S TIUOUT=1,VALMBCK="R"
 | 
|---|
| 41 |  . W " Entry Activated.",! H 1
 | 
|---|
| 42 |  . S DIE=8925.1,DR=".07///^S X=STAT" D ^DIE
 | 
|---|
| 43 |  . ; I DOC, activate all descendants.
 | 
|---|
| 44 |  . I $P(NODE0,U,4)="DOC" D DESCSTAT(FILEDA,STAT)
 | 
|---|
| 45 |  . ; I CL or DC, let user activate desc by using separate option
 | 
|---|
| 46 |  . ; I O, done.
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | DESCSTAT(FILEDA,NEWSTAT) ;  Edits Status of all descendants of FILEDA
 | 
|---|
| 50 |  ;except Shared Components.
 | 
|---|
| 51 |  ; Gives them Status NEWSTAT
 | 
|---|
| 52 |  ; Requires FILEDA.  Requires NEWSTAT = ACTIVE, TEST, or INACTIVE
 | 
|---|
| 53 |  ; Called with NEWSTAT="ACTIVE" for Components ONLY.
 | 
|---|
| 54 |  N TIUI,IFILEDA,INODE0,DIE,X,Y,STATUS,DA
 | 
|---|
| 55 |  S TIUI=0,DIE=8925.1
 | 
|---|
| 56 |  F  S TIUI=$O(^TIU(8925.1,FILEDA,10,TIUI)) Q:'TIUI  D
 | 
|---|
| 57 |  . S IFILEDA=+^TIU(8925.1,FILEDA,10,TIUI,0)
 | 
|---|
| 58 |  . S INODE0=$G(^TIU(8925.1,IFILEDA,0))
 | 
|---|
| 59 |  . I INODE0="" W !!," File Entry "_FILEDA_" has Nonexistent item "_IFILEDA_"; See IRM",! H 5 Q
 | 
|---|
| 60 |  . I $P(INODE0,U,10) Q
 | 
|---|
| 61 |  . S DA=IFILEDA,DR=".07///^S X=NEWSTAT" D ^DIE
 | 
|---|
| 62 |  . D DESCSTAT(IFILEDA,NEWSTAT)
 | 
|---|
| 63 | DESCX Q
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | CANEDIT(FILEDA) ; Function returns 1 if Shared Component can be edited, else 0
 | 
|---|
| 66 |  ; Can be edited if all parent Titles are Inactive.  Ignores parents which don't exist or have no Status.
 | 
|---|
| 67 |  N PFILEDA,PSTATUS,EDITANS,PNODE0,PTYPE
 | 
|---|
| 68 |  S EDITANS=1,PFILEDA=0
 | 
|---|
| 69 |  F  S PFILEDA=$O(^TIU(8925.1,"AD",FILEDA,PFILEDA)) G:'PFILEDA CANEX D  G:'EDITANS!$D(DTOUT) CANEX
 | 
|---|
| 70 |  . I '$D(^TIU(8925.1,PFILEDA,0)) W " File Entry "_PFILEDA_" from AD XREF is missing from the file: See IRM" D PAUSE^TIUFXHLX Q
 | 
|---|
| 71 |  . S PNODE0=^TIU(8925.1,PFILEDA,0),PTYPE=$P(PNODE0,U,4)
 | 
|---|
| 72 |  . I PTYPE="DOC" S PSTATUS=$P(PNODE0,U,7),PSTATUS=$$STATWORD^TIUFLF5(PSTATUS) I PSTATUS="NO/BAD" W " File Entry "_PFILEDA_" has No Status/Bad Status" D PAUSE^TIUFXHLX Q
 | 
|---|
| 73 |  . I PTYPE="DOC" S:(PSTATUS="ACTIVE"!(PSTATUS="TEST")) EDITANS=0 Q
 | 
|---|
| 74 |  . I PTYPE="CO" S EDITANS=$$CANEDIT(PFILEDA)
 | 
|---|
| 75 | CANEX S:$D(DTOUT) EDITANS=0
 | 
|---|
| 76 |  Q EDITANS
 | 
|---|
| 77 |  ;
 | 
|---|