| 1 | TIUPS139 ; SLC/AJB - Cleanup for TIU*1*138 ; August 2, 2002
 | 
|---|
| 2 |  ;;1.0;TEXT INTEGRATION UTILITIES;**139**;Jun 20, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 | CLEAN ; control segment
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  N ANS,HDR,RPT,RECS,TMP
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  W @IOF
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  D MKWSDEV Q:$G(ANS("EXIT"))="YES"
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  D ASKUSER(.ANS) Q:$G(ANS("EXIT"))="YES"
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  I ANS("PRINT")="YES" D  Q
 | 
|---|
| 16 |  . K POP N POP,ZTDESC,ZTRTN
 | 
|---|
| 17 |  . S ZTDESC="TIUPS139 Cleanup Routine",ZTRTN="REPORT^TIUPS139",ZTSAVE("*")=""
 | 
|---|
| 18 |  . D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE)
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  W !,"Searching..."
 | 
|---|
| 21 |  D REPORT
 | 
|---|
| 22 |  W !!
 | 
|---|
| 23 |  D OUTPUT
 | 
|---|
| 24 | EXIT ;
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 | REPORT ;
 | 
|---|
| 27 |  ; 
 | 
|---|
| 28 |  N DA,DR,DIE,ELAPSED,ENTRYDT,POP,SPACER,START,STOP,TIUDA,TIUDT
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  S (RECS("CHK"),RECS("FOUND"),RECS("SEARCHED"),RECS("TOTAL"))=0
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  S START=$$NOW^XLFDT,TIUDA="",TIUDT=ANS("BEGDT")
 | 
|---|
| 33 |  F  S TIUDT=$O(^TIU(8925,"F",TIUDT)) Q:TIUDT=""!(TIUDT>ANS("ENDDT"))  F  S TIUDA=$O(^TIU(8925,"F",TIUDT,TIUDA)) Q:TIUDA=""  S RECS("SEARCHED")=RECS("SEARCHED")+1 I $P($G(^TIU(8925,TIUDA,0)),U,5)=6,$P($G(^TIU(8925,TIUDA,12)),U,8)="" D
 | 
|---|
| 34 |  . S ENTRYDT=TIUDT
 | 
|---|
| 35 |  . I +$$REQCOSIG($P($G(^TIU(8925,TIUDA,0)),U),TIUDA,$P($G(^TIU(8925,TIUDA,12)),U,2))=1 D  Q
 | 
|---|
| 36 |  .. S RECS("CHK")=RECS("CHK")+1 S:RECS("CHK")<10 RECS("CHK")="0"_RECS("CHK") S:RECS("CHK")<100 RECS("CHK")="0"_RECS("CHK")
 | 
|---|
| 37 |  .. S TMP(RECS("CHK")_"C",TIUDA)="",RECS("CHK")=+RECS("CHK")
 | 
|---|
| 38 |  . S RECS("FOUND")=RECS("FOUND")+1,TMP(RECS("FOUND"),TIUDA)=""
 | 
|---|
| 39 |  . S DA=TIUDA,DIE="^TIU(8925,",DR=".05////7;1506////0"
 | 
|---|
| 40 |  . I ANS("UPDATE")="YES" D ^DIE
 | 
|---|
| 41 |  S RECS("TOTAL")=RECS("FOUND")+RECS("CHK")
 | 
|---|
| 42 |  S STOP=$$NOW^XLFDT,ELAPSED=$FN($$FMDIFF^XLFDT(START,STOP,2)/60,"-")
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  S HDR(1)="Elapsed Time:   "_(ELAPSED\1)_" minute(s) "_($FN((ELAPSED#1)*60,"-",0))_" second(s)"
 | 
|---|
| 45 |  S HDR(2)="# of Records:   "_"Searched    "_RECS("SEARCHED")
 | 
|---|
| 46 |  S SPACER="",$P(SPACER," ",(8-$L(RECS("TOTAL"))))=" "
 | 
|---|
| 47 |  S HDR(3)="                Found       "_RECS("TOTAL")_SPACER_"(STATUS=UNCOSIGNED, EXPECTED COSIGNER="""")"
 | 
|---|
| 48 |  S SPACER="",$P(SPACER," ",(8-$L(RECS("FOUND"))))=" "
 | 
|---|
| 49 |  S:ANS("UPDATE")="YES" HDR(4)="                Corrected   "_RECS("FOUND")_SPACER_"(COSIGNATURE REQUIRED=NO)"
 | 
|---|
| 50 |  S:ANS("UPDATE")="NO" HDR(4)="                Unchanged   "_RECS("FOUND")_SPACER_"(COSIGNATURE REQUIRED=NO)"
 | 
|---|
| 51 |  S SPACER="",$P(SPACER," ",(8-$L(RECS("CHK"))))=" "
 | 
|---|
| 52 |  S:RECS("CHK")>0 HDR(5)="                Unchanged*  "_RECS("CHK")_SPACER_"(COSIGNATURE REQUIRED=YES)"
 | 
|---|
| 53 |  S:RECS("CHK")>0 HDR(6)="",HDR(7)="                * co-signer requirement should be verified"
 | 
|---|
| 54 |  S HDR(8)=""
 | 
|---|
| 55 |  S HDR(9)="                Host File Path:  "_ANS("PATH")_"TIUPS139.TXT"
 | 
|---|
| 56 |  S HDR(10)=""
 | 
|---|
| 57 |  S RPT(1)="Current User:         "_($$GET1^DIQ(200,+DUZ,.01))
 | 
|---|
| 58 |  S RPT(2)="Current Date:         "_($$HTE^XLFDT($H))
 | 
|---|
| 59 |  S RPT(3)="Date range searched:  "_($$FMTE^XLFDT(ANS("BEGDT"),"D"))_" - "_($$FMTE^XLFDT(ANS("ENDDT"),"D"))
 | 
|---|
| 60 |  S RPT(4)=""
 | 
|---|
| 61 |  S RPT(5)="Count       Entry Date/Time"
 | 
|---|
| 62 |  S RPT(6)="Doc #       Title                                 Author/Dictator"
 | 
|---|
| 63 |  S RPT(7)="-----       -----                                 ---------------"
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  I RECS("TOTAL")=0 S RPT(8)="<NO RECORDS FOUND>",RPT(9)=""
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  N AUTHOR,CNT,NUM,TITLE
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  S CNT=7,RECS=0,(NUM,TIUDA)=""
 | 
|---|
| 70 |  F  S NUM=$O(TMP(NUM)) Q:NUM=""  F  S TIUDA=$O(TMP(NUM,TIUDA)) Q:TIUDA=""  D
 | 
|---|
| 71 |  . I RECS("FOUND")=0,NUM="001C" S CNT=CNT+1,RPT(CNT)="<NO RECORDS FOUND>",CNT=CNT+1,RPT(CNT)=""
 | 
|---|
| 72 |  . I NUM="001C" S CNT=CNT+1,RPT(CNT)="** The following records are STATUS=UNCOSIGNED  COSIGNATURE REQUIRED=YES **",CNT=CNT+1,RPT(CNT)=""
 | 
|---|
| 73 |  . S CNT=CNT+1,RECS=RECS+1
 | 
|---|
| 74 |  . S SPACER="",$P(SPACER," ",(11-$L(RECS)))=" "
 | 
|---|
| 75 |  . S RPT(CNT)="#"_RECS_SPACER_$$FMTE^XLFDT($P(^TIU(8925,TIUDA,12),U))
 | 
|---|
| 76 |  . S CNT=CNT+1,TITLE=$E($$GET1^DIQ(8925,TIUDA_",",.01),1,36),AUTHOR=$E($$GET1^DIQ(8925,TIUDA_",",1202),1,28)
 | 
|---|
| 77 |  . S SPACER="",$P(SPACER," ",(11-$L(TIUDA)))=" "
 | 
|---|
| 78 |  . S:NUM["C" RPT(CNT)=TIUDA_"*"_SPACER_TITLE
 | 
|---|
| 79 |  . S:NUM'["C" RPT(CNT)=TIUDA_" "_SPACER_TITLE
 | 
|---|
| 80 |  . S SPACER="",$P(SPACER," ",(50-$L(RPT(CNT))))=" "
 | 
|---|
| 81 |  . S RPT(CNT)=RPT(CNT)_SPACER_AUTHOR,CNT=CNT+1,RPT(CNT)=""
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  D:ANS("PRINT")="YES" OUTPUT,^%ZISC
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  D OPEN^%ZISH("TIUPS139",ANS("PATH"),"TIUPS139.TXT","A") Q:POP>0
 | 
|---|
| 86 |  U IO D OUTPUT
 | 
|---|
| 87 |  D CLOSE^%ZISH("TIUPS139")
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  S XQA(DUZ)="",XQAMSG="TIUPS139 has finished."
 | 
|---|
| 90 |  D SETUP^XQALERT
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | OUTPUT ;
 | 
|---|
| 93 |  N NUM
 | 
|---|
| 94 |  S NUM=""
 | 
|---|
| 95 |  F  S NUM=$O(HDR(NUM)) Q:NUM=""  W HDR(NUM),!
 | 
|---|
| 96 |  F  S NUM=$O(RPT(NUM)) Q:NUM=""  W RPT(NUM),!
 | 
|---|
| 97 |  S $P(NUM,"-",80)="-" W NUM
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | ASKUSER(ANS) ;
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  N DIR,POP,X,Y
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  ; delete the host file and quit?
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  N DELHFS
 | 
|---|
| 107 |  S DIR(0)="Y"
 | 
|---|
| 108 |  S DIR("A")="Delete the host file TIUPS139.TXT and QUIT"
 | 
|---|
| 109 |  S DIR("B")="NO"
 | 
|---|
| 110 |  S DIR("?")="Entering 'NO' will not delete the host file TIUPS139.TXT and continue."
 | 
|---|
| 111 |  S DIR("?",1)="Entering 'YES' will delete the host file TIUPS139.TXT and QUIT."
 | 
|---|
| 112 |  D ^DIR
 | 
|---|
| 113 |  I $D(DUOUT)!($D(DTOUT)) S ANS("EXIT")="YES" Q
 | 
|---|
| 114 |  S ANS("DELHFS")=Y(0) W !
 | 
|---|
| 115 |  I ANS("DELHFS")="YES" D  Q
 | 
|---|
| 116 |  . S DELHFS("TIUPS139.TXT")=""
 | 
|---|
| 117 |  . S Y=$$DEL^%ZISH(ANS("PATH"),$NA(DELHFS))
 | 
|---|
| 118 |  . W !,"TIUPS139.TXT has been deleted.",!
 | 
|---|
| 119 |  . S ANS("EXIT")="YES" ;
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ; date range?
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  N %DT,CNT
 | 
|---|
| 124 |  S %DT="AE"
 | 
|---|
| 125 |  F CNT=1:1:2 D
 | 
|---|
| 126 |  . S %DT("A")=$S(CNT=1:"START WITH REFERENCE DATE:  ",CNT=2:"     GO TO REFERENCE DATE:  ")
 | 
|---|
| 127 |  . S %DT("B")=$S(CNT=1:"Jan 01, 2001",CNT=2:$P($$HTE^XLFDT($H),"@"))
 | 
|---|
| 128 |  . D ^%DT
 | 
|---|
| 129 |  . I Y=-1 S CNT=2,ANS("EXIT")="YES" Q
 | 
|---|
| 130 |  . I CNT=1 S ANS("BEGDT")=Y
 | 
|---|
| 131 |  . I CNT=2 S ANS("ENDDT")=Y_".24"
 | 
|---|
| 132 |  W !
 | 
|---|
| 133 |  Q:$G(ANS("EXIT"))="YES"
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  ; update the documents?
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  S DIR(0)="Y"
 | 
|---|
| 138 |  S DIR("A")="Update the records at this time"
 | 
|---|
| 139 |  S DIR("B")="NO"
 | 
|---|
| 140 |  S DIR("?",1)="Entering 'YES' will find and update the records."
 | 
|---|
| 141 |  S DIR("?",2)="STATUS will be changed from 'UNCOSIGNED' to 'COMPLETED' and"
 | 
|---|
| 142 |  S DIR("?",3)="COSIGNATURE NEEDED will be changed to 'NO'."
 | 
|---|
| 143 |  S DIR("?",4)=""
 | 
|---|
| 144 |  S DIR("?")="Entering 'NO' will find and report the records without making any changes."
 | 
|---|
| 145 |  D ^DIR
 | 
|---|
| 146 |  I $D(DUOUT)!($D(DTOUT)) S ANS("EXIT")="YES" Q
 | 
|---|
| 147 |  S ANS("UPDATE")=Y(0) W !
 | 
|---|
| 148 |  ;
 | 
|---|
| 149 |  ; print the results?
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  S DIR(0)="Y"
 | 
|---|
| 152 |  S DIR("A")="Would you like to print or queue the search"
 | 
|---|
| 153 |  S DIR("B")="YES"
 | 
|---|
| 154 |  S DIR("?",1)="Entering 'YES' will send the search results to the selected device."
 | 
|---|
| 155 |  S DIR("?",2)="It will also allow the search to be queued and run at a later time if desired."
 | 
|---|
| 156 |  S DIR("?",3)=""
 | 
|---|
| 157 |  S DIR("?",4)="Entering 'NO' will not allow printing or queuing of the search results."
 | 
|---|
| 158 |  S DIR("?")="The search results will be displayed on the current device."
 | 
|---|
| 159 |  D ^DIR
 | 
|---|
| 160 |  I $D(DUOUT)!($D(DTOUT)) S ANS("EXIT")="YES" Q
 | 
|---|
| 161 |  S ANS("PRINT")=Y(0) W !
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  Q
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 | REQCOSIG(TIUTYP,TIUDA,USER) ; Evaluate whether user requires cosignature
 | 
|---|
| 166 |  N TIUI,TIUY,TIUDPRM S USER=$S(+$G(USER):+$G(USER),1:+$G(DUZ))
 | 
|---|
| 167 |  D DOCPRM^TIULC1(TIUTYP,.TIUDPRM,+$G(TIUDA))
 | 
|---|
| 168 |  I $G(TIUDPRM(5))="" G REQCOSX
 | 
|---|
| 169 |  F TIUI=1:1:$L(TIUDPRM(5),U) D  Q:+TIUY>0
 | 
|---|
| 170 |  . S TIUY=+$$ISA(+USER,+$P(TIUDPRM(5),U,TIUI))
 | 
|---|
| 171 | REQCOSX Q +$G(TIUY)
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | ISA(USER,CLASS,ERR) ; Boolean - Is USER a Member of CLASS?
 | 
|---|
| 174 |  N USRY,USRI
 | 
|---|
| 175 |  I $S(CLASS="USER":1,CLASS=+$O(^USR(8930,"B","USER",0)):1,1:0) S USRY=1 G ISAX
 | 
|---|
| 176 |  I '+USER S USER=+$O(^VA(200,"B",USER,0))
 | 
|---|
| 177 |  I +USER'>0 S ERR="INVALID USER" Q 0
 | 
|---|
| 178 |  I '+CLASS S CLASS=+$O(^USR(8930,"B",CLASS,0))
 | 
|---|
| 179 |  I +CLASS'>0 S ERR="INVALID USER CLASS" Q 0
 | 
|---|
| 180 |  ; If USER is a member of CLASS return true
 | 
|---|
| 181 |  S USRY=0
 | 
|---|
| 182 |  I +$D(^USR(8930.3,"AUC",USER,CLASS)) D
 | 
|---|
| 183 |  . N USRMDA
 | 
|---|
| 184 |  . S USRMDA=0
 | 
|---|
| 185 |  . F  S USRMDA=+$O(^USR(8930.3,"AUC",USER,CLASS,USRMDA)) Q:((+USRMDA'>0)!(USRY))  D
 | 
|---|
| 186 |  .. S USRY=+$$CURRENT(USRMDA)
 | 
|---|
| 187 |  I USRY Q USRY
 | 
|---|
| 188 |  ; Otherwise, check to see if user is a member of any subclass of CLASS
 | 
|---|
| 189 |  S USRI=0
 | 
|---|
| 190 |  F  S USRI=$O(^USR(8930,+CLASS,1,USRI)) Q:+USRI'>0!+$G(USRY)  D
 | 
|---|
| 191 |  . N USRSUB S USRSUB=+$G(^USR(8930,+CLASS,1,USRI,0)) Q:+USRSUB'>0
 | 
|---|
| 192 |  . S USRY=$$ISA(USER,USRSUB) ; Recurs to find members of subclass
 | 
|---|
| 193 | ISAX Q +$G(USRY)
 | 
|---|
| 194 |  ;
 | 
|---|
| 195 | CURRENT(MEMBER) ; Boolean - Is Membership current?
 | 
|---|
| 196 |  N USRIN,USROUT,USRY
 | 
|---|
| 197 |  S USRIN=+$P($G(^USR(8930.3,+MEMBER,0)),U,3)
 | 
|---|
| 198 |  S USROUT=+$P($G(^USR(8930.3,+MEMBER,0)),U,4)
 | 
|---|
| 199 |  I USRIN'>ENTRYDT,$S(USROUT>0&(USROUT'<ENTRYDT):1,USROUT=0:1,1:0) S USRY=1
 | 
|---|
| 200 |  E  S USRY=0
 | 
|---|
| 201 |  Q USRY
 | 
|---|
| 202 |  ;
 | 
|---|
| 203 | MKWSDEV ;
 | 
|---|
| 204 |  ;
 | 
|---|
| 205 |  I +$$FIND1^DIC(3.5,"","MX","TIUPS139 WORKSTATION")>0 S ANS("PATH")=$$PWD^%ZISH Q
 | 
|---|
| 206 |  ;
 | 
|---|
| 207 |  N FDA,FDAIEN,MSG
 | 
|---|
| 208 |  S FDA(3.5,"+1,",.01)="TIUPS139 WORKSTATION"
 | 
|---|
| 209 |  S FDA(3.5,"+1,",.02)="TIUPS139 Workstation HFS Device" ; location
 | 
|---|
| 210 |  S FDA(3.5,"+1,",1)="TIUPS139.DAT" ;$I
 | 
|---|
| 211 |  S FDA(3.5,"+1,",1.95)=0 ; sign-on/system device
 | 
|---|
| 212 |  S FDA(3.5,"+1,",2)="HFS" ; type
 | 
|---|
| 213 |  S FDA(3.5,"+1,",3)=$$FIND1^DIC(3.2,"","MX","P-OTHER") ; subtype
 | 
|---|
| 214 |  S FDA(3.5,"+1,",4)=0 ; ask device
 | 
|---|
| 215 |  S FDA(3.5,"+1,",5)=0 ; ask parameters
 | 
|---|
| 216 |  S FDA(3.5,"+1,",5.1)=0 ; ask host file
 | 
|---|
| 217 |  S FDA(3.5,"+1,",5.2)=0 ; ask hfs i/o operation
 | 
|---|
| 218 |  D UPDATE^DIE("","FDA","FDAIEN","MSG")
 | 
|---|
| 219 |  I $D(MSG) D  Q
 | 
|---|
| 220 |  . W !,"Workstation device creation failed."
 | 
|---|
| 221 |  . S ANS("EXIT")="YES"
 | 
|---|
| 222 |  S ANS("PATH")=$$PWD^%ZISH
 | 
|---|
| 223 |  Q
 | 
|---|