| [613] | 1 | IMRODLAB ;HCIOFO/SPS/FAI - LABORATORY DATA EXTRACT; 03/09/02  12:33
 | 
|---|
 | 2 |  ;;2.1;IMMUNOLOGY CASE REGISTRY;**15**;Feb 09, 1998
 | 
|---|
 | 3 | CHK ; Called from IMRODAT1 routine
 | 
|---|
 | 4 |  N DA,DIE,DR,I,IMRCD4,IMRCD,IMRCDX,IMRCDXD,IMRCHL,IMRCST,IMRD
 | 
|---|
 | 5 |  N IMRLRTY,IMRNAM,IMRNLAB,IMRRD,IMRRFN,IMRRJ,IMRRJ1,IMRRK,IMRRL
 | 
|---|
 | 6 |  N IMRRTYP,IMRRX,IMRRX1,IMRRX2,IMRRX3,IMRRX4
 | 
|---|
 | 7 |  N IMRPR4,IMRSFLG,IMRTEXT,IMRTST,IMRVAL,IMRXCAT
 | 
|---|
 | 8 |  S IMRMI=0,IMRLAB=0
 | 
|---|
 | 9 |  Q:'$D(^DPT(DFN,"LR"))  ;quit if no lab data for patient
 | 
|---|
 | 10 |  ; gather data for CHL segment from File 63 (Lab Data)
 | 
|---|
 | 11 |  ; Restructering the data gathering of patient lab data
 | 
|---|
 | 12 |  ; 1) Loop through the lab file for all data for that patient and grab
 | 
|---|
 | 13 |  ; it.
 | 
|---|
 | 14 |  K ^TMP($J,"IMRCNT")
 | 
|---|
 | 15 |  S IMRRFN=^DPT(DFN,"LR"),I=0
 | 
|---|
 | 16 |  S IMRLABTR="CH^MI^"
 | 
|---|
 | 17 |  I +$G(IMRTRANS) S IMRLABTR=IMRLABTR_"SP^CY^"
 | 
|---|
 | 18 |  F I=1:1:$S($G(IMRTRANS)=1:7,1:2) S IMRRTYP=$P(IMRLABTR,U,I) Q:IMRRTYP=""  D LAB^IMRODLAB(IMRRFN,IMRRTYP,IMRSD,IMRED)
 | 
|---|
 | 19 |  Q
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | LAB(IMRRFN,IMRRTYP,IMRSD,IMRED) ;
 | 
|---|
 | 22 |  ; This routine will Loop thourgh the lab global for the given
 | 
|---|
 | 23 |  ; type and process the data
 | 
|---|
 | 24 |  ; IMRRFN=Patient Lab DFN
 | 
|---|
 | 25 |  ; IMRRTYP=Type of lab test "CH,MI,..."
 | 
|---|
 | 26 |  ; IMRRD=the date to start the search in a reverse order
 | 
|---|
 | 27 |  ;
 | 
|---|
 | 28 |  N I,IMRLCT,IMRRD
 | 
|---|
 | 29 |  I IMRRTYP="MI" D MIFILE Q
 | 
|---|
 | 30 |  S IMRRD=(9999999-(IMRED+1))
 | 
|---|
 | 31 |  S IMRLCT=$P($G(^LR(IMRRFN,IMRRTYP,0)),U,3) Q:IMRLCT=""
 | 
|---|
 | 32 |  Q:IMRLCT<1
 | 
|---|
 | 33 |  S IMRLCT=(9999999-IMRLCT)
 | 
|---|
 | 34 |  Q:(IMRLCT<IMRSD)  ; There is no lab test after this date
 | 
|---|
 | 35 |  F  S IMRRD=$O(^LR(IMRRFN,IMRRTYP,IMRRD)) Q:IMRRD<1  D
 | 
|---|
 | 36 |  . N IMRDUZ,IMRH,IMRGD
 | 
|---|
 | 37 |  . I '$D(^LR(IMRRFN,IMRRTYP,IMRRD,0)) Q
 | 
|---|
 | 38 |  . S IMRGD=9999999-IMRRD
 | 
|---|
 | 39 |  . Q:(IMRGD<IMRSD)
 | 
|---|
 | 40 |  . Q:(IMRGD>IMRED)
 | 
|---|
 | 41 |  . S IMRD=+$P($G(^LR(IMRRFN,IMRRTYP,IMRRD,0)),"^",1) S:IMRD>IMRLAB IMRLAB=IMRD
 | 
|---|
 | 42 |  . S IMRTST=0
 | 
|---|
 | 43 |  . F  S IMRTST=$O(^LR(IMRRFN,IMRRTYP,IMRRD,IMRTST)) Q:IMRTST'>0  D
 | 
|---|
 | 44 |  .. I IMRTST'>1 Q
 | 
|---|
 | 45 |  .. S IMRVAL=$G(^LR(IMRRFN,IMRRTYP,IMRRD,IMRTST))
 | 
|---|
 | 46 |  .. Q:IMRVAL=""
 | 
|---|
 | 47 |  .. N IMRLINE,IMRNODE,IMRDD,IMRCDD,IMRDD
 | 
|---|
 | 48 |  .. I $P(IMRVAL,U)["canc" Q  ; test has been canceled.
 | 
|---|
 | 49 |  .. I $P(IMRVAL,U)["CANC" Q  ; test has been canceled.
 | 
|---|
 | 50 |  .. S IMRVALUE=$P(IMRVAL,U,1,2)
 | 
|---|
 | 51 |  .. S IMRLABT=$O(^LAB(60,"C",(IMRRTYP_";"_IMRTST_";1"),0)) ; get the lab test data name
 | 
|---|
 | 52 |  .. I IMRLABT="" S IMRLABT="**PANEL**",(IMRNAM,IMRCST,IMRNLAB)=""
 | 
|---|
 | 53 |  .. E  D
 | 
|---|
 | 54 |  ... S (IMNLT,IMWKL,IMRNAM,IMRCST,IMRNLAB)=""
 | 
|---|
 | 55 |  ... S IMRLINE=$G(^LAB(60,IMRLABT,0))
 | 
|---|
 | 56 |  ... Q:IMRLINE=""
 | 
|---|
 | 57 |  ... S IMRCST=$$GET1^DIQ(60,IMRLABT,1,"I")
 | 
|---|
 | 58 |  ... I IMRCST="" S IMRCST="COST UNKNOWN"
 | 
|---|
 | 59 |  ... S IMRNAM=$$GET1^DIQ(60,IMRLABT,.01,"I")
 | 
|---|
 | 60 |  ... Q:IMRNAM=""
 | 
|---|
 | 61 |  ... S IMWKL=$P($G(^LAB(60,IMRLABT,64)),U,1)
 | 
|---|
 | 62 |  ... S:IMWKL'="" IMNLT=$$GET1^DIQ(64,IMWKL,1,"E")
 | 
|---|
 | 63 |  ... S:$G(IMNLT)="" IMNLT="NONLT"
 | 
|---|
 | 64 |  ... D NLAB^IMRUTL ;get national lab name
 | 
|---|
 | 65 |  ... S IMNLT=$E(IMNLT,1,5) ; get National lab test pointer
 | 
|---|
 | 66 |  ... Q
 | 
|---|
 | 67 |  .. D FILE
 | 
|---|
 | 68 |  .. Q
 | 
|---|
 | 69 |  . Q
 | 
|---|
 | 70 |  Q
 | 
|---|
 | 71 | FILE ; File the code based on IMRRTYP
 | 
|---|
 | 72 |  K IMRHLDR
 | 
|---|
 | 73 |  I IMRRTYP="CH" D CHFILE
 | 
|---|
 | 74 |  I IMRRTYP="SP" D SPFILE
 | 
|---|
 | 75 |  I IMRRTYP="CY" D CYFILE
 | 
|---|
 | 76 |  Q
 | 
|---|
 | 77 | MIFILE ; the MI code to file it in temp
 | 
|---|
 | 78 |  N IMRX,IMRRX,IMRVALL
 | 
|---|
 | 79 |  S IMRRD=""
 | 
|---|
 | 80 |  F  S IMRRD=$O(^LR(IMRRFN,IMRRTYP,IMRRD)) Q:IMRRD=""  D
 | 
|---|
 | 81 |  .I '$D(^LR(IMRRFN,IMRRTYP,IMRRD,1)) Q
 | 
|---|
 | 82 |  .S IMRRCD=$G(^LR(IMRRFN,IMRRTYP,IMRRD,1))
 | 
|---|
 | 83 |  .Q:IMRRCD=""  Q:$P(IMRRCD,U,2)'="F"
 | 
|---|
 | 84 |  .S IMRRCD=$P(IMRRCD,U)
 | 
|---|
 | 85 |  .Q:IMRRCD<IMRSD
 | 
|---|
 | 86 |  .Q:IMRRCD>IMRED
 | 
|---|
 | 87 |  .S IMRVALL=$G(^LR(IMRRFN,IMRRTYP,IMRRD,0))
 | 
|---|
 | 88 |  .S IMRRX=IMRRTYP_U_(+$P(IMRVALL,U,1)\1)
 | 
|---|
 | 89 |  .S IMRRX=IMRRX_U_$P($G(^LAB(61,(+$P(IMRVALL,U,5)),0)),U)_U_$P($G(^LAB(62,(+$P(IMRVALL,U,11)),0)),U)
 | 
|---|
 | 90 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,1)) S IMRX=1 D BAC^IMRODLB2
 | 
|---|
 | 91 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,2,0)) S IMRX=2 D GRAM^IMRODLB2
 | 
|---|
 | 92 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,3,0)) S IMRX=3 D ORG^IMRODLB2
 | 
|---|
 | 93 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,6,0)) S IMRX=6 D PAR^IMRODLB2
 | 
|---|
 | 94 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,7,0)) S IMRX=7 D PARRPT^IMRODLB2
 | 
|---|
 | 95 |  .I $D(^LR(IMRRFN,IMRRTYP,IMRRD,99)) S IMRX=99 D COMSP^IMRODLB2
 | 
|---|
 | 96 |  S (IMRCHL,IMRSEND)=1
 | 
|---|
 | 97 |  Q
 | 
|---|
 | 98 | SPFILE ; the CH code to file it in temp
 | 
|---|
 | 99 |  S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=$S(IMRRTYP="CH":"CHL",1:IMRRTYP)_U_(IMRD\1)_U_IMRNAM_U_IMRTST_U_IMRCST_U_IMRVALUE D LCHK^IMRODATA ;IMRVALUE is 2 pieces; data value and test result flag
 | 
|---|
 | 100 |  I $G(IMRTRANS)
 | 
|---|
 | 101 |  S (IMRCHL,IMRSEND)=1
 | 
|---|
 | 102 |  ; same as CH
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 |  Q
 | 
|---|
 | 105 | CYFILE ; the CH code to file it in temp
 | 
|---|
 | 106 |  S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=$S(IMRRTYP="CH":"CHL",1:IMRRTYP)_U_(IMRD\1)_U_IMRNAM_U_IMRTST_U_IMRCST_U_IMRVALUE D LCHK^IMRODATA ;IMRVALUE is 2 pieces; data value and test result flag
 | 
|---|
 | 107 |  I $G(IMRTRANS)
 | 
|---|
 | 108 |  S (IMRCHL,IMRSEND)=1
 | 
|---|
 | 109 |  ; same as CH
 | 
|---|
 | 110 |  Q
 | 
|---|
 | 111 | CHFILE ; the CH code to file it in temp
 | 
|---|
 | 112 |  S IMRC=IMRC+1,^TMP($J,"IMRX",IMRC)=$S(IMRRTYP="CH":"CHL",1:IMRRTYP)_U_(IMRD\1)_U_IMRNAM_U_IMRTST_U_IMRCST_U_IMRVALUE ;IMRVALUE is 2 pieces; data value and test result flag
 | 
|---|
 | 113 |  S $P(^TMP($J,"IMRX",IMRC),U,8)=IMRNLAB ;national lab name or pointer
 | 
|---|
 | 114 |  S $P(^TMP($J,"IMRX",IMRC),U,9)=IMNLT ; workload code
 | 
|---|
 | 115 |  D ^IMRLBTY
 | 
|---|
 | 116 |  D LCHK^IMRODATA
 | 
|---|
 | 117 |  I $G(IMRTRANS)
 | 
|---|
 | 118 |  S (IMRCHL,IMRSEND)=1
 | 
|---|
 | 119 |  ; piece 2 (IMRD)=date specimen taken
 | 
|---|
 | 120 |  ; piece 3 (IMRNAM)=name of test
 | 
|---|
 | 121 |  ; piece 4 (IMRTST)=node of test
 | 
|---|
 | 122 |  ; piece 5 (IMRCST)=test cost
 | 
|---|
 | 123 |  ; piece 6 & 7(IMRVALUE)=data value^test result flag
 | 
|---|
 | 124 |  ; piece 8 (IMRNLAB)=national lab name or pointer
 | 
|---|
 | 125 |  ; piece 9 (IMNLT)=workload code file 64
 | 
|---|
 | 126 |  Q
 | 
|---|