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

AMHEYD.m

Go to the documentation of this file.
  1. AMHEYD ; IHS/CMI/LAB - MAIN DRIVER FOR PCC EXPORT TX GEN AUGUST 14, 1992 ; 22 Jun 2017 12:04 PM
  1. ;;4.0;IHS BEHAVIORAL HEALTH;**1,4,5,6,8,9,10**;JUN 02, 2010;Build 15
  1. START ;
  1. I $D(ZTQUEUED) S AMHO("SCHEDULED")=""
  1. S AMHO("RUN")="NEW" ; Let AMHEYDI know this is a new run.
  1. D ^AMHEYDI ; 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 ^AMHEYLOG ; Update Log
  1. I AMH("QFLG") D ABORT Q
  1. D PURGE,PURGESF ; Purge AEX xref entries
  1. D RUNTIME^AMHEYEOJ ; Show run time
  1. D TAPE ; Write transactions to tape
  1. I AMH("QFLG") D ABORT Q
  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,AMHTOTV=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. ;now process suicide forms
  1. W:'$D(ZTQUEUED) !,"Generating suicide forms..."
  1. S AMHCNTR=0,AMH("CONTROL DATE")="",AMHSFR=0
  1. F S AMH("CONTROL DATE")=$O(^AMHPSUIC("AEX",AMH("CONTROL DATE"))) Q:AMH("CONTROL DATE")=""!(AMH("CONTROL DATE")>AMH("RUN END")) D
  1. .S AMHSFIEN=0 F S AMHSFIEN=$O(^AMHPSUIC("AEX",AMH("CONTROL DATE"),AMHSFIEN)) Q:AMHSFIEN'=+AMHSFIEN D
  1. ..I '$D(^AMHPSUIC(AMHSFIEN,0)) K ^AMHPSUIC("AEX",AMH("CONTROL DATE"),AMHSFIEN) Q
  1. ..S AMHSREC=^AMHPSUIC(AMHSFIEN,0)
  1. ..S DFN=$P(AMHSREC,U,4),AMHRACE=""
  1. ..S AMHRIEN=$O(^AMHRECD("B","BH2",0))
  1. ..I 'AMHRIEN Q
  1. ..S AMHY=0,AMHTX="" F S AMHY=$O(^AMHRECD(AMHRIEN,11,"B",AMHY)) Q:AMHY'=+AMHY D
  1. ...S X=""
  1. ...S AMHZ=$O(^AMHRECD(AMHRIEN,11,"B",AMHY,0))
  1. ...Q:'$D(^AMHRECD(AMHRIEN,11,AMHZ,1))
  1. ...X ^AMHRECD(AMHRIEN,11,AMHZ,1)
  1. ...S $P(AMHTX,U,AMHY)=X
  1. ...;I DUZ=2881 S LORICNT=$G(LORICNT)+1,^LORITEST(LORICNT)=AMHSFIEN_"^"_$P(^AMHRECD(AMHRIEN,11,AMHZ,0),U,1)_"^"_$P(^AMHRECD(AMHRIEN,11,AMHZ,0),U,2)_"^"_X
  1. ..S AMH("COUNT")=AMH("COUNT")+1,AMHSFC=AMHSFC+1
  1. ..S ^XTMP("AMHSF",AMH("CONTROL DATE"),AMHSFIEN)=AMH("MAIN TX DATE")
  1. ..S ^BHSXDATA(AMH("COUNT"))=AMHTX
  1. ..Q:$D(^AMHXLOG(AMH("RUN LOG"),31,"B",AMHSFIEN)) ;already have that one in the log
  1. ..S DA=AMH("RUN LOG"),DR="3101///"_AMHSFIEN,DIE="^AMHXLOG(" D CALLDIE^AMHLEIN
  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)) ;already in log so don't bother, already processed
  1. S AMHV("TX GENERATED")=0,^XTMP("AMHDR",AMH("CONTROL DATE"),AMHR)="",^XTMP("AMHDR","MAIN TX",AMHR)=""
  1. X AMHCNT
  1. S AMHTOTV=AMHTOTV+1
  1. S AMHREC=^AMHREC(AMHR,0)
  1. S AMHV("R DATE")=+AMHREC\1
  1. K AMHE,AMHTX D RECORD^AMHEYD2
  1. D CNTBUILD
  1. D ^XBFMK
  1. I $D(^AMHXLOG(AMH("RUN LOG"),21,AMHR,0)) Q ;already in log
  1. S DA=AMH("RUN LOG"),DR="2101///""`"_AMHR_"""",DIE="^AMHXLOG("
  1. S DR(2,9002014.2101)=".02////"_AMHV("TX GENERATED")
  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")
  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. PURGESF ; PURGE 'AEX' XREF FOR MHSS RECORDS JUST DONE
  1. W:'$D(ZTQUEUED) !,"Deleting cross-reference entries on suicide forms. (1)"
  1. S AMHCNTR=0,AMHV("R DATE")=""
  1. F S AMHV("R DATE")=$O(^XTMP("AMHSF",AMHV("R DATE"))) Q:AMHV("R DATE")'=+AMHV("R DATE") D PURGE2SF
  1. K ^XTMP("AMHSF")
  1. Q
  1. PURGE2SF ;
  1. S AMHR="" F S AMHR=$O(^XTMP("AMHSF",AMHV("R DATE"),AMHR)) Q:AMHR="" D RESETSF
  1. Q
  1. ;
  1. RESETSF ; kill MHSS xref and set flag if tx 23 or 24 generated
  1. K ^AMHPSUIC("AEX",AMHV("R DATE"),AMHR)
  1. S DIE="^AMHPSUIC(",DA=AMHR,DR=".23///"_^XTMP("AMHSF",AMHV("R DATE"),AMHR) D CALLDIE^AMHLEIN
  1. X AMHCNT
  1. Q
  1. ;
  1. CNTBUILD ;count and build tx
  1. I AMHE]"" S AMH("ERROR COUNT")=AMH("ERROR COUNT")+1 D ERRLOG 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 ^BHSXDATA(AMH("COUNT"))=AMHTX
  1. Q
  1. TAPE ; COPY TRANSACTIONS TO TAPE
  1. D EN^AMHEYTAP I $D(ZTQUEUED),AMH("QFLG") D ERRBULL^AMHEYDI3
  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^AMHEYDI3,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 ^AMHEYEOJ
  1. Q
  1. ERRLOG ;EP
  1. S AMHE("ERR DFN")=$O(^AMHERR("B",AMHE,"")) I AMHE("ERR DFN")="" S AMHE("MSG")=AMHE_"-ERROR INFORMATION NOT IN ERROR FILE" G ERR
  1. S AMHE("MSG")=AMHE_"-"_$P(^AMHERR(AMHE("ERR DFN"),0),U,2) S:$L(AMHE("MSG"))=5 AMHE("MSG")=AMHE("MSG")_"- ERROR INFORMATION NOT IN ERROR FILE" S AMHE("MSG")=$E(AMHE("MSG"),1,45)
  1. ERR ;
  1. K DIE,DR S DA=AMH("RUN LOG"),DR="5101///""`"_AMHR_"""",DR(2,9002014.05101)=".02///"_AMHE("MSG"),DIE="^AMHXLOG("
  1. D CALLDIE^AMHLEIN
  1. I $D(Y) S AMH("QFLG")=25 W:'$D(ZTQUEUED) !!,"Error encountered in ^AMHERR. Notify programmer!",! I $D(ZTQUEUED) D ERRBULL^AMHEYDI3
  1. Q
  1. VERSION() ;EP
  1. Q "V40P10"