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

AMHEXRE.m

Go to the documentation of this file.
  1. AMHEXRE ; IHS/CMI/LAB - REDO A PREVIOUS MHSS EXPORT ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;;MAY 14, 2010
  1. START ;
  1. S AMHO("RUN")="REDO" ; Let ^AMHEXDI know this is a 'REDO'
  1. D ^AMHEXDI ;
  1. I AMH("QFLG") D EOJ W !!,"Bye",!! Q
  1. D INIT ; Get Log entry to redo
  1. I AMH("QFLG") D EOJ W !!,"Bye",!! Q
  1. D QUEUE^AMHEXDI
  1. I AMH("QFLG") D EOJ W !!,"Bye",!! Q
  1. I $D(AMHO("QUEUE")) D EOJ W !!,"Okay your request is queued!",!! Q
  1. ;
  1. EN ;EP FROM TASKMAN
  1. S AMHCNT=$S('$D(ZTQUEUED):"X AMHCNT1 X AMHCNT2",1:"S AMHCNTR=AMHCNTR+1"),AMHCNT1="F AMHCNTL=1:1:$L(AMHCNTR)+1 W @AMHBS",AMHCNT2="S AMHCNTR=AMHCNTR+1 W AMHCNTR,"")"""
  1. D NOW^%DTC S AMH("RUN START")=%,AMH("MAIN TX DATE")=$P(%,".") K %,%H,%I
  1. I AMH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. S AMH("BT")=$HOROLOG
  1. D PROCESS ; Generate transactions
  1. I AMH("QFLG") W:'$D(ZTQUEUED) !!,"Abnormal termination! QFLG=",AMH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D ^AMHEXRLG ; Update Log entry
  1. I AMH("QFLG") W:'$D(ZTQUEUED) !!,"Log error! ",AMH("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D:'$D(ZTQUEUED) RUNTIME^AMHEXEOJ
  1. I AMH("QFLG") W:'$D(ZTQUEUED) !!,"Tape creation error! QFLG=",AMH("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) S DIR(0)="E",DIR("A")="DONE--Press enter to continue" K DA D ^DIR K DIR
  1. D EOJ
  1. K AMH
  1. Q
  1. ;
  1. PROCESS ;
  1. K ^AMHXLOG(AMH("RUN LOG"),51)
  1. S (AMH("A"),AMH("D"),AMH("M"),AMH("COUNT"),AMH("ERROR COUNT"))=0
  1. W:'$D(ZTQUEUED) !,"Generating transactions. Counting visits. (1)" S AMHCNTR=0
  1. S AMHR=0 F S AMHR=$O(^AMHXLOG(AMH("RUN LOG"),21,AMHR)) Q:AMHR'=+AMHR D PROCESS2 Q:AMH("QFLG")
  1. Q
  1. PROCESS2 ;
  1. K AMHE,AMHV,AMHTX
  1. X AMHCNT
  1. S ^XTMP("AMHREDO","MAIN TX",AMHR)="",AMHV("TX GENERATED")=0
  1. Q:'$D(^AMHREC(AMHR))
  1. S AMHREC=^AMHREC(AMHR,0)
  1. S AMHV("V DATE")=+AMHREC\1
  1. D KILL^AUPNPAT D RECORD^AMHEXD2
  1. CNTBUILD ;count and build tx
  1. I AMHE]"" S AMH("ERROR COUNT")=AMH("ERROR COUNT")+1 D ^AMHEXERR Q
  1. S AMH("COUNT")=AMH("COUNT")+1
  1. S AMHV("TX GENERATED")=1,^XTMP("AMH"_$S(AMHO("RUN")="NEW":"DR",AMHO("RUN")="REDO":"REDO",1:"DR"),"MAIN TX",AMHR)=AMH("MAIN TX DATE")
  1. S AMH($E(AMHTX))=AMH($E(AMHTX))+1
  1. S ^AMHSDATA(AMH("COUNT"))="MH^"_AMHTX
  1. SETUTIL S ^XTMP("AMHREDO",AMHR)=AMHR_U_AMHV("TX GENERATED")_U_$E(AMHTX)
  1. Q
  1. ;
  1. TAPE ; COPY TRANSACTIONS TO TAPE
  1. ;S AMH("DEF DEVICE")=$P(^AMHSITE(DUZ(2),0),U,2)
  1. ;I AMH("DEF DEVICE")="" W:'$D(ZTQUEUED) !,"No Default Device in SITE File",!," NOTIFY YOUR SUPERVISOR, I cannot continue until there is a default device ",!," in the Site File",$C(7),$C(7) S AMH("QFLG")=4 Q
  1. D EN^AMHEXTAP I $D(ZTQUEUED),AMH("QFLG") D ABORT
  1. ;Q:AMH("QFLG")
  1. ;Q:$D(ZTQUEUED)
  1. ;Q:$P(^AMHSITE(DUZ(2),0),U,11)="Y"
  1. ;Q:$D(ZTQUEUED)
  1. ;S DIR(0)="Y",DIR("A")="Do you want to write the MHSS transactions to an output device",DIR("B")="N" K DA D ^DIR K DIR
  1. ;Q:$D(DIRUT)
  1. ;Q:'Y
  1. ;I Y=1 S AMH("AMHTAPE")="" D EN^AMHEXTAP
  1. ;I AMH("QFLG")=99 S AMH("QFLG")=0
  1. Q
  1. ;
  1. ;
  1. CHKLOG ; CHECK LOG FILE
  1. S AMH("X")=0 F AMH("I")=AMH("RUN LOG"):-1:1 Q:'$D(^AMHXLOG(AMH("I"))) I $O(^AMHXLOG(AMH("I"),21,0)) S AMH("X")=AMH("X")+1
  1. I AMH("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 AMHCNTR=0
  1. S AMH("X")="" F S AMH("X")=$O(^XTMP("AMHREDO",AMH("X"))) Q:AMH("X")'=+AMH("X") S AMH("Y")=^(AMH("X")),^AMHXLOG(AMH("RUN LOG"),21,AMH("X"),0)=AMH("Y") X AMHCNT ;FORGIVE ME LORD
  1. W:'$D(ZTQUEUED) !,"Resetting RECORD TX Flags. (1)" S AMHCNTR=0
  1. S AMH("X")="" F S AMH("X")=$O(^XTMP("AMHREDO","MAIN TX",AMH("X"))) Q:AMH("X")'=+AMH("X") D
  1. .S DIE="^AMHREC(",DA=AMH("X"),DR=".24///"_$S(^XTMP("AMHREDO","MAIN TX",AMH("X"))]"":^XTMP("AMHREDO","MAIN TX",AMH("X")),1:"@") D CALLDIE^AMHLEIN K DA,DR X AMHCNT
  1. .Q
  1. K ^XTMP("AMHREDO")
  1. Q
  1. ;
  1. INIT ;
  1. D INIT^AMHEXRE1
  1. Q
  1. ABORT ; ABNORMAL TERMINATION
  1. I $D(AMH("RUN LOG")) S AMH("QFLG1")=$O(^AMHERRC("B",AMH("QFLG"),"")),DA=AMH("RUN LOG"),DIE="^AMHXLOG(",DR=".15///F;.16////"_AMH("QFLG1")
  1. I $D(ZTQUEUED) D ERRBULL^AMHEXDI3,ABORT,EOJ Q
  1. W !!,"Abnormal termination!! QFLG=",AMH("QFLG")
  1. S DIR(0)="EO",DIR("A")="Press enter to continue" K DA D ^DIR K DIR
  1. Q
  1. ;
  1. EOJ ;
  1. D ^AMHEXEOJ
  1. Q