| 1 | GMTSOBU ; SLC/KER - HS Object - Utility           ; 01/06/2003
 | 
|---|
| 2 |  ;;2.7;Health Summary;**58**;Oct 20, 1995
 | 
|---|
| 3 |  ;                      
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA 10096  ^%ZOSF("DEL"
 | 
|---|
| 6 |  ;   DBIA 10112  $$SITE^VASITE
 | 
|---|
| 7 |  ;   DBIA 10104  $$UP^XLFSTR
 | 
|---|
| 8 |  ;   DBIA 10026  ^DIR        
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; Errors
 | 
|---|
| 11 | ER1 ;   Health Summary Object Exist
 | 
|---|
| 12 |  N GMTSTXT,GMTSLN S GMTSTXT="Can not install Health Summary Object '"_GMTSOBJ_"'.  A Health Summary Object with the same name already exist." D WER S GMTSQIT=1 Q
 | 
|---|
| 13 | ER2 ;   Health Summary Type Exist
 | 
|---|
| 14 |  N GMTSTXT,GMTSLN S GMTSTXT="Can not install Health Summary Type '"_GMTSTYP_"' for use by the Health Summary Object '"_GMTSOBJ_"'.  A Health Summary Type with the same name already exist." D WER S GMTSQIT=1 Q
 | 
|---|
| 15 | ER3 ;   Health Summary Title Exist
 | 
|---|
| 16 |  N GMTSTXT,GMTSLN S GMTSTXT="Can not install Health Summary Type '"_GMTSTYP_"' for use by the Health Summary Object '"_GMTSOBJ_"'.  A Health Summary Type with the same TITLE ("_GMTSTTL_") already exist." D WER S GMTSQIT=1 Q
 | 
|---|
| 17 | WER ;   Write Error
 | 
|---|
| 18 |  W !," Error:"
 | 
|---|
| 19 | WER2 ;   Write Error Text
 | 
|---|
| 20 |  S GMTSLN=$$TRIM($E(GMTSTXT,1,65)),GMTSLN=$$TRIM($P(GMTSLN," ",1,($L(GMTSLN," ")-1))) S:$L(GMTSTXT)<65 GMTSLN=$$TRIM(GMTSTXT) W:$L(GMTSLN) !,"    ",GMTSLN
 | 
|---|
| 21 |  S GMTSTXT=$$TRIM($P(GMTSTXT,GMTSLN,2,299)),GMTSLN=$$TRIM($E(GMTSTXT,1,65)),GMTSLN=$$TRIM($P(GMTSLN," ",1,($L(GMTSLN," ")-1))) S:$L(GMTSTXT)<65 GMTSLN=$$TRIM(GMTSTXT) W:$L(GMTSLN) !,"    ",GMTSLN
 | 
|---|
| 22 |  S GMTSTXT=$$TRIM($P(GMTSTXT,GMTSLN,2,299)),GMTSLN=$$TRIM($E(GMTSTXT,1,65)),GMTSLN=$$TRIM($P(GMTSLN," ",1,($L(GMTSLN," ")-1))) S:$L(GMTSTXT)<65 GMTSLN=$$TRIM(GMTSTXT) W:$L(GMTSLN) !,"    ",GMTSLN
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;                     
 | 
|---|
| 25 | EHST(X) ; Existing Health Summary Type
 | 
|---|
| 26 |  N GMTSRTN,GMTSEDAT,GMTSOBJ,GMTSTYP,GMTSTXT,GMTSLN,GMTS
 | 
|---|
| 27 |  N Y,DIR,DIROUT,DTOUT,DUOUT
 | 
|---|
| 28 |  S GMTSRTN="GMTSOBX",GMTSOBJ=$P($$TX(GMTSRTN,"OBJ",1),";",2),GMTSTYP=$P($$TX(GMTSRTN,"TYPE",1),";",2)
 | 
|---|
| 29 |  Q:'$L(GMTSOBJ)!('$L(GMTSTYP)) 0
 | 
|---|
| 30 |  W ! S GMTSTXT="Can not install Health Summary Type '"_GMTSTYP_"' to be used"
 | 
|---|
| 31 |  S GMTSTXT=GMTSTXT_" by the object.  A Health Summary Type with the same name already exist." D WER2
 | 
|---|
| 32 |  S GMTSEDAT=$$NWX(GMTSTYP) Q:+($G(GMTSEDAT))'>0 0
 | 
|---|
| 33 |  S GMTSTXT="Do you want to use the pre-existing Health Summary Type '"_GMTSTYP_"' for this Object?  (Y/N)"
 | 
|---|
| 34 |  S GMTSLN=$$TRIM($E(GMTSTXT,1,65))
 | 
|---|
| 35 |  S GMTSLN=$$TRIM($P(GMTSLN," ",1,($L(GMTSLN," ")-1)))
 | 
|---|
| 36 |  S:$L(GMTSTXT)<65 GMTSLN=$$TRIM(GMTSTXT) S:$L(GMTSLN) DIR("A",1)="    "_GMTSLN_"  "
 | 
|---|
| 37 |  S GMTSTXT=$$TRIM($P(GMTSTXT,GMTSLN,2,299))
 | 
|---|
| 38 |  S GMTSLN=$$TRIM($E(GMTSTXT,1,65))
 | 
|---|
| 39 |  S GMTSLN=$$TRIM($P(GMTSLN," ",1,($L(GMTSLN," ")-1)))
 | 
|---|
| 40 |  S:$L(GMTSTXT)<65 GMTSLN=$$TRIM(GMTSTXT) S:$L(GMTSLN) DIR("A")="    "_GMTSLN_"  "
 | 
|---|
| 41 |  S DIR("B")="N",DIR(0)="YAO",(DIR("?"),DIR("??"))="^D YNH^GMTSOBU" W ! D ^DIR
 | 
|---|
| 42 |  S GMTS=+($G(Y)) S X=0,GMTSQIT=1
 | 
|---|
| 43 |  ;   Don't use the pre-existing HS
 | 
|---|
| 44 |  I +GMTS'>0 S GMTSQIT=1,GMTSEDAT=0 D  Q X
 | 
|---|
| 45 |  . ;   Rename HS
 | 
|---|
| 46 |  . D REN I $L($G(GMTSETYP)),$L($G(GMTSETTL)) S GMTSTYP=GMTSETYP,GMTSTTL=GMTSETTL,(GMTSEDAT,GMTSDAT)=$$TIEN
 | 
|---|
| 47 |  . S X=+GMTSEDAT S:+X>0 GMTSQIT=0
 | 
|---|
| 48 |  ;   Use the pre-existing HS
 | 
|---|
| 49 |  I +GMTS>0,$L(GMTSTYP) S GMTSTE=1,(X,GMTSEDAT)=+($G(GMTSDAT)),GMTSQIT=0
 | 
|---|
| 50 |  Q X
 | 
|---|
| 51 | REN ; Rename Health Summary Type
 | 
|---|
| 52 |  N DIR,DIROUT,DUOUT,DTOUT,X,Y,GMTSNN,GMTSNT,GMTSNA S (GMTSETYP,GMTSETTL)=""
 | 
|---|
| 53 |  S DIR("A")="    Do you want to rename the imported Health Summary Type? (Y/N) "
 | 
|---|
| 54 |  S DIR("B")="Y",DIR(0)="YAO"
 | 
|---|
| 55 |  S (DIR("?"),DIR("??"))="^D YNH^GMTSOBU"
 | 
|---|
| 56 |  W ! D ^DIR Q:+Y=0
 | 
|---|
| 57 |  S GMTSETYP=$$EDN($G(GMTSTYP)) Q:'$L($G(GMTSETYP))
 | 
|---|
| 58 |  S GMTSETTL=$$EDT($G(GMTSTTL),$G(GMTSETYP)) S:'$L($G(GMTSETTL)) GMTSETYP=""
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | EDN(X) ; Edit Health Summary Type Name
 | 
|---|
| 61 |  N DIR,DIROUT,DUOUT,DTOUT,Y,GMTSNN,GMTSON,GMTSNA,GMTSETYP
 | 
|---|
| 62 |  S GMTSON=$G(X),GMTSETYP="" Q:'$L(GMTSON) ""
 | 
|---|
| 63 |  S DIR("A")="      Re-Name '"_GMTSON_"' to:  "
 | 
|---|
| 64 |  S GMTSNN=GMTSON F  S GMTSNN=$$TRIM($$NN(GMTSNN)) Q:+($$NWX(GMTSNN))=0
 | 
|---|
| 65 |  S:$L(GMTSNN) DIR("B")=GMTSNN
 | 
|---|
| 66 |  S DIR(0)="FAO^3:30^N GMTS S GMTS=$$CKN^GMTSOBU($G(X)) W:+GMTS=0&($L(X)) !!,""          '""_$G(X)_""' already exist."" K:+GMTS=0&($L(X)) X"
 | 
|---|
| 67 |  S (DIR("?"),DIR("??"))="^D LNH^GMTSOBU"
 | 
|---|
| 68 |  D ^DIR S X="" S:$L(Y)>2&($L(Y)<31) X=Y
 | 
|---|
| 69 |  Q X
 | 
|---|
| 70 | EDT(X,Y) ;  Edit Health Summary Type Title
 | 
|---|
| 71 |  N DIR,DIROUT,DUOUT,DTOUT,GMTSNT,GMTSOT,GMTSTT,GMTSTY,GMTSNA,GMTSETYP
 | 
|---|
| 72 |  S GMTSOT=$G(X),GMTSTT=$$EN2^GMTSUMX($G(Y)),GMTSTY=$G(Y)
 | 
|---|
| 73 |  S GMTSNT=GMTSOT S:'$L(GMTSNT) GMTSNT=GMTSTT S GMTSNT=$$EN2^GMTSUMX(GMTSNT)
 | 
|---|
| 74 |  F  S GMTSNT=$$TRIM($$NN(GMTSNT)) Q:+($$TWX(GMTSNT))=0
 | 
|---|
| 75 |  S DIR("A")="      Title:  " S:$L(GMTSNT)>2&($L(GMTSNT)<31) DIR("B")=GMTSNT
 | 
|---|
| 76 |  S DIR(0)="FAO^3:30^N GMTS S GMTS=$$CKT^GMTSOBU($G(X)) W:+GMTS=0&($L(X)) !!,""          '""_$G(X)_""' already exist."" K:+GMTS=0&($L(X)) X"
 | 
|---|
| 77 |  S (DIR("?"),DIR("??"))="^D LNH^GMTSOBU"
 | 
|---|
| 78 |  D ^DIR S X="" S:$L(Y)>2&($L(Y)<31) X=Y
 | 
|---|
| 79 |  Q X
 | 
|---|
| 80 | YNH ; Yes No Help
 | 
|---|
| 81 |  W !,"        Enter either 'Y' or 'N'." Q
 | 
|---|
| 82 | LNH ; Length Help
 | 
|---|
| 83 |  W !,"          This response must have at least 3 characters and no more than 30"
 | 
|---|
| 84 |  W !,"          characters and must not contain embedded uparrow." Q
 | 
|---|
| 85 | CKN(X) ; Check New Name is Unique
 | 
|---|
| 86 |  S X=$$NWX($G(X)) S X=$S(+X>0:0,1:1) Q X
 | 
|---|
| 87 | CKT(X) ; Check New Title is Unique
 | 
|---|
| 88 |  S X=$$TWX($G(X)) S X=$S(+X>0:0,1:1) Q X
 | 
|---|
| 89 |  ;                     
 | 
|---|
| 90 |  ; Miscellaneous
 | 
|---|
| 91 | TIEN(X) ;   Type IEN
 | 
|---|
| 92 |  N GMTSI,GMTSIEN S GMTSIEN=0 F GMTSI=5:1  D  Q:+GMTSIEN>0
 | 
|---|
| 93 |  . Q:$G(^GMT(142,GMTSI,0))["GMTS HS ADHOC OPTION"  I GMTSI>4999999 S GMTSI=5999999 Q
 | 
|---|
| 94 |  . S:'$D(^GMT(142,GMTSI)) GMTSIEN=GMTSI
 | 
|---|
| 95 |  S X=GMTSIEN Q X
 | 
|---|
| 96 | OIEN(X) ;   Object IEN
 | 
|---|
| 97 |  N GMTSIEN,GMTSIT S GMTSIT=+($P($$SITE^VASITE,"^",3)) Q:+GMTSIT=0 -1
 | 
|---|
| 98 |  S GMTSIEN=+($O(^GMT(142.5,(GMTSIT_"9999")),-1))+1 Q:$D(^GMT(142.5,+GMTSIEN,0)) -1
 | 
|---|
| 99 |  S X=GMTSIEN
 | 
|---|
| 100 |  Q X
 | 
|---|
| 101 | BOX(X) ;   Get HS Object IEN from B Index
 | 
|---|
| 102 |  N GMTSI,GMTSX,GMTSO,GMTSN S GMTSN=$G(X) Q:'$L(GMTSN) 0
 | 
|---|
| 103 |  S (GMTSI,GMTSO)=0 F  S GMTSI=$O(^GMT(142.5,"B",$E(GMTSN,1,30),GMTSI)) Q:+GMTSI=0  D  Q:GMTSO>0
 | 
|---|
| 104 |  . S GMTSX=$P($G(^GMT(142.5,+GMTSI,0)),"^",1) S:$$UP^XLFSTR(GMTSN)=$$UP^XLFSTR(GMTSX) GMTSO=GMTSI
 | 
|---|
| 105 |  S X=+($G(GMTSO))
 | 
|---|
| 106 |  Q X
 | 
|---|
| 107 | NWX(X) ;   Get HS Name IEN from Word Index
 | 
|---|
| 108 |  N GMTSI,GMTSX,GMTST,GMTSN,GMTSW S GMTSN=$$UP^XLFSTR($G(X)) Q:'$L(GMTSN) 0
 | 
|---|
| 109 |  S GMTSW=$P(GMTSN," ",1),(GMTSI,GMTST)=0 F  S GMTSI=$O(^GMT(142,"AW",GMTSW,GMTSI)) Q:+GMTSI=0  D  Q:GMTST>0
 | 
|---|
| 110 |  . S GMTSX=$P($G(^GMT(142,+GMTSI,0)),"^",1) S:$$UP^XLFSTR(GMTSN)=$$UP^XLFSTR(GMTSX) GMTST=GMTSI
 | 
|---|
| 111 |  S X=+($G(GMTST))
 | 
|---|
| 112 |  Q X
 | 
|---|
| 113 | TWX(X) ;   Get HS Title IEN from Word Index
 | 
|---|
| 114 |  N GMTSI,GMTSX,GMTST,GMTSN,GMTSW S GMTSN=$$UP^XLFSTR($G(X)) Q:'$L(GMTSN) 0
 | 
|---|
| 115 |  S GMTSW=$P(GMTSN," ",1),(GMTSI,GMTST)=0 F  S GMTSI=$O(^GMT(142,"AW",GMTSW,GMTSI)) Q:+GMTSI=0  D  Q:GMTST>0
 | 
|---|
| 116 |  . S GMTSX=$P($G(^GMT(142,+GMTSI,"T")),"^",1) S:$$UP^XLFSTR(GMTSN)=$$UP^XLFSTR(GMTSX) GMTST=GMTSI
 | 
|---|
| 117 |  S X=+($G(GMTST))
 | 
|---|
| 118 |  Q X
 | 
|---|
| 119 | NN(X) ;   New Name
 | 
|---|
| 120 |  N GMTSNN,GMTSNI,GMTSNS
 | 
|---|
| 121 |  S GMTSNN=$G(X),GMTSNI=$P(GMTSNN," ",$L(GMTSNN," "))
 | 
|---|
| 122 |  S GMTSNS=$P(GMTSNN," ",1,($L(GMTSNN," ")-1))
 | 
|---|
| 123 |  S:+GMTSNI=0 GMTSNS=GMTSNN S:+GMTSNI=0 GMTSNI=1 S GMTSNI=+GMTSNI+1
 | 
|---|
| 124 |  S GMTSNS=$$TRIM(GMTSNS)
 | 
|---|
| 125 |  S:($L(GMTSNS)+$L(GMTSNI))>29 GMTSNS=$E(GMTSNS,1,30-($L(GMTSNI)+2))
 | 
|---|
| 126 |  S X=$$TRIM(GMTSNS)_" "_GMTSNI
 | 
|---|
| 127 |  Q X
 | 
|---|
| 128 | DEL(X) ;   Delete Routine X
 | 
|---|
| 129 |  S X=$G(X) Q:'$L(X)  Q:$L(X)>8  Q:$$ROK(X)=0  X ^%ZOSF("DEL") Q
 | 
|---|
| 130 | ROK(X) ;   Routine Ok
 | 
|---|
| 131 |  S X=$G(X) Q:'$L(X) 0
 | 
|---|
| 132 |  N GMTSEX,GMTSTXT S GMTSEX="S GMTSTXT=$T(+1^"_X_")" X GMTSEX Q:'$L(GMTSTXT) 0 Q 1
 | 
|---|
| 133 | TX(R,T,L) ;   Get Text (Routine/Tag/Line)
 | 
|---|
| 134 |  N GMTSEX,GMTSTXT S GMTSEX="S GMTSTXT=$T("_T_"+"_L_"^"_R_")" X GMTSEX S X=GMTSTXT
 | 
|---|
| 135 |  Q X
 | 
|---|
| 136 | TRIM(X) ;   Trim Spaces
 | 
|---|
| 137 |  S X=$G(X) F  Q:$E(X,1)'=" "  S X=$E(X,2,$L(X))
 | 
|---|
| 138 |  F  Q:$E(X,$L(X))'=" "  S X=$E(X,1,($L(X)-1))
 | 
|---|
| 139 |  S X=$$UP^XLFSTR($E(X,1))_$E(X,2,$L(X))
 | 
|---|
| 140 |  Q X
 | 
|---|