- BGP8D864 ; IHS/CMI/LAB - measure C ;
- ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
- ;
- NDC(A,B) ;
- S BGPNDC=$P($G(^PSDRUG(A,2)),U,4)
- I BGPNDC]"",B,$D(^ATXAX(B,21,"B",BGPNDC)) Q 1
- Q 0
- GOLDLAB(P,BDATE,EDATE) ;EP
- K BGPIM,BGPLAB
- K BGPMEDS1
- D GETMEDS^BGP8UTL2(P,BDATE,EDATE,,,,,.BGPMEDS1)
- I '$D(BGPMEDS1) Q ""
- S T1=$O(^ATXAX("B","BGP RA IM GOLD MEDS",0))
- S T4=$O(^ATXAX("B","BGP RA IM GOLD NDC",0))
- S X=0 F S X=$O(BGPMEDS1(X)) Q:X'=+X S V=$P(BGPMEDS1(X),U,5),Y=+$P(BGPMEDS1(X),U,4) D
- .Q:'$D(^AUPNVSIT(V,0))
- .S Z=$P($G(^AUPNVMED(Y,0)),U) ;get drug ien
- .Q:Z="" ;BAD POINTER
- .I $D(^ATXAX(T1,21,"B",Z))!($$NDC(Z,T4)),$P(^AUPNVMED(Y,0),U,8)="" S BGPIM($P($P(^AUPNVSIT(V,0),U),"."))=""
- I '$D(BGPIM) Q "" ;no gold im
- ;CBC'S
- K BGPC
- S %="",E=+$$CODEN^ICPTCOD(85025),%=$$CPTI^BGP8DU(P,BDATE,EDATE,E)
- I %]"" S BGPC($P(%,U,2))=""
- S %="",E=+$$CODEN^ICPTCOD(85027),%=$$CPTI^BGP8DU(P,BDATE,EDATE,E)
- I %]"" S BGPC($P(%,U,2))=""
- S %="",E=+$$CODEN^ICPTCOD(85025),%=$$TRANI^BGP8DU(P,BDATE,EDATE,E)
- I %]"" S BGPC($P(%,U,2))=""
- S %="",E=+$$CODEN^ICPTCOD(85027),%=$$TRANI^BGP8DU(P,BDATE,EDATE,E)
- I %]"" S BGPC($P(%,U,2))=""
- ;now get all loinc/taxonomy tests
- S T=$O(^ATXAX("B","BGP CBC LOINC",0))
- S BGPLT=$O(^ATXLAB("B","BGP CBC TESTS",0))
- S B=9999999-BDATE,E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(D>B) D
- .S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L D
- ..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X D
- ...Q:'$D(^AUPNVLAB(X,0))
- ...I BGPLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(BGPLT,21,"B",$P(^AUPNVLAB(X,0),U))) S BGPC(9999999-D)="" Q
- ...Q:'T
- ...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
- ...Q:'$$LOINC^BGP8D21(J,T)
- ...S BGPC(9999999-D)=""
- ...Q
- I '$D(BGPC) Q "0^no CBC tests"
- ;now check to see if they are all spaced 10 days apart, if not, kill off the odd ones
- ;S (X,Y)="",C=0 F S X=$O(BGPC(X)) Q:X'=+X S C=C+1 D
- ;.I C=1 S Y=X Q
- ;.I $$FMDIFF^XLFDT(X,Y)<11 K BGPC(X) Q
- ;.S Y=X
- ;check to see if there is one for every med
- S G=1,X=0 F S X=$O(BGPIM(X)) Q:X'=+X I '$D(BGPC(X)) S G=0
- I 'G Q G_U_"no CBC for each IM GOLD"
- ;now urine protein
- K BGPC
- S T=$O(^ATXAX("B","BGP URINE PROTEIN LOINC CODES",0))
- S BGPLT=$O(^ATXLAB("B","DM AUDIT URINE PROTEIN TAX",0))
- S B=9999999-BDATE,E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(D>B) D
- .S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L D
- ..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X D
- ...Q:'$D(^AUPNVLAB(X,0))
- ...I BGPLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(BGPLT,21,"B",$P(^AUPNVLAB(X,0),U))) D
- ....S BGPC(9999999-D)="" Q
- ...Q:'T
- ...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
- ...Q:'$$LOINC^BGP8D21(J,T)
- ...S BGPC(9999999-D)=""
- ...Q
- I '$D(BGPC) Q "0^no Urine Protein tests"
- S G=1,X=0 F S X=$O(BGPIM(X)) Q:X'=+X I '$D(BGPC(X)) S G=0
- I 'G Q G_U_"no Urine Protein for each IM GOLD"
- Q 1_U_"CBC and Urine protein w/each IM Gold"
- BGP8D864 ; IHS/CMI/LAB - measure C ;
- +1 ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
- +2 ;
- NDC(A,B) ;
- +1 SET BGPNDC=$PIECE($GET(^PSDRUG(A,2)),U,4)
- +2 IF BGPNDC]""
- IF B
- IF $DATA(^ATXAX(B,21,"B",BGPNDC))
- QUIT 1
- +3 QUIT 0
- GOLDLAB(P,BDATE,EDATE) ;EP
- +1 KILL BGPIM,BGPLAB
- +2 KILL BGPMEDS1
- +3 DO GETMEDS^BGP8UTL2(P,BDATE,EDATE,,,,,.BGPMEDS1)
- +4 IF '$DATA(BGPMEDS1)
- QUIT ""
- +5 SET T1=$ORDER(^ATXAX("B","BGP RA IM GOLD MEDS",0))
- +6 SET T4=$ORDER(^ATXAX("B","BGP RA IM GOLD NDC",0))
- +7 SET X=0
- FOR
- SET X=$ORDER(BGPMEDS1(X))
- IF X'=+X
- QUIT
- SET V=$PIECE(BGPMEDS1(X),U,5)
- SET Y=+$PIECE(BGPMEDS1(X),U,4)
- Begin DoDot:1
- +8 IF '$DATA(^AUPNVSIT(V,0))
- QUIT
- +9 ;get drug ien
- SET Z=$PIECE($GET(^AUPNVMED(Y,0)),U)
- +10 ;BAD POINTER
- IF Z=""
- QUIT
- +11 IF $DATA(^ATXAX(T1,21,"B",Z))!($$NDC(Z,T4))
- IF $PIECE(^AUPNVMED(Y,0),U,8)=""
- SET BGPIM($PIECE($PIECE(^AUPNVSIT(V,0),U),"."))=""
- End DoDot:1
- +12 ;no gold im
- IF '$DATA(BGPIM)
- QUIT ""
- +13 ;CBC'S
- +14 KILL BGPC
- +15 SET %=""
- SET E=+$$CODEN^ICPTCOD(85025)
- SET %=$$CPTI^BGP8DU(P,BDATE,EDATE,E)
- +16 IF %]""
- SET BGPC($PIECE(%,U,2))=""
- +17 SET %=""
- SET E=+$$CODEN^ICPTCOD(85027)
- SET %=$$CPTI^BGP8DU(P,BDATE,EDATE,E)
- +18 IF %]""
- SET BGPC($PIECE(%,U,2))=""
- +19 SET %=""
- SET E=+$$CODEN^ICPTCOD(85025)
- SET %=$$TRANI^BGP8DU(P,BDATE,EDATE,E)
- +20 IF %]""
- SET BGPC($PIECE(%,U,2))=""
- +21 SET %=""
- SET E=+$$CODEN^ICPTCOD(85027)
- SET %=$$TRANI^BGP8DU(P,BDATE,EDATE,E)
- +22 IF %]""
- SET BGPC($PIECE(%,U,2))=""
- +23 ;now get all loinc/taxonomy tests
- +24 SET T=$ORDER(^ATXAX("B","BGP CBC LOINC",0))
- +25 SET BGPLT=$ORDER(^ATXLAB("B","BGP CBC TESTS",0))
- +26 SET B=9999999-BDATE
- SET E=9999999-EDATE
- SET D=E-1
- FOR
- SET D=$ORDER(^AUPNVLAB("AE",P,D))
- IF D'=+D!(D>B)
- QUIT
- Begin DoDot:1
- +27 SET L=0
- FOR
- SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
- IF L'=+L
- QUIT
- Begin DoDot:2
- +28 SET X=0
- FOR
- SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
- IF X'=+X
- QUIT
- Begin DoDot:3
- +29 IF '$DATA(^AUPNVLAB(X,0))
- QUIT
- +30 IF BGPLT
- IF $PIECE(^AUPNVLAB(X,0),U)
- IF $DATA(^ATXLAB(BGPLT,21,"B",$PIECE(^AUPNVLAB(X,0),U)))
- SET BGPC(9999999-D)=""
- QUIT
- +31 IF 'T
- QUIT
- +32 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
- IF J=""
- QUIT
- +33 IF '$$LOINC^BGP8D21(J,T)
- QUIT
- +34 SET BGPC(9999999-D)=""
- +35 QUIT
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +36 IF '$DATA(BGPC)
- QUIT "0^no CBC tests"
- +37 ;now check to see if they are all spaced 10 days apart, if not, kill off the odd ones
- +38 ;S (X,Y)="",C=0 F S X=$O(BGPC(X)) Q:X'=+X S C=C+1 D
- +39 ;.I C=1 S Y=X Q
- +40 ;.I $$FMDIFF^XLFDT(X,Y)<11 K BGPC(X) Q
- +41 ;.S Y=X
- +42 ;check to see if there is one for every med
- +43 SET G=1
- SET X=0
- FOR
- SET X=$ORDER(BGPIM(X))
- IF X'=+X
- QUIT
- IF '$DATA(BGPC(X))
- SET G=0
- +44 IF 'G
- QUIT G_U_"no CBC for each IM GOLD"
- +45 ;now urine protein
- +46 KILL BGPC
- +47 SET T=$ORDER(^ATXAX("B","BGP URINE PROTEIN LOINC CODES",0))
- +48 SET BGPLT=$ORDER(^ATXLAB("B","DM AUDIT URINE PROTEIN TAX",0))
- +49 SET B=9999999-BDATE
- SET E=9999999-EDATE
- SET D=E-1
- FOR
- SET D=$ORDER(^AUPNVLAB("AE",P,D))
- IF D'=+D!(D>B)
- QUIT
- Begin DoDot:1
- +50 SET L=0
- FOR
- SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
- IF L'=+L
- QUIT
- Begin DoDot:2
- +51 SET X=0
- FOR
- SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
- IF X'=+X
- QUIT
- Begin DoDot:3
- +52 IF '$DATA(^AUPNVLAB(X,0))
- QUIT
- +53 IF BGPLT
- IF $PIECE(^AUPNVLAB(X,0),U)
- IF $DATA(^ATXLAB(BGPLT,21,"B",$PIECE(^AUPNVLAB(X,0),U)))
- Begin DoDot:4
- +54 SET BGPC(9999999-D)=""
- QUIT
- End DoDot:4
- +55 IF 'T
- QUIT
- +56 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
- IF J=""
- QUIT
- +57 IF '$$LOINC^BGP8D21(J,T)
- QUIT
- +58 SET BGPC(9999999-D)=""
- +59 QUIT
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +60 IF '$DATA(BGPC)
- QUIT "0^no Urine Protein tests"
- +61 SET G=1
- SET X=0
- FOR
- SET X=$ORDER(BGPIM(X))
- IF X'=+X
- QUIT
- IF '$DATA(BGPC(X))
- SET G=0
- +62 IF 'G
- QUIT G_U_"no Urine Protein for each IM GOLD"
- +63 QUIT 1_U_"CBC and Urine protein w/each IM Gold"