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

BDWREDO.m

Go to the documentation of this file.
  1. BDWREDO ; IHS/CMI/LAB - REDO A RUN ;
  1. ;;1.0;IHS DATA WAREHOUSE;**2,4**;JAN 23, 2006;Build 24
  1. START ;
  1. D EN^XBVK("BDW")
  1. I $D(^BDWTMP) W !!,"Previous run not completed." Q
  1. S BDWO("RUN")="REDO" ; Let ^BDWRDRI know this is a 'REDO'
  1. S BDWO("RUN TYPE")="REX"
  1. D ^BDWRDRI ;
  1. I BDW("QFLG")=66 W:'$D(ZTQUEUED) !,"Contact your site manager. ^BDWTMP still exists." D D EOJ Q
  1. .S DIR(0)="EO",DIR("A")="Press any key to continue" K DA D ^DIR K DIR
  1. I BDW("QFLG") D EOJ W !!,"Bye",!! Q
  1. D INIT ; Get Log entry to redo
  1. I BDW("QFLG") D EOJ W !!,"Bye",!! Q
  1. D QUEUE^BDWRDRI
  1. I BDW("QFLG") D EOJ W !!,"Bye",!! Q
  1. I $D(BDWO("QUEUE")) D EOJ W !!,"Okay your request is queued!",!! Q
  1. ;
  1. EN ;EP FROM TASKMAN
  1. S BDWLOG=BDW("RUN LOG")
  1. S BDWCNT=$S('$D(ZTQUEUED):"X BDWCNT1 X BDWCNT2",1:"S BDWCNTR=BDWCNTR+1"),BDWCNT1="F BDWCNTL=1:1:$L(BDWCNTR)+1 W @BDWBS",BDWCNT2="S BDWCNTR=BDWCNTR+1 W BDWCNTR,"")"""
  1. D NOW^%DTC S BDW("RUN START")=%,BDW("MAIN TX DATE")=$P(%,".") K %,%H,%I
  1. D ^XBFMK S DA=BDWLOG,DIE="^BDWXLOG(",DR=".03////"_BDW("RUN START")_";.15///R"_";.22///1" D ^DIE,^XBFMK
  1. S BDW("BT")=$HOROLOG
  1. D PROCESS ; Generate transactions
  1. I BDW("QFLG") W:'$D(ZTQUEUED) !!,"Abnormal termination! QFLG=",BDW("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D ALPMR^BDWRDR2 ;generate ALPMR patient centric messages
  1. I BDW("QFLG") W:'$D(ZTQUEUED) !!,"Abnormal termination! QFLG=",BDW("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D LOG ; Update Log entry
  1. I BDW("QFLG") W:'$D(ZTQUEUED) !!,"Log error! ",BDW("QFLG") D:$D(ZTQUEUED) ABORT D EOJ Q
  1. D RUNTIME^BDWRDR
  1. S BDWMSGT=$$DW1TRLR^BHLEVENT(90213,BDW("RUN LOG"))
  1. S ^BDWTMP(BDWIEDST,BDWMSGT)=""
  1. S DA=BDW("RUN LOG"),DIE="^BDWXLOG(",DR=".13////"_BDWRUN_";.14////"_BDWMSGT_";.15////C" D ^DIE
  1. D:'$D(ZTQUEUED) CHKLOG ; See if Log needs cleaning
  1. D RESETV ; Reset VISITs processed in Log
  1. I '$D(ZTQUEUED) S DIR(0)="EO",DIR("A")="DONE -- Press ENTER to Continue" K DA D ^DIR K DIR
  1. D EOJ
  1. Q
  1. ;
  1. PROCESS ;
  1. D GIS^BDW1VBLI
  1. S BDWMSGH=$$DW1HDR^BHLEVENT(90213,BDW("RUN LOG"))
  1. S ^BDWTMP(BDWIEDST,BDWMSGH)=""
  1. D ^XBFMK S DA=BDWLOG,DIE="^BDWXLOG(",DR=".12////"_BDWMSGH D ^DIE,^XBFMK
  1. S ^XTMP("BDWREDO",0)=$$FMADD^XLFDT(DT,14)_U_DT_U_"DATA WAREHOUSE EXPORT REDO" ;IHS/CMI/LAB
  1. W:'$D(ZTQUEUED) !,"Generating transactions. Counting encounters. (1)" S BDWCNTR=0
  1. S BDWDFN=0 F S BDWDFN=$O(^BDWXLOG(BDW("RUN LOG"),41,BDWDFN)) Q:BDWDFN'=+BDWDFN D
  1. .K INA("DELETE"),BDWDELF,BDWDELT
  1. .I '$D(^AUPNPAT(BDWDFN,0)) Q
  1. .I '$D(^DPT(BDWDFN,0)) Q
  1. .S BDWDELF=$P(^BDWXLOG(BDW("RUN LOG"),41,BDWDFN,0),U,13),BDWDELT=$P(^DPT(BDWDFN,0),U,19)
  1. .I 'BDWDELF,'$$ORF^BDWUTIL1(BDWDFN) Q
  1. .K BDWR S Y=^BDWXLOG(BDW("RUN LOG"),41,BDWDFN,0),BDWR("BASE")=$P(Y,U,2),BDWR("DEMO")=$P(Y,U,3),BDWR("ALIAS")=$P(Y,U,4),BDWR("CHART")=$P(Y,U,5),BDWR("ELIG")=$P(Y,U,6)
  1. .I BDWDELF S INA("DELETE")=BDWDELT
  1. .S INA=0
  1. .I BDWDELF D
  1. ..S INA("DELETE")=BDWDFN
  1. ..S BDWM=$$DW1MRG^BHLEVENT(BDWDELT,.INA)
  1. .I 'BDWDELF D
  1. ..S BDWM=$$DW1REG^BHLEVENT(BDWDFN,.INA)
  1. .S BDW("REG")=BDW("REG")+1,^BDWTMP(BDWIEDST,BDWM)=""
  1. .S $P(^BDWXLOG(BDW("RUN LOG"),41,BDWDFN,0),U,7)=BDWM
  1. .K INA("DELETE"),BDWDELT,BDWDELF
  1. K ^BDWXLOG(BDW("RUN LOG"),51) ;clean out old error log
  1. S BDW("V DFN")=0 F S BDW("V DFN")=$O(^BDWXLOG(BDW("RUN LOG"),21,BDW("V DFN"))) Q:BDW("V DFN")'=+BDW("V DFN") D PROCESS2 Q:BDW("QFLG")
  1. Q
  1. PROCESS2 ;
  1. K BDWE,BDWV
  1. X BDWCNT
  1. S ^XTMP("BDWREDO","MAIN TX",BDW("V DFN"))="",BDWV("TX GENERATED")=0
  1. I '$D(^AUPNVSIT(BDW("V DFN"))) Q
  1. S BDW("VPROC")=BDW("VPROC")+1
  1. S BDWV("V REC")=^AUPNVSIT(BDW("V DFN"),0)
  1. S BDWV("V DATE")=+BDWV("V REC")\1
  1. I $P(BDWV("V REC"),U,11),$P($G(^AUPNVSIT(BDW("V DFN"),11)),U,6)="" D G SETUTIL
  1. .S BDWE("ERROR")=100 D ^BDWRERR
  1. K BDWVMSG D ^BDWRDR2
  1. SETUTIL S ^XTMP("BDWREDO",BDW("V DFN"))=BDW("V DFN")_U_BDWV("TX GENERATED")_U_$G(BDWVMSG)
  1. Q
  1. ;
  1. ;
  1. CHKLOG ; CHECK LOG FILE
  1. S BDW("X")=0 F BDW("I")=BDW("RUN LOG"):-1:1 Q:'$D(^BDWXLOG(BDW("I"))) I $O(^BDWXLOG(BDW("I"),21,0)) S BDW("X")=BDW("X")+1
  1. I BDW("X")>3 W !!,"-->There are more than three generations of VISITs stored in the LOG file.",!,"-->Time to do a purge."
  1. Q
  1. ;
  1. RESETV ; RESET VISIT DATA IN LOG
  1. W:'$D(ZTQUEUED) !,"Resetting VISIT specific data in Log file. (1)" S BDWCNTR=0
  1. S BDW("X")=0 F S BDW("X")=$O(^XTMP("BDWREDO",BDW("X"))) Q:BDW("X")'=+BDW("X") S BDW("Y")=^(BDW("X")),^BDWXLOG(BDW("RUN LOG"),21,BDW("X"),0)=BDW("Y") X BDWCNT ;FORGIVE ME LORD
  1. W:'$D(ZTQUEUED) !,"Resetting VISIT TX Flags. (1)" S BDWCNTR=0
  1. S BDW("X")=0 F S BDW("X")=$O(^XTMP("BDWREDO","MAIN TX",BDW("X"))) Q:BDW("X")'=+BDW("X") D
  1. .S DIE="^AUPNVSIT(",DA=BDW("X"),DR="1106///"_$S(^XTMP("BDWREDO","MAIN TX",BDW("X"))]"":^XTMP("BDWREDO","MAIN TX",BDW("X")),1:"@") D ^DIE K DA,DR X BDWCNT
  1. .Q
  1. K ^XTMP("BDWREDO")
  1. Q
  1. ;
  1. LOG ; UPDATE LOG
  1. S BDW("COUNT")=BDW("REG")+BDW("VISITS") W:'$D(ZTQUEUED) !!,BDW("COUNT")," HL7 Messages were generated."
  1. W:'$D(ZTQUEUED) !,"Updating log entry."
  1. D NOW^%DTC S BDW("RUN STOP")=%
  1. S DA=BDW("RUN LOG"),DIE="^BDWXLOG(",DR=".04////"_BDW("RUN STOP")_";.05////"_BDW("SKIP")_";.06////"_BDW("COUNT")_";.08///"_BDW("VPROC") D ^DIE I $D(Y) S BDW("QFLG")=26 Q
  1. K DIE,DA,DR
  1. S DA=BDW("RUN LOG"),DIE="^BDWXLOG(",DR=".11////"_BDW("REG")_";.12////"_BDWMSGH_";.18////"_$G(BDW("VISITS"))_";.23///REX" D ^DIE I $D(Y) S BDW("QFLG")=26 Q
  1. K DR,DIE,DA,DIV,DIU
  1. S DIE="^BDWXLOG(",DA=BDW("RUN LOG"),DR="3101////"_BDW("DEMO")_";3102////"_BDW("ZERO")_";3103////"_BDW("DEL")_";3104////"_BDW("NO PAT")_";3105////"_BDW("NO LOC")_";3106////"_BDW("NO TYPE")_";3107////"_BDW("NO CAT")_";3111////"_BDW("MFI")
  1. D ^DIE I $D(Y) S BDW("QFLG")=26 Q
  1. S DA=BDW("RUN LOG"),DIK="^BDWXLOG(" D IX1^DIK K DA,DIK
  1. D ^XBFMK
  1. ;
  1. Q
  1. INIT ;
  1. D INIT^BDWRED1
  1. Q
  1. ABORT ; ABNORMAL TERMINATION
  1. I $D(BDW("RUN LOG")) S BDW("QFLG1")=$O(^BDWERRC("B",BDW("QFLG"),"")),DA=BDW("RUN LOG"),DIE="^BDWXLOG(",DR=".15///F;.16////"_BDW("QFLG1")
  1. I $D(ZTQUEUED) D ERRBULL^BDWRDRI3,EOJ Q
  1. W !!,"Abnormal termination!! QFLG=",BDW("QFLG")
  1. S DIR(0)="EO",DIR("A")="Press any key to continue" K DA D ^DIR K DIR
  1. Q
  1. ;
  1. EOJ ;
  1. K AUPNVSIT
  1. D EN^XBVK("BDW"),KILL^AUPNPAT
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q