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

APCHSM05.m

Go to the documentation of this file.
  1. APCHSM05 ; IHS/CMI/LAB -- CONTINUATION OF ROUTINES ;
  1. ;;2.0;IHS PCC SUITE;**2,7**;MAY 14, 2009
  1. ;IHS/CMI/LAB - uncommented age limit on pap smear
  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. HEARWT ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","17",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","23",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","24",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. ;S V=$$REF^APCHSMU(APCHSPAT,81,+$$CODEN^ICPTCOD(92552),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. ;S V=$$REF^APCHSMU(APCHSPAT,81,+$$CODEN^ICPTCOD(92553),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. ;S V=$$REF^APCHSMU(APCHSPAT,81,+$$CODEN^ICPTCOD(92555),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. ;S V=$$REF^APCHSMU(APCHSPAT,81,+$$CODEN^ICPTCOD(92556),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. S APCHT=$O(^ATXAX("B","APCH HEARING SCREEN CPTS",0))
  1. I APCHT S V=$$CPTREFT^APCHSMU2(APCHSPAT,APCHLAST,DT,APCHT) 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. HEAR ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTHEAR^APCLAPI3(APCHSPAT,$$DATEAGE^APCHSMU(APCHSPAT,3),,"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 HEARWT
  1. .Q
  1. HEARREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE<7 S APCHSINT=365,APCHMIN=3
  1. I 'APCHSCRI Q:APCHSAGE<3
  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 HEARWT Q
  1. S APCHSOLD=$$FMDIFF^XLFDT(APCHLAST,APCHSDOB)
  1. I 'APCHSCRI,APCHSAGE>2,APCHSOLD<(3*365) S APCHSTEX(1)=$$DATE^APCHSMU($$FMADD^XLFDT(APCHSDOB,(4*365))) D HEARWT Q
  1. I APCHLAST]"" X APCHSURX Q ;had one in appropriate time so quit
  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 HEARWT
  1. Q
  1. STRAB ;EP
  1. X APCHSURX
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT)
  1. I 'APCHSCRI D
  1. .Q:APCHSAGE<3
  1. .Q:APCHSAGE>4
  1. .S APCHSINT=(2*365)
  1. .S APCHMIN=3
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. S APCHSTEX(1)="Consider checking for Strabismus" D Q
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. Q
  1. ;
  1. WT ;EP - height
  1. X APCHSURX
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTITEM^APCLAPIU(APCHSPAT,"WT","MEASUREMENT",,,"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 PRWT
  1. WTREG ;
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT)
  1. I 'APCHSCRI S APCHSINT=365,APCHMIN=0
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. I 'APCHSCRI D IHSWT Q
  1. WTREG1 ;
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D PRWT Q
  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 PRWT
  1. Q
  1. ;
  1. IHSWT ;use IHS default criteria
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D PRWT Q ;never had one recorded so due on DOB
  1. I APCHSAGE>1 S APCHSINT=365 D WTREG1 Q
  1. ;calculate next date due
  1. S APCHDAYS=$$FMDIFF^XLFDT(DT,APCHSDOB)
  1. I APCHDAYS>0,APCHDAYS<(2*30.5) S APCHSTEX(1)=$$DATE^APCHSMU($$FMADD^XLFDT(APCHSDOB,(2*30.5))) D PRWT Q
  1. I APCHDAYS'<(2*30.5),APCHDAYS<(4*30.5) S APCHNEXT=$$FMADD^XLFDT(APCHSDOB,(4*30.5)),APCHLDUE=$$FMADD^XLFDT(APCHSDOB,(2*30.5)) D WTT Q
  1. I APCHDAYS'<(4*30.5),APCHDAYS<(6*30.5) S APCHNEXT=$$FMADD^XLFDT(APCHSDOB,(6*30.5)),APCHLDUE=$$FMADD^XLFDT(APCHSDOB,(4*30.5)) D WTT Q
  1. I APCHDAYS'<(6*30.5),APCHDAYS<365 S APCHNEXT=$$FMADD^XLFDT(APCHSDOB,365),APCHLDUE=$$FMADD^XLFDT(APCHSDOB,(6*30.5)) D WTT Q
  1. I APCHDAYS'<365,APCHDAYS<(18*30.5) S APCHNEXT=$$FMADD^XLFDT(APCHSDOB,(18*30.5)),APCHLDUE=$$FMADD^XLFDT(APCHSDOB,365) D WTT Q
  1. S APCHNEXT=$$FMADD^XLFDT(APCHSDOB,(2*365)),APCHLDUE=$$FMADD^XLFDT(APCHSDOB,(18*30.5)) D WTT Q
  1. Q
  1. WTT ;
  1. I APCHLDUE>APCHLAST S APCHSTEX(1)=$$DATE^APCHSMU(APCHLDUE) D PRWT Q
  1. I APCHNEXT<DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D PRWT Q
  1. I APCHNEXT'<DT S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D PRWT Q
  1. Q
  1. PRWT ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.07,$O(^AUTTMSR("B","WT",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 X APCHSURX
  1. Q
  1. ;
  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. URIN ;
  1. X APCHSURX
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE<13 S APCHSINT=365,APCHMIN=5
  1. I 'APCHSCRI Q:APCHSAGE<5
  1. I APCHSCRI S APCHSINT=$$AGESEX^APCHSMU(APCHSITI,APCHSPAT),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT)
  1. S APCHLAST="",APCHNEXT="",APCHICAR="" K APCHSTEX
  1. S APCHTAXN=$O(^ATXLAB("B","DM AUDIT URINALYSIS TAX",0))
  1. I APCHSINT,APCHTAXN="" S APCHSTEX(1)="DM AUDIT URINALYSIS TAX Taxonomy Missing" D WRITE^APCHSMU X APCHSURX Q
  1. S APCHICAR=$$LASTLAB^APCLAPIU(APCHSPAT,,,,$O(^ATXLAB("B","DM AUDIT URINALYSIS TAX",0)),,$O(^ATXAX("B","DM AUDIT URINALYSIS LOINC",0)),"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 REF
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. URINREG ;regular stuff
  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 REF
  1. .D WRITE^APCHSMU
  1. .X APCHSURX
  1. .Q
  1. S APCHSOLD=$$FMDIFF^XLFDT(APCHLAST,APCHSDOB)
  1. I 'APCHSCRI,APCHSAGE>3,APCHSOLD<(3*365) S APCHSTEX(1)=$$DATE^APCHSMU($$FMADD^XLFDT(APCHSDOB,(5*365))) D REF,WRITE^APCHSMU X APCHSURX Q
  1. I 'APCHSCRI,APCHSAGE>3,APCHSOLD>(3*365) X APCHSURX Q
  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 REF
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. ;
  1. VISIWT ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","19",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. VISI ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTVAE^APCLAPI1(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. VISIREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE>64 S APCHSINT=(2*365),APCHMIN=64
  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 VISIWT Q
  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 VISIWT
  1. Q
  1. DOMVWT ;
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. DOMV ;EP - domestic violence
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHLAST=$$LASTHF^APCHSMU(APCHSPAT,"DOMESTIC VIOLENCE")
  1. DOMVREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE>14 S APCHSINT=365
  1. I APCHSCRI S APCHSINT=$$AGESEX^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 DOMVWT Q
  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 DOMVWT
  1. Q
  1. IPVWT ;
  1. K APCHV
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","34",0)),APCHLAST)
  1. I V]"" S X=$P(V,U,3) S APCHV((9999999-X))=$P(V,U,1,2)
  1. ;now look at AMHREC field
  1. S APCHC=0,V=""
  1. S E=9999999-APCHLAST,D=9999999-DT-1_".99" F S D=$O(^AMHREC("AE",APCHSPAT,D)) Q:D'=+D!($P(D,".")>E) S V=0 F S V=$O(^AMHREC("AE",APCHSPAT,D,V)) Q:V'=+V D
  1. .S X=$P($G(^AMHREC(V,14)),U)
  1. .I X="" Q ;no test
  1. .I $E(X)="U" S APCHV(D)="Unable to Screen INT PARTNER VIOLENCE SCREEN",$P(APCHV(D),U,2)="on "_$$FMTE^XLFDT((9999999-$P(D,".")))
  1. .I X="REF" S APCHV(D)="Patient Declined INT PARTNER VIOLENCE SCREEN ",$P(APCHV(D),U,2)="on "_$$FMTE^XLFDT((9999999-$P(D,".")))
  1. .Q
  1. I $O(APCHV(0)) S Y=$O(APCHV(0)) S Z=9999999-Y I Z>APCHLAST S X=$P(APCHV(Y),U) D S(X) S X=$P(APCHV(Y),U,2) I X]"" D S(X)
  1. IPVWT1 ;
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. IPV ;EP
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTIPVS^APCLAPI(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. IPVREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE>14,$P(^DPT(APCHSPAT,0),U,2)="F" S APCHSINT=365,APCHMIN=15
  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 IPVWT Q
  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 IPVWT
  1. Q
  1. LASTIPV(P) ;
  1. ;look for exams and bh
  1. NEW APCHG,%,APCHX,APCHC,APCHV
  1. K APCHG,APCHX S %=P_"^LAST EXAM 34",E=$$START1^APCLDF(%,"APCHG(")
  1. I $D(APCHG(1)) S APCHX(9999999-$P(APCHG(1),U))=""
  1. ;now look at AMHREC field
  1. S APCHC=0,APCHV=""
  1. S E=0,D=9999999-DT-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!(APCHC) S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(APCHC) D
  1. .S X=$P($G(^AMHREC(V,14)),U)
  1. .I X="" Q ;no test
  1. .I $E(X)="U" Q ;don't count refusal here
  1. .I X="REF" Q
  1. .S APCHC=APCHC+1,APCHX($P(D,"."))=""
  1. I $O(APCHX(0)) Q (9999999-$O(APCHX(0)))
  1. Q ""