| 1 | GMTSULT7 ; SLC/KER - HS Type Lookup ("B" index)     ; 09/21/2001
 | 
|---|
| 2 |  ;;2.7;Health Summary;**30,47**;Oct 20, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA 10060  ^VA(200
 | 
|---|
| 6 |  ;                      
 | 
|---|
| 7 |  Q
 | 
|---|
| 8 | B ; Search "B" Index
 | 
|---|
| 9 |  ;                      
 | 
|---|
| 10 |  ;   Needs GMTSEQ and GMTSEO
 | 
|---|
| 11 |  ;                      
 | 
|---|
| 12 |  ;     GMTSEQ=1 Exact match reqired
 | 
|---|
| 13 |  ;              Stop search if found
 | 
|---|
| 14 |  ;              Continue partial-exact search if not found
 | 
|---|
| 15 |  ;                      
 | 
|---|
| 16 |  ;     GMTSEO=1 Exact match, only one entry
 | 
|---|
| 17 |  ;              Stop search if found and return single entry
 | 
|---|
| 18 |  ;              Do not continue if not found
 | 
|---|
| 19 |  ;                      
 | 
|---|
| 20 |  D CLR^GMTSULT S X=$G(X) Q:'$L(X)  N GMTSKL1,GMTSKL2,GMTSIV,GMTSIEN,GMTSDS,GMTSD0,GMTSDW,GMTSC,GMTSE
 | 
|---|
| 21 |  S GMTSKL1=$$LO($E(X,1)),GMTSKL2=$$UP(GMTSKL1),U="^",(GMTSE,GMTSC)=0
 | 
|---|
| 22 |  S:$L($G(DIC("S")))&('$L($G(GMTSDICS))) GMTSDICS=$G(DIC("S")),GMTSDS=1
 | 
|---|
| 23 |  S:$L($G(DIC(0)))&('$L($G(GMTSDIC0))) GMTSDIC0=$G(DIC(0)),GMTSD0=1
 | 
|---|
| 24 |  S:$L($G(DIC("W")))&('$L($G(GMTSDICW))) GMTSDICW=$G(DIC("W")),GMTSDW=1
 | 
|---|
| 25 |  D:$G(GMTSDIC0)'["M" CLR^GMTSULT
 | 
|---|
| 26 |  S GMTSIV=$C($A(GMTSKL1)-1)_"~" F  S GMTSIV=$O(^GMT(142,"B",GMTSIV)) Q:GMTSIV=""!($E(GMTSIV,1)'=GMTSKL1)  Q:GMTSE  D  Q:GMTSE
 | 
|---|
| 27 |  . Q:$$UP($E(X,1,30))'=$$UP($E(GMTSIV,1,$L(X)))  S GMTSIEN=0 F  S GMTSIEN=$O(^GMT(142,"B",GMTSIV,GMTSIEN)) Q:+GMTSIEN=0  Q:GMTSE  D CK  Q:GMTSE
 | 
|---|
| 28 |  S GMTSIV=$C($A(GMTSKL2)-1)_"~" F  S GMTSIV=$O(^GMT(142,"B",GMTSIV)) Q:GMTSIV=""!($E(GMTSIV,1)'=GMTSKL2)  Q:GMTSE  D  Q:GMTSE
 | 
|---|
| 29 |  . Q:$$UP($E(X,1,30))'=$$UP($E(GMTSIV,1,$L(X)))  S GMTSIEN=0 F  S GMTSIEN=$O(^GMT(142,"B",GMTSIV,GMTSIEN)) Q:+GMTSIEN=0  Q:GMTSE  D CK  Q:GMTSE
 | 
|---|
| 30 | BQ ; Quit "B" Index search
 | 
|---|
| 31 |  K:+($G(GMTSDS))>0 GMTSDICS K:+($G(GMTSD0))>0 GMTSDIC0 K:+($G(GMTSDW))>0 GMTSDICW
 | 
|---|
| 32 |  D REO
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 |  ;                      
 | 
|---|
| 35 |  ; Build list
 | 
|---|
| 36 | CK ;   Check Entry
 | 
|---|
| 37 |  N GMTSCK,GMTSNM,GMTSTL,GMTSOW,GMTSCMP,GMTSOKS,GMTSDT,GMTSDT2 S GMTSTL=$P($G(^GMT(142,+GMTSIEN,"T")),U,1),GMTSNM=$P($G(^GMT(142,+GMTSIEN,0)),U,1)
 | 
|---|
| 38 |  S GMTSDT=GMTSNM S:$$UP(GMTSNM)'=$$UP(GMTSTL)&($L(GMTSTL)) GMTSDT=GMTSNM_" ("_GMTSTL_")"
 | 
|---|
| 39 |  S GMTSOW=+($P($G(^GMT(142,+GMTSIEN,0)),U,3)) S:GMTSOW<1 GMTSOW="" S:+GMTSOW>0 GMTSOW=$P($G(^VA(200,+GMTSOW,0)),U,1)
 | 
|---|
| 40 |  S GMTSCMP=$$CM^GMTSULT2(GMTSIEN) S:$D(GMTSDICW) GMTSDT=GMTSNM S GMTSDT=$$MX(GMTSDT),GMTSOKS=+($$DICS^GMTSULT2($G(GMTSDICS),GMTSNM,+GMTSIEN)) Q:'GMTSOKS  S GMTSCK="GMTSNM"
 | 
|---|
| 41 |  I +($G(GMTSEO)) I $L($G(X))>0,$$UP($G(X))=$$UP($G(GMTSNM)) S GMTSE=1,GMTSCK="GMTSNM" D EA Q
 | 
|---|
| 42 |  I $L($G(X))>0,$$UP($G(X))=$$UP($G(GMTSNM)) S GMTSCK="GMTSNM" D EA Q
 | 
|---|
| 43 |  D MA Q
 | 
|---|
| 44 | MA ;   Add Match
 | 
|---|
| 45 |  Q:$D(^TMP("GMTSULT2",$J,"IEN",+GMTSIEN))
 | 
|---|
| 46 |  S GMTSC=+($G(GMTSC))+1,^TMP("GMTSULT2",$J,GMTSC)=$$ASM,^TMP("GMTSULT2",$J,0)=GMTSC,^TMP("GMTSULT2",$J,"B",(GMTSNM_" "),GMTSC)=""
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | EA ;   Add Exact Match
 | 
|---|
| 49 |  S GMTSC=+($G(GMTSC))+1 S GMTSCMP=$$CM^GMTSULT2(GMTSIEN) S ^TMP("GMTSULT2",$J,"EM")=+GMTSIEN,^TMP("GMTSULT2",$J,"IEN",+GMTSIEN)="",^TMP("GMTSULT2",$J,"B",(GMTSNM_" "),GMTSC)="",^TMP("GMTSULT2",$J,"EMI")=GMTSC
 | 
|---|
| 50 |  S ^TMP("GMTSULT2",$J,"EMB")=GMTSNM_" ",^TMP("GMTSULT2",$J,GMTSC)=$$ASM,^TMP("GMTSULT2",$J,0)=GMTSC,^TMP("GMTSULT2",$J,"B",(GMTSNM_" "))=""
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 | ASM(X) ;   Assemble string to store in list
 | 
|---|
| 53 |  N GMTST S GMTST=$G(GMTSTL) S:$L($G(GMTSDT))&($G(GMTSDT)'=$G(GMTST)) GMTST=GMTSDT
 | 
|---|
| 54 |  S X=+($G(GMTSIEN)),X=X_U_$G(GMTSNM)_U_$G(GMTSTL)_U_$G(GMTSOW)_U_U_$G(GMTSCMP)_U_GMTST
 | 
|---|
| 55 |  Q X
 | 
|---|
| 56 |  ;                      
 | 
|---|
| 57 | REO ; Reorder List
 | 
|---|
| 58 |  N GMTSC,GMTSFND,GMTSG,GMTSI,GMTSIEN,GMTSKEY,GMTSL,GMTSCMP,GMTSOW,GMTSTTL,GMTSLOC,GMTSMN,GMTSNM
 | 
|---|
| 59 |  S GMTSI=0,GMTSFND=""
 | 
|---|
| 60 |  ;   Add exact match to the top of the selection list
 | 
|---|
| 61 |  I '$D(^TMP("GMTSULT2",$J,"EMI")),+($G(GMTSEO)) K ^TMP("GMTSULT2",$J)
 | 
|---|
| 62 |  I $D(^TMP("GMTSULT2",$J,"EMI")) D
 | 
|---|
| 63 |  . S GMTSI=0,GMTSC=$G(^TMP("GMTSULT2",$J,"EMI")) D ADD
 | 
|---|
| 64 |  . S ^TMP("GMTSULT",$J,0)=GMTSI K ^TMP("GMTSULT2",$J,"EMI")
 | 
|---|
| 65 |  . ;   Kill global (quit) if Exact Match is found
 | 
|---|
| 66 |  . ;     and DIR(0) either contains OE or X
 | 
|---|
| 67 |  . K:+($G(GMTSEQ)) ^TMP("GMTSULT2",$J) K:+($G(GMTSEO)) ^TMP("GMTSULT2",$J)
 | 
|---|
| 68 |  ;   Kill global (quit) if Exact Match is not 
 | 
|---|
| 69 |  ;     found and DIR(0)["OE"
 | 
|---|
| 70 |  I '$D(^TMP("GMTSULT2",$J,"EMI")),+($G(GMTSEO)) K ^TMP("GMTSULT2",$J)
 | 
|---|
| 71 |  ;   Add other entries in Alphabetical Order
 | 
|---|
| 72 |  S GMTSFND=0 Q:'$D(^TMP("GMTSULT2",$J,"B"))  F  S GMTSFND=$O(^TMP("GMTSULT2",$J,"B",GMTSFND)) Q:GMTSFND=""  D
 | 
|---|
| 73 |  . S GMTSC=0 F  S GMTSC=$O(^TMP("GMTSULT2",$J,"B",GMTSFND,GMTSC)) Q:+GMTSC=0  D ADD
 | 
|---|
| 74 |  D CLEAN^GMTSULT
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | ADD ;   Add to the reordered list
 | 
|---|
| 77 |  N GMTS0,GMTS1,GMTS2,GMTS3,GMTS4,GMTS5,GMTS6,GMTS7
 | 
|---|
| 78 |  S GMTSI=+($G(GMTSI))+1,GMTS0=$G(^TMP("GMTSULT2",$J,GMTSC)) S (GMTSG,GMTSMN,GMTS2)=$$MX($P(GMTS0,U,2)) S (GMTS1,GMTSIEN)=+($P(GMTS0,U,1)) S GMTSNM=$$UP(GMTSMN)
 | 
|---|
| 79 |  S (GMTS4,GMTSOW)=$$MX($P(GMTS0,U,4)),GMTSOW=GMTSOW_")" S (GMTS3,GMTSTTL)=$$MX($P(GMTS0,U,3)),GMTSTTL=GMTSTTL_")" S (GMTS5,GMTSLOC)=$$MX($P(GMTS0,U,5)),GMTSLOC=GMTSLOC_")"
 | 
|---|
| 80 |  S (GMTS6,GMTSCMP)=$P(GMTS0,U,6),GMTSL=$P(GMTS0,U,4),GMTSG=$P(GMTS0,U,7)
 | 
|---|
| 81 |  S:$L(GMTSG)&(GMTSG'[")")&(GMTSG'["(")&(+GMTS6=0)&($L(GMTS6)) GMTSG=GMTSG_" ("_GMTS6_")"
 | 
|---|
| 82 |  S GMTS7=GMTSG S ^TMP("GMTSULT",$J,GMTSI)=GMTS1_U_GMTS2_U_GMTS3_U_GMTS4_U_GMTS5_U_GMTS6_U_GMTS7
 | 
|---|
| 83 |  S ^TMP("GMTSULT",$J,0)=GMTSI
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;                  
 | 
|---|
| 86 |  ; Miscellaneous
 | 
|---|
| 87 | UP(X) ;   Uppercase
 | 
|---|
| 88 |  Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 | 
|---|
| 89 | LO(X) ;   Lowercase
 | 
|---|
| 90 |  Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
 | 
|---|
| 91 | MX(X) ;   Mix Case
 | 
|---|
| 92 |  Q $$EN^GMTSUMX(X)
 | 
|---|
| 93 | DUP(X) ; Check for Duplicate
 | 
|---|
| 94 |  S X=$G(X) Q:'$L(X) 0  N GMTSE,GMTSI S (GMTSE,GMTSI)=0
 | 
|---|
| 95 |  F  S GMTSI=$O(^GMT(142,"B",$E(X,1,30),GMTSI)) Q:+GMTSI=0  D  Q:GMTSE
 | 
|---|
| 96 |  . S GMTSN=$P($G(^GMT(142,+GMTSI,0)),"^",1) S:$$UP^GMTSULT2(X)=$$UP^GMTSULT2(GMTSN) GMTSE=1
 | 
|---|
| 97 |  S X=+($G(GMTSE)) Q X
 | 
|---|