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

BDMFLOW.m

Go to the documentation of this file.
  1. BDMFLOW ; IHS/CMI/LAB - flowsheet bdm ;
  1. ;;2.0;DIABETES MANAGEMENT SYSTEM;**1,3,8**;JUN 14, 2007;Build 53
  1. ;
  1. ;
  1. ;
  1. D FULL^VALM1,CLEAR^VALM1
  1. D EN^XBNEW("EP^BDMFLOW","DFN")
  1. Q
  1. EP ;EP
  1. W !,"Please enter the name of the Flowsheet you would like to display.",!
  1. I '$G(DFN) W !!,"Invalid patient DFN" D EOP Q
  1. D ^XBFMK
  1. S DIC="^APCHSFLC(",DIC(0)="AEMQ" D ^DIC K DIC
  1. I Y=-1 W !,"No flowsheet selected." D EXIT,EOP Q
  1. S BDMFDF=+Y
  1. D SETVARS
  1. ZIS ;
  1. W ! S DIR(0)="S^P:PRINT Output;B:BROWSE Output on Screen",DIR("A")="Do you wish to",DIR("B")="P" K DA D ^DIR K DIR
  1. I $D(DIRUT) D EXIT Q
  1. I Y="B" D BROWSE,EXIT Q
  1. S XBRP="FLOWDISP^BDMFLOW",XBRC="",XBRX="EXIT^BDMFLOW",XBNS="BDM;DFN"
  1. D ^XBDBQUE
  1. D EXIT
  1. D PAUSE^BDMFMENU
  1. Q
  1. BROWSE ;
  1. S XBRP="VIEWR^XBLM(""FLOWDISP^BDMFLOW"")"
  1. S XBRC="",XBRX="EXIT^BDMFLOW",XBIOP=0 D ^XBDBQUE
  1. Q
  1. EXIT ;
  1. K BDMFLOW
  1. D ^XBFMK
  1. Q
  1. SETVARS ;EP
  1. S BDMFCN=$P(^APCHSFLC(BDMFDF,0),U)
  1. S BDMSPAT=DFN
  1. S X=$$FMADD^XLFDT(DT,-365) ;1 YEAR PER DOROTHY, may change in future
  1. S BDMDLM=9999999-X
  1. S BDMNDM=-1
  1. K BDMQIT
  1. S BDMCKP="Q:$D(BDMQIT) S BDMNPG=0 I $Y>(IOSL-3) "
  1. S BDMBRK="D BREAK^BDMFLOW"
  1. I $P(IOST,"-",1)="C" S BDMCKP=BDMCKP_"W *7,""<>"" R X:DTIME S:'$T X=U W *13 S:X[U BDMQIT="""" I '$D(BDMQIT) "
  1. S BDMCKP=BDMCKP_"W @IOF"_$S($P(IOST,"-",1)="C":",!",1:"")_" D HEADER^BDMFLOW,BREAK^BDMFLOW S BDMNPG=1"
  1. X:$D(IO("S")) $S($D(^DD("OS",^DD("OS"),"XY")):"S (IOX,IOY)=0 X ^(""XY"")",1:"W @IOF")
  1. S BDMCVD="S:Y]"""" Y=+Y,Y=$E(Y,4,5)_""/""_$S($E(Y,6,7):$E(Y,6,7)_""/"",1:"""")_$E(Y,2,3)"
  1. S BDMSPG=0
  1. S BDMSHDR="CONFIDENTIAL PATIENT INFORMATION -- "_$$FMTE^XLFDT(DT,5)_" ["_$P(^VA(200,DUZ,0),U,2)_"]" S X="",$P(X,"*",((IOM-6-$L(BDMSHDR))\2)+1)="*" S BDMSHDR=X_" "_BDMSHDR_" "_X
  1. Q
  1. EOP ;EP - End of page.
  1. Q:$E(IOST)'="C"
  1. Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
  1. NEW DIR
  1. K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
  1. S DIR(0)="E" D ^DIR
  1. Q
  1. ;----------
  1. FLOWDISP ;EP ********** FLOWSHEET PRODUCTION **********
  1. D HEADER
  1. S BDMFNM=0
  1. S BDMND2=BDMNDM
  1. FLOWOUT ; <DISPLAY>
  1. S BDMFNM=BDMFNM+1 I BDMFNM=1 X BDMCKP Q:$D(BDMQIT) X:'BDMNPG BDMBRK
  1. S BDMFCN=$P(^APCHSFLC(BDMFDF,0),U,1)
  1. D FLOWTB
  1. X BDMCKP Q:$D(BDMQIT) D FLOWHD
  1. S BDMIVD="" F BDMQ=0:0 S BDMIVD=$O(^AUPNVSIT("AA",BDMSPAT,BDMIVD)) Q:BDMIVD=""!(BDMIVD>BDMDLM) D FLOWBD Q:$D(BDMQIT) I BDMDUS S BDMNDM=BDMNDM-1 Q:BDMNDM=0
  1. X BDMCKP Q:$D(BDMQIT) I 'BDMNPG S BDMP="",$P(BDMP,"-",BDMMXL+9)="" W ?2,BDMP,!
  1. X BDMCKP Q:$D(BDMQIT) I 'BDMNPG W !
  1. Q
  1. FLOWCHK ; <SCREEN>
  1. I '$O(^APCHSFLC(BDMFDF,2,0)) S BDMFOK=1 Q
  1. S BDMFOK=0
  1. F BDMPI=0:0 S BDMPI=$O(^AUPNPROB("AC",BDMSPAT,BDMPI)) Q:'BDMPI D FLOWCP Q:BDMFOK
  1. Q:BDMFOK ;found on Problem list
  1. PVCH ;IHS/CMI/LAB - now check for dx in past year per Bill and Charlton by pcp
  1. K BDMY,BDMV,^TMP($J,"ALL VISITS")
  1. S BDMY="^TMP($J,""ALL VISITS"",",%=BDMSPAT_"^ALL VISITS;DURING "_$$FMTE^XLFDT($$FMADD^XLFDT(DT,-365))_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,BDMY)
  1. I '$D(^TMP($J,"ALL VISITS",1)) Q
  1. S X=0 F S X=$O(^TMP($J,"ALL VISITS",X)) Q:X'=+X!(BDMFOK) S V=$P(^TMP($J,"ALL VISITS",X),U,5) D
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:"DAHO"'[$P(^AUPNVSIT(V,0),U,7)
  1. .Q:'$D(^AUPNVPRV("AD",V))
  1. .Q:'$D(^AUPNVPOV("AD",V))
  1. .;S (D,Y)=0 F S Y=$O(^AUPNVPOV("AD",V,Y)) Q:Y'=+Y!(D) S BDMCM=$P($G(^AUPNVPOV(Y,0)),U) I BDMCM S BDMCM=$P($G(^ICD9(BDMCM,0)),U) I BDMCM]"" D CHKCODE cmi/anch/maw 8/27/2007 orig code patch 1
  1. .S (D,Y)=0 F S Y=$O(^AUPNVPOV("AD",V,Y)) Q:Y'=+Y!(D) S BDMCM=$P($G(^AUPNVPOV(Y,0)),U) I BDMCM S BDMCM=$P($$ICDDX^BDMUTL(BDMCM,$P(+V,".")),U,2) I BDMCM]"" D CHKCODE ;cmi/anch/maw 8/27/2007 code set versioning patch 1
  1. .Q:'D
  1. .S Y=$$PRIMPROV^APCLV(V,"F")
  1. .Q:'Y
  1. .Q:$P($G(^DIC(7,Y,9999999)),U,3)'="Y"
  1. .S BDMFOK=1
  1. .Q
  1. K ^TMP($J,"ALL VISITS"),BDMV,BDMY
  1. Q
  1. FLOWCP ;
  1. S BDMP=^AUPNPROB(BDMPI,0) Q:$P(BDMP,U,12)'="A"
  1. S BDMCM=$P(^ICD9(+$P(BDMP,U,1),0),U,1)
  1. F BDMCI=0:0 S BDMCI=$O(^APCHSFLC(BDMFDF,2,BDMCI)) Q:'BDMCI D FLOWCR Q:BDMFOK
  1. Q
  1. FLOWCR ;
  1. S BDMC1=$P(^APCHSFLC(BDMFDF,2,BDMCI,0),U,1)
  1. I BDMC1["-" S BDMC2=$P(BDMC1,"-",2),BDMC1=$P(BDMC1,"-",1)
  1. E S BDMC2=BDMC1
  1. S BDMC1=BDMC1_" ",BDMC2=BDMC2_" "
  1. I BDMC1'](BDMCM_" "),(BDMCM_" ")']BDMC2 S BDMFOK=1
  1. Q
  1. CHKCODE ;
  1. F BDMCI=0:0 S BDMCI=$O(^APCHSFLC(BDMFDF,2,BDMCI)) Q:'BDMCI D CHKCODE1 Q:D
  1. Q
  1. CHKCODE1 ;
  1. S D=0
  1. S BDMC1=$P(^APCHSFLC(BDMFDF,2,BDMCI,0),U,1)
  1. I BDMC1["-" S BDMC2=$P(BDMC1,"-",2),BDMC1=$P(BDMC1,"-",1)
  1. E S BDMC2=BDMC1
  1. S BDMC1=BDMC1_" ",BDMC2=BDMC2_" "
  1. I BDMC1'](BDMCM_" "),(BDMCM_" ")']BDMC2 S D=1
  1. Q
  1. FLOWCKP ;ENTRY POINT
  1. X BDMCKP Q:$D(BDMQIT) Q:'BDMNPG
  1. FLOWHD ;ENTRY POINT
  1. ; DISPLAY HEADER
  1. X BDMCKP Q:$D(BDMQIT)
  1. W BDMFCN,!
  1. I $O(^APCHSFLC(BDMFDF,3,0)) W ?2,"Clinics limited to:" S X=0 F S X=$O(^APCHSFLC(BDMFDF,3,X)) Q:'X X BDMCKP Q:$D(BDMQIT) G:BDMNPG FLOWHD W ?22,$P(^DIC(40.7,X,0),U),!
  1. X BDMCKP Q:$D(BDMQIT) G:BDMNPG FLOWHD
  1. F BDMII=0:0 S BDMII=$O(BDMTB(BDMII)) Q:'BDMII W ?12+BDMTB(BDMII),BDMTB(BDMII,"L")
  1. W !
  1. Q
  1. FLOWTB ; BUILD TAB TABLE
  1. K BDMTB
  1. S BDMT=1,BDMMXL=0
  1. F BDMI=0:0 S BDMI=$O(^APCHSFLC(BDMFDF,1,BDMI)) Q:'BDMI D FLOWTB2
  1. Q
  1. FLOWTB2 S BDMW=0
  1. Q:'($D(^APCHSFLC(BDMFDF,1,BDMI,0))#2) S BDMN=^(0)
  1. S BDMTTL=$P(BDMN,U,3) S BDMP=$L(BDMTTL) S:BDMP>BDMW BDMW=BDMP
  1. S BDMP=$P(BDMN,U,4) S:+BDMP>BDMW BDMW=BDMP
  1. S:BDMW=0 BDMW=10
  1. S BDMTB(BDMI)=BDMT_"^"_BDMW,BDMTB(BDMI,"L")=BDMTTL
  1. S BDMMXL=BDMMXL+BDMW+2
  1. S BDMT=BDMT+BDMW+2
  1. Q
  1. FLOWBD ; BUILD AND DISPLAY DATA TABLE (FOR ONE DATE)
  1. K BDMDC
  1. S BDMDUS=0
  1. F BDMVDF=0:0 S BDMVDF=$O(^AUPNVSIT("AA",BDMSPAT,BDMIVD,BDMVDF)) Q:'BDMVDF D FLOWB
  1. D:$D(BDMDC) FLOWD
  1. Q
  1. FLOWB S BDMCLN=$P(^AUPNVSIT(BDMVDF,0),U,8)
  1. I BDMCLN,$O(^APCHSFLC(BDMFDF,3,0)),'$D(^(BDMCLN)) Q
  1. S BDMDUS=1
  1. F BDMIDF=0:0 S BDMIDF=$O(^APCHSFLC(BDMFDF,1,BDMIDF)) Q:'BDMIDF S BDMJ=0 D FLOWB2 Q:$D(BDMQIT)
  1. Q
  1. FLOWB2 S BDMN=^APCHSFLC(BDMFDF,1,BDMIDF,0)
  1. S BDMIT=$P(BDMN,U,2)
  1. S BDMFXF=$G(^APCHSFLC(BDMFDF,1,BDMIDF,1))
  1. S BDMX=^APCHSFLI(BDMIT,1)
  1. S BDMXT=^APCHSFLI(BDMIT,2)
  1. S BDMP=$P(^APCHSFLI(BDMIT,0),U,3),BDMVGL=^DIC(BDMP,0,"GL")_"""AD"",BDMVDF)"
  1. S BDMAS=$O(^APCHSFLC(BDMFDF,1,BDMIDF,2,0)),BDMNGL=BDMAS&'$O(^(BDMAS)) D FLOWBA:'BDMAS,FLOWBS:BDMAS
  1. Q
  1. FLOWBS ; ADD SPECIFIED ITEMS
  1. F DA=0:0 S DA=$O(@BDMVGL@(DA)) Q:'DA D FLOWBS2
  1. Q
  1. FLOWBS2 ;
  1. X BDMXT
  1. S BDMITP=X
  1. F I=0:0 S I=$O(^APCHSFLC(BDMFDF,1,BDMIDF,2,I)) Q:'I I +$P(^APCHSFLC(BDMFDF,1,BDMIDF,2,I,0),U,1)=BDMITP D FLOWADD Q
  1. Q
  1. FLOWBA ; ADD ALL (NO ITEMS SPECIFIED)
  1. F DA=0:0 S DA=$O(@BDMVGL@(DA)) Q:'DA D FLOWADD
  1. Q
  1. FLOWADD ; ADD VALUE FROM SELECTED FILE/DFN
  1. S BDML=$P(BDMTB(BDMIDF),U,2)
  1. X BDMX
  1. FLOWS I $L(X),$E(X,$L(X))=" " S X=$E(X,1,$L(X)-1) G FLOWS
  1. I BDMFXF]"",$P(X,"=",2)]"" S BDMXS=$P(X,"="),X=$P(X,"=",2) X BDMFXF S X=BDMXS_"="_X
  1. S:$E(X,$L(X))="=" X="n/r"
  1. I $G(^APCHSFLC(BDMFDF,1,BDMIDF,1))]"" X ^APCHSFLC(BDMFDF,1,BDMIDF,1)
  1. I BDMNGL,X["=" S X=$P(X,"=",2)
  1. F BDMI=1:BDML S BDMP=$E(X,BDMI,BDML+BDMI-1) Q:BDMP="" S BDMJ=BDMJ+1,BDMDC(BDMJ,BDMIDF)=BDMP
  1. Q
  1. FLOWD ;ENTRY POINT
  1. S Y=-BDMIVD\1+9999999 X BDMCVD S BDMDAT=Y
  1. S BDMP="",$P(BDMP,"-",BDMMXL+9)="" X BDMCKP Q:$D(BDMQIT) W:'BDMNPG ?2,BDMP,! D:BDMNPG FLOWHD
  1. D FLOWCKP Q:$D(BDMQIT)
  1. W ?2,BDMDAT
  1. F BDMI=0:0 S BDMI=$O(BDMDC(BDMI)) Q:'BDMI D FLOWCKP Q:$D(BDMQIT) D FLOWD2 W !
  1. Q
  1. FLOWD2 F BDMJ=0:0 S BDMJ=$O(BDMTB(BDMJ)) Q:'BDMJ W ?11+BDMTB(BDMJ),":",$G(BDMDC(BDMI,BDMJ))
  1. Q
  1. S BDMSPG=BDMSPG+1
  1. S BDMSHD2=$P(^DPT(BDMSPAT,0),U)_" #"_$$HRN^AUPNPAT(BDMSPAT,$S($G(BDMDUZ2):BDMDUZ2,1:DUZ(2)))_" "_$$CWAD^AUPNLKID(BDMSPAT)_" pg "_BDMSPG
  1. S BDMSP="",$P(BDMSP,"*",((IOM-6-$L(BDMSHD2))\2)+1)="*",BDMSP=BDMSP_" "_BDMSHD2_" "_BDMSP
  1. W !,BDMSHDR,!,BDMSP,!
  1. Q
  1. ;
  1. BREAK ;ENTRY POINT
  1. S BDMSP=$$CJ^XLFSTR(BDMFCN,80,"-")
  1. I $Y'>(IOSL-5) W !,BDMSP,!! Q
  1. W !! X BDMSCKP
  1. Q