[613] | 1 | TIUFLF5 ; SLC/MAM - Library; File 8925.1 Related: STATSCRN(),STATLIST(FILEDA,PFILEDA,NEWSTAT,STATMSG,STATLIST), ANCSTAT(FILEDA), POSSSTAT(TYPE), STATOK(TYPE,NEWSTAT), SELSTAT(FILEDA,PFILEDA,DEFLT),STATWORD(PIECE7) ;4/17/97 23:35
|
---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**5**;Jun 20, 1997
|
---|
| 3 | ;
|
---|
| 4 | STATSCRN() ; Function returns DD Status Screen for Status Field .07:
|
---|
| 5 | ;Permits only Statuses which apply to Document Definitions.
|
---|
| 6 | ; Used only as an additional safeguard for persons using FILEMAN.
|
---|
| 7 | ;INACTIVE, TEST, ACTIVE.
|
---|
| 8 | Q "I ($P(^(0),U,4)=""DEF"")"
|
---|
| 9 | ;
|
---|
| 10 | STATOK(TYPE,NEWSTAT) ; Function returns 1/0 if NEWSTAT is/isn't permissible for TYPE.
|
---|
| 11 | ; Requires internal Type e.g. CL; Requires NEWSTAT= I, T, or A.
|
---|
| 12 | N ANS,STAT,MSG
|
---|
| 13 | S STAT=$$POSSSTAT(TYPE)
|
---|
| 14 | I STAT[NEWSTAT S ANS=1 G STOKX
|
---|
| 15 | S MSG=" Status Limited to "_$S(STAT="ITA":"I, T, or A: ",STAT="IA":"I or A: ",1:"I: ")_$S(STAT="I":"No Type/Bad Type",1:^TMP("TIUF",$J,"TYPE"_TYPE))
|
---|
| 16 | W !!,MSG,!
|
---|
| 17 | S ANS=0
|
---|
| 18 | STOKX Q ANS
|
---|
| 19 | ;
|
---|
| 20 | STATLIST(FILEDA,PFILEDA,NEWSTAT,STATMSG,STATLIST) ; Module sets List of possible Statuses, sets msg explaining any limitations on Status
|
---|
| 21 | ; Requires FILEDA of 8925.1 entry whose Status is being edited, as set in ASKSTAT^TIUFLF6.
|
---|
| 22 | ; Requires PFILEDA if FILEDA has an actual or prospective parent
|
---|
| 23 | ;(as in Create, Add Items).
|
---|
| 24 | ; Optional NEWSTAT = I, T, or A for anticipated new status. If entry hs bad status but user is correcting it, don't tell them it's bad.
|
---|
| 25 | ; Optional STATLIST: Returns STATLIST = subset of "AIT", representing acceptable Statuses.
|
---|
| 26 | ; STATLIST is called BEFORE user edits status of particular entry.
|
---|
| 27 | N NODE0,TYPE,POSSSTAT,ANCSTAT,STATUS
|
---|
| 28 | S PFILEDA=+$G(PFILEDA),STATMSG=""
|
---|
| 29 | S NODE0=^TIU(8925.1,FILEDA,0),TYPE=$P(NODE0,U,4),POSSSTAT=$$POSSSTAT(TYPE)
|
---|
| 30 | N TIUFCK D CHECK^TIUFLF3(FILEDA,PFILEDA,1,.TIUFCK) G:$D(DTOUT) STATX
|
---|
| 31 | ; Problem with Check:
|
---|
| 32 | I 'TIUFCK D I $L($G(STATMSG)) G STATX
|
---|
| 33 | . ; Problem with Check is Wrong Status:
|
---|
| 34 | . I $D(TIUFCK("S")) D Q
|
---|
| 35 | . . S STATLIST=POSSSTAT
|
---|
| 36 | . . ; If going to change Status to permissable one, and Status is the ONLY problem, don't set msg:
|
---|
| 37 | . . I $D(NEWSTAT),POSSSTAT[$E(NEWSTAT) K TIUFCK("S") I $D(TIUFCK)'>9 Q
|
---|
| 38 | . . ; If present Status is wrong set msg:
|
---|
| 39 | . . I TYPE="CL"!(TYPE="DC")!(TYPE="O") S STATMSG=" Status Limited to A or I: "_^TMP("TIUF",$J,"TYPE"_TYPE) Q
|
---|
| 40 | . K TIUFCK("S") I $D(TIUFCK)'>9 Q
|
---|
| 41 | . ; Problem with Check is not Status:
|
---|
| 42 | . I $G(NEWSTAT)'="I" S STATLIST="I",STATMSG=" Status Limited to I: "_$P(TIUFCK,U,2)
|
---|
| 43 | ; Inactive Ancestor Problem:
|
---|
| 44 | I 'PFILEDA G STATX
|
---|
| 45 | S ANCSTAT=$$ANCSTAT(FILEDA,PFILEDA)
|
---|
| 46 | I ANCSTAT D S STATLIST="I" G STATX
|
---|
| 47 | . ; Limits STATLIST to I if entry has inactive (or no status) ancestor.
|
---|
| 48 | . ;Sets Ancestor msg only if inactive ancestor AND user has mistakenly chosen something other than inactive on the first try at editing
|
---|
| 49 | . S STATUS=$S($G(Y):$E($G(^TMP("TIUF",$J,"STAT"_Y))),1:$G(NEWSTAT))
|
---|
| 50 | . I STATUS'="I" S STATMSG=" Status Limited to I: Inactive Ancestor"
|
---|
| 51 | STATX I '$D(STATLIST) D
|
---|
| 52 | . I POSSSTAT="I" S STATLIST="I" Q:$G(NEWSTAT)="I"
|
---|
| 53 | . I POSSSTAT="A" S STATLIST="A" Q:$G(NEWSTAT)="A"
|
---|
| 54 | . I POSSSTAT="IA" S STATLIST="IA" Q:"IA"[$G(NEWSTAT)
|
---|
| 55 | . I '$D(STATLIST) S STATLIST="ITA" Q
|
---|
| 56 | . I TYPE="CL"!(TYPE="DC")!(TYPE="O") S STATMSG=" Status Limited to A or I: "_^TMP("TIUF",$J,"TYPE"_TYPE) Q
|
---|
| 57 | Q
|
---|
| 58 | ;
|
---|
| 59 | ANCSTAT(FILEDA,PFILEDA) ; Function returns 1 if any Ancestor is Inactive [or has no status];
|
---|
| 60 | N PNODE0,PANCEST,ANSTAT,TIUI,PANCSTAT
|
---|
| 61 | ;Check parent separately since item may have only PROSPECTIVE parent:
|
---|
| 62 | S ANSTAT=0,PNODE0=^TIU(8925.1,PFILEDA,0),PANCSTAT=$P(PNODE0,U,7)
|
---|
| 63 | I PANCSTAT=+^TMP("TIUF",$J,"STATI")!'PANCSTAT S ANSTAT=1 G ANCSX
|
---|
| 64 | D ANCESTOR^TIUFLF4(PFILEDA,PNODE0,.PANCEST)
|
---|
| 65 | F TIUI=1:1 Q:'$G(PANCEST(TIUI)) D Q:ANSTAT
|
---|
| 66 | . S PANCSTAT=$P(^TIU(8925.1,PANCEST(TIUI),0),U,7)
|
---|
| 67 | . I PANCSTAT=+^TMP("TIUF",$J,"STATI")!'PANCSTAT S ANSTAT=1
|
---|
| 68 | ANCSX Q ANSTAT
|
---|
| 69 | ;
|
---|
| 70 | POSSSTAT(TYPE) ; Function returns permissible Statuses for Type
|
---|
| 71 | ; Permissible Statuses is string subset of ITA: (Inactive, Test, Active)
|
---|
| 72 | ; Requires internal Type e.g. CL
|
---|
| 73 | N POSSSTAT
|
---|
| 74 | S POSSSTAT=$S(TYPE="CL":"IA",TYPE="DC":"IA",TYPE="DOC":"ITA",TYPE="CO":"ITA",TYPE="O":"IA",1:"I") ; Inactive for bad or no Type.
|
---|
| 75 | Q POSSSTAT
|
---|
| 76 | ;
|
---|
| 77 | SELSTAT(FILEDA,PFILEDA,DEFLT) ; Function Prompts for Status, Returns Selected Status: ActiveIFN^ACTIVE, InactiveIFN^INACTIVE, TestIFN^TEST, "" if nothing selected or @ entered.
|
---|
| 78 | ; Optional FILEDA: not received for Edit Status.
|
---|
| 79 | ; Optional PFILEDA
|
---|
| 80 | ; Optional DEFLT = 'INACTIVE', etc.
|
---|
| 81 | ; FILEDA, PFILEDA,DEFLT are needed when editing Status under Edit Basics
|
---|
| 82 | ;NOT needed when selecting Status for Edit Status.
|
---|
| 83 | ;
|
---|
| 84 | ; Requires TIUFXNOD
|
---|
| 85 | ; NOTE: In order to write reasons for limits on status when editing status, edit is done with a FREE TEXT reader call, a list of permissible statuses, and a check of the result. So don't look for a screen on the status field.
|
---|
| 86 | N DIR,X,Y,DA,STATUS,AOK,INACTOK,TOK,CHOICE,STATSCRN,TIUFSMSG
|
---|
| 87 | N TIUFSLST,STATOK
|
---|
| 88 | I '$G(FILEDA) S FILEDA=0
|
---|
| 89 | S DIR(0)=$S(TIUFXNOD["Status...":"FAO^1:9",1:"FA^1:9"),(DIR("?"),DIR("??"))="^D STATUS^TIUFXHLX"
|
---|
| 90 | I $D(DEFLT) S DIR("B")=DEFLT
|
---|
| 91 | ;TIUFSMSG, TIUFSLST set by STATLIST; used in Xecut help
|
---|
| 92 | I FILEDA D STATLIST(FILEDA,+$G(PFILEDA),0,.TIUFSMSG,.TIUFSLST) G:$D(DTOUT) SELSX D
|
---|
| 93 | . S (AOK,INACTOK,TOK)=0
|
---|
| 94 | . S:TIUFSLST["A" AOK=1 S:TIUFSLST["I" INACTOK=1 S:TIUFSLST["T" TOK=1
|
---|
| 95 | . S CHOICE=""
|
---|
| 96 | . I AOK S CHOICE=CHOICE_$S(CHOICE'="":"/A",1:"A")
|
---|
| 97 | . I INACTOK S CHOICE=CHOICE_$S(CHOICE'="":"/I",1:"I")
|
---|
| 98 | . I TOK S CHOICE=CHOICE_$S(CHOICE'="":"/T",1:"T")
|
---|
| 99 | . S CHOICE="("_CHOICE_")"
|
---|
| 100 | I 'FILEDA D
|
---|
| 101 | . I TIUFXNOD["Status..." D
|
---|
| 102 | . . I $P($G(TIUFATTR),U)="T",$P($G(TIUFAVAL),U)="O" S CHOICE="(A/I)",TIUFSLST="AI",TIUFSMSG="Status limited to A or I: OBJECT" Q
|
---|
| 103 | . . S CHOICE="(A/I/T)",TIUFSLST="AIT"
|
---|
| 104 | S DIR("A")=$S('FILEDA:"Select STATUS",1:"STATUS")_": "_CHOICE_": "
|
---|
| 105 | AGAIN D ^DIR I $D(DTOUT)!$D(DUOUT) S STATUS="" G SELSX
|
---|
| 106 | S STATUS=$$UPPER^TIULS(Y)
|
---|
| 107 | D I 'STATOK G AGAIN
|
---|
| 108 | . S STATOK=1
|
---|
| 109 | . I $E(STATUS)="A","ACTIVE"[STATUS W:(STATUS'="ACTIVE") " ACTIVE" S STATUS=^TMP("TIUF",$J,"STATA") Q ;11^ACTIVE
|
---|
| 110 | . I $E(STATUS)="I","INACTIVE"[STATUS W:(STATUS'="INACTIVE") " INACTIVE" S STATUS=^TMP("TIUF",$J,"STATI") Q
|
---|
| 111 | . I $E(STATUS)="T","TEST"[STATUS W:(STATUS'="TEST") " TEST" S STATUS=^TMP("TIUF",$J,"STATT") Q
|
---|
| 112 | . I STATUS'="" W " ?? Enter '^' to exit" S STATOK=0 Q
|
---|
| 113 | I FILEDA,STATUS,TIUFSLST'[$E($P(STATUS,U,2)) S STATUS="" W " ??" G AGAIN ; User entered something that doesn't pass screen.
|
---|
| 114 | SELSX S:$D(DTOUT) STATUS=""
|
---|
| 115 | Q STATUS
|
---|
| 116 | ;
|
---|
| 117 | STATWORD(PIECE7) ; Function returns Status as a word: ACTIVE, TEST, INACTIVE or NO/BAD
|
---|
| 118 | ; NO/BAD if no status or status is missing from 8925.6 status file, or status is not entry active, test or inactive in 8925.6.
|
---|
| 119 | ; Requires PIECE7= fld .07 of 8925.1 entry, could be null
|
---|
| 120 | N STATANS
|
---|
| 121 | I '$D(^TMP("TIUF",$J,"STATI")) D SETUP^TIUFL
|
---|
| 122 | S STATANS=$G(^TMP("TIUF",$J,"STAT"_+PIECE7))
|
---|
| 123 | I (STATANS'="ACTIVE"),(STATANS'="TEST"),(STATANS'="INACTIVE") S STATANS="NO/BAD"
|
---|
| 124 | Q STATANS
|
---|
| 125 | ;
|
---|