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

BGPMUUT5.m

Go to the documentation of this file.
  1. BGPMUUT5 ;IHS/MSC/MGH - Find lab results for date range ;16-Dec-11 13:21;MMT
  1. ;;12.1;IHS CLINICAL REPORTING;;MAY 17, 2012;Build 66
  1. Q
  1. LAB(DATA,DFN,TAX,BDATE,EDATE,FLG) ; EP
  1. ;This function is designed to see if the patient has any labs
  1. ;in the given taxonomy in the date range
  1. ;
  1. N LRDFN,MAX,IDT,BGP1,BGP2,CNT,IEN
  1. S FLG=$G(FLG)
  1. S IEN=$O(^ATXAX("B",TAX,0))
  1. Q:IEN=""
  1. S MAX=9999
  1. S BGP2=9999999-$P(BDATE,"."),BGP1=9999999-$P(EDATE,".")-.24
  1. Q:'$D(^DPT(DFN,"LR")) S LRDFN=+^DPT(DFN,"LR")
  1. S IDT=BGP1,CNT=0 F S IDT=$O(^LR(LRDFN,"CH",IDT)) Q:IDT=""!(IDT>BGP2) D:CNT'>MAX CHSET
  1. Q
  1. CHSET ;Finds and evaluates chemistry tests
  1. N CDT,SITE,SPEC,PTR
  1. S CDT=+^LR(LRDFN,"CH",IDT,0),SITE=$P(^(0),U,5)
  1. Q:SITE=""
  1. S SPEC=$P($G(^LAB(61,SITE,0)),U,1),CNT=CNT+1
  1. S PTR=1 F S PTR=$O(^LR(LRDFN,"CH",IDT,PTR)) Q:PTR<1 D
  1. .I FLG="" D NXTST
  1. .I FLG=1 D NXTCPT
  1. Q
  1. NXTST ;Visit next node in
  1. N RESULT,FLAG,TEST,TNM,DESCR,%,THER,UNIT,HI,LO,CIS,LOINC
  1. S RESULT=$P(^LR(LRDFN,"CH",IDT,PTR),U),FLAG=$P(^(PTR),U,2),CIS=""
  1. I FLAG["*" S FLAG=$S(FLAG="L*":"LL",FLAG="H*":"HH",1:FLAG)
  1. S TEST=$O(^LAB(60,"C","CH;"_PTR_";1",0)) Q:TEST'>0
  1. S TNM=$P(^LAB(60,TEST,0),U,1)
  1. S LOINC=$P($G(^LAB(60,TEST,1,SITE,95.3)),U,1)
  1. I LOINC="" S LOINC=$P($G(^LAB(60,TEST,9999999)),U,2)
  1. Q:LOINC=""
  1. S %=$P($G(^LAB(95.3,LOINC,0)),U)_"-"_$P($G(^LAB(95.3,LOINC,0)),U,15)
  1. I $D(^ATXAX(IEN,21,"B",%)) D
  1. .S DATA(IDT)=RESULT
  1. Q
  1. NXTCPT ;Get data
  1. N RESULT,FLAG,TEST,TNM,DESCR,%,THER,UNIT,HI,LO,CIS,CPT
  1. S RESULT=$P(^LR(LRDFN,"CH",IDT,PTR),U),FLAG=$P(^(PTR),U,2),CIS=""
  1. I FLAG["*" S FLAG=$S(FLAG="L*":"LL",FLAG="H*":"HH",1:FLAG)
  1. S TEST=$O(^LAB(60,"C","CH;"_PTR_";1",0)) Q:TEST'>0
  1. S TNM=$P(^LAB(60,TEST,0),U,1)
  1. S CPT=$P($G(^LAB(60,TEST,1,SITE,3)),U,1)
  1. I CPT="" S CPT=$P($G(^LAB(60,TEST,9999999)),U,1)
  1. Q:CPT=""
  1. I $D(^ATXAX(IEN,21,"B",CPT)) D
  1. .S DATA(IDT)=RESULT
  1. Q
  1. LABCPT(DATA,DFN,TAX,BDATE,EDATE) ; EP
  1. N FLG
  1. S FLG=1
  1. D LAB(.DATA,DFN,TAX,BDATE,EDATE,FLG)
  1. Q
  1. RHTYPE(DFN) ; EP
  1. ;This function is designed to see if the patient has RH in blood bank
  1. ;
  1. N LRDFN,IDT,RESULT
  1. S RESULT=0
  1. Q:'$D(^DPT(DFN,"LR")) 0
  1. S LRDFN=+^DPT(DFN,"LR")
  1. S IDT=0 F S IDT=$O(^LR(LRDFN,"BB",IDT)) Q:IDT=""!+RESULT D
  1. .S RESULT=$P($G(^LR(LRDFN,"BB",IDT,11)),U,1)
  1. .I RESULT'="" S RESULT=1_U_RESULT
  1. I RESULT="" S RESULT=0
  1. Q RESULT
  1. ANTI(DFN) ;EP
  1. ;Check blood bank for direct coombs
  1. N LRDFN,IDT,RESULT
  1. S RESULT=0
  1. Q:'$D(^DPT(DFN,"LR")) 0
  1. S LRDFN=+^DPT(DFN,"LR")
  1. S IDT=0 F S IDT=$O(^LR(LRDFN,"BB",IDT)) Q:IDT=""!+RESULT D
  1. .S RESULT=$P($G(^LR(LRDFN,"BB",IDT,6)),U,1)
  1. .I RESULT'="" S RESULT=1_U_RESULT
  1. I RESULT="" S RESULT=0
  1. Q RESULT
  1. ;
  1. FTAX(BGPVAL) ;find a taxonomy in BGPMU for the given value
  1. S ATX="BGPMU" F S ATX=$O(^ATXAX("B",ATX)) Q:ATX="" Q:$E(ATX,1,5)'="BGPMU" D
  1. .S ATXIEN=$O(^ATXAX("B",ATX,0))
  1. .I $D(^ATXAX(ATXIEN,21,"B",BGPVAL)) W !,ATX
  1. Q
  1. MICRO(DFN,BDATE,EDATE,TAX) ;Retuns IEN of Lab test if pt has this LOINC code
  1. N IEN,CODE,B,E,D,L,G,X,J,START,END,TEST
  1. S (CODE,B,E,D,L,G,X,J)=""
  1. S IEN=$O(^ATXAX("B",TAX,0))
  1. Q:'IEN
  1. S START=BDATE-1,END=EDATE+1
  1. S B=9999999-START,E=9999999-END S D=E-1 F S D=$O(^AUPNVMIC("AE",DFN,D)) Q:D'=+D!(D>B)!(G]"") D
  1. .S L=0 F S L=$O(^AUPNVMIC("AE",DFN,D,L)) Q:L'=+L!(G]"") D
  1. ..S X=0 F S X=$O(^AUPNVMIC("AE",DFN,D,L,X)) Q:X'=+X!(G]"") D
  1. ...Q:'$D(^AUPNVMIC(X,0))
  1. ...S COMPLETE=$P($P($G(^AUPNVMIC(X,0)),U,9),".")
  1. ...;done in the correct time frame
  1. ...I (COMPLETE>BDATE!(COMPLETE=BDATE))&((COMPLETE<EDATE)!(COMPLETE=EDATE)) D
  1. ....S TEST=$P($G(^AUPNVMIC(X,0)),U,1)
  1. ....S J=$P($G(^LAB(60,TEST,9999999)),U,2) Q:J=""
  1. ....I $$LOINC2^BGPMUUT2(J,IEN) D
  1. .....S G=(9999999-D)_U_X Q
  1. Q G