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

APCHSM01.m

Go to the documentation of this file.
  1. APCHSM01 ; IHS/CMI/LAB -- CONTINUATION OF ROUTINES ;
  1. ;;2.0;IHS PCC SUITE;**2,7,11**;MAY 14, 2009;Build 58
  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. PNEU ;EP - pneumovax
  1. X APCHSURX
  1. S (APCHA,APCHR,APCHHR)="" ;ALASKA, RISK, HIGH RISK
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  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=65
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHSFLX=$S($$BI^APCHS11C:$O(^AUTTIMM("C",33,"")),1:$O(^AUTTIMM("C",19,""))),APCHIMMC=$S($$BI^APCHS11C:33,1:19)
  1. S APCHICAR=$$LASTPNEU^APCLAPI4(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. ;get all pneumovax in APCHPNEU=#^date^date^date^date^date
  1. K APCHPNEU,APCHY
  1. S %=APCHSPAT_"^ALL IMMUNIZATION "_APCHIMMC,E=$$START1^APCLDF(%,"APCHY(")
  1. S APCHPNEU="",(X,C)=0 F S X=$O(APCHY(X)) Q:X'=+X S C=C+1,$P(APCHPNEU,U,(C+1))=$P(APCHY(X),U)
  1. I C S $P(APCHPNEU,U,1)=C
  1. K APCHY
  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 V="" F APCHSC=33,100,109 Q:V]"" S APCHSFLX=$O(^AUTTIMM("C",APCHSC,0)) D
  1. ..S V=$$LPNREF(APCHSPAT,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 'APCHSCRI D PNEUIHS Q
  1. PNEUREG ;
  1. I APCHSINT="" X APCHSURX Q ;no frequency so skip it
  1. I APCHLAST="" S APCHSTEX(1)=$$DATEAGE^APCHSMU(APCHSPAT,APCHMIN) D Q
  1. .S V="" F APCHSC=33,100,109 Q:V]"" S APCHSFLX=$O(^AUTTIMM("C",APCHSC,0)) D
  1. ..S V=$$LPNREF(APCHSPAT,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. 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. S V="" F APCHSC=33,100,109 Q:V]"" S APCHSFLX=$O(^AUTTIMM("C",APCHSC,0)) D
  1. .S V=$$LPNREF(APCHSPAT,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. ;
  1. PNEUIHS ;should this patient have pneumo reminder?
  1. I APCHSAGE<5 X APCHSURX Q
  1. NEW A S A=0 I $G(DUZ(2)) S A=$S($E($P(^AUTTLOC(DUZ(2),0),U,10))=3:1,1:0)
  1. I A D A Q ;if alaska do alaska logic
  1. S APCHR=$$PLTAX^APCHSMU(APCHSPAT,"SURVEILLANCE PNEUMOCOCCAL RISK")
  1. S APCHHR=$$PLTAX^APCHSMU(APCHSPAT,"APCH PNEUMOVAX REVAX")
  1. I APCHSAGE<65 D X APCHSURX Q
  1. .I 'APCHR Q ;not high risk, no prompt
  1. .S D=$$DATEAGE^APCHSMU(APCHSPAT,5)
  1. .I APCHPNEU="" S APCHSTEX(1)=$$DATE^APCHSMU(D),APCHNEXT="" D D WRITE^APCHSMU Q
  1. ..S V=$$LPNREF(APCHSPAT,APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) D S(X)
  1. .I APCHPNEU]"" D REVAX
  1. .Q
  1. I APCHSAGE>64 D X APCHSURX Q
  1. .I APCHPNEU="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,65)),APCHNEXT="" D D WRITE^APCHSMU Q
  1. ..S V=$$LPNREF(APCHSPAT,APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) D S(X)
  1. .D REVAX
  1. Q
  1. REVAX ;
  1. I APCHSAGE<5 Q
  1. I APCHSAGE>4&(APCHSAGE<11) D X APCHSURX Q
  1. .I 'APCHHR Q ;not on high risk
  1. .I APCHPNEU="" S APCHNEXT="",APCHSTEX(1)="REVACCINATION MAY BE DUE NOW" D WRITE^APCHSMU Q
  1. .I $P(APCHPNEU,U)>1 Q ;more than 1
  1. .S %=$P(APCHPNEU,U,2),%=$$FMDIFF^XLFDT(DT,%),%=%/365
  1. .I $E(%,1)>2 S APCHNEXT="",APCHSTEX(1)="REVACCINATION MAY BE DUE NOW"
  1. .S %=$$FMADD^XLFDT($P(APCHPNEU,U,2),(3*365))
  1. .S A=$$FMDIFF^XLFDT(%,APCHSDOB),A=A\365.25
  1. .I A<11 S APCHNEXT=%,APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D WRITE^APCHSMU Q
  1. .S APCHNEXT=$$FMADD^XLFDT(%,(2*365)),APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D WRITE^APCHSMU
  1. .Q
  1. I APCHSAGE<65 D X APCHSURX Q
  1. .I 'APCHHR Q
  1. .I APCHPNEU="" S APCHSTEX(1)=$$DATE^APCHSMU(DT) D WRITE^APCHSMU Q
  1. .I $P(APCHPNEU,U)>1 Q
  1. .S %=$P(APCHPNEU,U,2),%=$$FMDIFF^XLFDT(DT,%),%=%/365.25
  1. .I %>5 S APCHSTEX(1)="REVACCINATION MAY BE DUE NOW" D WRITE^APCHSMU Q
  1. .S APCHNEXT=$$FMADD^XLFDT($P(APCHPNEU,U,2),(5*365)),APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D WRITE^APCHSMU Q
  1. .Q
  1. I APCHPNEU="" S APCHSTEX(1)="REVACCINATION MAY BE DUE NOW" D WRITE^APCHSMU X APCHSURX Q
  1. I $P(APCHPNEU,U)>1 X APCHSURX Q
  1. I ($$FMDIFF^XLFDT($P(APCHPNEU,U,2),APCHSDOB)/365)>65 X APCHSURX Q
  1. I ($$FMDIFF^XLFDT(DT,$P(APCHPNEU,U,2))\365)>4 S APCHSTEX(1)="REVACCINATION MAY BE DUE NOW" D WRITE^APCHSMU X APCHSURX Q
  1. S APCHNEXT=$$FMADD^XLFDT($P(APCHPNEU,U,2),(5*365)) S APCHSTEX(1)=$$DATE^APCHSMU(APCHNEXT) D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. A ;
  1. I A,APCHSAGE>54 S APCHSINT=(5*365) D PNEUREG Q ;alaska all over 54 do twice 5 years apart
  1. I A,APCHR S APCHSINT=(5*365) D PNEUREG Q ;alaska all at risk do twice
  1. Q
  1. BRSTREF ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","06",0)),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. NEW APCHC
  1. D BLDTAX^ATXAPI("APCH BREAST EXAM PROCS","APCHC",$O(^ATXAX("B","APCH BREAST EXAM PROCS",0)))
  1. S V=""
  1. S APCHC="" F S APCHC=$O(APCHC(APCHC)) Q:APCHC=""!(V]"") D
  1. .S V=$$REF^APCHSMU(APCHSPAT,80.1,APCHC,APCHLAST) I V]"" S X=$P(V,U,1) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. S V=$$REF^APCHSMU(APCHSPAT,81,+$$CODEN^ICPTCOD("G0101"),APCHLAST) I V]"" S X=$P(V,U) D S(X) S X=$P(V,U,2) I X]"" D S(X)
  1. Q
  1. BRSTWT ;
  1. D BRSTREF
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. BRST ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. NEW APCHMIN
  1. Q:APCHSEX'="F"
  1. S (APCHLAST,APCHNEXT,APCHWHL,APCHWHN,APCHSWHR,APCHWHI)="" K APCHSTEX,APCHX
  1. S APCHICAR=$$LASTBRST^APCLAPI3(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U)
  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 BRSTWT
  1. BRSTREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .Q:APCHSAGE<20
  1. .S APCHSINT=365
  1. .S APCHMIN=20
  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 BRSTWT
  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 BRSTWT
  1. Q
  1. PELVWT ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","15",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. PELV ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. Q:APCHSEX'="F"
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTPELV^APCLAPI2(APCHSPAT,APCHSDOB,DT,"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 PELVWT
  1. PELVREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI),APCHMIN=$$MINAGE^APCHSMU(APCHSITI,APCHSPAT)
  1. I 'APCHSCRI D
  1. .Q:APCHSAGE<18
  1. .S APCHSINT=365
  1. .S APCHMIN=18
  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 PELVWT 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 PELVWT
  1. Q
  1. PHYSWT ;
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. PHYS ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTPHYS^APCLAPI2(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. PHYSREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI S APCHSINT=365,APCHMIN=18
  1. I 'APCHSCRI Q:APCHSAGE<18
  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 PHYSWT 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 PHYSWT
  1. Q
  1. RECTWT ;
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.15,$O(^AUTTEXAM("C","14",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. RECT ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S (APCHLAST,APCHNEXT,APCHICAR)="" K APCHSTEX
  1. S APCHICAR=$$LASTRECT^APCLAPI2(APCHSPAT,$$DOB^AUPNPAT(APCHSPAT),DT,"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 RECTWT
  1. .Q
  1. RECTREG ;regular stuff
  1. S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI,APCHSAGE>39 S APCHSINT=365,APCHMIN=40
  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 RECTWT 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 RECTWT
  1. Q
  1. LPNREF(P,D) ;get last pneumovax refusal
  1. NEW X,N,C,D,V,L
  1. I $G(D)="" S D=""
  1. S T=$G(T)
  1. S V="",L=""
  1. F Z=33,100,109 D CHK
  1. I L="" Q L
  1. S N=$P(L,U,2)
  1. S C=$P(L,U,3)
  1. S L=$P(L,U)
  1. I D]"",L<D Q "" ;REFUSED BEFORE DATE OF THE LAST
  1. I T="I" Q Y ;quit on internal form of date
  1. Q $$TYPEREF(N)_$E($$VAL^XBDIQ1(9999999.14,C,.01),1,(44-$L($$TYPEREF(N))))_"^on "_$$FMTE^XLFDT(L)_"^"_L
  1. Q V
  1. CHK ;
  1. S C=$O(^AUTTIMM("C",Z,0))
  1. Q:'C
  1. S X=$O(^AUPNPREF("AA",APCHSPAT,9999999.14,C,0))
  1. Q:'X
  1. S N=$O(^AUPNPREF("AA",APCHSPAT,9999999.14,C,X,0))
  1. S Y=9999999-X
  1. I D]"",Y<D Q
  1. I $P(L,U)]"",Y>$P(L,U) S L=Y_U_N_U_C Q
  1. I L="" S L=Y_U_N_U_C
  1. Q
  1. TYPEREF(N) ;EP
  1. NEW % S %=$P(^AUPNPREF(N,0),U,7)
  1. I %="R"!(%="") Q "Patient Declined "
  1. I %="N" Q "Not Medically Indicated "
  1. I %="F" Q "No Response to F/U "
  1. I %="U" Q "Unable to Screen "
  1. Q $$VAL^XBDIQ1(9000022,N,.07)
  1. ;