| 1 | LRPXSXRL ; SLC/PKR - Build indexes for Lab. ;9/27/03  22:37
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**295**;Sep 27, 1994
 | 
|---|
| 3 |  Q
 | 
|---|
| 4 |  ;===============================================================
 | 
|---|
| 5 | LAB ; this entry point is called to rebuild ALL Lab indexes in ^PXRMINDX(63
 | 
|---|
| 6 |  ; dbia 4247
 | 
|---|
| 7 |  ;Build the indexes for LAB DATA.
 | 
|---|
| 8 |  N DAE,DAS,DAT,DATE,DFN,DNODE,END,ENTRIES,ETEXT,GLOBAL,IND
 | 
|---|
| 9 |  N LRDFN,LRDN,LRIDT,NE,NERROR
 | 
|---|
| 10 |  N START,TEMP,TENP,TEST,TEXT
 | 
|---|
| 11 |  K ^TMP("LRPXTEST",$J)
 | 
|---|
| 12 |  ;Dont leave any old stuff around.
 | 
|---|
| 13 |  D CLEANL
 | 
|---|
| 14 |  S GLOBAL=$$GET1^DID(63,"","","GLOBAL NAME")_"""CH"")"
 | 
|---|
| 15 |  S NERROR=0
 | 
|---|
| 16 |  S ENTRIES=$P(^LR(0),U,4)
 | 
|---|
| 17 |  S TENP=ENTRIES/10
 | 
|---|
| 18 |  S TENP=+$P(TENP,".",1)
 | 
|---|
| 19 |  I TENP<1 S TENP=1
 | 
|---|
| 20 |  D BMES^XPDUTL("Building indexes for LAB DATA - CH")
 | 
|---|
| 21 |  S TEXT="There are "_ENTRIES_" entries to process."
 | 
|---|
| 22 |  D MES^XPDUTL(TEXT)
 | 
|---|
| 23 |  S START=$H
 | 
|---|
| 24 |  S (IND,NE)=0
 | 
|---|
| 25 |  K ^TMP("LRPXSXRL",$J)
 | 
|---|
| 26 |  S TEST=0
 | 
|---|
| 27 |  F  S TEST=$O(^LAB(60,TEST)) Q:TEST<1  D  ; preset values (lrdn)=test#
 | 
|---|
| 28 |  . S DNODE=$P($G(^LAB(60,TEST,0)),U,5)
 | 
|---|
| 29 |  . I $P(DNODE,";")'="CH" Q
 | 
|---|
| 30 |  . I $P(DNODE,";",3)'=1 Q
 | 
|---|
| 31 |  . S LRDN=+$P(DNODE,";",2)
 | 
|---|
| 32 |  . I 'LRDN Q
 | 
|---|
| 33 |  . S ^TMP("LRPXSXRL",$J,LRDN)=TEST_U_$D(^TMP("LRPXSXRL",$J,LRDN))
 | 
|---|
| 34 |  S LRDFN=.9
 | 
|---|
| 35 |  F  S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1  D
 | 
|---|
| 36 |  . S TEMP=$G(^LR(LRDFN,0))
 | 
|---|
| 37 |  . I $P(TEMP,U,2)'=2 Q
 | 
|---|
| 38 |  . S DFN=+$P(TEMP,U,3)
 | 
|---|
| 39 |  . I LRDFN'=$$LRDFN^LRPXAPIU(DFN) Q
 | 
|---|
| 40 |  . S IND=IND+1
 | 
|---|
| 41 |  . I IND#TENP=0 D
 | 
|---|
| 42 |  .. S TEXT="Processing entry "_IND
 | 
|---|
| 43 |  .. D MES^XPDUTL(TEXT)
 | 
|---|
| 44 |  . S LRIDT=0
 | 
|---|
| 45 |  . F  S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1  D
 | 
|---|
| 46 |  .. I '$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3) Q  ; check for completed
 | 
|---|
| 47 |  .. S DAT=LRDFN_";CH;"_LRIDT
 | 
|---|
| 48 |  .. S DATE=9999999-LRIDT
 | 
|---|
| 49 |  .. S LRDN=1
 | 
|---|
| 50 |  .. F  S LRDN=$O(^LR(LRDFN,"CH",LRIDT,LRDN)) Q:LRDN<1  D
 | 
|---|
| 51 |  ... S DAS=DAT_";"_LRDN
 | 
|---|
| 52 |  ... S TEMP=^LR(LRDFN,"CH",LRIDT,LRDN)
 | 
|---|
| 53 |  ... S TEST=+$P($P(TEMP,U,3),"!",6) ; get test, use ^LR node
 | 
|---|
| 54 |  ... I 'TEST D  ; if not available on ^LR node
 | 
|---|
| 55 |  .... I $P($G(^TMP("LRPXSXRL",$J,LRDN)),U,2) D  ; if duplicates, use file 60
 | 
|---|
| 56 |  ..... S TEST=+$O(^LAB(60,"C","CH;"_$G(LRDN)_";1",0))
 | 
|---|
| 57 |  .... E  S TEST=+$G(^TMP("LRPXSXRL",$J,LRDN)) ; otherwise, use preset value
 | 
|---|
| 58 |  ... I 'TEST D
 | 
|---|
| 59 |  .... S DAE=LRDFN_","_"""CH"""_","_LRIDT_","_LRDN
 | 
|---|
| 60 |  .... S ETEXT=DAE_" No lab test"
 | 
|---|
| 61 |  .... I $D(^TMP("LRPXTEST",$J,LRDN)) Q
 | 
|---|
| 62 |  .... D ADDERROR^PXRMSXRM(GLOBAL,ETEXT,.NERROR) ; dbia 4113
 | 
|---|
| 63 |  .... S ^TMP("LRPXTEST",$J,LRDN)=""
 | 
|---|
| 64 |  ... E  D
 | 
|---|
| 65 |  .... D SLAB^LRPX(DFN,DATE,TEST,DAS)
 | 
|---|
| 66 |  .... S NE=NE+1
 | 
|---|
| 67 |  K ^TMP("LRPXSXRL",$J),^TMP("LRPXTEST",$J)
 | 
|---|
| 68 |  S TEXT=NE_" LAB DATA (CH) results indexed."
 | 
|---|
| 69 |  D MES^XPDUTL(TEXT)
 | 
|---|
| 70 |  S END=$H
 | 
|---|
| 71 |  D DETIME^PXRMSXRM(START,END) ; dbia 4113
 | 
|---|
| 72 |  ;If there were errors send a message.
 | 
|---|
| 73 |  I NERROR>0 D ERRMSG^PXRMSXRM(NERROR,GLOBAL) ; dbia 4113
 | 
|---|
| 74 |  ;Send a MailMan message with the results.
 | 
|---|
| 75 |  D COMMSG^PXRMSXRM(GLOBAL,START,END,NE,NERROR) ; dbia 4113
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  D AP^LRPXSXRA
 | 
|---|
| 78 |  D MICRO^LRPXSXRB
 | 
|---|
| 79 |  Q
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | FRESH ; deletes all Lab, Micro, and AP ^PXRMINDX(63 indexes
 | 
|---|
| 82 |  K ^PXRMINDX(63) ; dbia 4114
 | 
|---|
| 83 |  Q
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 | CLEANL ;
 | 
|---|
| 86 |  D BMES^XPDUTL("Cleaning up old Lab entries")
 | 
|---|
| 87 |  D FRESH ; remove all lab indexes
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | RESETAP ; reindex AP
 | 
|---|
| 91 |  D BMES^XPDUTL("Reindex Anatomic Pathology Data")
 | 
|---|
| 92 |  D REMOVE("A")
 | 
|---|
| 93 |  D AP^LRPXSXRA
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | RESETMI ; reindex Micro
 | 
|---|
| 97 |  D BMES^XPDUTL("Reindex Microbiology Data")
 | 
|---|
| 98 |  D REMOVE("M")
 | 
|---|
| 99 |  D MICRO^LRPXSXRB
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | RESETAM ; reindex AP and Micro
 | 
|---|
| 103 |  D RESETAP
 | 
|---|
| 104 |  D RESETMI
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 | REMOVE(TYPE) ; remove these types of indexes
 | 
|---|
| 108 |  N DATE,DFN,ITEM,REF,STOP
 | 
|---|
| 109 |  S STOP=TYPE_"Z"
 | 
|---|
| 110 |  S ITEM=TYPE
 | 
|---|
| 111 |  F  S ITEM=$O(^PXRMINDX(63,"IP",ITEM)) Q:ITEM=""  Q:ITEM]STOP  D
 | 
|---|
| 112 |  . S DFN=0
 | 
|---|
| 113 |  . F  S DFN=$O(^PXRMINDX(63,"IP",ITEM,DFN)) Q:DFN<1  D
 | 
|---|
| 114 |  .. S DATE=0
 | 
|---|
| 115 |  .. F  S DATE=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE)) Q:DATE<1  D
 | 
|---|
| 116 |  ... S REF=""
 | 
|---|
| 117 |  ... F  S REF=$O(^PXRMINDX(63,"IP",ITEM,DFN,DATE,REF)) Q:REF=""  D
 | 
|---|
| 118 |  .... D KLAB^LRPX(DFN,DATE,ITEM,REF)
 | 
|---|
| 119 |  Q
 | 
|---|