| 1 | TIUPS209 ; SLC/AJB - Active Titles Report & Cleanup v2; 06/01/06 ; 7/26/06 11:46am
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**209,218**;Jun 20, 1997;Build 1
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 | EN ; control segment
 | 
|---|
| 6 |  N ANS,TIUOMIT
 | 
|---|
| 7 |  W @IOF
 | 
|---|
| 8 |  D ASKUSER(.ANS,"Inactivate the unused Document Titles at this time") Q:$G(ANS("EXIT"))="YES"
 | 
|---|
| 9 |  D
 | 
|---|
| 10 |  .N POP,TIUDESC,TIURTN,TIUSAVE
 | 
|---|
| 11 |  .S TIUDESC="TIUPS209 Active Title Report & Cleanup",TIURTN="REPORT^TIUPS209",TIUSAVE("*")=""
 | 
|---|
| 12 |  .W ! D EN^XUTMDEVQ(TIURTN,TIUDESC,.TIUSAVE)
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 | REPORT ;
 | 
|---|
| 15 |  N CNT,ENDDT,ENDTIME,GBL,LINE,LINETXT,STRDT,STRTIME,TIUDA,TMP,TOTTIME,TIUX,TIUY
 | 
|---|
| 16 |  S STRTIME=$$NOW^XLFDT ; start time of search
 | 
|---|
| 17 | RESTART ;
 | 
|---|
| 18 |  S CNT=$NA(CNT) ; counters
 | 
|---|
| 19 |  S GBL=$NA(^TIU(8925.1,"B")) ; global to be searched
 | 
|---|
| 20 |  S TMP=$NA(^TMP("TIUPS209",$J)) ; sets temporary storage location
 | 
|---|
| 21 |  S @CNT@("T#8925.1")=0 ; number of document titles in 8925.1
 | 
|---|
| 22 |  S (TIUX,TIUY)=0 ; gets all document titles from 8925.1
 | 
|---|
| 23 |  F  S TIUX=$O(@GBL@(TIUX)) Q:TIUX=""  F  S TIUY=$O(@GBL@(TIUX,TIUY)) Q:'+TIUY  D
 | 
|---|
| 24 |  . I $P($G(^TIU(8925.1,TIUY,0)),U,4)="DOC" S @TMP@("B",TIUY)=0,@CNT@("T#8925.1")=@CNT@("T#8925.1")+1
 | 
|---|
| 25 |  S GBL=$NA(^TIU(8925,"F")) ; global to be searched
 | 
|---|
| 26 |  S STRDT=$P($$FMADD^XLFDT($$NOW^XLFDT,-365),".") ; start date to search
 | 
|---|
| 27 |  S ENDDT=$P($$NOW^XLFDT,".")_".24" ; end date to search
 | 
|---|
| 28 |  S @CNT@("T#8925")=0 ; number of documents searched in 8925
 | 
|---|
| 29 |  S @CNT@("T#M0NODE")=0 ; number of documents with invalid .01 field
 | 
|---|
| 30 |  S @CNT@("T#WT8925.1")=0 ; number of documents with incorrect .01 field (non title - 8925.1)
 | 
|---|
| 31 |  S @CNT@("T#ADD8925.1")=0 ; number of document titles added due to wrong type
 | 
|---|
| 32 |  S @CNT@("T#GDOCS")=0 ; number of documents
 | 
|---|
| 33 |  S TIUDA=0
 | 
|---|
| 34 |  F  S STRDT=$O(@GBL@(STRDT)) Q:'+STRDT!(STRDT>ENDDT)  F  S TIUDA=$O(@GBL@(STRDT,TIUDA)) Q:'+TIUDA  D
 | 
|---|
| 35 |  . S @CNT@("T#8925")=@CNT@("T#8925")+1 ; count of documents searched
 | 
|---|
| 36 |  . N TIUD0,TIUD12,TIUX S TIUD0=$G(^TIU(8925,TIUDA,0)),TIUD12=$G(^TIU(8925,TIUDA,12))
 | 
|---|
| 37 |  . I '+TIUD0 S @TMP@("UNK",+TIUDA)="",@CNT@("T#M0NODE")=@CNT@("T#M0NODE")+1 Q  ; track documents with invalid .01 field
 | 
|---|
| 38 |  . I $P($G(^TIU(8925.1,+TIUD0,0)),U,4)'="DOC" S TIUX=1,@CNT@("T#WT8925.1")=@CNT@("T#WT8925.1")+1,@TMP@("WRT",+TIUD0)=""
 | 
|---|
| 39 |  . I '+$D(@TMP@("B",+TIUD0)) S @TMP@("B",+TIUD0)=0,@CNT@("T#ADD8925.1")=@CNT@("T#ADD8925.1")+1
 | 
|---|
| 40 |  . S @TMP@("B",+TIUD0)=(+@TMP@("B",+TIUD0)+1) S:'+$G(TIUX) @CNT@("T#GDOCS")=@CNT@("T#GDOCS")+1
 | 
|---|
| 41 |  . S @TMP@("B",+TIUD0)=@TMP@("B",+TIUD0)_U_+$P(TIUD12,".")_U_$P(TIUD12,U,2)_U_+TIUD0_U_$P(^TIU(8925.1,+TIUD0,0),U,7)
 | 
|---|
| 42 |  S @CNT@("T#ERR8925.1")=0 ; number of errorneous document titles
 | 
|---|
| 43 |  S @CNT@("T#U8925.1")=0 ; number of used document titles
 | 
|---|
| 44 |  S @CNT@("T#UN8925.1")=0 ; number of unused document titles
 | 
|---|
| 45 |  S TIUDA=0
 | 
|---|
| 46 |  F  S TIUDA=$O(@TMP@("B",TIUDA)) Q:'+TIUDA  D
 | 
|---|
| 47 |  . I +$L($P($G(^TIU(8925.1,TIUDA,0)),U))<3 S @CNT@("T#ERR8925.1")=@CNT@("T#ERR8925.1")+1,@TMP@("B.1",+TIUDA)="" Q
 | 
|---|
| 48 |  . I +@TMP@("B",TIUDA) S @CNT@("T#U8925.1")=@CNT@("T#U8925.1")+1,@TMP@("RPT","USED",$$GET1^DIQ(8925.1,+TIUDA,.01))=@TMP@("B",+TIUDA) Q
 | 
|---|
| 49 |  . S @CNT@("T#UN8925.1")=@CNT@("T#UN8925.1")+1,@TMP@("RPT","UNUSED",$$GET1^DIQ(8925.1,+TIUDA,.01))=$$GETLAST(+TIUDA)
 | 
|---|
| 50 |  S ENDTIME=$$NOW^XLFDT,TOTTIME=$FN($$FMDIFF^XLFDT(STRTIME,ENDTIME,2)/60,"-")
 | 
|---|
| 51 |  I $G(ANS("INACT"))="YES" D UPDATE K @TMP S ANS("INACT")="" G RESTART
 | 
|---|
| 52 |  F LINE=1:1 S LINETXT=$P($T(RPT+LINE),";;",2) Q:LINETXT="EOM"  W !,@LINETXT
 | 
|---|
| 53 |  S TIUX=""
 | 
|---|
| 54 |  F TIUY="UNUSED","USED" F  S TIUX=$O(@TMP@("RPT",TIUY,TIUX)) Q:TIUX=""  D
 | 
|---|
| 55 |  . N DATA,DISPLAY,STATUS,TITLE
 | 
|---|
| 56 |  . S DATA=@TMP@("RPT",TIUY,TIUX)
 | 
|---|
| 57 |  . I TIUY="UNUSED",$P(DATA,U,5)=13 Q  ; don't print unused/inactive titles
 | 
|---|
| 58 |  . S STATUS=$S($P(DATA,U,5)=11:"",$P(DATA,U,5)=13:" [Inactive]",1:" [unknown]")
 | 
|---|
| 59 |  . S TITLE=TIUX_STATUS,TITLE=$$WRAP^TIULS(TITLE,38)
 | 
|---|
| 60 |  . S DISPLAY=$$SETSTR^VALM1($P(TITLE,"|"),"",1,38)
 | 
|---|
| 61 |  . S DISPLAY=$$SETSTR^VALM1($$SPACER(+DATA,5,1),DISPLAY,40,5)
 | 
|---|
| 62 |  . S DISPLAY=$$SETSTR^VALM1($$FMTE^XLFDT($P(DATA,U,2)),DISPLAY,47,12)
 | 
|---|
| 63 |  . S DISPLAY=$$SETSTR^VALM1($S($P(DATA,U,3)="N/A":"N/A",1:$$GET1^DIQ(200,+$P(DATA,U,3),.01)),DISPLAY,61,18)
 | 
|---|
| 64 |  . W !,DISPLAY
 | 
|---|
| 65 |  . I $L(TITLE,"|")>1 F DATA=2:1:$L(TITLE,"|") W !,?2,$P(TITLE,"|",DATA)
 | 
|---|
| 66 |  I +$D(@TMP@("B.1")) D
 | 
|---|
| 67 |  . W !!,"The following IENs from File #8925.1 have an invalid #.01 Field.",!
 | 
|---|
| 68 |  . S TIUDA=0 F  S TIUDA=$O(@TMP@("B.1",TIUDA)) Q:'+TIUDA  W !,TIUDA
 | 
|---|
| 69 |  I +$D(@TMP@("WRT")) D
 | 
|---|
| 70 |  . W !!,"The following IENs from File #8925.1 have an incorrect #.04 Field.",!
 | 
|---|
| 71 |  . S TIUDA=0 F  S TIUDA=$O(@TMP@("WRT",TIUDA)) Q:'+TIUDA  D
 | 
|---|
| 72 |  . . N DATA,TITLE S TITLE=$$GET1^DIQ(8925.1,TIUDA,.01),TITLE=$$WRAP^TIULS(TITLE,50)
 | 
|---|
| 73 |  . . W !,$$SPACER(TIUDA,12)_$P(TITLE,"|")_" ["_$$GET1^DIQ(8925.1,TIUDA,.04)_"]"
 | 
|---|
| 74 |  . . I $L(TITLE,"|")>1 F DATA=2:1:$L(TITLE,"|") W !,?14,$P(TITLE,"|",DATA)
 | 
|---|
| 75 |  I +$D(@TMP@("UNK")) D
 | 
|---|
| 76 |  . W !!,"The following DOCUMENT IENs have an incorrect (null or zero) #.01 Field.",!
 | 
|---|
| 77 |  . S TIUDA=0 F  S TIUDA=$O(@TMP@("UNK",TIUDA)) Q:'+TIUDA  W !,$$SPACER(TIUDA,12) ; I +@TMP@("UNK",TIUDA) W $$GET1^DIQ(8925.1,@TMP@("UNK",TIUDA),.01)
 | 
|---|
| 78 |  K @TMP
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 | RPT ;
 | 
|---|
| 81 |  ;;"Elapsed Time:    "_(TOTTIME\1)_" minute(s) "_($FN((TOTTIME#1)*60,"-",0))_" second(s)"
 | 
|---|
| 82 |  ;;""
 | 
|---|
| 83 |  ;;"                 # of Used Titles  : "_$$SPACER(@CNT@("T#U8925.1"),10,1)
 | 
|---|
| 84 |  ;;"               # of Unused Titles  : "_$$SPACER(@CNT@("T#UN8925.1"),10,1)
 | 
|---|
| 85 |  ;;"              # of Invalid Titles  : "_$$SPACER(@CNT@("T#ERR8925.1"),10,1)_$S(+@CNT@("T#ERR8925.1"):" (See End of Report)",1:"")
 | 
|---|
| 86 |  ;;"                                     ----------"
 | 
|---|
| 87 |  ;;"                # of Total Titles  : "_$$SPACER((@CNT@("T#8925.1")+@CNT@("T#ADD8925.1")),10,1)
 | 
|---|
| 88 |  ;;""
 | 
|---|
| 89 |  ;;"                        # of Docs  : "_$$SPACER(@CNT@("T#GDOCS"),10,1)
 | 
|---|
| 90 |  ;;"    # of Docs Incorrect .01 Field  : "_$$SPACER(@CNT@("T#WT8925.1"),10,1)_$S(+@CNT@("T#WT8925.1"):" (See End of Report)",1:"")
 | 
|---|
| 91 |  ;;"    # of Docs Zero/Null .01 Field  : "_$$SPACER(@CNT@("T#M0NODE"),10,1)_$S(+@CNT@("T#M0NODE"):" (See End of Report)",1:"")
 | 
|---|
| 92 |  ;;"                                     ----------"
 | 
|---|
| 93 |  ;;"         # of Total Docs Searched  : "_$$SPACER(@CNT@("T#8925"),10,1)
 | 
|---|
| 94 |  ;;""
 | 
|---|
| 95 |  ;;"       Current User:  "_($$GET1^DIQ(200,+$G(DUZ),.01))
 | 
|---|
| 96 |  ;;"       Current Date:  "_($$HTE^XLFDT($H))
 | 
|---|
| 97 |  ;;"Date range searched:  "_($$FMTE^XLFDT($P($$FMADD^XLFDT($$NOW^XLFDT,-365),"."),"D"))_" - "_($$FMTE^XLFDT(ENDDT,"D"))
 | 
|---|
| 98 |  ;;""
 | 
|---|
| 99 |  ;;"                                        # of"
 | 
|---|
| 100 |  ;;"Document Title                          Docs  Last DT Used  Author/Dictator"
 | 
|---|
| 101 |  ;;"--------------                          ----  ------------  ---------------"
 | 
|---|
| 102 |  ;;EOM
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 | ASKUSER(ANS,DIR,TIUQUIT) ; ask the user if they want to update titles now
 | 
|---|
| 105 |  I $G(ANS("EXIT"))="YES"!($G(ANS("INACT"))="NO") Q
 | 
|---|
| 106 |  N DIRUT,DTOUT,DUOUT,POP,X,Y
 | 
|---|
| 107 |  S DIR(0)="Y"
 | 
|---|
| 108 |  S DIR("A")=DIR,DIR("B")="NO"
 | 
|---|
| 109 |  S DIR("?",1)="Entering 'YES' will inactivate all titles unused in the past year;"
 | 
|---|
| 110 |  S DIR("?",2)="their STATUS will be changed to INACTIVE.",DIR("?",3)=""
 | 
|---|
| 111 |  S DIR("?")="Entering 'NO' will create the report without making any changes."
 | 
|---|
| 112 |  D ^DIR I $D(DUOUT)!($D(DTOUT)) S ANS("EXIT")="YES" Q
 | 
|---|
| 113 |  S ANS("INACT")=Y(0) Q:+$G(TIUQUIT)
 | 
|---|
| 114 |  I ANS("INACT")="YES" D
 | 
|---|
| 115 |  . W !!,"All active titles that have not been used in the previous 365 days"
 | 
|---|
| 116 |  . W !,"will be set to INACTIVE.",!
 | 
|---|
| 117 |  . W !,"You may select individual DOCUMENT TITLES that will NOT be set"
 | 
|---|
| 118 |  . W !,"to INACTIVE by this cleanup.",!
 | 
|---|
| 119 |  . D ASKUSER(.ANS,"Are you sure you want to change their status to INACTIVE",1)
 | 
|---|
| 120 |  . I ANS("INACT")="YES" D OMIT
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | GETLAST(TIUDA) ;
 | 
|---|
| 123 |  N IEN,GBL,ST,TDT,TEMP,TIUY
 | 
|---|
| 124 |  S GBL=$NA(^TIU(8925,"ALL","ANY",TIUDA))
 | 
|---|
| 125 |  S TIUY="0^N/A^N/A"_U_TIUDA_U_$P($G(^TIU(8925.1,TIUDA,0)),U,7)
 | 
|---|
| 126 |  S ST="" F  S ST=$O(@GBL@(ST)) Q:'ST  S TDT="",TDT=$O(@GBL@(+ST,TDT)),IEN="",IEN=$O(@GBL@(+ST,+TDT,IEN)) S TEMP(TDT)=IEN
 | 
|---|
| 127 |  S TDT="",TDT=$O(TEMP(TDT)) I +$G(TEMP(+TDT)) S IEN=+TEMP(TDT) D
 | 
|---|
| 128 |  . N TIUD0,TIUD12 S TIUD0=$G(^TIU(8925,IEN,0)),TIUD12=$G(^TIU(8925,IEN,12))
 | 
|---|
| 129 |  . I '+TIUD0,'$D(@TMP@("UNK",+IEN)) S @TMP@("UNK",+IEN)="",@CNT@("T#M0NODE")=@CNT@("T#M0NODE")+1,@CNT@("T#8925")=@CNT@("T#8925")+1
 | 
|---|
| 130 |  . S $P(TIUY,U,2)=$P(+TIUD12,"."),$P(TIUY,U,3)=$P(TIUD12,U,2)
 | 
|---|
| 131 |  Q TIUY
 | 
|---|
| 132 | OMIT ;
 | 
|---|
| 133 |  N TIUCONT,TIUQUIT
 | 
|---|
| 134 |  F  D  Q:$G(TIUQUIT)=1!($G(TIUCONT)=1)
 | 
|---|
| 135 |  . N DIC,DIR,POP,TIUCNT,X,Y
 | 
|---|
| 136 |  . W !!,"Enter the DOCUMENT TITLE(S) that will NOT be INACTIVATED",!
 | 
|---|
| 137 |  . W "during the cleanup process.",!!
 | 
|---|
| 138 |  . W "Enter RETURN or '^' to finish selections.",!
 | 
|---|
| 139 |  . S TIUCNT=0,DIC="^TIU(8925.1,",DIC("S")="I $P(^(0),U,4)=""DOC"""
 | 
|---|
| 140 |  . S DIC(0)="AEMQ",DIC("A")="Enter DOCUMENT TITLE: "
 | 
|---|
| 141 |  . F  D ^DIC Q:Y=-1  D  Q:$G(TIUQUIT)=1
 | 
|---|
| 142 |  . . S TIUCNT=TIUCNT+1,TIUOMIT(+Y)="" S:TIUCNT=1 DIC("A")="                 and  "
 | 
|---|
| 143 |  . Q:$G(TIUQUIT)=1
 | 
|---|
| 144 |  . I TIUCNT=0 W !!,"No selections made.",! S DIR("A")="Enter RETURN to continue or '^' to exit",DIR(0)="E" D ^DIR S TIUQUIT=1 Q
 | 
|---|
| 145 |  . W !!,$S(TIUCNT>1:"The following DOCUMENT TITLES will NOT be INACTIVATED: ",1:"The following DOCUMENT TITLE will NOT be INACTIVATED: "),!!
 | 
|---|
| 146 |  . S X="" F  S X=$O(TIUOMIT(X)) Q:X=""  W ?5,$$GET1^DIQ(8925.1,X_",",.01),!
 | 
|---|
| 147 |  . S DIR(0)="Y",DIR("A")="Is this correct",DIR("B")="YES"
 | 
|---|
| 148 |  . D ^DIR I +Y'=1 W !! K TIUOMIT S:Y=U TIUQUIT=1 Q
 | 
|---|
| 149 |  . S TIUCONT=1
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 | SPACER(TEXT,LENGTH,REV) ;
 | 
|---|
| 152 |  N SPACER
 | 
|---|
| 153 |  S SPACER=""
 | 
|---|
| 154 |  S $P(SPACER," ",(LENGTH-$L(TEXT)))=" "
 | 
|---|
| 155 |  S:'$D(REV) TEXT=TEXT_SPACER
 | 
|---|
| 156 |  S:$D(REV) TEXT=SPACER_TEXT
 | 
|---|
| 157 |  Q TEXT
 | 
|---|
| 158 | UPDATE ; updates status field of TIU Document Title to INACTIVE
 | 
|---|
| 159 |  N TIUDA,TIUMSG,TIUUPDT
 | 
|---|
| 160 |  S TIUDA=0 F  S TIUDA=$O(@TMP@("B",TIUDA)) Q:'+TIUDA  I '+@TMP@("B",TIUDA),'$D(TIUOMIT(TIUDA)) S TIUUPDT(8925.1,TIUDA_",",.07)=13 D FILE^DIE("","TIUUPDT","TIUMSG")
 | 
|---|
| 161 |  Q
 | 
|---|