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

APCHSM07.m

Go to the documentation of this file.
  1. APCHSM07 ; IHS/CMI/LAB -- CONTINUATION OF ROUTINES ;
  1. ;;2.0;IHS PCC SUITE;**2,16**;MAY 14, 2009;Build 9
  1. ;
  1. ; ******************** SURVEILLANCE - HARD CODE ********************
  1. S(X) ;
  1. NEW %,C S (C,%)=0 F S %=$O(APCHSTEX(%)) Q:%'=+% S C=C+1
  1. S APCHSTEX(C+1)=X
  1. Q
  1. SIGMOID ;EP
  1. X APCHSURX
  1. S APCHNUMD=0
  1. ;this reminder works a little differently than the rest
  1. ;site cannot specify freguency, just age/sex
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. I $$PLTAX^APCHSMU(APCHSPAT,"BGP COLORECTAL CANCER DXS") X APCHSURX Q ;cancel if cancer on pl
  1. I $$IPLSNO^APCHSMU1(APCHSPAT,"PXRM COLORECTAL CANCER") X APCHSURX Q ;cancel if pt has snomed htn on pl
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I APCHSCRI Q:'$$AGESEX^APCHSMU(APCHSITI,APCHSPAT,1)
  1. I APCHSCRI S APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT) ;if there is site criteria then quit if patient is not in their defined age/sex range
  1. I 'APCHSCRI Q:APCHSAGE<50 ;if ihs criteria used, quit if not 50
  1. I 'APCHSCRI Q:APCHSAGE>75
  1. I 'APCHSCRI S APCHMIN=50
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHLSIC=$$LASTFSIG^APCLAPI(APCHSPAT,,,"A")
  1. S APCHLSIG=$P(APCHLSIC,U,1)
  1. S APCHLCOI=$$LASTCOLO^APCLAPI(APCHSPAT,,,"A")
  1. S APCHLCOL=$P(APCHLCOI,U,1)
  1. ;S APCHLBEI=$$LASTBE^APCLAPI4(APCHSPAT,,,"A")
  1. ;S APCHLBE=$P(APCHLBEI,U,1)
  1. ;get last one of all
  1. S APCHLAST=APCHLSIG,APCHICAR=APCHLSIC
  1. I APCHLCOL>APCHLAST S APCHLAST=APCHLCOL,APCHICAR=APCHLCOI
  1. ;I APCHLBE>APCHLAST S APCHLAST=APCHLBE,APCHICAR=APCHLBEI
  1. S APCHOVR=$$OVR^APCHSMU(APCHSPAT,APCHSITI)
  1. I $P(APCHOVR,U)>APCHLAST D Q
  1. .S X=$$DATE^APCHSMU($P(APCHOVR,U))_" (per "_$P(APCHOVR,U,2)_")" D S(X) S X=$P(APCHOVR,U,3) D S(X)
  1. .S X="" D SIGREF
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. ;reset and only use dates in time window (5 yrs sig, 10 yrs be&colo
  1. I APCHLSIG]"",$$FMDIFF^XLFDT(DT,APCHLSIG)>(5*365) S APCHLSIG="",APCHLSIC=""
  1. I APCHLCOL]"",$$FMDIFF^XLFDT(DT,APCHLCOL)>(10*365) S APCHLCOL="",APCHLCOI=""
  1. ;I APCHLBE]"",$$FMDIFF^XLFDT(DT,APCHLBE)>(10*365) S APCHLBE="",APCHLBEI=""
  1. ;get last one of all
  1. S APCHLAST=APCHLSIG,APCHICAR=APCHLSIC
  1. I APCHLCOL>APCHLAST S APCHLAST=APCHLCOL,APCHICAR=APCHLCOI
  1. ;I APCHLBE>APCHLAST S APCHLAST=APCHLBE,APCHICAR=APCHLBEI
  1. I APCHLSIG]"" S APCHNUMD=APCHNUMD+1
  1. I APCHLCOL]"" S APCHNUMD=APCHNUMD+1
  1. ;I APCHLBE]"" S APCHNUMD=APCHNUMD+1
  1. SIGMOIDR ;
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D Q
  1. .S X=""
  1. .D SIGREF
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. I APCHNUMD=1 D Q
  1. .S APCHTEST=$S(APCHLSIG]"":"FLEXIBLE SIG",APCHLCOL]"":"COLONOSCOPY",1:"BARIUM ENEMA")
  1. .S APCHSINT=$S(APCHLSIG]"":(5*365),1:(10*365))
  1. .S APCHNEXT=$$FMADD^XLFDT(APCHLAST,APCHSINT)
  1. .I APCHNEXT>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT)
  1. .I APCHNEXT'>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT)
  1. .D SIGREF
  1. .D WRITE
  1. .X APCHSURX
  1. I APCHNUMD>1 D
  1. .S APCHSTEX(1)="CLINICAL DECISION"
  1. .D SIGREF
  1. .D WRITALL
  1. .X APCHSURX
  1. X APCHSURX
  1. Q
  1. ;
  1. SETR ;
  1. Q:APCHLSTR>$P(V,U,3)
  1. S APCHLSTR=$P(V,U,3)
  1. S APCHLSTR(1)=$P(V,U,1)
  1. S APCHLSTR(2)=$P(V,U,2)
  1. Q
  1. SIGREF ;
  1. S X="" K APCHLSTR S APCHLSTR=""
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.24,0)),APCHLAST) I V]"" D SETR
  1. ;I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",87.64,0)),APCHLAST) I V]"" D SETR
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.21,0)),APCHLAST) I V]"" D SETR
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.22,0)),APCHLAST) I V]"" D SETR
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.23,0)),APCHLAST) I V]"" D SETR
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.25,0)),APCHLAST) I V]"" D SETR
  1. I X="" S V=$$REF^APCHSMU(APCHSPAT,80.1,$O(^ICD0("BA",45.42,0)),APCHLAST) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP SIG CPTS",0))
  1. I APCHT S V=$$RADREF^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP BE CPTS",0))
  1. I APCHT S V=$$RADREF^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP COLO CPTS",0))
  1. I APCHT S V=$$RADREF^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP SIG CPTS",0))
  1. I APCHT S V=$$CPTREFT^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP BE CPTS",0))
  1. I APCHT S V=$$CPTREFT^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. S APCHT=$O(^ATXAX("B","BGP COLO CPTS",0))
  1. I APCHT S V=$$CPTREFT^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) I V]"" D SETR
  1. I APCHLSTR]"" S X=$G(APCHLSTR(1)) D S(X) S X=$G(APCHLSTR(2)) I X]"" D S(X)
  1. Q
  1. REF ;
  1. K APCHREF S APCHT=0 F S APCHT=$O(^ATXLAB(APCHTAXN,21,"B",APCHT)) Q:APCHT'=+APCHT D
  1. .S V=$$REF^APCHSMU(APCHSPAT,60,APCHT,APCHLAST) I V]"" S APCHREF(9999999-$P(V,U,3))=V
  1. I $D(APCHREF) S %=0,%=$O(APCHREF(%)) I % S V=APCHREF(%),X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. Q
  1. WRITALL ;
  1. I $G(APCHSGHR) D Q
  1. .S X="FLEXIBLE SIG"_U_APCHLSIG_U_$$DATE^APCHSMU(APCHLSIG)_U_"CLINICAL DISCRETION"_U_U_$P(APCHLSIC,U,4,99)
  1. .S APCHSGHR(1)=X
  1. .S X="COLONOSCOPY"_U_APCHLCOL_U_$$DATE^APCHSMU(APCHLCOL)_U_"CLINICAL DISCRETION"_U_U_$P(APCHLCOI,U,4,99)
  1. .S $P(APCHSGHR(1),"|",2)=X
  1. .;S X="BARIUM ENEMA"_U_APCHLBE_U_$$DATE^APCHSMU(APCHLBE)_U_"CLINICAL DISCRETION"_U_U_$P(APCHLBEI,U,4,99)
  1. .S $P(APCHSGHR(1),"|",3)=X
  1. I 'APCHSANY D FIRST^APCHSMU Q:$D(APCHSQIT) S APCHSANY=1,APCHSNGP=0
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. I APCHSNPG W ?26,"LAST",?38,"NEXT",! S APCHSCT=0
  1. W !,$P(^APCHSURV(APCHSITI,0),U)
  1. W !?5,"FLEXIBLE SIG",?26,$$DATE^APCHSMU(APCHLSIG)
  1. ;W ?36,APCHSTEX(1) F APCHSL=2:1 Q:'$D(APCHSTEX(APCHSL)) W !,?36,APCHSTEX(APCHSL)
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. I APCHSNPG W ?26,"LAST",?38,"NEXT" S APCHSCT=0
  1. W !?5,"COLONOSCOPY",?26,$$DATE^APCHSMU(APCHLCOL)
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. I APCHSNPG W ?26,"LAST",?38,"NEXT" S APCHSCT=0
  1. ;W !?5,"BARIUM ENEMA",?26,$$DATE^APCHSMU(APCHLBE)
  1. I $D(APCHSTEX) D
  1. .W ?36,APCHSTEX(1) F APCHSL=2:1 Q:'$D(APCHSTEX(APCHSL)) W !,?36,APCHSTEX(APCHSL)
  1. S APCHSCT=APCHSCT+1
  1. I '(APCHSCT#2) X APCHSCKP Q:$D(APCHSQIT) W:'APCHSNPG !
  1. K APCHSTEX Q
  1. WRITE ;EP - write out reminder
  1. I $G(APCHSGHR) D Q
  1. .NEW A,B
  1. .S B=APCHTEST_" "
  1. .S APCHSGHR(1)=$S($P(^APCHSURV(APCHSITI,0),U,4)]"":$P(^APCHSURV(APCHSITI,0),U,4),1:$P(^APCHSURV(APCHSITI,0),U))
  1. .S APCHSGHR(2)=$G(APCHLAST)
  1. .S APCHSGHR(3)=$$DATE^APCHSMU($G(APCHLAST))
  1. .S A=0 F S A=$O(APCHSTEX(A)) Q:A'=+A S B=B_" "_APCHSTEX(A)
  1. .S APCHSGHR(4)=B
  1. .S APCHSGHR(5)=$G(APCHNEXT)
  1. .S APCHSGHR(6)=$P($G(APCHICAR),U,4)
  1. .S APCHSGHR(7)=$P($G(APCHICAR),U,5)
  1. .S APCHSGHR(8)=$P($G(APCHICAR),U,6)
  1. I 'APCHSANY D FIRST^APCHSMU Q:$D(APCHSQIT) S APCHSANY=1,APCHSNPG=0
  1. X APCHSCKP Q:$D(APCHSQIT)
  1. I APCHSNPG W ?26,"LAST",?38,"NEXT",! S APCHSCT=0
  1. W !,$P(^APCHSURV(APCHSITI,0),U)
  1. W !?5,APCHTEST,?26,$$DATE^APCHSMU(APCHLAST)
  1. W ?36,APCHSTEX(1) F APCHSL=2:1 Q:'$D(APCHSTEX(APCHSL)) W !,?36,APCHSTEX(APCHSL)
  1. S APCHSCT=APCHSCT+1
  1. I '(APCHSCT#2) X APCHSCKP Q:$D(APCHSQIT) W:'APCHSNPG !
  1. K APCHSTEX Q
  1. ;
  1. FRA ;EP - fall risk assessment reminder
  1. ;yearly in 65 and older patients
  1. ;
  1. ;if this is turned off, quit
  1. NEW V,X,Y
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. ;get date of last FALL RISK
  1. S APCHICAR=$$LASTFRA^APCLAPI2(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. S APCHOVR=$$OVR^APCHSMU(APCHSPAT,APCHSITI)
  1. I $P(APCHOVR,U)>APCHLAST D Q
  1. .S X=$$DATE^APCHSMU($P(APCHOVR,U))_" (per "_$P(APCHOVR,U,2)_")" D S(X) S X=$P(APCHOVR,U,3) D S(X)
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","37",0)),APCHLAST) I V]"" S APCHLR=V
  1. .I APCHLR]"" S X=$P(APCHLR,U) D S(X) S X=$P(APCHLR,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. FALLREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .Q:APCHSAGE<65
  1. .S APCHSINT=365
  1. .S APCHMIN=65
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT) ;return in APCHSINT the frequency in days for this age/sex
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D Q
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","37",0)),APCHLAST) I V]"" S APCHLR=V
  1. .I APCHLR]"" S X=$P(APCHLR,U) D S(X) S X=$P(APCHLR,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. S APCHNEXT=$$FMADD^XLFDT(APCHLAST,APCHSINT)
  1. I APCHNEXT>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","37",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. I APCHNEXT'>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","37",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. Q
  1. ;
  1. EPSDT ;EP - EPSDT, copied from ANMC per Cimtac request
  1. ;if this is turned off, quit
  1. X APCHSURX
  1. NEW V,X,Y
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. ;get date of EPSDT CPT according to age of patient
  1. S APCHICAR=$$LASTEPS^APCLAPI3(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. S APCHOVR=$$OVR^APCHSMU(APCHSPAT,APCHSITI)
  1. I $P(APCHOVR,U)>APCHLAST D Q
  1. .S X=$$DATE^APCHSMU($P(APCHOVR,U))_" (per "_$P(APCHOVR,U,2)_")" D S(X) S X=$P(APCHOVR,U,3) D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. EPSREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .Q:APCHSAGE>20
  1. .S APCHSINT=365
  1. .S APCHMIN=0
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT) ;return in APCHSINT the frequency in days for this age/sex
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D Q
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. S APCHNEXT=$$FMADD^XLFDT(APCHLAST,APCHSINT)
  1. I APCHNEXT>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. I APCHNEXT'>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. Q
  1. DENTAL ;EP - DENTAL EXAM, yearly
  1. ;
  1. ;if this is turned off, quit
  1. NEW V,X,Y
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. ;get date of last FALL RISK
  1. S APCHICAR=$$LASTDENT^APCLAPI2(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. S APCHOVR=$$OVR^APCHSMU(APCHSPAT,APCHSITI)
  1. I $P(APCHOVR,U)>APCHLAST D Q
  1. .S X=$$DATE^APCHSMU($P(APCHOVR,U))_" (per "_$P(APCHOVR,U,2)_")" D S(X) S X=$P(APCHOVR,U,3) D S(X)
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","30",0)),APCHLAST) I V]"" S APCHLR=V
  1. .I APCHLR]"" S X=$P(APCHLR,U) D S(X) S X=$P(APCHLR,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. DENTREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .S APCHSINT=365
  1. .S APCHMIN=1
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT) ;return in APCHSINT the frequency in days for this age/sex
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D Q
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","30",0)),APCHLAST) I V]"" S APCHLR=V
  1. .I APCHLR]"" S X=$P(APCHLR,U) D S(X) S X=$P(APCHLR,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. S APCHNEXT=$$FMADD^XLFDT(APCHLAST,APCHSINT)
  1. I APCHNEXT>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","30",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. I APCHNEXT'>DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D Q
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","30",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. Q
  1. ;