BGP8PC62 ; IHS/CMI/LAB - measure I2 ; 02 Feb 2018 11:25 AM
;;18.1;IHS CLINICAL REPORTING;**1**;MAY 25, 2018;Build 65
;
MMR(P) ;
NEW A730,X,Y,Z,TCVX,TCPT,C,BGPIMMS,D,V,BGPZ
S TCVX=$O(^ATXAX("B","BGP IPC MMR CVX CODES",0))
S TCPT=$O(^ATXAX("B","BGP IPC MMR CPT CODES",0))
S A730=$$FMADD^XLFDT($$DOB^AUPNPAT(P),730)
S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
.Q:'$D(^AUPNVIMM(X,0)) ;happens
.S Y=$P(^AUPNVIMM(X,0),U)
.Q:'Y ;happens too
.S I=$P($G(^AUTTIMM(Y,0)),U,3) ;get HL7/CVX code
.Q:'$D(^ATXAX(TCVX,21,"B",I))
.S D=$P($P($G(^AUPNVIMM(X,12)),U,1),".")
.I D="" S V=$P(^AUPNVIMM(X,0),U,3) I V S D=$P($P($G(^AUPNVSIT(V,0)),U),".")
.Q:D>A730
.S BGPIMMS(D)=Y
.Q
;go through and set into array if 1 days apart
S X="",Y="",C=0 F S X=$O(BGPIMMS(X)) Q:X'=+X S C=C+1 D
.I C=1 S Y=X Q
.I $$FMDIFF^XLFDT(X,Y)<1 K BGPIMMS(X) Q
.S Y=X
;see if there are 1 of them, if there are quit
S BGPIMMS=0,X=0 F S X=$O(BGPIMMS(X)) Q:X'=+X S BGPIMMS=BGPIMMS+1
I BGPIMMS>0 Q 1_U_"1 MMR"
;now get cpts
S G="",X=0
F S X=$O(^AUPNVCPT("AC",P,X)) Q:X="" D
.Q:'$D(^AUPNVCPT(X,0))
.S Y=$P(^AUPNVCPT(X,0),U)
.Q:'$$ICD^BGP8UTL2(Y,TCPT,1)
.S V=$P(^AUPNVCPT(X,0),U,3) Q:'V
.S D=$$VD^APCLV(V)
.Q:D>A730
.S BGPIMMS(D)=""
;get tran codes
S X=0 F S X=$O(^AUPNVTC("AC",P,X)) Q:X'=+X D
.Q:'$D(^AUPNVTC(X,0))
.S Y=$P(^AUPNVTC(X,0),U,7) Q:'Y
.Q:'$$ICD^BGP8UTL2(Y,TCPT,1)
.S V=$P(^AUPNVTC(X,0),U,3) Q:'V
.S D=$$VD^APCLV(V)
.Q:D>A730
.S BGPIMMS(D)=""
;
;go through and set into array if 1 days apart
S X="",Y="",C=0 F S X=$O(BGPIMMS(X)) Q:X'=+X S C=C+1 D
.I C=1 S Y=X Q
.I $$FMDIFF^XLFDT(X,Y)<1 K BGPIMMS(X) Q
.S Y=X
;see if there are 3 of them, if there are quit
S BGPIMMS=0,X=0 F S X=$O(BGPIMMS(X)) Q:X'=+X S BGPIMMS=BGPIMMS+1
I BGPIMMS>0 Q 1_U_"1 MMR"
;NOW CHECK FOR CONTRAINDICATION
;IMM PKG ANAPHYLACTIS
S BGPZ=0
F S BGPZ=$O(^ATXAX(TCVX,21,"B",BGPZ)) Q:BGPZ=""!(X]"") D
.S X=$$ANNECONT(P,BGPZ,A730)
I X]"" Q 1_U_"MMR CONTRA ANAPHYLACTIC/NEOMYCIN"
S X=$$ANSNMMR(P,A730) I X Q 1_U_"MMR CONTRA ANAPHYLACTIC REACTION"
S X=$$DIS^BGP8PC65(P,A730) I X Q 1_U_"MMR CONTRA DIS IMMUNE SYS"
S X=$$HIV^BGP8PC65(P,A730) I X Q 1_U_"MMR CONTRA HIV"
S X=$$MNLHT^BGP8PC65(P,A730) I X Q 1_U_"MMR CONTRA NEOPLASM"
S X=$$EVIDMMR(P,A730) I X Q 1_U_"EVIDENCE OF M/M/R"
Q ""
ANSNMMR(P,EDATE) ;
;V POV OR PROBLEM LIST
NEW X,Y,Z,G,T,S,D,I
S (X,Y,I)=0
F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) D
.Q:'$D(^AUPNPROB(X,0))
.Q:$P(^AUPNPROB(X,0),U,12)="D"
.I $P(^AUPNPROB(X,0),U,13),$P(^AUPNPROB(X,0),U,13)>EDATE Q ;if there is a doo and it is after report period skip
.I $P(^AUPNPROB(X,0),U,13)="",$P(^AUPNPROB(X,0),U,8)>EDATE Q ;entered after report period, skip
.S S=$$VAL^XBDIQ1(9000011,X,80001)
.I S=292927007 S I=1 Q
.Q
I I Q I
;NOW V POV SNOMED
;NOW SNOMED USING ASNC
S G="",I=""
S S="" F S S=$O(^AUPNVPOV("ASNC",P,S)) Q:S=""!(G) D
.S I=0
.I S=292927007 S I=1
.Q:'I
.S D=0 F S D=$O(^AUPNVPOV("ASNC",P,S,D)) Q:D=""!(G) D
..S Y=9999999-D
..Q:Y>EDATE
..S G=1
I G Q G
;REFUSAL FILE
S I="" F S I=$O(^AUPNPREF("AA",P,9002318.4,I)) Q:I=""!(G) D
.I I'=292927007 Q ;IF IT'S SNOMED, MUST BE THAT ONE
.S ID=0 F S ID=$O(^AUPNPREF("AA",P,9002318.4,I,ID)) Q:ID=""!(G) D
..S D=9999999-ID
..Q:D>EDATE
..S G=1
Q G
ANNECONT(P,C,ED) ;EP - ANALPHYLAXIS/NEOMYCIN CONTRAINDICATION
NEW X,G,Y,R,D
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
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.;Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.I $P(^BICONT(R,0),U,1)="Anaphylaxis" S G=D_U_"Contra Anaphylaxis"
.I $P(^BICONT(R,0),U,1)="Neomycin Allergy" S G=D_U_"Contra: Neomycin Allergy"
.I $P(^BICONT(R,0),U,1)="Immune Deficiency" S G=D_U_"Contra: Immune Deficiency"
Q G
EVIDMMR(P,EDATE) ;
;is there measles evidence
;V POV OR PROBLEM LIST
NEW X,Y,Z,G,T,S,D,E,R,L,J,ME,MU,RU
S (ME,MU,RU)=""
I $$PLTAXND^BGP8DU(P,"BGP IPC MEASLES DXS",EDATE,0) S ME=1
I $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC MEASLES EVID",EDATE,0) S ME=1
I $$LASTDX^BGP8UTL1(P,"BGP IPC MEASLES DXS",$$DOB^AUPNPAT(P),EDATE) S ME=1
;NOW V POV SNOMED
;NOW SNOMED USING ASNC
S T="PXRM BGP IPC MEASLES EVID"
S G=""
S S=0 F S S=$O(^XTMP("BGPSNOMEDSUBSET",$J,T,S)) Q:S=""!(ME) D
.Q:'$D(^AUPNVPOV("ASNC",P,S))
.S D=0 F S D=$O(^AUPNVPOV("ASNC",P,S,D)) Q:D=""!(ME) D
..S Y=9999999-D
..Q:Y>EDATE
..S ME=1
I ME G MU
;lab tests?
MLT ;
S E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(ME) D
.S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(ME) D
..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(ME) D
...Q:'$D(^AUPNVLAB(X,0))
...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
...Q:'$$LOINCME(J)
...S R=$P(^AUPNVLAB(X,0),U,4)
...S R=+R
...I R'<1.10 S ME=1
...Q
I 'ME Q "" ;since no measles and have to have all 3 might as well quit now
MU ;is there evidence of mumps?
I $$PLTAXND^BGP8DU(P,"BGP IPC MUMPS DXS",EDATE,0) S MU=1
I $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC MUMPS EVID",EDATE,0) S MU=1
I $$LASTDX^BGP8UTL1(P,"BGP IPC MUMPS DXS",$$DOB^AUPNPAT(P),EDATE) S MU=1
;NOW V POV SNOMED
;NOW SNOMED USING ASNC
S T="PXRM BGP IPC MUMPS EVID"
S G=""
S S=0 F S S=$O(^XTMP("BGPSNOMEDSUBSET",$J,T,S)) Q:S=""!(MU) D
.Q:'$D(^AUPNVPOV("ASNC",P,S))
.S D=0 F S D=$O(^AUPNVPOV("ASNC",P,S,D)) Q:D=""!(MU) D
..S Y=9999999-D
..Q:Y>EDATE
..S MU=1
I MU G RU
;lab tests?
MULT ;
S E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(MU) D
.S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(MU) D
..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(MU) D
...Q:'$D(^AUPNVLAB(X,0))
...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
...Q:'$$LOINCMU(J)
...S R=$P(^AUPNVLAB(X,0),U,4)
...S R=+R
...I R'<1.10 S MU=1
...Q
I 'MU Q "" ;since no MUMPS and have to have all 3 might as well quit now
RU ;
;is there evidence of RUBELLA?
I $$PLTAXND^BGP8DU(P,"BGP IPC RUBELLA DXS",EDATE,0) S RU=1
I $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC RUBELLA EVID",EDATE,0) S RU=1
I $$LASTDX^BGP8UTL1(P,"BGP IPC RUBELLA DXS",$$DOB^AUPNPAT(P),EDATE) S RU=1
;NOW V POV SNOMED
;NOW SNOMED USING ASNC
S T="PXRM BGP IPC RUBELLA EVID"
S G=""
S S=0 F S S=$O(^XTMP("BGPSNOMEDSUBSET",$J,T,S)) Q:S=""!(MU) D
.Q:'$D(^AUPNVPOV("ASNC",P,S))
.S D=0 F S D=$O(^AUPNVPOV("ASNC",P,S,D)) Q:D=""!(MU) D
..S Y=9999999-D
..Q:Y>EDATE
..S RU=1
I RU Q 1
;lab tests?
RULT ;
S E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(RU) D
.S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(RU) D
..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(RU) D
...Q:'$D(^AUPNVLAB(X,0))
...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
...Q:'$$LOINCRU(J)
...S R=$P(^AUPNVLAB(X,0),U,4)
...S R=+R
...I R'<1.10 S RU=1
...Q
I 'RU Q "" ;since no RUBELLA and have to have all 3 might as well quit now
Q 1
LOINCME(A) ;is this a measles loinc code
NEW %
S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
I %="21500-4" Q 1
I %="21501-2" Q 1
I %="22501-1" Q 1
I %="22502-9" Q 1
Q ""
LOINCMU(A) ;is this a MUMPS loinc code
NEW %
S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
I %="21401-5" Q 1
I %="22416-2" Q 1
I %="22417-0" Q 1
I %="6477-4" Q 1
Q ""
LOINCRU(A) ;is this a RUBELLA loinc code
NEW %
S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
I %="41763-4" Q 1
I %="46110-3" Q 1
Q ""
BGP8PC62 ; IHS/CMI/LAB - measure I2 ; 02 Feb 2018 11:25 AM
+1 ;;18.1;IHS CLINICAL REPORTING;**1**;MAY 25, 2018;Build 65
+2 ;
MMR(P) ;
+1 NEW A730,X,Y,Z,TCVX,TCPT,C,BGPIMMS,D,V,BGPZ
+2 SET TCVX=$ORDER(^ATXAX("B","BGP IPC MMR CVX CODES",0))
+3 SET TCPT=$ORDER(^ATXAX("B","BGP IPC MMR CPT CODES",0))
+4 SET A730=$$FMADD^XLFDT($$DOB^AUPNPAT(P),730)
+5 SET X=0
FOR
SET X=$ORDER(^AUPNVIMM("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+6 ;happens
IF '$DATA(^AUPNVIMM(X,0))
QUIT
+7 SET Y=$PIECE(^AUPNVIMM(X,0),U)
+8 ;happens too
IF 'Y
QUIT
+9 ;get HL7/CVX code
SET I=$PIECE($GET(^AUTTIMM(Y,0)),U,3)
+10 IF '$DATA(^ATXAX(TCVX,21,"B",I))
QUIT
+11 SET D=$PIECE($PIECE($GET(^AUPNVIMM(X,12)),U,1),".")
+12 IF D=""
SET V=$PIECE(^AUPNVIMM(X,0),U,3)
IF V
SET D=$PIECE($PIECE($GET(^AUPNVSIT(V,0)),U),".")
+13 IF D>A730
QUIT
+14 SET BGPIMMS(D)=Y
+15 QUIT
End DoDot:1
+16 ;go through and set into array if 1 days apart
+17 SET X=""
SET Y=""
SET C=0
FOR
SET X=$ORDER(BGPIMMS(X))
IF X'=+X
QUIT
SET C=C+1
Begin DoDot:1
+18 IF C=1
SET Y=X
QUIT
+19 IF $$FMDIFF^XLFDT(X,Y)<1
KILL BGPIMMS(X)
QUIT
+20 SET Y=X
End DoDot:1
+21 ;see if there are 1 of them, if there are quit
+22 SET BGPIMMS=0
SET X=0
FOR
SET X=$ORDER(BGPIMMS(X))
IF X'=+X
QUIT
SET BGPIMMS=BGPIMMS+1
+23 IF BGPIMMS>0
QUIT 1_U_"1 MMR"
+24 ;now get cpts
+25 SET G=""
SET X=0
+26 FOR
SET X=$ORDER(^AUPNVCPT("AC",P,X))
IF X=""
QUIT
Begin DoDot:1
+27 IF '$DATA(^AUPNVCPT(X,0))
QUIT
+28 SET Y=$PIECE(^AUPNVCPT(X,0),U)
+29 IF '$$ICD^BGP8UTL2(Y,TCPT,1)
QUIT
+30 SET V=$PIECE(^AUPNVCPT(X,0),U,3)
IF 'V
QUIT
+31 SET D=$$VD^APCLV(V)
+32 IF D>A730
QUIT
+33 SET BGPIMMS(D)=""
End DoDot:1
+34 ;get tran codes
+35 SET X=0
FOR
SET X=$ORDER(^AUPNVTC("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+36 IF '$DATA(^AUPNVTC(X,0))
QUIT
+37 SET Y=$PIECE(^AUPNVTC(X,0),U,7)
IF 'Y
QUIT
+38 IF '$$ICD^BGP8UTL2(Y,TCPT,1)
QUIT
+39 SET V=$PIECE(^AUPNVTC(X,0),U,3)
IF 'V
QUIT
+40 SET D=$$VD^APCLV(V)
+41 IF D>A730
QUIT
+42 SET BGPIMMS(D)=""
End DoDot:1
+43 ;
+44 ;go through and set into array if 1 days apart
+45 SET X=""
SET Y=""
SET C=0
FOR
SET X=$ORDER(BGPIMMS(X))
IF X'=+X
QUIT
SET C=C+1
Begin DoDot:1
+46 IF C=1
SET Y=X
QUIT
+47 IF $$FMDIFF^XLFDT(X,Y)<1
KILL BGPIMMS(X)
QUIT
+48 SET Y=X
End DoDot:1
+49 ;see if there are 3 of them, if there are quit
+50 SET BGPIMMS=0
SET X=0
FOR
SET X=$ORDER(BGPIMMS(X))
IF X'=+X
QUIT
SET BGPIMMS=BGPIMMS+1
+51 IF BGPIMMS>0
QUIT 1_U_"1 MMR"
+52 ;NOW CHECK FOR CONTRAINDICATION
+53 ;IMM PKG ANAPHYLACTIS
+54 SET BGPZ=0
+55 FOR
SET BGPZ=$ORDER(^ATXAX(TCVX,21,"B",BGPZ))
IF BGPZ=""!(X]"")
QUIT
Begin DoDot:1
+56 SET X=$$ANNECONT(P,BGPZ,A730)
End DoDot:1
+57 IF X]""
QUIT 1_U_"MMR CONTRA ANAPHYLACTIC/NEOMYCIN"
+58 SET X=$$ANSNMMR(P,A730)
IF X
QUIT 1_U_"MMR CONTRA ANAPHYLACTIC REACTION"
+59 SET X=$$DIS^BGP8PC65(P,A730)
IF X
QUIT 1_U_"MMR CONTRA DIS IMMUNE SYS"
+60 SET X=$$HIV^BGP8PC65(P,A730)
IF X
QUIT 1_U_"MMR CONTRA HIV"
+61 SET X=$$MNLHT^BGP8PC65(P,A730)
IF X
QUIT 1_U_"MMR CONTRA NEOPLASM"
+62 SET X=$$EVIDMMR(P,A730)
IF X
QUIT 1_U_"EVIDENCE OF M/M/R"
+63 QUIT ""
ANSNMMR(P,EDATE) ;
+1 ;V POV OR PROBLEM LIST
+2 NEW X,Y,Z,G,T,S,D,I
+3 SET (X,Y,I)=0
+4 FOR
SET X=$ORDER(^AUPNPROB("AC",P,X))
IF X'=+X!(I)
QUIT
Begin DoDot:1
+5 IF '$DATA(^AUPNPROB(X,0))
QUIT
+6 IF $PIECE(^AUPNPROB(X,0),U,12)="D"
QUIT
+7 ;if there is a doo and it is after report period skip
IF $PIECE(^AUPNPROB(X,0),U,13)
IF $PIECE(^AUPNPROB(X,0),U,13)>EDATE
QUIT
+8 ;entered after report period, skip
IF $PIECE(^AUPNPROB(X,0),U,13)=""
IF $PIECE(^AUPNPROB(X,0),U,8)>EDATE
QUIT
+9 SET S=$$VAL^XBDIQ1(9000011,X,80001)
+10 IF S=292927007
SET I=1
QUIT
+11 QUIT
End DoDot:1
+12 IF I
QUIT I
+13 ;NOW V POV SNOMED
+14 ;NOW SNOMED USING ASNC
+15 SET G=""
SET I=""
+16 SET S=""
FOR
SET S=$ORDER(^AUPNVPOV("ASNC",P,S))
IF S=""!(G)
QUIT
Begin DoDot:1
+17 SET I=0
+18 IF S=292927007
SET I=1
+19 IF 'I
QUIT
+20 SET D=0
FOR
SET D=$ORDER(^AUPNVPOV("ASNC",P,S,D))
IF D=""!(G)
QUIT
Begin DoDot:2
+21 SET Y=9999999-D
+22 IF Y>EDATE
QUIT
+23 SET G=1
End DoDot:2
End DoDot:1
+24 IF G
QUIT G
+25 ;REFUSAL FILE
+26 SET I=""
FOR
SET I=$ORDER(^AUPNPREF("AA",P,9002318.4,I))
IF I=""!(G)
QUIT
Begin DoDot:1
+27 ;IF IT'S SNOMED, MUST BE THAT ONE
IF I'=292927007
QUIT
+28 SET ID=0
FOR
SET ID=$ORDER(^AUPNPREF("AA",P,9002318.4,I,ID))
IF ID=""!(G)
QUIT
Begin DoDot:2
+29 SET D=9999999-ID
+30 IF D>EDATE
QUIT
+31 SET G=1
End DoDot:2
End DoDot:1
+32 QUIT G
ANNECONT(P,C,ED) ;EP - ANALPHYLAXIS/NEOMYCIN CONTRAINDICATION
+1 NEW X,G,Y,R,D
+2 SET X=0
SET G=""
SET Y=$ORDER(^AUTTIMM("C",C,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+3 SET R=$PIECE(^BIPC(X,0),U,3)
+4 IF R=""
QUIT
+5 IF '$DATA(^BICONT(R,0))
QUIT
+6 SET D=$PIECE(^BIPC(X,0),U,4)
+7 IF D=""
QUIT
+8 ;Q:$P(^BIPC(X,0),U,4)<BD
+9 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+10 IF $PIECE(^BICONT(R,0),U,1)="Anaphylaxis"
SET G=D_U_"Contra Anaphylaxis"
+11 IF $PIECE(^BICONT(R,0),U,1)="Neomycin Allergy"
SET G=D_U_"Contra: Neomycin Allergy"
+12 IF $PIECE(^BICONT(R,0),U,1)="Immune Deficiency"
SET G=D_U_"Contra: Immune Deficiency"
End DoDot:1
+13 QUIT G
EVIDMMR(P,EDATE) ;
+1 ;is there measles evidence
+2 ;V POV OR PROBLEM LIST
+3 NEW X,Y,Z,G,T,S,D,E,R,L,J,ME,MU,RU
+4 SET (ME,MU,RU)=""
+5 IF $$PLTAXND^BGP8DU(P,"BGP IPC MEASLES DXS",EDATE,0)
SET ME=1
+6 IF $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC MEASLES EVID",EDATE,0)
SET ME=1
+7 IF $$LASTDX^BGP8UTL1(P,"BGP IPC MEASLES DXS",$$DOB^AUPNPAT(P),EDATE)
SET ME=1
+8 ;NOW V POV SNOMED
+9 ;NOW SNOMED USING ASNC
+10 SET T="PXRM BGP IPC MEASLES EVID"
+11 SET G=""
+12 SET S=0
FOR
SET S=$ORDER(^XTMP("BGPSNOMEDSUBSET",$JOB,T,S))
IF S=""!(ME)
QUIT
Begin DoDot:1
+13 IF '$DATA(^AUPNVPOV("ASNC",P,S))
QUIT
+14 SET D=0
FOR
SET D=$ORDER(^AUPNVPOV("ASNC",P,S,D))
IF D=""!(ME)
QUIT
Begin DoDot:2
+15 SET Y=9999999-D
+16 IF Y>EDATE
QUIT
+17 SET ME=1
End DoDot:2
End DoDot:1
+18 IF ME
GOTO MU
+19 ;lab tests?
MLT ;
+1 SET E=9999999-EDATE
SET D=E-1
FOR
SET D=$ORDER(^AUPNVLAB("AE",P,D))
IF D'=+D!(ME)
QUIT
Begin DoDot:1
+2 SET L=0
FOR
SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
IF L'=+L!(ME)
QUIT
Begin DoDot:2
+3 SET X=0
FOR
SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
IF X'=+X!(ME)
QUIT
Begin DoDot:3
+4 IF '$DATA(^AUPNVLAB(X,0))
QUIT
+5 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
IF J=""
QUIT
+6 IF '$$LOINCME(J)
QUIT
+7 SET R=$PIECE(^AUPNVLAB(X,0),U,4)
+8 SET R=+R
+9 IF R'<1.10
SET ME=1
+10 QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+11 ;since no measles and have to have all 3 might as well quit now
IF 'ME
QUIT ""
MU ;is there evidence of mumps?
+1 IF $$PLTAXND^BGP8DU(P,"BGP IPC MUMPS DXS",EDATE,0)
SET MU=1
+2 IF $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC MUMPS EVID",EDATE,0)
SET MU=1
+3 IF $$LASTDX^BGP8UTL1(P,"BGP IPC MUMPS DXS",$$DOB^AUPNPAT(P),EDATE)
SET MU=1
+4 ;NOW V POV SNOMED
+5 ;NOW SNOMED USING ASNC
+6 SET T="PXRM BGP IPC MUMPS EVID"
+7 SET G=""
+8 SET S=0
FOR
SET S=$ORDER(^XTMP("BGPSNOMEDSUBSET",$JOB,T,S))
IF S=""!(MU)
QUIT
Begin DoDot:1
+9 IF '$DATA(^AUPNVPOV("ASNC",P,S))
QUIT
+10 SET D=0
FOR
SET D=$ORDER(^AUPNVPOV("ASNC",P,S,D))
IF D=""!(MU)
QUIT
Begin DoDot:2
+11 SET Y=9999999-D
+12 IF Y>EDATE
QUIT
+13 SET MU=1
End DoDot:2
End DoDot:1
+14 IF MU
GOTO RU
+15 ;lab tests?
MULT ;
+1 SET E=9999999-EDATE
SET D=E-1
FOR
SET D=$ORDER(^AUPNVLAB("AE",P,D))
IF D'=+D!(MU)
QUIT
Begin DoDot:1
+2 SET L=0
FOR
SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
IF L'=+L!(MU)
QUIT
Begin DoDot:2
+3 SET X=0
FOR
SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
IF X'=+X!(MU)
QUIT
Begin DoDot:3
+4 IF '$DATA(^AUPNVLAB(X,0))
QUIT
+5 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
IF J=""
QUIT
+6 IF '$$LOINCMU(J)
QUIT
+7 SET R=$PIECE(^AUPNVLAB(X,0),U,4)
+8 SET R=+R
+9 IF R'<1.10
SET MU=1
+10 QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+11 ;since no MUMPS and have to have all 3 might as well quit now
IF 'MU
QUIT ""
RU ;
+1 ;is there evidence of RUBELLA?
+2 IF $$PLTAXND^BGP8DU(P,"BGP IPC RUBELLA DXS",EDATE,0)
SET RU=1
+3 IF $$IPLSNOND^BGP8DU(P,"PXRM BGP IPC RUBELLA EVID",EDATE,0)
SET RU=1
+4 IF $$LASTDX^BGP8UTL1(P,"BGP IPC RUBELLA DXS",$$DOB^AUPNPAT(P),EDATE)
SET RU=1
+5 ;NOW V POV SNOMED
+6 ;NOW SNOMED USING ASNC
+7 SET T="PXRM BGP IPC RUBELLA EVID"
+8 SET G=""
+9 SET S=0
FOR
SET S=$ORDER(^XTMP("BGPSNOMEDSUBSET",$JOB,T,S))
IF S=""!(MU)
QUIT
Begin DoDot:1
+10 IF '$DATA(^AUPNVPOV("ASNC",P,S))
QUIT
+11 SET D=0
FOR
SET D=$ORDER(^AUPNVPOV("ASNC",P,S,D))
IF D=""!(MU)
QUIT
Begin DoDot:2
+12 SET Y=9999999-D
+13 IF Y>EDATE
QUIT
+14 SET RU=1
End DoDot:2
End DoDot:1
+15 IF RU
QUIT 1
+16 ;lab tests?
RULT ;
+1 SET E=9999999-EDATE
SET D=E-1
FOR
SET D=$ORDER(^AUPNVLAB("AE",P,D))
IF D'=+D!(RU)
QUIT
Begin DoDot:1
+2 SET L=0
FOR
SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
IF L'=+L!(RU)
QUIT
Begin DoDot:2
+3 SET X=0
FOR
SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
IF X'=+X!(RU)
QUIT
Begin DoDot:3
+4 IF '$DATA(^AUPNVLAB(X,0))
QUIT
+5 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
IF J=""
QUIT
+6 IF '$$LOINCRU(J)
QUIT
+7 SET R=$PIECE(^AUPNVLAB(X,0),U,4)
+8 SET R=+R
+9 IF R'<1.10
SET RU=1
+10 QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+11 ;since no RUBELLA and have to have all 3 might as well quit now
IF 'RU
QUIT ""
+12 QUIT 1
LOINCME(A) ;is this a measles loinc code
+1 NEW %
+2 SET %=$PIECE($GET(^LAB(95.3,A,0)),U)_"-"_$PIECE($GET(^LAB(95.3,A,0)),U,15)
+3 IF %="21500-4"
QUIT 1
+4 IF %="21501-2"
QUIT 1
+5 IF %="22501-1"
QUIT 1
+6 IF %="22502-9"
QUIT 1
+7 QUIT ""
LOINCMU(A) ;is this a MUMPS loinc code
+1 NEW %
+2 SET %=$PIECE($GET(^LAB(95.3,A,0)),U)_"-"_$PIECE($GET(^LAB(95.3,A,0)),U,15)
+3 IF %="21401-5"
QUIT 1
+4 IF %="22416-2"
QUIT 1
+5 IF %="22417-0"
QUIT 1
+6 IF %="6477-4"
QUIT 1
+7 QUIT ""
LOINCRU(A) ;is this a RUBELLA loinc code
+1 NEW %
+2 SET %=$PIECE($GET(^LAB(95.3,A,0)),U)_"-"_$PIECE($GET(^LAB(95.3,A,0)),U,15)
+3 IF %="41763-4"
QUIT 1
+4 IF %="46110-3"
QUIT 1
+5 QUIT ""