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

APCHSM08.m

Go to the documentation of this file.
  1. APCHSM08 ; IHS/CMI/LAB -- CONTINUATION OF ROUTINES ;
  1. ;;2.0;IHS PCC SUITE;**2,8,11,16**;MAY 14, 2009;Build 9
  1. ;
  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. DSSWT ;
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. DSS ;EP - depression screen score
  1. ;this logic is specific to ANMC and is not IHS standard
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. Q:$$AGE^AUPNPAT(APCHSPAT)<18 ;18 years and older only
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. ;check to see if any in past 365 days is 10 or over
  1. S APCHSPOS=$$POS(APCHSPAT)
  1. I APCHLAST="" S APCHLAST=$$LASTHF^APCHSMU(APCHSPAT,"MENTAL HEALTH"),APCHLAS1=$$LASTHF^APCHSMU(APCHSPAT,"MENTAL HEALTH","S")
  1. I 'APCHSPOS S APCHSINT=$S(APCHLAS1>9:28,APCHLAS1="":0,1:365)
  1. I APCHSPOS S APCHSINT=$S(APCHLAS1>5:28,APCHLAS1="":0,1:365)
  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. DSSREG ;regular stuff
  1. ;S APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI) ;not site definable
  1. ;S APCHSINT=""
  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)="MAY BE DUE NOW" D DSSWT 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)="MAY BE DUE NOW (WAS DUE "_$$DATE^APCHSMU(APCHNEXT)_")"
  1. D DSSWT
  1. Q
  1. POS(P) ;is any DSS over 10 in past 365 days?
  1. I '$G(P) Q ""
  1. S C=$O(^AUTTHF("B","MENTAL HEALTH",0)) ;ien of category passed
  1. I '$G(C) Q ""
  1. NEW H,D,O,S,G,A S H=0,(S,G)="" K O
  1. S A=$$FMADD^XLFDT(DT,-365)
  1. F S H=$O(^AUTTHF("AC",C,H)) Q:H'=+H!(G) D
  1. . Q:'$D(^AUPNVHF("AA",P,H))
  1. . S D=0 F S D=$O(^AUPNVHF("AA",P,H,D)) Q:D'=+D!(G) D
  1. .. Q:(9999999-D)<A ;before 365 days
  1. .. S I=0 F S I=$O(^AUPNVHF("AA",P,H,D,I)) Q:I'=+I!(G) D
  1. ... Q:$P(^AUPNVHF(I,0),U,6)<10
  1. ... S G=1
  1. .. Q
  1. . Q
  1. Q G
  1. ;
  1. MMR1D(P) ;
  1. I $$AGE^AUPNPAT(P)<18 Q 0 ;no one under 18
  1. I $$SEX^AUPNPAT(P)="F",$$AGE^AUPNPAT(P)<50 Q 1
  1. I $E($$DOB^AUPNPAT(P),1,3)<257 Q 0
  1. Q 1
  1. ;
  1. MMR1 ;EP - mmr one dose version
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTMMR^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. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",3,0)),APCHLAST) I V]"" S APCHLR=V
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",94,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) 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 APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .Q:'$$MMR1D(APCHSPAT)
  1. .S APCHSINT=9999999
  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]"",APCHLAST'<$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365) Q ;had one so skip this prompt
  1. S APCHSTEX(1)="MAY BE DUE FOR MMR VACCINATION" D Q
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",3,0)),APCHLAST) I V]"" S APCHLR=V
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",94,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) 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. Q
  1. MMR2 ;EP - mmr two dose version
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTMMR^APCLAPI3(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. ;get all MMR in APCHMMR=#^date^date^date^date^date
  1. K APCHMMR,APCHY
  1. S %=APCHSPAT_"^ALL IMMUNIZATION 3;DURING "_$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365)_"-"_DT,E=$$START1^APCLDF(%,"APCHY(") ;get all MMR's from 1yr old to today
  1. ;REORDER THEM BY DATE
  1. S X=0 F S X=$O(APCHY(X)) Q:X'=+X S APCHMMR($P(APCHY(X),U))=""
  1. K APCHY
  1. S %=APCHSPAT_"^ALL IMMUNIZATION 94;DURING "_$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365)_"-"_DT,E=$$START1^APCLDF(%,"APCHY(") ;get all MMRV's from 1yr old to today
  1. ;REORDER THEM BY DATE
  1. S X=0 F S X=$O(APCHY(X)) Q:X'=+X S APCHMMR($P(APCHY(X),U))=""
  1. K APCHY
  1. S %=APCHSPAT_"^ALL DX [BGP MMR IZ DXS;DURING "_$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365)_"-"_DT,E=$$START1^APCLDF(%,"APCHY(") ;get all MMRV's from 1yr old to today
  1. ;REORDER THEM BY DATE
  1. S X=0 F S X=$O(APCHY(X)) Q:X'=+X S APCHMMR($P(APCHY(X),U))=""
  1. K APCHY
  1. S %=APCHSPAT_"^ALL PROC [BGP MMR IZ PROCS;DURING "_$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365)_"-"_DT,E=$$START1^APCLDF(%,"APCHY(") ;get all MMRV's from 1yr old to today
  1. ;REORDER THEM BY DATE
  1. S X=0 F S X=$O(APCHY(X)) Q:X'=+X S APCHMMR($P(APCHY(X),U))=""
  1. K APCHY
  1. NEW T1,T2,C
  1. S T1=+$$CODEN^ICPTCOD(90707),T2=+$$CODEN^ICPTCOD(90710),C=0
  1. I T1,$D(^AUPNVCPT("AA",APCHSPAT,T1)) S %="" D I %]"" Q %
  1. .S E=0 F S E=$O(^AUPNVCPT("AA",APCHSPAT,T1,E)) Q:E'=+E D
  1. ..S D=9999999-E
  1. ..S C=C+1,APCHY(C)=D
  1. ..Q
  1. .Q
  1. I T2,$D(^AUPNVCPT("AA",APCHSPAT,T2)) S %="" D I %]"" Q %
  1. .S E=0 F S E=$O(^AUPNVCPT("AA",APCHSPAT,T2,E)) Q:E'=+E D
  1. ..S D=9999999-E
  1. ..S C=C+1,APCHY(C)=D
  1. ..Q
  1. .Q
  1. S X=0 F S X=$O(APCHY(X)) Q:X'=+X S APCHMMR($P(APCHY(X),U))=""
  1. K APCHY
  1. ;
  1. ;now check to see if 1 or 2 in appropriate intervals
  1. ;apchya1y - the one after 1 yr
  1. ;apchya1m - the one after 1 yr and at least 1 month after that 1
  1. K APCHYA1Y,APCHYA1M
  1. S D=0 F S D=$O(APCHMMR(D)) Q:D'=+D D
  1. .I '$D(APCHYA1Y) S APCHYA1Y=D K APCHMMR(D) Q
  1. .I $$FMDIFF^XLFDT(D,APCHYA1Y)>30 S APCHYA1M=1 K APCHMMR(D)
  1. .Q
  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.14,$O(^AUTTIMM("C",3,0)),APCHLAST) I V]"" S APCHLR=V
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",94,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) 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 APCHSINT="",APCHSCRI=$$SITECRIT^APCHSMU(APCHSITI)
  1. I 'APCHSCRI D
  1. .Q:'$$MMR1D(APCHSPAT)
  1. .S APCHSINT=9999999
  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 $D(APCHYA1M) X APCHSURX Q ;had both so skip prompt
  1. I '$D(APCHYA1Y) S APCHSTEX(1)="MAY BE DUE FOR MMR #1 VACCINATION" D Q ;if never had one
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",3,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. S APCHSTEX(1)="MAY BE DUE FOR MMR #2 VACCINATION" D
  1. .S APCHLR=""
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",3,0)),APCHLAST) I V]"" S APCHLR=V
  1. .S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",94,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) 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. Q
  1. RUB ;EP
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. S APCHICAR=$$LASTRUB^APCLAPI3(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. I APCHLAST]"",APCHLAST<$$FMADD^XLFDT($$DOB^AUPNPAT(APCHSPAT),365) S APCHLAST=""
  1. Q:'$$MMR1D(APCHSPAT)
  1. Q:APCHLAST]""
  1. S APCHSINT=9999999
  1. S APCHRIHF=$$LASTHF^APCHSMU(APCHSPAT,"RUBELLA IMMUNITY STATUS","N")
  1. I APCHRIHF="IMMUNE" X APCHSURX Q ;do not display prompt if hf is immune
  1. ;check imm package for Immune status
  1. I $$RUBIMM(APCHSPAT,6,DT) X APCHSURX Q ;immune for rubella
  1. D GETTPT^APCHSTP(APCHSITI,APCHCOLW,.APCHSTEX,APCHLAST,APCHRIHF)
  1. D WRITETP^APCHSTP
  1. Q
  1. RUBIMM(P,C,ED) ;EP - ANApHYLAXIS/NEOMYCIN/IMMUNE CONTRAINDICATION
  1. NEW X
  1. S X=0,G="",Y=$O(^AUTTIMM("C",C,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
  1. .S R=$P(^BIPC(X,0),U,3)
  1. .Q:R=""
  1. .Q:'$D(^BICONT(R,0))
  1. .S D=$P(^BIPC(X,0),U,4)
  1. .Q:D=""
  1. .;Q:$P(^BIPC(X,0),U,4)<BD
  1. .Q:$P(^BIPC(X,0),U,4)>ED
  1. .I $P(^BICONT(R,0),U,1)="Immune" S G=D_U_"Immune"
  1. Q G
  1. RUBWT ;
  1. S APCHLR=""
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",3,0)),APCHLAST) I V]"" S APCHLR=V
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",4,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) S APCHLR=V
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",6,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) S APCHLR=V
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",38,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) S APCHLR=V
  1. S V=$$REF^APCHSMU(APCHSPAT,9999999.14,$O(^AUTTIMM("C",94,0)),APCHLAST) I V]"",$P(V,U,3)]$P(APCHLR,U,3) 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. 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. NEWBORNH ;
  1. Q:'$$INAC^APCHSMU(APCHSITI) ;is item turned on or off
  1. S APCHLAST="",APCHNEXT="" K APCHSTEX
  1. Q:$$PLTAX^APCHSMU(APCHSPAT,"APCH HEARING LOSS DXS") ;hearing loss on problem list
  1. S D=$$DATEAGE^APCHSMU(APCHSPAT,1)
  1. I DT>$$FMADD^XLFDT(D,-1) Q ;last day before 1st birthday
  1. S APCHICAR=$$LASTNBHS^APCLAPI5(APCHSPAT,,,"A")
  1. S APCHLAST=$P(APCHICAR,U,1)
  1. I APCHLAST]"" Q ;had one and only need one
  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=1,APCHMIN=0
  1. I APCHLAST="" S APCHSTEX(1)=$$DATE^APCHSMU($$DATEAGE^APCHSMU(APCHSPAT,APCHMIN)) D HEARWT Q
  1. Q