| 1 | LR7OGC ;SLC/STAFF- Interim report rpc chart ;8/1/97  12:12
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**187**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | CHART(ROOT,DFN,SDATE,EDATE,ONLYSPEC,TESTNUM) ; from ORWLRR
 | 
|---|
| 5 |  N AGE,ANY,CDT,CHSUB,CNT,EDT,FIRSTSP,HIGH,IDT,LINE,LOW,LRCW,LRDFN,NUM,OUTCNT,PNM,PRNTCODE,RANGE,RCNT,RESULT,SEX,SPEC,TESTZERO,UNITS,VALUE,X,ZERO
 | 
|---|
| 6 |  S ROOT=$NA(^TMP("LR7OGX",$J,"OUTPUT"))
 | 
|---|
| 7 |  K ^TMP("LR7OG",$J)
 | 
|---|
| 8 |  D DEMO^LR7OGU(DFN,.LRDFN,.PNM,.AGE,.SEX)
 | 
|---|
| 9 |  Q:'DFN  Q:'SDATE  Q:'EDATE  Q:'LRDFN
 | 
|---|
| 10 |  S OUTCNT=1,LRCW=8,CNT=0,RCNT=0
 | 
|---|
| 11 |  S TESTNUM=+TESTNUM,TESTZERO=$G(^LAB(60,TESTNUM,0))
 | 
|---|
| 12 |  I '$L(TESTZERO) Q
 | 
|---|
| 13 |  S CHSUB=$P($P(TESTZERO,U,5),";",2)
 | 
|---|
| 14 |  I 'CHSUB Q
 | 
|---|
| 15 |  S PRNTCODE=$P($G(^LAB(60,TESTNUM,.1)),U,3)
 | 
|---|
| 16 |  S ANY=0,FIRSTSP=0
 | 
|---|
| 17 |  I ONLYSPEC=0 S ANY=1
 | 
|---|
| 18 |  S EDATE=EDATE\1
 | 
|---|
| 19 |  S IDT=9999999-SDATE,EDT=9999999-EDATE
 | 
|---|
| 20 |  F  S IDT=$O(^LR(LRDFN,"CH",IDT)) Q:IDT<1  Q:IDT>EDT  D
 | 
|---|
| 21 |  .I '$L($G(^LR(LRDFN,"CH",IDT,CHSUB))) Q
 | 
|---|
| 22 |  .S ZERO=^LR(LRDFN,"CH",IDT,0)
 | 
|---|
| 23 |  .I '$P(ZERO,U,3) Q
 | 
|---|
| 24 |  .S CDT=+ZERO,SPEC=+$P(ZERO,U,5)
 | 
|---|
| 25 |  .I ANY S (ONLYSPEC,FIRSTSP)=SPEC
 | 
|---|
| 26 |  .S RESULT=$P(^LR(LRDFN,"CH",IDT,CHSUB),U)
 | 
|---|
| 27 |  .I $L(PRNTCODE) S X=RESULT S @("RESULT="_PRNTCODE)
 | 
|---|
| 28 |  .E  S RESULT=$J(RESULT,8)
 | 
|---|
| 29 |  .S RESULT=$$STRIP^LR7OGU(RESULT)
 | 
|---|
| 30 |  .I RESULT[".",$P(RESULT,".")=+$P(RESULT,"."),$E(RESULT,$L(RESULT))=".",'$L($P(RESULT,".",2,99)) S RESULT=+RESULT ; convert numbers like 145. to 145
 | 
|---|
| 31 |  .I FIRSTSP,SPEC'=FIRSTSP D NONSPEC(.CNT,SPEC,RESULT,CDT) Q
 | 
|---|
| 32 |  .I '$$NUMBER(RESULT) D NONNUM(.CNT,RESULT,CDT) Q  ;*** needs better checking
 | 
|---|
| 33 |  .I SPEC'=ONLYSPEC Q
 | 
|---|
| 34 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 35 |  .S RCNT=RCNT+1
 | 
|---|
| 36 |  .S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=CDT_U_RESULT
 | 
|---|
| 37 |  .I '$O(^LR(LRDFN,"CH",IDT,1,0)) Q
 | 
|---|
| 38 |  .S CNT=CNT+1
 | 
|---|
| 39 |  .S ^TMP("LR7OG",$J,CNT)=$P($$FMTE^XLFDT(CDT),":",1,2)_" ** Comments:"
 | 
|---|
| 40 |  .S NUM=0 F  S NUM=$O(^LR(LRDFN,"CH",IDT,1,NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) D
 | 
|---|
| 41 |  ..S CNT=CNT+1
 | 
|---|
| 42 |  ..S ^TMP("LR7OG",$J,CNT)=LINE
 | 
|---|
| 43 |  .S CNT=CNT+1,^TMP("LR7OG",$J,CNT)=""
 | 
|---|
| 44 |  I RCNT=0 K ^TMP("LR7OG",$J) S ^TMP("LR7OGX",$J,"OUTPUT",1)=0 Q
 | 
|---|
| 45 |  S NUM=0 F  S NUM=$O(^LAB(60,TESTNUM,1,ONLYSPEC,1,NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) D
 | 
|---|
| 46 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 47 |  .S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)="  Eval: "_LINE
 | 
|---|
| 48 |  S OUTCNT=OUTCNT+1
 | 
|---|
| 49 |  S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=""
 | 
|---|
| 50 |  S NUM=0 F  S NUM=$O(^TMP("LR7OG",$J,NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 51 |  .S OUTCNT=OUTCNT+1
 | 
|---|
| 52 |  .S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 53 |  K ^TMP("LR7OG",$J)
 | 
|---|
| 54 |  D URANGE^LR7OGU(TESTNUM,ONLYSPEC,AGE,SEX,.UNITS,.RANGE)
 | 
|---|
| 55 |  S LOW=$P(RANGE," - "),HIGH=$P($P(RANGE," - ",2)," (")
 | 
|---|
| 56 |  S ^TMP("LR7OGX",$J,"OUTPUT",1)=RCNT_U_$P(^LAB(61,ONLYSPEC,0),U)_U_$$FLOAT(HIGH)_U_$$FLOAT(LOW)_U_UNITS
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | FLOAT(VALUE) ; $$(value) -> valid float value else ""
 | 
|---|
| 60 |  I VALUE=+VALUE Q VALUE
 | 
|---|
| 61 |  Q ""
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 | NUMBER(VALUE) ; $$(value) -> 1 if number, else 0
 | 
|---|
| 64 |  I VALUE=0 Q 1
 | 
|---|
| 65 |  I VALUE="." Q 0
 | 
|---|
| 66 |  I VALUE=+VALUE Q 1
 | 
|---|
| 67 |  I $L($P(VALUE,".",3,99)) Q 0
 | 
|---|
| 68 |  I $L($P(VALUE,".",2)),$E(VALUE,$L(VALUE))="." Q 0
 | 
|---|
| 69 |  I VALUE[".." Q 0
 | 
|---|
| 70 |  S P1=$P(VALUE,"."),P2=$P(VALUE,".",2)
 | 
|---|
| 71 |  I $L(P1),'((P1="-")!(P1="-0")),P1'=+P1 Q 0
 | 
|---|
| 72 |  I $L(P2),P2'?1N.N Q 0
 | 
|---|
| 73 |  Q 1
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | NONSPEC(CNT,SPEC,RESULT,CDT) ;
 | 
|---|
| 76 |  S CNT=CNT+1
 | 
|---|
| 77 |  S ^TMP("LR7OG",$J,CNT)=$P($$FMTE^XLFDT(CDT),":",1,2)_" -- for specimen "_$P($G(^LAB(61,SPEC,0)),U)_" result was "_RESULT
 | 
|---|
| 78 |  S CNT=CNT+1,^TMP("LR7OG",$J,CNT)=""
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | NONNUM(CNT,RESULT,CDT) ;
 | 
|---|
| 82 |  S CNT=CNT+1
 | 
|---|
| 83 |  S ^TMP("LR7OG",$J,CNT)=$P($$FMTE^XLFDT(CDT),":",1,2)_" -- result '"_RESULT_"' could not be graphed."
 | 
|---|
| 84 |  S CNT=CNT+1,^TMP("LR7OG",$J,CNT)=""
 | 
|---|
| 85 |  Q
 | 
|---|