| 1 | LR7OGG ;DALOI/STAFF- Interim report rpc grid ; Feb 9, 2005
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**187,290**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | TEST ; test use only
 | 
|---|
| 5 |  N CNT,I K ^TMP("LR7OGX",$J)
 | 
|---|
| 6 |  S ^TMP("LR7OGX",$J,"INPUT",1)="2^2970202^2920202"
 | 
|---|
| 7 |  S CNT=1
 | 
|---|
| 8 |  ;F I=1:1:10 I $D(^LAB(60,I,0)) S CNT=CNT+1,^TMP("LR7OGX",$J,"INPUT",CNT)=I
 | 
|---|
| 9 |  F I=7,173,9,1 I $D(^LAB(60,I,0)) S CNT=CNT+1,^TMP("LR7OGX",$J,"INPUT",CNT)=I
 | 
|---|
| 10 |  D GRIDDATA
 | 
|---|
| 11 |  S I=0 F  S I=$O(^TMP("LR7OGX",$J,"OUTPUT",I)) Q:I<1  W !,^(I)
 | 
|---|
| 12 |  K ^TMP("LR7OGX",$J)
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | GRID(ROOT,DFN,DATE1,DATE2,SPEC,TESTS) ; from ORWLRR
 | 
|---|
| 16 |  N CNT,NUM
 | 
|---|
| 17 |  K ^TMP("LR7OGX",$J,"INPUT"),^("OUTPUT")
 | 
|---|
| 18 |  S ROOT=$NA(^TMP("LR7OGX",$J,"OUTPUT"))
 | 
|---|
| 19 |  S ^TMP("LR7OGX",$J,"INPUT",1)=DFN_U_DATE1_U_DATE2_U_+SPEC
 | 
|---|
| 20 |  S CNT=1,NUM=0 F  S NUM=$O(TESTS(NUM)) Q:NUM<1  D
 | 
|---|
| 21 |  .S CNT=CNT+1
 | 
|---|
| 22 |  .S ^TMP("LR7OGX",$J,"INPUT",CNT)=+TESTS(NUM)
 | 
|---|
| 23 |  D GRIDDATA
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | GRIDDATA ;
 | 
|---|
| 27 |  ; input format
 | 
|---|
| 28 |  ; ^TMP("LR7OGX",$J,"INPUT",1)=dfn^start date^end date^spec^all tests
 | 
|---|
| 29 |  ; ^TMP("LR7OGX",$J,"INPUT",#)=test#  (tests displayed in this order)
 | 
|---|
| 30 |  ;   (these tests should, be atomic, subscript - ch, type - both or output)
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  S ^TMP("LR7OGX",$J,"OUTPUT",1)="0^0^0^1"
 | 
|---|
| 33 |  N ABCNT,ABDCNT,ABLINE,ABTCNT,ABTLINE,ADCNT,ADSEQ,AGE,ATCNT,ATSEQ,CDT,CHSUB,COMCNT,COMMENT,DATACNT,DATESEQ,DFN,EDATE,EDT,FLAG,IDT
 | 
|---|
| 34 |  N LINE,LRCW,LRDFN,LRX,NUM,ONLYSPEC,OUTCNT,PNM,PRNTCODE,RESULT,SDATE,SEX,SPEC,SPECNAME,TESTNAME,TESTNUM,TESTSEQ,TESTZERO,X,ZERO
 | 
|---|
| 35 |  K ^TMP("LR7OG",$J)
 | 
|---|
| 36 |  S DFN=+^TMP("LR7OGX",$J,"INPUT",1),SDATE=+$P(^(1),U,2),EDATE=+$P(^(1),U,3),ONLYSPEC=+$P(^(1),U,4)
 | 
|---|
| 37 |  D DEMO^LR7OGU(DFN,.LRDFN,.PNM,.AGE,.SEX)
 | 
|---|
| 38 |  Q:'DFN  Q:'SDATE  Q:'EDATE  Q:'LRDFN
 | 
|---|
| 39 |  S OUTCNT=1,(ADCNT,ADSEQ,ATCNT,ATSEQ,COMCNT,DATACNT,DATESEQ,TESTSEQ,TCNT)=0
 | 
|---|
| 40 |  S NUM=1
 | 
|---|
| 41 |  F  S NUM=$O(^TMP("LR7OGX",$J,"INPUT",NUM)) Q:NUM<1  S TESTNUM=+^(NUM) D
 | 
|---|
| 42 |  . S TESTZERO=$G(^LAB(60,TESTNUM,0))
 | 
|---|
| 43 |  . S CHSUB=$P($P(TESTZERO,U,5),";",2)
 | 
|---|
| 44 |  . I 'CHSUB Q
 | 
|---|
| 45 |  . S TESTNAME=$P($G(^LAB(60,TESTNUM,.1)),U),PRNTCODE=$P($G(^(.1)),U,3)
 | 
|---|
| 46 |  . I TESTNAME="" S TESTNAME=$P(TESTZERO,U)
 | 
|---|
| 47 |  . S TESTSEQ=TESTSEQ+1
 | 
|---|
| 48 |  . S LINE=TESTSEQ_U_TESTNUM_U_TESTNAME_U_PRNTCODE
 | 
|---|
| 49 |  . S ^TMP("LR7OG",$J,"TEST",CHSUB)=LINE
 | 
|---|
| 50 |  . S OUTCNT=OUTCNT+1
 | 
|---|
| 51 |  . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 52 |  S ^TMP("LR7OGX",$J,"OUTPUT",1)=TESTSEQ
 | 
|---|
| 53 |  S EDATE=EDATE\1
 | 
|---|
| 54 |  S IDT=9999999-SDATE,EDT=9999999-EDATE
 | 
|---|
| 55 |  F  S IDT=$O(^LR(LRDFN,"CH",IDT)) Q:IDT<1  Q:IDT>EDT  D
 | 
|---|
| 56 |  . S ZERO=^LR(LRDFN,"CH",IDT,0)
 | 
|---|
| 57 |  . I '$P(ZERO,U,3) Q
 | 
|---|
| 58 |  . S CDT=+ZERO,SPEC=+$P(ZERO,U,5),SPECNAME=$P($G(^LAB(61,SPEC,0)),U),COMMENT=$S($O(^LR(LRDFN,"CH",IDT,1,0)):"**",1:"")
 | 
|---|
| 59 |  . I ONLYSPEC,SPEC'=ONLYSPEC Q
 | 
|---|
| 60 |  . S CHSUB=1
 | 
|---|
| 61 |  . F  S CHSUB=$O(^LR(LRDFN,"CH",IDT,CHSUB)) Q:CHSUB=""  D
 | 
|---|
| 62 |  . . I '$D(^TMP("LR7OG",$J,"TEST",CHSUB)) Q
 | 
|---|
| 63 |  . . I '$D(^TMP("LR7OG",$J,"DATE",IDT)) S ^(IDT)="" D
 | 
|---|
| 64 |  . . . S DATESEQ=DATESEQ+1
 | 
|---|
| 65 |  . . . S OUTCNT=OUTCNT+1
 | 
|---|
| 66 |  . . . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=DATESEQ_U_CDT_U_SPEC_U_SPECNAME_U_COMMENT
 | 
|---|
| 67 |  . . . I COMMENT'="" D
 | 
|---|
| 68 |  . . . . S COMCNT=COMCNT+1
 | 
|---|
| 69 |  . . . . S ^TMP("LR7OG",$J,"COMMENT",COMCNT)=$P($$FMTE^XLFDT(CDT),":",1,2)_" ** Comments:"
 | 
|---|
| 70 |  . . . . S NUM=0
 | 
|---|
| 71 |  . . . . F  S NUM=$O(^LR(LRDFN,"CH",IDT,1,NUM)) Q:NUM<1  S LINE=$G(^(NUM,0)) D
 | 
|---|
| 72 |  . . . . . S COMCNT=COMCNT+1
 | 
|---|
| 73 |  . . . . . S ^TMP("LR7OG",$J,"COMMENT",COMCNT)=LINE
 | 
|---|
| 74 |  . . . . S COMCNT=COMCNT+1
 | 
|---|
| 75 |  . . . . S ^TMP("LR7OG",$J,"COMMENT",COMCNT)=""
 | 
|---|
| 76 |  . . S LRX=$$TSTRES^LRRPU(LRDFN,"CH",IDT,CHSUB,"")
 | 
|---|
| 77 |  . . S RESULT=$P(LRX,"^"),FLAG=$P(LRX,U,2)
 | 
|---|
| 78 |  . . S PRNTCODE=$P(^TMP("LR7OG",$J,"TEST",CHSUB),U,4)
 | 
|---|
| 79 |  . . I PRNTCODE'="" S X=RESULT,LRCW=8 S @("RESULT="_PRNTCODE)
 | 
|---|
| 80 |  . . E  S RESULT=$J(RESULT,8)
 | 
|---|
| 81 |  . . S RESULT=$$STRIP^LR7OGU(RESULT)
 | 
|---|
| 82 |  . . I FLAG'="" D
 | 
|---|
| 83 |  . . . S ABTLINE=^TMP("LR7OG",$J,"TEST",CHSUB)
 | 
|---|
| 84 |  . . . I '$D(^TMP("LR7OG",$J,"ABTSEQ",+ABTLINE)) S ^(+ABTLINE)=U_$P(ABTLINE,U,2,3)
 | 
|---|
| 85 |  . . . I '$D(^TMP("LR7OG",$J,"ABDSEQ",IDT)) S ^(IDT)=U_CDT_U_SPEC_U_SPECNAME_U_COMMENT
 | 
|---|
| 86 |  . . . S ^TMP("LR7OG",$J,"ABDATA",IDT,+ABTLINE)=RESULT_U_FLAG
 | 
|---|
| 87 |  . . S TESTSEQ=+^TMP("LR7OG",$J,"TEST",CHSUB)
 | 
|---|
| 88 |  . . S DATACNT=DATACNT+1
 | 
|---|
| 89 |  . . S ^TMP("LR7OG",$J,"DATA",DATACNT)=DATESEQ_U_TESTSEQ_U_RESULT_U_FLAG
 | 
|---|
| 90 |  . . D TESTSPEC(CHSUB,SPEC,SPECNAME,AGE,SEX)
 | 
|---|
| 91 |  S $P(^TMP("LR7OGX",$J,"OUTPUT",1),U,2,3)=DATESEQ_U_DATACNT
 | 
|---|
| 92 |  S DATACNT=0
 | 
|---|
| 93 |  F  S DATACNT=$O(^TMP("LR7OG",$J,"DATA",DATACNT)) Q:DATACNT<1  S LINE=^(DATACNT) D
 | 
|---|
| 94 |  . S OUTCNT=OUTCNT+1,^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 95 |  S OUTCNT=OUTCNT+1,ABLINE=OUTCNT
 | 
|---|
| 96 |  S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)="0^0^0"
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  S (ABTCNT,ATSEQ)=0
 | 
|---|
| 99 |  F  S ATSEQ=$O(^TMP("LR7OG",$J,"ABTSEQ",ATSEQ)) Q:ATSEQ<1  D
 | 
|---|
| 100 |  . S ABTCNT=ABTCNT+1
 | 
|---|
| 101 |  . S $P(^TMP("LR7OG",$J,"ABTSEQ",ATSEQ),U)=ABTCNT
 | 
|---|
| 102 |  . S OUTCNT=OUTCNT+1
 | 
|---|
| 103 |  . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=^TMP("LR7OG",$J,"ABTSEQ",ATSEQ)
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  S (ABDCNT,ADSEQ)=0
 | 
|---|
| 106 |  F  S ADSEQ=$O(^TMP("LR7OG",$J,"ABDSEQ",ADSEQ)) Q:ADSEQ<1  D
 | 
|---|
| 107 |  . S ABDCNT=ABDCNT+1
 | 
|---|
| 108 |  . S $P(^TMP("LR7OG",$J,"ABDSEQ",ADSEQ),U)=ABDCNT
 | 
|---|
| 109 |  . S OUTCNT=OUTCNT+1
 | 
|---|
| 110 |  . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=^TMP("LR7OG",$J,"ABDSEQ",ADSEQ)
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  S (ABCNT,ADSEQ)=0
 | 
|---|
| 113 |  F  S ADSEQ=$O(^TMP("LR7OG",$J,"ABDATA",ADSEQ)) Q:ADSEQ<1  D
 | 
|---|
| 114 |  . S ADCNT=+^TMP("LR7OG",$J,"ABDSEQ",ADSEQ)
 | 
|---|
| 115 |  . S ATSEQ=0
 | 
|---|
| 116 |  .  F  S ATSEQ=$O(^TMP("LR7OG",$J,"ABDATA",ADSEQ,ATSEQ)) Q:ATSEQ<1  D
 | 
|---|
| 117 |  . . S ATCNT=+^TMP("LR7OG",$J,"ABTSEQ",ATSEQ)
 | 
|---|
| 118 |  . . S ABCNT=ABCNT+1
 | 
|---|
| 119 |  . . S OUTCNT=OUTCNT+1
 | 
|---|
| 120 |  . . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=ADCNT_U_ATCNT_U_^TMP("LR7OG",$J,"ABDATA",ADSEQ,ATSEQ)
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  S ^TMP("LR7OGX",$J,"OUTPUT",ABLINE)=ABTCNT_U_ABDCNT_U_ABCNT
 | 
|---|
| 123 |  S $P(^TMP("LR7OGX",$J,"OUTPUT",1),U,4)=OUTCNT
 | 
|---|
| 124 |  S TESTSEQ=0
 | 
|---|
| 125 |   F  S TESTSEQ=$O(^TMP("LR7OG",$J,"TESTSPEC",TESTSEQ)) Q:TESTSEQ<1  D
 | 
|---|
| 126 |  . S SPEC=0
 | 
|---|
| 127 |  . F  S SPEC=$O(^TMP("LR7OG",$J,"TESTSPEC",TESTSEQ,SPEC)) Q:SPEC<1  S LINE=^(SPEC) D
 | 
|---|
| 128 |  . . S OUTCNT=OUTCNT+1
 | 
|---|
| 129 |  . . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 130 |  S $P(^TMP("LR7OGX",$J,"OUTPUT",1),U,5)=OUTCNT
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  S NUM=0
 | 
|---|
| 133 |  F  S NUM=$O(^TMP("LR7OG",$J,"COMMENT",NUM)) Q:NUM<1  S LINE=^(NUM) D
 | 
|---|
| 134 |  . S OUTCNT=OUTCNT+1
 | 
|---|
| 135 |  . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)=LINE
 | 
|---|
| 136 |  K ^TMP("LR7OG",$J)
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | TESTSPEC(CHSUB,SPEC,SPECNAME,AGE,SEX) ;
 | 
|---|
| 141 |  N RANGE,TESTNAME,TESTNUM,TESTSEQ,UNITS
 | 
|---|
| 142 |  S TESTSEQ=+$P(^TMP("LR7OG",$J,"TEST",CHSUB),U),TESTNUM=+$P(^(CHSUB),U,2),TESTNAME=$P(^(CHSUB),U,3)
 | 
|---|
| 143 |  I $D(^TMP("LR7OG",$J,"TESTSPEC",TESTSEQ,SPEC)) Q
 | 
|---|
| 144 |  D URANGE^LR7OGU(TESTNUM,SPEC,AGE,SEX,.UNITS,.RANGE)
 | 
|---|
| 145 |  S ^TMP("LR7OG",$J,"TESTSPEC",TESTSEQ,SPEC)=TESTNUM_U_SPECNAME_U_SPEC_U_UNITS_U_$P(RANGE," - ")_U_$P($P(RANGE," - ",2)," (")
 | 
|---|
| 146 |  Q
 | 
|---|