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

AMHEXD.m

Go to the documentation of this file.
  1. AMHEXD ; IHS/CMI/LAB - MAIN DRIVER FOR PCC EXPORT TX GEN AUGUST 14, 1992 ;
  1. ;;4.0;IHS BEHAVIORAL HEALTH;;MAY 14, 2010
  1. START ;
  1. Q
  1. I $D(ZTQUEUED) S AMHO("SCHEDULED")=""
  1. S AMHO("RUN")="NEW" ; Let AMHEXDI know this is a new run.
  1. D ^AMHEXDI ; Do initialization
  1. I $D(AMHO("QUEUE")) D EOJ W !!,"Okay, your request is queued! Bye",! Q
  1. I AMH("QFLG")=99 D EOJ W !!,"Bye",!! Q
  1. I AMH("QFLG") D ABORT Q
  1. DRIVER ;called from TSKMN+2
  1. S AMH("BT")=$H
  1. D NOW^%DTC S AMH("RUN START")=%,AMH("MAIN TX DATE")=$P(%,".") K %,%H,%I
  1. S DIE="^AMHXLOG(",DA=AMH("RUN LOG"),DR=".15///R"_";.03////"_AMH("RUN START") D CALLDIE^AMHLEIN
  1. I $D(Y) D ABORT Q
  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 PROCESS ; Generate trasactions
  1. I AMH("QFLG") D ABORT Q
  1. D ^AMHEXLOG ; Update Log
  1. I AMH("QFLG") D ABORT Q
  1. D PURGE ; Purge AEX xref entries
  1. D RUNTIME^AMHEXEOJ ; Show run time
  1. L
  1. D TAPE ; Write transactions to tape
  1. I AMH("QFLG") D ABORT Q
  1. ;D:'$D(ZTQUEUED) CHKLOG ; See if Log needs cleaning
  1. I '$D(ZTQUEUED) W !! S DIR(0)="E",DIR("A")="DONE -- Press ENTER to Continue" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. D EOJ
  1. Q
  1. ;
  1. PROCESS ;
  1. W:'$D(ZTQUEUED) !,"Generating transactions. Counting records. (1)"
  1. S AMHCNTR=0,AMH("CONTROL DATE")=AMH("RUN BEGIN")-1,AMH("T-INIT")=" ",AMH("POSTING DATE")=" "
  1. F S AMH("CONTROL DATE")=$O(^AMHREC("AEX",AMH("CONTROL DATE"))) Q:AMH("CONTROL DATE")=""!(AMH("CONTROL DATE")>AMH("RUN END")) D PROCESS2 Q:AMH("QFLG")
  1. Q
  1. PROCESS2 ;
  1. S AMHR="" F S AMHR=$O(^AMHREC("AEX",AMH("CONTROL DATE"),AMHR)) Q:AMHR="" D PROCESS3 Q:AMH("QFLG")
  1. Q
  1. PROCESS3 ;
  1. K AMHT,AMHV,AMHE
  1. D KILL^AUPNPAT
  1. Q:$D(^AMHXLOG(AMH("RUN LOG"),21,AMHR))
  1. S AMHV("TX GENERATED")=0,^XTMP("AMHDR",AMH("CONTROL DATE"),AMHR)="",^XTMP("AMHDR","MAIN TX",AMHR)=""
  1. X AMHCNT
  1. S AMHREC=^AMHREC(AMHR,0)
  1. S AMHV("R DATE")=+AMHREC\1
  1. K AMHE,AMHTX D RECORD^AMHEXD2
  1. D CNTBUILD
  1. D ^XBFMK
  1. S DA=AMH("RUN LOG"),DR="2101///""`"_AMHR_"""",DIE="^AMHXLOG("
  1. S DR(2,9002014.2101)=".02////"_AMHV("TX GENERATED")_";.03///"_$E(AMHTX)
  1. D CALLDIE^AMHLEIN
  1. Q
  1. ;
  1. PURGE ; PURGE 'AEX' XREF FOR MHSS RECORDS JUST DONE
  1. W:'$D(ZTQUEUED) !,"Deleting cross-reference entries. (1)"
  1. S AMHCNTR=0,AMHV("R DATE")=""
  1. F S AMHV("R DATE")=$O(^XTMP("AMHDR",AMHV("R DATE"))) Q:AMHV("R DATE")'=+AMHV("R DATE") D PURGE2
  1. K ^XTMP("AMHDR"),^XTMP("AMHDR")
  1. Q
  1. PURGE2 ;
  1. S AMHR="" F S AMHR=$O(^XTMP("AMHDR",AMHV("R DATE"),AMHR)) Q:AMHR="" D RESET
  1. Q
  1. ;
  1. RESET ; kill MHSS xref and set flag if tx 23 or 24 generated
  1. K ^AMHREC("AEX",AMHV("R DATE"),AMHR)
  1. I ^XTMP("AMHDR","MAIN TX",AMHR)]"" S DIE="^AMHREC(",DA=AMHR,DR=".24///"_^XTMP("AMHDR","MAIN TX",AMHR)_";.22///@" D CALLDIE^AMHLEIN
  1. X AMHCNT
  1. Q
  1. ;
  1. ;
  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. Q
  1. TAPE ; COPY TRANSACTIONS TO TAPE
  1. ;S AMH("DEF DEVICE")=$P(^AMHSITE(DUZ(2),0),U,7)
  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 ERRBULL^AMHEXDI3
  1. ;Q:AMH("DEF DEVICE")="F"
  1. ;Q:AMH("QFLG")
  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. CHKLOG ; CHECK LOG FILE
  1. Q
  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")>12 W !,"-->There are more than twelve generations of MHSS RECORDs stored in the LOG file.",!,"-->Time to do a purge."
  1. Q
  1. ;
  1. ABORT ; ABNORMAL TERMINATION
  1. I $D(AMH("RUN LOG")) S AMH("QFLG1")=$O(^AMHDTER("B",AMH("QFLG"),"")),DA=AMH("RUN LOG"),DIE="^AMHXLOG(",DR=".15///F;.16////"_AMH("QFLG1")
  1. I $D(ZTQUEUED) D ERRBULL^AMHEXDI3,EOJ Q
  1. W !!,"Abnormal termination!! QFLG=",AMH("QFLG")
  1. S DIR(0)="E",DIR("A")="DONE -- Press ENTER to Continue" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
  1. D EOJ
  1. Q
  1. ;
  1. EOJ ; EOJ
  1. D ^AMHEXEOJ
  1. Q