| 1 | GMTSOBA2 ; SLC/KER - HS Object - Ask               ; 01/06/2003 | 
|---|
| 2 | ;;2.7;Health Summary;**58**;Oct 20, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | ; External References | 
|---|
| 5 | ;   DBIA  10018  ^DIE  (file #142) | 
|---|
| 6 | ;   DBIA  10026  ^DIR | 
|---|
| 7 | ;   DBIA  10006  ^DIC  (file #142) | 
|---|
| 8 | ;   DBIA  10010  EN1^DIP | 
|---|
| 9 | ;   DBIA  10076  ^XUSEC( | 
|---|
| 10 | ;   DBIA  10076  ^XUSEC("GMTSMGR") | 
|---|
| 11 | ; | 
|---|
| 12 | CH ;   Component Header | 
|---|
| 13 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF,GMTSE | 
|---|
| 14 | S GMTSOBJ("COMPONENT HEADER")="",DIR("A")="   Print the standard Component Header?  " | 
|---|
| 15 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,12),GMTSE=0 | 
|---|
| 16 | S GMTSDEF=$S(+GMTSDEF>0:"Y",GMTSDEF="":"Y",1:"N") | 
|---|
| 17 | S DIR("B")=GMTSDEF,DIR(0)="YAO",(DIR("?"),DIR("??"))="^D CH^GMTSOBH" | 
|---|
| 18 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1 | 
|---|
| 19 | S:Y["^"!(X["^") GMTSE=1,GMTSQ=1,GMTSDES=0 | 
|---|
| 20 | K:+($G(GMTSQ))>0 GMTSOBJ("COMPONENT HEADER") Q:+($G(GMTSQ))>0 | 
|---|
| 21 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("COMPONENT HEADER") | 
|---|
| 22 | D:$D(GMTSOBJ("COMPONENT HEADER"))&(GMTSE'>0) LM Q:+($G(GMTSQ))>0  Q:+($G(GMTSE))>0 | 
|---|
| 23 | D:$D(GMTSOBJ("COMPONENT HEADER"))&(GMTSE'>0) UD Q:+($G(GMTSQ))>0  Q:+($G(GMTSE))>0 | 
|---|
| 24 | D:$D(GMTSOBJ("COMPONENT HEADER"))&(GMTSE'>0) BL Q:+($G(GMTSQ))>0  Q:+($G(GMTSE))>0 | 
|---|
| 25 | Q | 
|---|
| 26 | LM ;     Time/Occurence Limits | 
|---|
| 27 | Q:+($G(GMTSQ))>0  Q:+($G(GMTSE))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF | 
|---|
| 28 | S GMTSOBJ("LIMITS")="",DIR("A")="     Use report time/occurence limits?  " | 
|---|
| 29 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,14) | 
|---|
| 30 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") | 
|---|
| 31 | S (DIR("?"),DIR("??"))="^D LM^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 32 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSE=1 | 
|---|
| 33 | S:Y["^"!(X["^") GMTSE=1,GMTSQ=1,GMTSDES=0 | 
|---|
| 34 | K:+($G(GMTSE))>0 GMTSOBJ("LIMITS") Q:+($G(GMTSE))>0 | 
|---|
| 35 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("LIMITS") Q | 
|---|
| 36 | UD ;     Underline Header | 
|---|
| 37 | Q:+($G(GMTSQ))>0  Q:+($G(GMTSE))>0 | 
|---|
| 38 | N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF | 
|---|
| 39 | S GMTSOBJ("UNDERLINE")="",DIR("A")="     Underline Component Header?  " | 
|---|
| 40 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,13) | 
|---|
| 41 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") | 
|---|
| 42 | S (DIR("?"),DIR("??"))="^D CHU^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 43 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSE=1 | 
|---|
| 44 | S:Y["^"!(X["^") GMTSE=1,GMTSQ=1,GMTSDES=0 | 
|---|
| 45 | K:+($G(GMTSE))>0 GMTSOBJ("UNDERLINE") Q:+($G(GMTSE))>0 | 
|---|
| 46 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("UNDERLINE") Q | 
|---|
| 47 | BL ;     Blank Line after Header | 
|---|
| 48 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF | 
|---|
| 49 | S GMTSOBJ("BLANK LINE")="",DIR("A")="     Add a Blank Line after the Component Header?  " | 
|---|
| 50 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,15) | 
|---|
| 51 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") | 
|---|
| 52 | S (DIR("?"),DIR("??"))="^D BL^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 53 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1 | 
|---|
| 54 | K:+($G(GMTSQ))>0 GMTSOBJ("BLANK LINE") Q:+($G(GMTSQ))>0 | 
|---|
| 55 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("BLANK LINE") Q | 
|---|
| 56 | DE ;   Deceased | 
|---|
| 57 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF | 
|---|
| 58 | S GMTSOBJ("DECEASED")="",DIR("A")="   Print the date a patient was deceased?  " | 
|---|
| 59 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,16) | 
|---|
| 60 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") | 
|---|
| 61 | S (DIR("?"),DIR("??"))="^D DE^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 62 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1 | 
|---|
| 63 | K:+($G(GMTSQ))>0 GMTSOBJ("DECEASED") Q:+($G(GMTSQ))>0 | 
|---|
| 64 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("DECEASED") Q | 
|---|
| 65 | LBL ; Label | 
|---|
| 66 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDLD,GMTSDEF | 
|---|
| 67 | K GMTSOBJ("USE LABEL"),GMTSOBJ("LABEL"),GMTSOBJ("LABEL BLANK LINE") | 
|---|
| 68 | S DIR("A")=" Print a LABEL before the Health Summary Object?  " | 
|---|
| 69 | S GMTSDEF=$S(+($G(GMTSDA))>0:$P($G(^GMT(142.5,+($G(GMTSDA)),0)),"^",7),1:0) | 
|---|
| 70 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N"),(DIR("?"),DIR("??"))="^D PLB^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 71 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1 S:Y["^"!(X["^") GMTSQ=1 | 
|---|
| 72 | K:+($G(GMTSQ))>0 GMTSOBJ("USE LABEL") Q:+($G(GMTSQ))>0 | 
|---|
| 73 | S GMTSOBJ("USE LABEL")=$S(+Y>0:1,1:0) | 
|---|
| 74 | S X=+($G(Y)) D:+X LB Q | 
|---|
| 75 | LB ;   Object Label | 
|---|
| 76 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF,GMTSE | 
|---|
| 77 | S GMTSOBJ("LABEL")="",DIR("A")="   Enter LABEL:  " | 
|---|
| 78 | S GMTSDEF=$P($G(^GMT(142.5,+($G(DA)),0)),"^",2) S:$L(GMTSDEF) DIR("B")=GMTSDEF | 
|---|
| 79 | S (DIR("?"),DIR("??"))="^D LBH^GMTSOBH",DIR(0)="FAO^3:60" | 
|---|
| 80 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSE=1 S:Y["^"!(X["^") GMTSE=1 | 
|---|
| 81 | K:+($G(GMTSE))>0 GMTSOBJ("USE LABEL"),GMTSOBJ("LABEL"),GMTSOBJ("LABEL BLANK LINE") | 
|---|
| 82 | Q:+($G(GMTSE))>0  S X=$G(Y) K:'$L(X) GMTSOBJ("USE LABEL"),GMTSOBJ("LABEL"),GMTSOBJ("LABEL BLANK LINE") | 
|---|
| 83 | S:$L(X) GMTSOBJ("LABEL")=X_" " D:$L($G(GMTSOBJ("LABEL"))) LBB Q | 
|---|
| 84 | LBB ;   Label Blank Line | 
|---|
| 85 | Q:+($G(GMTSE))>0  Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDEF,GMTSE | 
|---|
| 86 | S GMTSOBJ("LABEL BLANK LINE")="",DIR("A")="   Print a blank line after the Object Label?  " | 
|---|
| 87 | S GMTSDEF=$P($G(^GMT(142.5,+($G(DA)),0)),"^",8) | 
|---|
| 88 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") S DIR("B")=GMTSDEF | 
|---|
| 89 | S (DIR("?"),DIR("??"))="^D LBLH^GMTSOBH",DIR(0)="YAO" | 
|---|
| 90 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSE=1 S:Y["^"!(X["^") GMTSE=1 | 
|---|
| 91 | K:+($G(GMTSE))>0 GMTSOBJ("LABEL BLANK LINE") Q:+($G(GMTSE))>0 | 
|---|
| 92 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("LABEL BLANK LINE") Q | 
|---|
| 93 | SC ; Suppress Components w/o Data | 
|---|
| 94 | Q:+($G(GMTSQ))>0  N X,Y,DIR,DIROUT,DUOUT,DTOUT,GMTSDLD,GMTSDEF | 
|---|
| 95 | S GMTSOBJ("SUPPRESS COMPONENTS")="",DIR("A")=" Suppress Components without Data?  " | 
|---|
| 96 | S GMTSDEF=$P($G(^GMT(142.5,+($G(GMTSDA)),0)),U,5) | 
|---|
| 97 | S GMTSDEF=$S(+GMTSDEF>0:"Y",1:"N") | 
|---|
| 98 | S (DIR("?"),DIR("??"))="^D SC^GMTSOBH",DIR("B")=GMTSDEF,DIR(0)="YAO" | 
|---|
| 99 | D ^DIR S:$D(DIROUT)!($D(DTOUT)) GMTSQ=1 | 
|---|
| 100 | K:+($G(GMTSQ))>0 GMTSOBJ("SUPPRESS COMPONENTS") Q:+($G(GMTSQ))>0 | 
|---|
| 101 | S X=+($G(Y)) K:+X'>0 GMTSOBJ("SUPPRESS COMPONENTS") | 
|---|
| 102 | Q | 
|---|
| 103 | ET(X) ; Edit Type X | 
|---|
| 104 | Q:+($G(DUZ))'>0  N ADEL,B,BY,CHANGE,CNT,DA,DHD,DIC,DIE,DIK,DIR,DIROUT,DLAYGO,DR,DTOUT | 
|---|
| 105 | N DUOUT,EXISTS,FLDS,FR,GMTSEG,GMTSIEN,GMTSDEF,GMTSIFN,GMTSMGR,GNTSN | 
|---|
| 106 | N GMTSNEW,GMTSQIT,GMTSUM,GMTSV,GMTSAL,D,D0,D1,DQ,Y,L,LCNT,LI | 
|---|
| 107 | N NXTCMP,SELCNT,SOACTION,TO,TWEENER S EXISTS=0,U="^",GMTSAL=1,GMTSQIT=0,X=$G(X) Q:'$L(X)  Q:$L(X)>30 | 
|---|
| 108 | S DIC="^GMT(142,",DIC(0)="XMZ" K DLAYGO D ^DIC | 
|---|
| 109 | S GMTSN=$P($G(^GMT(142,+Y,0)),"^",1) Q:'$L(GMTSN) | 
|---|
| 110 | S GMTSUM=$P(Y,U,2) Q:'$L(GMTSUM)  S:$D(DIROUT)!($D(DTOUT)) Y=-1 Q:+Y'>0 | 
|---|
| 111 | S GMTSNEW=+($P(Y,"^",3)),GMTSV=$$VTE^GMTSOBV(+Y) Q:+GMTSV'>0 | 
|---|
| 112 | S GMTSMGR=$S($D(^XUSEC("GMTSMGR",DUZ)):1,1:0) | 
|---|
| 113 | S DIE="^GMT(142,",(GMTSIFN,DA)=+Y | 
|---|
| 114 | S DR="[GMTS EDIT EXIST HS TYPE]" | 
|---|
| 115 | W !!,"Editing Health Summary Type '",GMTSN,"'",! | 
|---|
| 116 | D ^DIE | 
|---|
| 117 | S EXISTS=0 S:($O(^GMT(142,+GMTSIFN,1,0))) EXISTS=1 | 
|---|
| 118 | D LIST:EXISTS,EXISTS | 
|---|
| 119 | Q | 
|---|
| 120 | EXISTS ;   Edit an existing health summary type | 
|---|
| 121 | N GMTSAL,CNT,NXTCMP Q:$D(DUOUT)  S NXTCMP=0,NXTCMP(0)=0,GMTSAL=0 | 
|---|
| 122 | F CNT=$$GETCNT(GMTSIFN):0 D NXTCMP^GMTSRM1,LIST:GMTSQIT Q:GMTSQIT!($D(DUOUT))  K GMTSQIT,GMTSNEW,TWEENER,SOACTION | 
|---|
| 123 | I NXTCMP>0 W !,"Please hold on while I resequence the summary order" D COPY^GMTSRN,RNMBR^GMTSRN:CHANGE | 
|---|
| 124 | Q | 
|---|
| 125 | LIST ;   Lists existing summary parameters | 
|---|
| 126 | N B,DIC,DIR,IOP,Y,FR,TO,BY,DHD,FLDS,L I GMTSQIT'=2 Q:($D(DUOUT)!(GMTSQIT=1)) | 
|---|
| 127 | I GMTSQIT=2,(NXTCMP=0) S GMTSQIT=0 Q | 
|---|
| 128 | I 'GMTSNEW,'GMTSAL W ! S DIC=142,DIR(0)="Y",DIR("A")="Do you wish to review the Summary Type structure before continuing",DIR("B")="NO" D ^DIR K DIR I 'Y S:GMTSQIT=2 DUOUT="" S:GMTSQIT=2 GMTSQIT="D" S:$D(DUOUT) GMTSQIT=1 Q | 
|---|
| 129 | I $D(GMTSQIT),GMTSQIT=2 S GMTSQIT=0 | 
|---|
| 130 | S IOP="HOME",DIC=142,(FR,TO)=GMTSUM,BY=".01",DHD="[GMTS TYPE INQ HEADER]-[GMTS TYPE INQ FOOTER]",FLDS="[GMTS TYPE INQ]",L=0 D EN1^DIP | 
|---|
| 131 | Q | 
|---|
| 132 | GETCNT(GMTSIFN) ;   Determine default summary order for new component | 
|---|
| 133 | N LI,LCNT S LI=0,LCNT=5 F  S LI=$O(^GMT(142,+GMTSIFN,1,LI)) Q:+LI'>0  S LCNT=$P(LI,".")+5 | 
|---|
| 134 | Q LCNT | 
|---|