| 1 | GMTSRS ; SLC/KER - Health Summary Type Resequence      ; 02/11/2003
 | 
|---|
| 2 |  ;;2.7;Health Summary;**62**;Oct 20, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA 10011  ^UTILITY($J
 | 
|---|
| 6 |  ;   DBIA 10013  IX1^DIK 
 | 
|---|
| 7 |  ;   DBIA 10026  ^DIR    
 | 
|---|
| 8 |  ;   DBIA 10011  ^DIWP   
 | 
|---|
| 9 |  ;                                            
 | 
|---|
| 10 |  ; This routine will resequence the Health Summary Components
 | 
|---|
| 11 |  ; in the structure (sub-file 142.01) of a Health Summary 
 | 
|---|
| 12 |  ; Type (file 142)
 | 
|---|
| 13 |  ;                 
 | 
|---|
| 14 | EN ; Main Entry Point
 | 
|---|
| 15 |  N DA,DIK,GMTST,GMTSS,GMTSERR,GMTSCC,X,Y
 | 
|---|
| 16 |  W !,"Resequence the Components and/or Selection Items of a Health Summary Type.",!
 | 
|---|
| 17 |  D LKT^GMTSRS1 I +Y'>0 W !,"Health Summary Type not selected ",! Q
 | 
|---|
| 18 |  S GMTST=+Y,DA(1)=GMTST D RC(GMTST),RSI(GMTST)
 | 
|---|
| 19 |  K DA S DA=GMTST,DIK="^GMT(142," D IX1^DIK
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | RC(TYPE) ; Resequence Components
 | 
|---|
| 22 |  N DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,GMTSNN,GMTSNC,GMTSTX,GMTSC,GMTSCI,GMTSCP,GMTSCN,GMTSI,GMTS,GMTSRO,GMTST,GMTSTR,GMTSCC
 | 
|---|
| 23 |  N %,I,X,Y,Z,DIWL,DIWR,DIWF,DIW,DIWI,DIWT,DIWTC,DIWX,DN,DA
 | 
|---|
| 24 |  S GMTST=+($G(TYPE)) Q:+GMTST=0  Q:'$D(^GMT(142,+GMTST,0))  Q:'$L($P($G(^GMT(142,+GMTST,0)),"^",1))  S U="^",GMTSCC=$$CS(GMTST) Q:+GMTSCC'>1
 | 
|---|
| 25 |  S (GMTSTX,X)="Health Summary Type '"_$P($G(^GMT(142,+GMTST,0)),"^",1)_"' has "_GMTSCC_" Health Summary Components, do you want to resequence them now?"
 | 
|---|
| 26 |  K ^UTILITY($J,"W") S DIWL=0,DIWF="C60" D ^DIWP S GMTSNN="^UTILITY("_$J_",""W"")",GMTSNC="^UTILITY("_$J_",""W"","
 | 
|---|
| 27 |  S GMTSC=0 F  S GMTSNN=$Q(@GMTSNN) Q:GMTSNN=""!(GMTSNN'[GMTSNC)  I GMTSNN'["""W"",0)" S GMTSC=GMTSC+1,DIR("A",GMTSC)=@GMTSNN
 | 
|---|
| 28 |  Q:+GMTSC'>0  K ^UTILITY($J,"W") S DIR("A")=$G(DIR("A",GMTSC))_" (Y/N)  " K DIR("A",GMTSC)
 | 
|---|
| 29 |  W ! S (GMTSCN,GMTSCI)=0,GMTSCP="" F  S GMTSCI=$O(^GMT(142,+GMTST,1,GMTSCI)) Q:+GMTSCI=0  D
 | 
|---|
| 30 |  . S GMTSCP=+($P($G(^GMT(142,+GMTST,1,GMTSCI,0)),"^",2)) Q:+GMTSCP'>0
 | 
|---|
| 31 |  . S GMTSCP=$P($G(^GMT(142.1,+GMTSCP,0)),"^",1) Q:'$L(GMTSCP)
 | 
|---|
| 32 |  . S GMTSCN=+($G(GMTSCN))+1 W !,?1,$J(GMTSCN,3),"  ",GMTSCP
 | 
|---|
| 33 |  S DIR(0)="YAO",DIR("?")="^D YN^GMTSRS3",DIR("??")="^D SC^GMTSRS3",DIR("B")="N"
 | 
|---|
| 34 |  W ! D ^DIR S GMTSRO=0 S:+($G(Y))>0 GMTSRO=1 W ! S DA(1)=+($G(GMTST)) D RCS^GMTSRS1
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | RSI(TYPE) ; Resequence Selection Items
 | 
|---|
| 37 |  N DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,GMTSNN,GMTSNC,GMTSS,GMTSSI,GMTSTX
 | 
|---|
| 38 |  N GMTSC,GMTSCI,GMTSCP,GMTSCN,GMTSI,GMTS,GMTSRO,GMTST,GMTSTR,GMTSCC,%,I,X,Y,Z
 | 
|---|
| 39 |  N DIWL,DIWR,DIWF,DIW,DIWI,DIWT,DIWTC,DIWX,DN,DA
 | 
|---|
| 40 |  S GMTST=+($G(TYPE)) Q:+GMTST=0  Q:'$D(^GMT(142,+GMTST,0))
 | 
|---|
| 41 |  Q:'$L($P($G(^GMT(142,+GMTST,0)),"^",1))
 | 
|---|
| 42 |  S U="^",GMTSCC=$$CSI(GMTST) Q:+GMTSCC'>0
 | 
|---|
| 43 |  S X="Health Summary Type '"_$P($G(^GMT(142,+GMTST,0)),"^",1)
 | 
|---|
| 44 |  S X=X_"' has "_$S(+GMTSCC>1:GMTSCC,1:"one")_" Health Summary Component"_$S(+GMTSCC>1:"s",1:"")
 | 
|---|
| 45 |  S X=X_" with multiple selection items."
 | 
|---|
| 46 |  S:GMTSCC=1 X=X_"  Do you want to resequence those selection items now?"
 | 
|---|
| 47 |  S:GMTSCC>1 X=X_"  Do you want to resequence any of those selection items now?"
 | 
|---|
| 48 |  K ^UTILITY($J,"W") S DIWL=0,DIWF="C60" D ^DIWP S GMTSNN="^UTILITY("_$J_",""W"")",GMTSNC="^UTILITY("_$J_",""W"","
 | 
|---|
| 49 |  S GMTSC=0 F  S GMTSNN=$Q(@GMTSNN) Q:GMTSNN=""!(GMTSNN'[GMTSNC)  I GMTSNN'["""W"",0)" S GMTSC=GMTSC+1,DIR("A",GMTSC)=@GMTSNN
 | 
|---|
| 50 |  Q:+GMTSC'>0  K ^UTILITY($J,"W") S DIR("A")=$G(DIR("A",GMTSC))_" (Y/N)  " K DIR("A",GMTSC)
 | 
|---|
| 51 |  S (GMTSCN,GMTSCI)=0,GMTSCP="" F  S GMTSCI=$O(^GMT(142,+GMTST,1,GMTSCI)) Q:+GMTSCI=0  D
 | 
|---|
| 52 |  . S GMTSCP=+($P($G(^GMT(142,+GMTST,1,GMTSCI,0)),"^",2)) Q:+GMTSCP'>0
 | 
|---|
| 53 |  . S GMTSCP=$P($G(^GMT(142.1,+GMTSCP,0)),"^",1) Q:'$L(GMTSCP)
 | 
|---|
| 54 |  . S (GMTSS,GMTSSI)=0 F  S GMTSSI=$O(^GMT(142,+GMTST,1,+GMTSCI,1,GMTSSI)) Q:+GMTSSI=0  S GMTSS=+GMTSS+1
 | 
|---|
| 55 |  . Q:+GMTSS'>1  S GMTSCN=+($G(GMTSCN))+1
 | 
|---|
| 56 |  . W:GMTSCC=1 !,?4,"  ",GMTSCP
 | 
|---|
| 57 |  S DIR(0)="YAO",DIR("B")="N" W ! D ^DIR S GMTSRO=0 S:+($G(Y))>0 GMTSRO=1
 | 
|---|
| 58 |  I +($G(Y))>0 D
 | 
|---|
| 59 |  . S DA(1)=+($G(GMTST)) D:+GMTSCC=1 ONE(GMTST) D:+GMTSCC>1 MUL(GMTST)
 | 
|---|
| 60 |  I $D(GMTSRO),+($G(GMTSRO))=0 D ALL(GMTST)
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | ALL(TYPE) ; Resequence (only) All Components Selection Items
 | 
|---|
| 63 |  N DA,GMTST,GMTSCN,GMTSCI,GMTSCN,GMTSCI
 | 
|---|
| 64 |  S GMTST=+($G(TYPE)) Q:+GMTST=0  Q:'$D(^GMT(142,+GMTST,0))  S DA(2)=+GMTST
 | 
|---|
| 65 |  S (DA,GMTSCN,GMTSCI)=0 F  S GMTSCI=$O(^GMT(142,+GMTST,1,GMTSCI)) Q:+GMTSCI=0  D
 | 
|---|
| 66 |  . S DA(1)=GMTSCI Q:'$D(^GMT(142,+DA(2),1,+DA(1),1,"B"))  S GMTSRO=0
 | 
|---|
| 67 |  . I +($G(DA(2)))>0,+($G(DA(1)))>0,$D(^GMT(142,+($G(DA(2))),1,+($G(DA(1))))) D RSI^GMTSRS2
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | ONE(TYPE) ; Reorder/Resequence One Component Selection Items
 | 
|---|
| 70 |  N DA,GMTST,GMTSCN,GMTSCI,GMTSCN,GMTSCI
 | 
|---|
| 71 |  S GMTST=+($G(TYPE)) Q:+GMTST=0  Q:'$D(^GMT(142,+GMTST,0))  S DA(2)=+GMTST
 | 
|---|
| 72 |  S (DA,GMTSCN,GMTSCI)=0 F  S GMTSCI=$O(^GMT(142,+GMTST,1,GMTSCI)) Q:+GMTSCI=0  D  Q:+($G(DA(1)))>0
 | 
|---|
| 73 |  . S (GMTSS,GMTSSI)=0 F  S GMTSSI=$O(^GMT(142,+GMTST,1,+GMTSCI,1,GMTSSI)) Q:+($G(DA(1)))>0  Q:+GMTSSI=0  S GMTSS=+GMTSS+1
 | 
|---|
| 74 |  . Q:+GMTSS'>1  S DA(1)=GMTSCI
 | 
|---|
| 75 |  I +($G(DA(2)))>0,+($G(DA(1)))>0,$D(^GMT(142,+($G(DA(2))),1,+($G(DA(1))))) D RSI^GMTSRS2
 | 
|---|
| 76 |  I +($G(DA(2)))'>0!(+($G(DA(1)))'>0)!('$D(^GMT(142,+($G(DA(2))),1,+($G(DA(1)))))) Q
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | MUL(TYPE) ; Reorder/Resequence Multiple Components
 | 
|---|
| 79 |  N GMTST,GMTSCW,GMTSMAX
 | 
|---|
| 80 |  S GMTST=+($G(TYPE)) Q:+GMTST=0  Q:'$D(^GMT(142,+GMTST,0))
 | 
|---|
| 81 |  D ARY(+($G(GMTST)),.GMTSCW) S GMTSMAX=+($G(GMTSCW(0))) Q:+GMTSMAX'>1
 | 
|---|
| 82 |  F  S X=$$MUL2(GMTST,GMTSMAX,.GMTSCW) Q:+($G(X))'>0
 | 
|---|
| 83 |  Q
 | 
|---|
| 84 | MUL2(GMTST,GMTSMAX,GMTSCW) ; Multiple Component Selection
 | 
|---|
| 85 |  N DIR,DIROUT,DIRUT,DTOUT,DUOUT,GMTS,GMTSA,GMTSC,GMTSI,GMTSN,GMTSTR
 | 
|---|
| 86 |  N GMTSTX,X,Y
 | 
|---|
| 87 |  S DIR(0)="NAO^1:"_GMTSMAX_":0"
 | 
|---|
| 88 |  S (DIR("?"),DIR("??"))="^D MULH^GMTSRS"
 | 
|---|
| 89 |  S DIR("A",1)="The following Components have multiple Selection Items:"
 | 
|---|
| 90 |  S DIR("A",2)=" "
 | 
|---|
| 91 |  S (GMTSI,GMTSC)=0 F  S GMTSI=$O(GMTSCW(GMTSI)) Q:+GMTSI=0  D
 | 
|---|
| 92 |  . S GMTSN=$P($G(GMTSCW(GMTSI)),"^",2) Q:'$L(GMTSN)
 | 
|---|
| 93 |  . S GMTSC=GMTSC+1,GMTSA=GMTSC+2,DIR("A",GMTSA)="    "_$J(GMTSC,2)_"  "_GMTSN
 | 
|---|
| 94 |  S GMTSA=+($O(DIR("A"," "),-1))+1,DIR("A",GMTSA)=" "
 | 
|---|
| 95 |  S DIR("A")="To resequence Selection Items, select 1-"_GMTSMAX_":  "
 | 
|---|
| 96 |  W ! D ^DIR
 | 
|---|
| 97 |  Q:+Y'>0 -1
 | 
|---|
| 98 |  S:X="" (X,Y)=-1 S X=-1 S:+Y>0 X=+($G(GMTSCW(+Y)))
 | 
|---|
| 99 |  S:$D(DIROUT)!($D(DIRUT))!($D(DTOUT))!($D(DUOUT)) X=-1
 | 
|---|
| 100 |  S Y=X D:+Y>0 Y(+($G(GMTST)),+Y) S DA(2)=+($G(GMTST)) S:+Y>0 DA(1)=+Y
 | 
|---|
| 101 |  I +($G(DA(2)))>0,+($G(DA(1)))>0,$D(^GMT(142,+($G(DA(2))),1,+($G(DA(1))))) D RSI^GMTSRS2
 | 
|---|
| 102 |  S GMTST=+Y
 | 
|---|
| 103 |  Q GMTST
 | 
|---|
| 104 | MULH ; Multiple Structure Selection Help
 | 
|---|
| 105 |  W !!,"Select 1-"_GMTSMAX_" to resequence, or return or '^' to exit.",!
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 | Y(TYPE,COMP) ; Results for Y
 | 
|---|
| 108 |  N GMTSS,GMTST S GMTST=+($G(TYPE)),GMTSS=+($G(COMP)) Q:'$D(^GMT(142,+GMTST))
 | 
|---|
| 109 |  I +GMTSS>0,($D(^GMT(142,+($G(GMTST)),1,+GMTSS,0))) D
 | 
|---|
| 110 |  . S Y=+GMTSS,Y(0)=$G(^GMT(142,+($G(GMTST)),1,+GMTSS,0)),Y(142.1)=+($P($G(^GMT(142,+($G(GMTST)),1,+GMTSS,0)),"^",2))
 | 
|---|
| 111 |  . S Y(142.1,0)=$G(^GMT(142.1,+($P($G(^GMT(142,+($G(GMTST)),1,+GMTSS,0)),"^",2)),0))
 | 
|---|
| 112 |  Q
 | 
|---|
| 113 | CS(X) ; Components
 | 
|---|
| 114 |  N GMTSI,GMTSC,GMTSCI S (GMTSC,GMTSCI)=0,GMTSI=+($G(X)) Q:+GMTSI'>0 0
 | 
|---|
| 115 |  F  S GMTSCI=$O(^GMT(142,+GMTSI,1,GMTSCI)) Q:+GMTSCI=0  S GMTSC=GMTSC+1
 | 
|---|
| 116 |  S X=GMTSC Q X
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | CSI(X) ; Components with Multiple Selection Types
 | 
|---|
| 119 |  N GMTSI,GMTSS,GMTSSI,GMTSC,GMTSCI,GMTSEL S (GMTSEL,GMTSC,GMTSCI)=0,GMTSI=+($G(X)) Q:+GMTSI'>0 0
 | 
|---|
| 120 |  F  S GMTSCI=$O(^GMT(142,+GMTSI,1,GMTSCI)) Q:+GMTSCI=0  D
 | 
|---|
| 121 |  . S (GMTSS,GMTSSI)=0
 | 
|---|
| 122 |  . F  S GMTSSI=$O(^GMT(142,GMTSI,1,GMTSCI,1,GMTSSI)) Q:+GMTSSI=0  D
 | 
|---|
| 123 |  . . S GMTSS=+($G(GMTSS))+1
 | 
|---|
| 124 |  . S:+($G(GMTSS))>1 GMTSEL=+($G(GMTSEL))+1
 | 
|---|
| 125 |  S X=GMTSEL Q X
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | ARY(X,ARY) ; Array of Components with Multiple Selection Types
 | 
|---|
| 128 |  N GMTSI,GMTSS,GMTSSI,GMTSC,GMTSCI,GMTSEL,GMTSSN S (GMTSC,GMTSCI,GMTSSN,GMTSEL)=0,GMTSI=+($G(X)) Q:+GMTSI'>0
 | 
|---|
| 129 |  F  S GMTSCI=$O(^GMT(142,+GMTSI,1,GMTSCI)) Q:+GMTSCI=0  D
 | 
|---|
| 130 |  . S (GMTSS,GMTSSI)=0 F  S GMTSSI=$O(^GMT(142,GMTSI,1,GMTSCI,1,GMTSSI)) Q:+GMTSSI=0  S GMTSS=+($G(GMTSS))+1
 | 
|---|
| 131 |  . I +($G(GMTSS))>1 S GMTSEL=+($G(GMTSEL))+1,ARY(GMTSEL)=+GMTSCI_"^"_$P(^GMT(142.1,+($P($G(^GMT(142,+GMTSI,1,GMTSCI,0)),"^",2)),0),"^",1),ARY(0)=GMTSEL
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 | TRIM(X) ; Remove Spaces
 | 
|---|
| 134 |  S X=$G(X) F  Q:$E(X,1)'=" "  S X=$E(X,2,$L(X))
 | 
|---|
| 135 |  F  Q:$E(X,$L(X))'=" "  S X=$E(X,1,($L(X)-1))
 | 
|---|
| 136 |  Q X
 | 
|---|