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

BDWRDR2.m

Go to the documentation of this file.
  1. BDWRDR2 ; IHS/CMI/LAB - DW PROCESS VISIT ;
  1. ;;1.0;IHS DATA WAREHOUSE;**2,4**;JAN 23, 2006;Build 24
  1. ;
  1. K BDWE
  1. D VISIT
  1. I $D(BDWE) D ^BDWRERR Q
  1. D PROCTX
  1. K BDWE,BDWT,BDWH
  1. Q
  1. ;
  1. VISIT ;EP
  1. I $P(BDWV("V REC"),U,23)=.5 S BDW("MFI")=BDW("MFI")+1,BDWE("ERROR")=120 Q
  1. I '$P(BDWV("V REC"),U,9),'$P(BDWV("V REC"),U,11) S BDW("ZERO")=BDW("ZERO")+1,BDWE("ERROR")=102 Q
  1. S BDWV("TYPE")=$P(BDWV("V REC"),U,3)
  1. I BDWV("TYPE")="" S BDWE("ERROR")="130",BDW("NO TYPE")=BDW("NO TYPE")+1 Q
  1. S BDWV("SRV CAT")=$P(BDWV("V REC"),U,7)
  1. I BDWV("SRV CAT")="" S BDWE("ERROR")="132",BDW("NO CAT")=BDW("NO CAT")+1 Q
  1. S BDWV("LOC DFN")=$P(BDWV("V REC"),U,6)
  1. I BDWV("LOC DFN")="" S BDWE("ERROR")="111",BDW("NO LOC")=BDW("NO LOC")+1 Q
  1. I '$D(^AUTTLOC(BDWV("LOC DFN"),0)) S BDWE("ERROR")="111",BDW("NO LOC")=BDW("NO LOC")+1 Q
  1. S BDWV("IHS LOCATION CODE")=$P(^AUTTLOC(BDWV("LOC DFN"),0),U,10) I BDWV("IHS LOCATION CODE")="" S BDWE("ERROR")="113",BDW("NO LOC")=BDW("NO LOC")+1 Q
  1. S BDWV("PATIENT DFN")=$P(BDWV("V REC"),U,5) I BDWV("PATIENT DFN")="" S BDWE("ERROR")="104",BDW("NO PAT")=BDW("NO PAT")+1 Q
  1. I '$D(^DPT(BDWV("PATIENT DFN"))) S BDWE("ERROR")="104",BDW("NO PAT")=BDW("NO PAT")+1 Q
  1. I '$D(^AUPNPAT(BDWV("PATIENT DFN"))) S BDWE("ERROR")="104",BDW("NO PAT")=BDW("NO PAT")+1 Q
  1. S Y=BDWV("PATIENT DFN") D ^AUPNPAT
  1. S BDWV("PATIENT NAME")=$P(^DPT(BDWV("PATIENT DFN"),0),U)
  1. I BDWV("PATIENT NAME")["DEMO,PATIENT" S BDW("DEMO")=BDW("DEMO")+1,BDWE("ERROR")=101 Q
  1. Q
  1. ;
  1. PROCTX ; process and generate appropriate hl7 message
  1. S BDW("VISITS")=$G(BDW("VISITS"))+1
  1. I '$G(BDWDDR) S BDWV("TX GENERATED")=1,^XTMP("BDW"_$S(BDWO("RUN")="NEW":"DR",BDWO("RUN")="REDO":"REDO",1:"DR"),"MAIN TX",BDW("V DFN"))=BDW("MAIN TX DATE")
  1. I $G(BDWDDR) S BDWV("TX GENERATED")=1,^TMP($J,"BDW",BDW("V DFN"))=BDW("MAIN TX DATE")
  1. S ^XTMP("BDWALPMR",$J,BDWV("PATIENT DFN"))="" ;p5 add set so patient centric messages can run later
  1. S BDWVMSG=$$DW1A08^BHLEVENT(BDW("V DFN"))
  1. S ^BDWTMP(BDWIEDST,BDWVMSG)=""
  1. S X=$P(^AUPNVSIT(BDW("V DFN"),0),U,3)_"-"_$E($$EXTSET^XBFUNC(9000010,.03,$P(^AUPNVSIT(BDW("V DFN"),0),U,3)),1,9)_"/"_$P(^AUPNVSIT(BDW("V DFN"),0),U,7)_"-"_$E($$EXTSET^XBFUNC(9000010,.07,$P(^AUPNVSIT(BDW("V DFN"),0),U,7)),1,17)
  1. S Y=$S($P(^AUPNVSIT(BDW("V DFN"),0),U,11):"D",$P(^AUPNVSIT(BDW("V DFN"),11),U,6)]"":"M",1:"A")
  1. S ^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"TYPE",X,Y)=$G(^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"TYPE",X,Y))+1
  1. S ^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"TYPE",X,"TOT")=$G(^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"TYPE",X,"TOT"))+1
  1. S ^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"DATE",X,$E($P(^AUPNVSIT(BDW("V DFN"),0),U),1,5)_"00")=$G(^TMP($J,"BDWTRAILER",$P(^AUPNVSIT(BDW("V DFN"),0),U,6),"DATE",X,$E($P(^AUPNVSIT(BDW("V DFN"),0),U),1,5)_"00"))+1
  1. ;call audit
  1. I $P(^AUPNVSIT(BDW("V DFN"),0),U,11) S BDW("DELS")=BDW("DELS")+1 Q
  1. I $P(^AUPNVSIT(BDW("V DFN"),11),U,6)]"" S BDW("MODS")=BDW("MODS")+1 Q
  1. S BDW("ADDS")=BDW("ADDS")+1
  1. Q
  1. ;
  1. ALPMR ;-- process ALPMR patient centric messages
  1. ;the following is for testing all patients
  1. ;N BDA
  1. ;S BDA=0 F S BDA=$O(^DPT(BDA)) Q:'BDA D
  1. ;. S ^XTMP("BDWALPMR",$J,BDA)=""
  1. N BDWADA,BDWAMSG
  1. S BDW("ALPMR")=0,BDWCNTR=0
  1. W:'$D(ZTQUEUED) !,"Generating transactions. Counting patient centric records. (0)"
  1. S BDWADA=0 F S BDWADA=$O(^XTMP("BDWALPMR",$J,BDWADA)) Q:'BDWADA D
  1. . I '$$CHKALPMR(BDWADA) K ^XTMP("BDWALPMR",$J,BDWADA) Q
  1. . S BDW("ALPMR")=BDW("ALPMR")+1
  1. . S BDWAMSG=$$DW1ALPMR^BDWBHL1(BDWADA)
  1. . S ^BDWTMP(BDWIEDST,BDWAMSG)=""
  1. . D SET61(BDW("RUN LOG"),BDWADA,BDWAMSG)
  1. . X BDWCNT
  1. K ^XTMP("BDWALPMR",$J)
  1. Q
  1. ;
  1. SET61(RL,ADA,AMSG) ;--lets set the log here
  1. S:'$D(^BDWXLOG(RL,61,0)) ^BDWXLOG(RL,61,0)="^90213.06101PA^^"
  1. S ^BDWXLOG(RL,61,ADA,0)=ADA_U_$G(AMSG)
  1. S $P(^BDWXLOG(RL,61,0),U,3)="",$P(^(0),U,4)=$P(^(0),U,4)+1
  1. Q
  1. ;
  1. CHKALPMR(ADA) ;-- check to see if the patient has any data for ALPMR
  1. I $D(^AUPNPROB("AC",ADA)) Q 1
  1. I $D(^AUPNPREF("AC",ADA)) Q 1
  1. I $D(^BIPC("B",ADA)) Q 1
  1. I $D(^BWPCD("C",ADA)) Q 1
  1. Q 0
  1. ;