- HLUOPT6 ;CIOFO-O/LJA - Fix zero node of file 772 or 773 ;02/04/2004 09:02
- ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
- ;
- QUIT
- ;
- ; This utility queues a background job to recalculate and reset
- ; pieces 3 (last IEN) and 4 (# entries) in the zero nodes for
- ; the HL Message Text file (#772) and the HL Message Administration
- ; file (#773).
- ;
- FIXZERO ; Reset piece 3 & 4 of zero node of file 772 &/or 773...
- N FILE,GBL,IOINHI,IOINORM,LIST,X,Y
- D HD
- D EX
- S X="IOINHI;IOINORM" D ENDR^%ZISS
- W !!,?3,IOINHI,"Note:",IOINORM," ",IOINHI
- W "This utility should be run when no purge processes are running.",IOINORM
- ;
- F Q:($Y+4)>IOSL W !
- QUIT:'$$BTE("Press RETURN to continue, or '^' to exit... ") ;->
- ;
- D HD
- ;
- D FILE(.LIST) QUIT:'$D(LIST) ;->
- W !!,"The process which fixes the zero node will now be queued to a background job."
- W !,"When complete, a verification Mailman message will be sent to you on this"
- W !,"system."
- S X=$$BTE("Press RETURN to queue job, or '^' to exit... ",1) I 'X D QUIT ;->
- . W " exiting... "
- D ZTSK
- S X=$$BTE("Press RETURN to exit... ",1)
- Q
- ;
- ZTSK ;
- N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSK
- S ZTIO="",ZTDTH=$H,ZTDESC="HL7 Zero Node Correction"
- S ZTRTN="QUEUE^HLUOPT6"
- S ZTSAVE("LIST(")=""
- D ^%ZTLOAD
- W !!,"Queued to task# ",ZTSK,"..."
- QUIT
- ;
- QUEUE ;
- N FILE,ZERO
- S FILE=0
- F S FILE=$O(LIST(FILE)) Q:FILE'>0 D
- . D CORR(+FILE,.ZERO)
- D MAIL
- Q
- ;
- CORR(FILE,ZERO) ; Correct zero node for file...
- ; NOTE: No purging actions should be occurring now...
- N CT,GBL,GBL0,IEN,LAST,NEW0
- ;
- S GBL=$S(FILE=772:"^HL(772)",1:"^HLMA")
- S GBL0=$S(FILE=772:"^HL(772,0)",1:"^HLMA(0)")
- S ZERO(1,FILE)=@GBL0
- ;
- S CT=0,IEN=0,LAST=""
- F S IEN=$O(@GBL@(IEN)) Q:'IEN D
- . QUIT:$P($G(@GBL@(+IEN,0)),U)']"" ;->
- . S CT=CT+1,LAST=IEN
- ;
- S (NEW0,ZERO(2,FILE))=$P(ZERO(1,FILE),U,1,2)_U_LAST_U_CT
- ;
- I FILE=772 D
- . L +^HL(772,0):30 ; Reset zero node even if fail...
- . S ^HL(772,0)=NEW0
- . L -^HL(772,0)
- ;
- I FILE=773 D
- . L +^HLMA(0):30
- . S ^HLMA(0)=NEW0
- . L -^HLMA(0)
- ;
- Q
- ;
- MAIL ; Send Mailman message.
- N NO,TEXT,XMDUZ,XMSUB,XMTEXT,XMZ
- S XMDUZ=.5,XMSUB="HL7 Zero Node Correction"
- S XMTEXT="^TMP("_$J_",""HLMAILMSG"","
- KILL ^TMP($J,"HLMAILMSG")
- S NO=0
- D MSGBODY
- S XMY(DUZ)=""
- D ^XMD
- KILL ^TMP($J,"HLMAILMSG")
- QUIT
- ;
- MSGBODY ; Add message bode...
- ; LIST,ZERO -- req
- N CT,FILE
- S CT=-1,FILE=0 F S FILE=$O(LIST(FILE)) Q:'FILE S CT=CT+1
- D MAILADD("The zero node for file"_$S(CT:"s 772 & 773 have",1:" "_$O(LIST(0))_" has")_" now been reset.")
- S FILE=0
- F S FILE=$O(LIST(FILE)) Q:'FILE D
- . D MAILADD("")
- . D MAILADD("File "_FILE_" zero node reset from... "_$G(ZERO(1,FILE)))
- . D MAILADD(" to... "_$G(ZERO(2,FILE)))
- Q
- ;
- MAILADD(T) S NO=$G(NO)+1,^TMP($J,"HLMAILMSG",NO)=T
- QUIT
- ;
- BTE(PMT,FF) ;
- N DIR,DIRUT,DTOUT,DUOUT,X,Y
- F X=1:1:$G(FF) W !
- S DIR(0)="EA",DIR("A")=$G(PMT)
- D ^DIR
- QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) "" ;->
- Q $S(+Y=1:1,1:"")
- ;
- FILE(LIST) ; Ask which files to correct..
- ; IOINHI,IOINORM -- req
- N DIR,DIRUT,DTOUT,DUOUT,TXT,X,Y
- KILL LIST
- W !!,"Select the file(s) now whose zero nodes should be corrected."
- W !!,?10,$$CJ^XLFSTR("Zero Node Current Value",60)
- W !,?10,$$REPEAT^XLFSTR("-",60)
- W !,?13,"^HL(772,0) = "
- D SH0($G(^HL(772,0)))
- W !,?13,"^HLMA(0) = "
- D SH0($G(^HLMA(0)))
- W !
- S DIR(0)="S^1:Correct file 772;2:Correct file 773;3:Correct both file 772 & 773"
- S DIR("A")="Select file(s) to correct"
- D ^DIR
- QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT))!(+Y'>0) ;->
- S:+Y=1 LIST(772)=""
- S:+Y=2 LIST(773)=""
- I +Y=3 S LIST(772)="",LIST(773)=""
- Q
- ;
- SH0(TXT) ; Highlight 3rd and 4th pieces...
- ; IOINHI,IOINORM -- req
- N PCE,VAL
- W $P(TXT,U,1,2),U,IOINHI,$P(TXT,U,3),IOINORM,U,IOINHI,$P(TXT,U,4),IOINORM
- Q
- ;
- HD W @IOF,$$CJ^XLFSTR("File 772/773 Header Correction",IOM)
- W !,$$REPEAT^XLFSTR("=",IOM)
- QUIT
- ;
- EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
- ;;This utility corrects the zero node of the HL Message Text file (#772) and the
- ;;HL Message Administration file (#773.) The following corrections will be made:
- ;;
- ;; - The last internal entry number will be found and set into piece 3 of the
- ;; file's zero node.
- ;;
- ;; - The number of entries in the file being corrected will be recalculated and
- ;; set into piece 4 of that file's zero node.
- ;;
- ;;You may specify one or both of these files to be corrected.
- ;;
- ;;These files are corrected by a queued background job. When the job completes,
- ;;you will be notified by email message.
- QUIT
- ;
- EOR ; HLUOPT6 - Fix zero node of file 772 or 773 ;5/12/03 09:02
- HLUOPT6 ;CIOFO-O/LJA - Fix zero node of file 772 or 773 ;02/04/2004 09:02
- +1 ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
- +2 ;
- +3 QUIT
- +4 ;
- +5 ; This utility queues a background job to recalculate and reset
- +6 ; pieces 3 (last IEN) and 4 (# entries) in the zero nodes for
- +7 ; the HL Message Text file (#772) and the HL Message Administration
- +8 ; file (#773).
- +9 ;
- FIXZERO ; Reset piece 3 & 4 of zero node of file 772 &/or 773...
- +1 NEW FILE,GBL,IOINHI,IOINORM,LIST,X,Y
- +2 DO HD
- +3 DO EX
- +4 SET X="IOINHI;IOINORM"
- DO ENDR^%ZISS
- +5 WRITE !!,?3,IOINHI,"Note:",IOINORM," ",IOINHI
- +6 WRITE "This utility should be run when no purge processes are running.",IOINORM
- +7 ;
- +8 FOR
- IF ($Y+4)>IOSL
- QUIT
- WRITE !
- +9 ;->
- IF '$$BTE("Press RETURN to continue, or '^' to exit... ")
- QUIT
- +10 ;
- +11 DO HD
- +12 ;
- +13 ;->
- DO FILE(.LIST)
- IF '$DATA(LIST)
- QUIT
- +14 WRITE !!,"The process which fixes the zero node will now be queued to a background job."
- +15 WRITE !,"When complete, a verification Mailman message will be sent to you on this"
- +16 WRITE !,"system."
- +17 ;->
- SET X=$$BTE("Press RETURN to queue job, or '^' to exit... ",1)
- IF 'X
- Begin DoDot:1
- +18 WRITE " exiting... "
- End DoDot:1
- QUIT
- +19 DO ZTSK
- +20 SET X=$$BTE("Press RETURN to exit... ",1)
- +21 QUIT
- +22 ;
- ZTSK ;
- +1 NEW ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSK
- +2 SET ZTIO=""
- SET ZTDTH=$HOROLOG
- SET ZTDESC="HL7 Zero Node Correction"
- +3 SET ZTRTN="QUEUE^HLUOPT6"
- +4 SET ZTSAVE("LIST(")=""
- +5 DO ^%ZTLOAD
- +6 WRITE !!,"Queued to task# ",ZTSK,"..."
- +7 QUIT
- +8 ;
- QUEUE ;
- +1 NEW FILE,ZERO
- +2 SET FILE=0
- +3 FOR
- SET FILE=$ORDER(LIST(FILE))
- IF FILE'>0
- QUIT
- Begin DoDot:1
- +4 DO CORR(+FILE,.ZERO)
- End DoDot:1
- +5 DO MAIL
- +6 QUIT
- +7 ;
- CORR(FILE,ZERO) ; Correct zero node for file...
- +1 ; NOTE: No purging actions should be occurring now...
- +2 NEW CT,GBL,GBL0,IEN,LAST,NEW0
- +3 ;
- +4 SET GBL=$SELECT(FILE=772:"^HL(772)",1:"^HLMA")
- +5 SET GBL0=$SELECT(FILE=772:"^HL(772,0)",1:"^HLMA(0)")
- +6 SET ZERO(1,FILE)=@GBL0
- +7 ;
- +8 SET CT=0
- SET IEN=0
- SET LAST=""
- +9 FOR
- SET IEN=$ORDER(@GBL@(IEN))
- IF 'IEN
- QUIT
- Begin DoDot:1
- +10 ;->
- IF $PIECE($GET(@GBL@(+IEN,0)),U)']""
- QUIT
- +11 SET CT=CT+1
- SET LAST=IEN
- End DoDot:1
- +12 ;
- +13 SET (NEW0,ZERO(2,FILE))=$PIECE(ZERO(1,FILE),U,1,2)_U_LAST_U_CT
- +14 ;
- +15 IF FILE=772
- Begin DoDot:1
- +16 ; Reset zero node even if fail...
- LOCK +^HL(772,0):30
- +17 SET ^HL(772,0)=NEW0
- +18 LOCK -^HL(772,0)
- End DoDot:1
- +19 ;
- +20 IF FILE=773
- Begin DoDot:1
- +21 LOCK +^HLMA(0):30
- +22 SET ^HLMA(0)=NEW0
- +23 LOCK -^HLMA(0)
- End DoDot:1
- +24 ;
- +25 QUIT
- +26 ;
- MAIL ; Send Mailman message.
- +1 NEW NO,TEXT,XMDUZ,XMSUB,XMTEXT,XMZ
- +2 SET XMDUZ=.5
- SET XMSUB="HL7 Zero Node Correction"
- +3 SET XMTEXT="^TMP("_$JOB_",""HLMAILMSG"","
- +4 KILL ^TMP($JOB,"HLMAILMSG")
- +5 SET NO=0
- +6 DO MSGBODY
- +7 SET XMY(DUZ)=""
- +8 DO ^XMD
- +9 KILL ^TMP($JOB,"HLMAILMSG")
- +10 QUIT
- +11 ;
- MSGBODY ; Add message bode...
- +1 ; LIST,ZERO -- req
- +2 NEW CT,FILE
- +3 SET CT=-1
- SET FILE=0
- FOR
- SET FILE=$ORDER(LIST(FILE))
- IF 'FILE
- QUIT
- SET CT=CT+1
- +4 DO MAILADD("The zero node for file"_$SELECT(CT:"s 772 & 773 have",1:" "_$ORDER(LIST(0))_" has")_" now been reset.")
- +5 SET FILE=0
- +6 FOR
- SET FILE=$ORDER(LIST(FILE))
- IF 'FILE
- QUIT
- Begin DoDot:1
- +7 DO MAILADD("")
- +8 DO MAILADD("File "_FILE_" zero node reset from... "_$GET(ZERO(1,FILE)))
- +9 DO MAILADD(" to... "_$GET(ZERO(2,FILE)))
- End DoDot:1
- +10 QUIT
- +11 ;
- MAILADD(T) SET NO=$GET(NO)+1
- SET ^TMP($JOB,"HLMAILMSG",NO)=T
- +1 QUIT
- +2 ;
- BTE(PMT,FF) ;
- +1 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
- +2 FOR X=1:1:$GET(FF)
- WRITE !
- +3 SET DIR(0)="EA"
- SET DIR("A")=$GET(PMT)
- +4 DO ^DIR
- +5 ;->
- IF $DATA(DIRUT)!($DATA(DTOUT))!($DATA(DUOUT))
- QUIT ""
- +6 QUIT $SELECT(+Y=1:1,1:"")
- +7 ;
- FILE(LIST) ; Ask which files to correct..
- +1 ; IOINHI,IOINORM -- req
- +2 NEW DIR,DIRUT,DTOUT,DUOUT,TXT,X,Y
- +3 KILL LIST
- +4 WRITE !!,"Select the file(s) now whose zero nodes should be corrected."
- +5 WRITE !!,?10,$$CJ^XLFSTR("Zero Node Current Value",60)
- +6 WRITE !,?10,$$REPEAT^XLFSTR("-",60)
- +7 WRITE !,?13,"^HL(772,0) = "
- +8 DO SH0($GET(^HL(772,0)))
- +9 WRITE !,?13,"^HLMA(0) = "
- +10 DO SH0($GET(^HLMA(0)))
- +11 WRITE !
- +12 SET DIR(0)="S^1:Correct file 772;2:Correct file 773;3:Correct both file 772 & 773"
- +13 SET DIR("A")="Select file(s) to correct"
- +14 DO ^DIR
- +15 ;->
- IF $DATA(DIRUT)!($DATA(DTOUT))!($DATA(DUOUT))!(+Y'>0)
- QUIT
- +16 IF +Y=1
- SET LIST(772)=""
- +17 IF +Y=2
- SET LIST(773)=""
- +18 IF +Y=3
- SET LIST(772)=""
- SET LIST(773)=""
- +19 QUIT
- +20 ;
- SH0(TXT) ; Highlight 3rd and 4th pieces...
- +1 ; IOINHI,IOINORM -- req
- +2 NEW PCE,VAL
- +3 WRITE $PIECE(TXT,U,1,2),U,IOINHI,$PIECE(TXT,U,3),IOINORM,U,IOINHI,$PIECE(TXT,U,4),IOINORM
- +4 QUIT
- +5 ;
- HD WRITE @IOF,$$CJ^XLFSTR("File 772/773 Header Correction",IOM)
- +1 WRITE !,$$REPEAT^XLFSTR("=",IOM)
- +2 QUIT
- +3 ;
- EX NEW I,T
- FOR I=1:1
- SET T=$TEXT(EX+I)
- IF T'[";;"
- QUIT
- WRITE !,$PIECE(T,";;",2,99)
- +1 ;;This utility corrects the zero node of the HL Message Text file (#772) and the
- +2 ;;HL Message Administration file (#773.) The following corrections will be made:
- +3 ;;
- +4 ;; - The last internal entry number will be found and set into piece 3 of the
- +5 ;; file's zero node.
- +6 ;;
- +7 ;; - The number of entries in the file being corrected will be recalculated and
- +8 ;; set into piece 4 of that file's zero node.
- +9 ;;
- +10 ;;You may specify one or both of these files to be corrected.
- +11 ;;
- +12 ;;These files are corrected by a queued background job. When the job completes,
- +13 ;;you will be notified by email message.
- +14 QUIT
- +15 ;
- EOR ; HLUOPT6 - Fix zero node of file 772 or 773 ;5/12/03 09:02