Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BCHEXRE

BCHEXRE.m

Go to the documentation of this file.
  1. BCHEXRE ; IHS/CMI/LAB - REDO A PREVIOUS CHR EXPORT ;
  1. ;;2.0;IHS RPMS CHR SYSTEM;;OCT 23, 2012;Build 27
  1. ;IHS/CMI/LAB - $J to tmp
  1. START ;
  1. S BCHO("RUN")="REDO" ; Let ^BCHEXDI know this is a 'REDO'
  1. D ^BCHEXDI ;
  1. I BCH("QFLG") D EOJ W !!,"Bye",!! Q
  1. D INIT ; Get Log entry to redo
  1. I BCH("QFLG") D EOJ W !!,"Bye",!! Q
  1. D QUEUE^BCHEXDI
  1. I BCH("QFLG") D EOJ W !!,"Bye",!! Q
  1. I $D(BCHO("QUEUE")) D EOJ W !!,"Okay your request is queued!",!! Q
  1. ;
  1. EN ;EP FROM TASKMAN
  1. S BCHCNT=$S('$D(ZTQUEUED):"X BCHCNT1 X BCHCNT2",1:"S BCHCNTR=BCHCNTR+1"),BCHCNT1="F BCHCNTL=1:1:$L(BCHCNTR)+1 W @BCHBS",BCHCNT2="S BCHCNTR=BCHCNTR+1 W BCHCNTR,"")"""
  1. D NOW^%DTC S BCH("RUN START")=%,BCH("MAIN TX DATE")=$P(%,".") K %,%H,%I
  1. I BCH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. S BCH("BT")=$HOROLOG
  1. D PROCESS ; Generate transactions
  1. I BCH("QFLG") W:'$D(ZTQUEUED) !!,"Abnormal termination! QFLG=",BCH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D ^BCHEXRLG ; Update Log entry
  1. I BCH("QFLG") W:'$D(ZTQUEUED) !!,"Log error! ",BCH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D:'$D(ZTQUEUED) RUNTIME^BCHEXEOJ
  1. I BCH("QFLG") W:'$D(ZTQUEUED) !!,"Tape creation error! QFLG=",BCH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D:'$D(ZTQUEUED) CHKLOG ; See if Log needs cleaning
  1. D RESETV ; Reset RECORDs processed in Log
  1. D TAPE ; Write transactions to tape
  1. I '$D(ZTQUEUED) K DIR W !! S DIR(0)="E",DIR("A")="DONE -- press any key to continue" K DA D ^DIR K DIR
  1. D EOJ
  1. K BCH
  1. Q
  1. ;
  1. PROCESS ;
  1. K ^BCHXLOG(BCH("RUN LOG"),51)
  1. S (BCH("U"),BCH("D"),BCH("COUNT"),BCH("ERROR COUNT"))=0
  1. ;build header record
  1. ;S BCH("COUNT")=BCH("COUNT")+1,^BCHRDATA(BCH("COUNT"))="CR^"
  1. W:'$D(ZTQUEUED) !,"Generating transactions. Counting visits. (1)" S BCHCNTR=0
  1. S BCHR=0 F S BCHR=$O(^BCHXLOG(BCH("RUN LOG"),21,BCHR)) Q:BCHR'=+BCHR S BCHRTYPE=$P(^BCHXLOG(BCH("RUN LOG"),21,BCHR,0),U,3) D PROCESS2 Q:BCH("QFLG")
  1. ;D DELETES
  1. Q
  1. PROCESS2 ;
  1. K BCHE,BCHCPOV,BCH("POVS")
  1. X BCHCNT
  1. S ^TMP("BCHREDO",$J,"MAIN TX",BCHR)="",BCHV("TX GENERATED")=0
  1. Q:'$D(^BCHR(BCHR))
  1. I '$D(^BCHRPROB("AD",BCHR)) S BCHE="E021" D CNTBUILD Q
  1. S BCHREC=^BCHR(BCHR,0)
  1. K BCHE,BCHTX S (BCHCPOV,BCHPOVD)=0 F S BCHPOVD=$O(^BCHRPROB("AD",BCHR,BCHPOVD)) Q:BCHPOVD'=+BCHPOVD D
  1. .I $P(^BCHRPROB(BCHPOVD,0),U,4)="" S BCHE="E021" Q
  1. .I $P(^BCHRPROB(BCHPOVD,0),U,6)="" S BCHE="E021" Q
  1. .;D RECORD^BCHEXD2
  1. .;D CNTBUILD
  1. .Q
  1. I $D(BCHE) D CNTBUILD Q
  1. D RECORD^BCHEXD2
  1. D CNTBUILD
  1. Q
  1. CNTBUILD ;EP - count and build tx
  1. I BCHE]"" S BCH("ERROR COUNT")=BCH("ERROR COUNT")+1 D ^BCHEXERR Q
  1. S BCH("COUNT")=BCH("COUNT")+1
  1. S BCH(BCHRTYPE)=BCH(BCHRTYPE)+1
  1. S BCHV("TX GENERATED")=1,^TMP("BCH"_$S(BCHO("RUN")="NEW":"DR",BCHO("RUN")="REDO":"REDO",1:"DR"),$J,"MAIN TX",BCHR)=BCH("MAIN TX DATE")
  1. S ^BCHRDATA(BCH("COUNT"))=BCHTX
  1. S X=0 F S X=$O(BCH("POVS",X)) Q:X'=+X S BCH("COUNT")=BCH("COUNT")+1,^BCHRDATA(BCH("COUNT"))=BCH("POVS",X) ;IHS/CMI/LAB - new format
  1. SETUTIL S ^TMP("BCHREDO",$J,BCHR)=BCHR_U_BCHV("TX GENERATED")_U_BCHRTYPE
  1. Q
  1. ;
  1. TAPE ; COPY TRANSACTIONS TO TAPE
  1. D TAPE^BCHEXTAP
  1. Q
  1. DELETES ;
  1. D DELETES^BCHEXRE1
  1. Q
  1. CHKLOG ; CHECK LOG FILE
  1. S BCH("X")=0 F BCH("I")=BCH("RUN LOG"):-1:1 Q:'$D(^BCHXLOG(BCH("I"))) I $O(^BCHXLOG(BCH("I"),21,0)) S BCH("X")=BCH("X")+1
  1. I BCH("X")>3 W !!,"-->There are more than three generations of RECORDs stored in the LOG file.",!,"-->Time to do a purge."
  1. Q
  1. ;
  1. RESETV ; RESET RECORD DATA IN LOG
  1. W:'$D(ZTQUEUED) !,"Resetting RECORD specific data in Log file. (1)" S BCHCNTR=0
  1. S BCH("X")="" F S BCH("X")=$O(^TMP("BCHREDO",$J,BCH("X"))) Q:BCH("X")'=+BCH("X") S BCH("Y")=^(BCH("X")),^BCHXLOG(BCH("RUN LOG"),21,BCH("X"),0)=BCH("Y") X BCHCNT
  1. W:'$D(ZTQUEUED) !,"Resetting RECORD TX Flags. (1)" S BCHCNTR=0
  1. S BCH("X")="" F S BCH("X")=$O(^TMP("BCHREDO",$J,"MAIN TX",BCH("X"))) Q:BCH("X")'=+BCH("X") D
  1. .S DIE="^BCHR(",DA=BCH("X"),DR=".24///"_$S(^TMP("BCHREDO",$J,"MAIN TX",BCH("X"))]"":^TMP("BCHREDO",$J,"MAIN TX",BCH("X")),1:"@") D CALLDIE^BCHUTIL K DA,DR X BCHCNT
  1. .Q
  1. K ^TMP("BCHREDO")
  1. Q
  1. ;
  1. INIT ;
  1. D INIT^BCHEXRE1
  1. Q
  1. ABORT ; ABNORMAL TERMINATION
  1. I $D(BCH("RUN LOG")) S BCH("QFLG1")=$O(^BCHERR("B",BCH("QFLG"),"")),DA=BCH("RUN LOG"),DIE="^BCHXLOG(",DR=".15///F;.16////"_BCH("QFLG1")
  1. I $D(ZTQUEUED) D ERRBULL^BCHEXDI3,ABORT,EOJ Q
  1. W !!,"Abnormal termination!! QFLG=",BCH("QFLG")
  1. S DIR(0)="E",DIR("A")="Press any key to continue" K DA D ^DIR K DIR
  1. Q
  1. ;
  1. EOJ ;
  1. D ^BCHEXEOJ
  1. Q