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

PXRMLABS.m

Go to the documentation of this file.
  1. PXRMLABS ; SLC/PKR - Estimate of lab entries to set up. ;8/5/03 16:20
  1. ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
  1. ;===============================================================
  1. NELR() ;.
  1. N LRDFN,LRDN,LRIDT,NE,TEMP
  1. ;DBIA #4179
  1. S NE=0
  1. S LRDFN=.9
  1. F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1 D
  1. . S TEMP=$G(^LR(LRDFN,0))
  1. . I $P(TEMP,U,2)'=2 Q
  1. . S LRIDT=0
  1. . F S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1 D
  1. .. I '$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3) Q ; check for completed
  1. .. S LRDN=1
  1. .. F S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<1 D
  1. ... S NE=NE+1
  1. D AP(.NE)
  1. D MICRO(.NE)
  1. Q NE
  1. ;
  1. ;===============================================================
  1. AP(NE) ;
  1. N ETIOL,I,II,III,ICD,ICDX
  1. N LRDFN,ORGAN,SNOMED,SPEC,SUB,SUBS,TEMP
  1. ;DBIA #4179
  1. K ANUMS
  1. D AANUMS(.ANUMS)
  1. S LRDFN=.9
  1. F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1 D
  1. . S TEMP=$G(^LR(LRDFN,0))
  1. . I $P(TEMP,U,2)'=2 Q
  1. . D CYEMSP(LRDFN,.ANUMS,.NE) ; cytology, electron microscopy, sugrical path
  1. . I '+$G(^LR(LRDFN,"AU")) Q ; date of autopsy
  1. . S NE=NE+1
  1. . S SPEC=0
  1. . F S SPEC=$O(^LR(LRDFN,33,SPEC)) Q:SPEC<1 D
  1. .. I '$L($P($G(^LR(LRDFN,33,SPEC,0)),U)) Q
  1. .. S NE=NE+1
  1. . S ICD=0
  1. . F S ICD=$O(^LR(LRDFN,80,ICD)) Q:ICD<1 D
  1. .. S ICDX=+$G(^LR(LRDFN,80,ICD,0))
  1. .. I 'ICDX Q
  1. .. S NE=NE+1
  1. . S I=0
  1. . F S I=$O(^LR(LRDFN,"AY",I)) Q:I<1 D
  1. .. S ORGAN=+$G(^LR(LRDFN,"AY",I,0))
  1. .. I 'ORGAN Q
  1. .. S NE=NE+1
  1. .. F SUBS="1D","2M","3F","4P" D
  1. ... S SUB=+SUBS
  1. ... S II=0
  1. ... F S II=$O(^LR(LRDFN,"AY",I,SUB,II)) Q:II<1 D
  1. .... S SNOMED=+$G(^LR(LRDFN,"AY",I,SUB,II,0))
  1. .... I 'SNOMED Q
  1. .... S NE=NE+1
  1. .... I SUB'=2 Q
  1. .... S III=0
  1. .... F S III=$O(^LR(LRDFN,"AY",I,SUB,II,1,III)) Q:III<1 D
  1. ..... S ETIOL=+$G(^LR(LRDFN,"AY",I,SUB,II,1,III,0))
  1. ..... I 'ETIOL Q
  1. ..... S NE=NE+1
  1. Q
  1. ;
  1. CYEMSP(LRDFN,ANUMS,NE) ;
  1. N ACC,APSUB,DATE,ERR,I,ICD,ICDX,LRIDT,NODE,ORGAN,PREP,SPEC
  1. N TEST,TESTS K TESTS
  1. ;DBIA #4179
  1. F APSUB="CY","EM","SP" D
  1. . I '$D(^LR(LRDFN,APSUB,0)) Q
  1. . S LRIDT=0
  1. . F S LRIDT=$O(^LR(LRDFN,APSUB,LRIDT)) Q:LRIDT<1 D
  1. .. S DATE=+$G(^LR(LRDFN,APSUB,LRIDT,0))
  1. .. I 'DATE Q
  1. .. I '($P(^LR(LRDFN,APSUB,LRIDT,0),U,3)&($P(^(0),U,11))) Q
  1. .. S SPEC=0
  1. .. F S SPEC=$O(^LR(LRDFN,APSUB,LRIDT,.1,SPEC)) Q:SPEC<1 D
  1. ... I '$L($P($G(^LR(LRDFN,APSUB,LRIDT,.1,SPEC,0)),U)) Q
  1. ... S NE=NE+1
  1. ... S PREP=0
  1. ... F S PREP=$O(^LR(LRDFN,APSUB,LRIDT,.1,SPEC,1,PREP)) Q:PREP<1 D
  1. .... S TEST=0
  1. .... F S TEST=$O(^LR(LRDFN,APSUB,LRIDT,.1,SPEC,1,PREP,1,TEST)) Q:TEST<1 D
  1. ..... I '$L($P($G(^LR(LRDFN,APSUB,LRIDT,.1,SPEC,1,PREP,1,TEST,0)),U)) Q
  1. ..... S NE=NE+1
  1. .. S ACC=$P(^LR(LRDFN,APSUB,LRIDT,0),U,6)
  1. .. I $L(ACC) D
  1. ... S NODE=LRDFN_";"_APSUB_";"_LRIDT_";0"
  1. ... D ACC(.TESTS,ACC,DATE,.ANUMS,.ERR)
  1. ... I 'ERR D
  1. .... S TEST=0
  1. .... F S TEST=$O(TESTS(TEST)) Q:TEST<1 D
  1. ..... S NE=NE+1
  1. .. S ICD=0
  1. .. F S ICD=$O(^LR(LRDFN,APSUB,LRIDT,3,ICD)) Q:ICD<1 D
  1. ... S ICDX=+$G(^LR(LRDFN,APSUB,LRIDT,3,ICD,0))
  1. ... I 'ICDX Q
  1. ... S NE=NE+1
  1. .. S I=0
  1. .. F S I=$O(^LR(LRDFN,APSUB,LRIDT,2,I)) Q:I<1 D
  1. ... S ORGAN=+$G(^LR(LRDFN,APSUB,LRIDT,2,I,0))
  1. ... I 'ORGAN Q
  1. ... S NE=NE+1
  1. ... D SNOMED(LRDFN,LRIDT,DATE,APSUB,I,.NE)
  1. Q
  1. ;
  1. SNOMED(LRDFN,LRIDT,DATE,APSUB,I,NE) ;
  1. N ETIOL,II,III,SNOMED,SUB,SUBS
  1. ;DBIA #4179
  1. F SUBS="1D","2M","3F","4P" D
  1. . S SUB=+SUBS
  1. . S II=0
  1. . F S II=$O(^LR(LRDFN,APSUB,LRIDT,2,I,SUB,II)) Q:II<1 D
  1. .. S SNOMED=+$G(^LR(LRDFN,APSUB,LRIDT,2,I,SUB,II,0))
  1. .. I 'SNOMED Q
  1. .. S NE=NE+1
  1. .. I SUB'=2 Q
  1. .. S III=0
  1. .. F S III=$O(^LR(LRDFN,APSUB,LRIDT,2,I,SUB,II,1,III)) Q:III<1 D
  1. ... S ETIOL=+$G(^LR(LRDFN,APSUB,LRIDT,2,I,SUB,II,1,III,0))
  1. ... I 'ETIOL Q
  1. ... S NE=NE+1
  1. Q
  1. ;
  1. ;===============================================================
  1. MICRO(NE) ;
  1. N AB,ABDN,ACC,ANUMS,DATE,ERR
  1. N LRDFN,LRIDT,ORG,ORGNUM,SPEC,SUB
  1. N TB,TBDN,TEMP,TEST,TESTS
  1. ;DBIA #4179
  1. K ANUMS,TESTS
  1. D AANUMS(.ANUMS)
  1. S LRDFN=.9
  1. F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1 D
  1. . S TEMP=$G(^LR(LRDFN,0))
  1. . I $P(TEMP,U,2)'=2 Q
  1. . S LRIDT=0
  1. . F S LRIDT=$O(^LR(LRDFN,"MI",LRIDT)) Q:LRIDT<1 D
  1. .. S DATE=+$G(^LR(LRDFN,"MI",LRIDT,0))
  1. .. I 'DATE Q
  1. .. S SPEC=+$P(^LR(LRDFN,"MI",LRIDT,0),U,5)
  1. .. I 'SPEC Q
  1. .. S NE=NE+1
  1. .. S ACC=$P(^LR(LRDFN,"MI",LRIDT,0),U,6)
  1. .. I $L(ACC) D
  1. ... D ACC(.TESTS,ACC,DATE,.ANUMS,.ERR)
  1. ... I 'ERR D
  1. .... S TEST=0
  1. .... F S TEST=$O(TESTS(TEST)) Q:TEST<1 D
  1. ..... S NE=NE+1
  1. .. I $G(^LR(LRDFN,"MI",LRIDT,1)) D
  1. ... S ORGNUM=0
  1. ... F S ORGNUM=$O(^LR(LRDFN,"MI",LRIDT,3,ORGNUM)) Q:ORGNUM<1 D
  1. .... S ORG=+$G(^LR(LRDFN,"MI",LRIDT,3,ORGNUM,0))
  1. .... I 'ORG Q
  1. .... S NE=NE+1
  1. .... S ABDN=1
  1. .... F S ABDN=$O(^LR(LRDFN,"MI",LRIDT,3,ORGNUM,ABDN)) Q:ABDN<1 D
  1. ..... S AB=+$G(^TMP("LRPXSXRB",$J,"AB",ABDN))
  1. ..... I 'AB Q
  1. ..... S NE=NE+1
  1. .. F SUB=6,9,12,17 D
  1. ... I '$G(^LR(LRDFN,"MI",LRIDT,(SUB-1))) Q
  1. ... S ORGNUM=0
  1. ... F S ORGNUM=$O(^LR(LRDFN,"MI",LRIDT,SUB,ORGNUM)) Q:ORGNUM<1 D
  1. .... S ORG=+$G(^LR(LRDFN,"MI",LRIDT,SUB,ORGNUM,0))
  1. .... I 'ORG Q
  1. .... S NE=NE+1
  1. .... I SUB'=12 Q
  1. .... S TBDN=2
  1. .... F S TBDN=$O(^LR(LRDFN,"MI",LRIDT,12,ORGNUM,TBDN)) Q:TBDN<2 D
  1. ..... S TB=+$G(^TMP("LRPXSXRB",$J,"TB",TBDN))
  1. ..... I '$L(TB) Q
  1. ..... S NE=NE+1
  1. Q
  1. ;
  1. AANUMS(ANUMS) ;
  1. N AA,ABREV K ANUMS
  1. ;DBIA #4185
  1. S AA=0
  1. F S AA=$O(^LRO(68,AA)) Q:AA<1 D
  1. . S ABREV=$P($G(^LRO(68,AA,0)),U,11)
  1. . I $L(ABREV) S ANUMS(ABREV)=AA
  1. Q
  1. ;
  1. ACC(TESTS,ACC,BDN,ANUMS,ERR) ;
  1. ; returns TESTS from micro accession, ACC, BDN required
  1. ; BDN is beginning date number
  1. ; ANUMS is array of accession name numbers (avoids lookup on repeated calls)
  1. N DIC,LRAA,LRAAB,LRAD,LRAN,TEST,X,Y K DIC,TESTS
  1. S ERR=0
  1. I '$L($G(ACC)) S ERR=1 Q
  1. S LRAAB=$P(ACC," ")
  1. I LRAAB="" Q
  1. S BDN=$E($G(BDN))
  1. I BDN'>1 S ERR=1 Q
  1. S LRAN=+$P(ACC," ",3)
  1. I 'LRAN S ERR=1 Q
  1. S LRAA=+$G(ANUMS(LRAAB))
  1. I 'LRAA D
  1. . S DIC=68,DIC(0)="M"
  1. . S X=LRAAB
  1. . D ^DIC K DIC
  1. . S LRAA=+Y
  1. . S ANUMS(LRAAB)=LRAA
  1. I LRAA'>0 S ERR=1 Q
  1. S LRAD=BDN_$P(ACC," ",2)_"0000" ; yearly acc areas are assumed
  1. S TEST=0
  1. F S TEST=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,TEST)) Q:TEST<1 D
  1. . S TESTS(TEST)=TEST
  1. Q
  1. ;