1 | GMRAPER0 ;HIRMFO/WAA-REACTIONS SELECT ROUTINE ;6/9/05 11:12
|
---|
2 | ;;4.0;Adverse Reaction Tracking;**7,21,23**;Mar 29, 1996
|
---|
3 | EN1 ; ENTRY POINT TO SELECT SIGNS/SYMPTOMS
|
---|
4 | K GMRARAD,GMRAROT,GMRARDL,GMRAROTD S GMRAR10(11)=GMRAOTH_"^OTHER SIGN/SYMPTOM"
|
---|
5 | LIST ; Display Signs/Symptoms
|
---|
6 | W #
|
---|
7 | I $O(GMRARPR(""))="" W !!,"No signs/symptoms have been specified. Please add some now."
|
---|
8 | RELIST D DSPREAC
|
---|
9 | ;This is to handle historical events
|
---|
10 | I 'GMRAOUT,($O(GMRARPR(""))=""&($P(GMRAPA(0),U,6)="h")) G Q1
|
---|
11 | ;This is to handle observed events
|
---|
12 | I 'GMRAOUT,($O(GMRARPR(""))=""&($P(GMRAPA(0),U,6)="o")) W !!,$C(7),"SIGNS/SYMPTOMS MUST BE SPECIFIED. THIS IS A REQUIRED RESPONSE." G RELIST
|
---|
13 | G:'GMRAOUT LIST S:GMRAOUT GMRAOUT=2-GMRAOUT
|
---|
14 | Q1 ; Exit from program
|
---|
15 | K %,DIC,GMADATE,GMRACTR,GMRADO,GMRAOK,GMRAPC,GMRAR10,GMRADATE,GMRAREAC,GMRARECN,GMRARPR,GMRAX,GMRAY,GMRARADD,GMRAROTT,X,Y
|
---|
16 | Q
|
---|
17 | DSPREAC ; Display all the patient reactions
|
---|
18 | I $O(GMRARPR(""))="" G NOREAC
|
---|
19 | W !!,"The following is the list of reported signs/symptoms for this reaction:"
|
---|
20 | ; GMRACHC(Y) is the reaction that the user can change
|
---|
21 | S GMRAREAC="",GMRACTR=0 K GMRACHC
|
---|
22 | F S GMRAREAC=$O(GMRARPR(GMRAREAC)) Q:GMRAREAC="" D
|
---|
23 | .S GMRARECN=0 F S GMRARECN=$O(GMRARPR(GMRAREAC,GMRARECN)) Q:GMRARECN'>0 D
|
---|
24 | ..S Y=$$CHC,GMRACHC(Y,GMRAREAC,GMRARECN)=""
|
---|
25 | ..S:Y GMRACHC(Y)=GMRARECN_U_GMRAREAC
|
---|
26 | ..Q
|
---|
27 | .Q
|
---|
28 | ;v=reaction that this user did not enter
|
---|
29 | I $D(GMRACHC(0)) D
|
---|
30 | .W !!," These reactions were entered by another user:"
|
---|
31 | .W !," Signs/Symptoms " W:'$G(GMRANDT) "Date Observed"
|
---|
32 | .W !,$$REPEAT^XLFSTR("-",75)
|
---|
33 | .S X="" F S X=$O(GMRACHC(0,X)) Q:X="" S Y=0 F S Y=$O(GMRACHC(0,X,Y)) Q:Y<1 D
|
---|
34 | ..S GMRARECN=Y
|
---|
35 | ..S GMRAREAC=X
|
---|
36 | ..D:$G(GMRAPRP(GMRAREAC,GMRARECN))="" PRTREAC
|
---|
37 | ..Q
|
---|
38 | .W !
|
---|
39 | .Q
|
---|
40 | ;v===Reaction that this user entered
|
---|
41 | S X=0 F S X=$O(GMRACHC(X)) Q:X<1 D
|
---|
42 | .S GMRARECN=$P(GMRACHC(X),U)
|
---|
43 | .S GMRAREAC=$P(GMRACHC(X),U,2)
|
---|
44 | .D:$G(GMRAPRP(GMRAREAC,GMRARECN))="" PRTREAC
|
---|
45 | .Q
|
---|
46 | MANIL ;
|
---|
47 | W !!,"Select Action (A)DD",$S(GMRACTR>0:", (D)ELETE ",1:" "),"OR <RET>: " R X:DTIME S:'$T X="^^" I "^^"[X S GMRAOUT=2-(X'="") Q
|
---|
48 | S:X?1L X=$C($A(X)-32)
|
---|
49 | I '(X="A"!(X="D")) W !?4,$C(7),"ENTER AN A TO ADD SIGNS/SYMPTOMS TO THIS LIST," W:GMRACTR !?10,"OR D TO DELETE SIGNS/SYMPTOMS FROM THIS LIST," W !?10,"OR <RET> TO ACCEPT THIS LIST OF SIGNS/SYMPTOMS." G MANIL
|
---|
50 | I X="D" D DELREAC^GMRAPER1 Q
|
---|
51 | NOREAC D ADREAC
|
---|
52 | Q:'$D(GMRARPR)
|
---|
53 | ;v---Ask the date then loop through the RPR array and put the date in 3
|
---|
54 | Q:GMRAOUT
|
---|
55 | S GMRAASK=0
|
---|
56 | S GMADATE=$G(GMADATE)
|
---|
57 | I GMADATE="",$G(GMRAODT)>0 S GMADATE=GMRAODT
|
---|
58 | I '$G(GMRANDT) D DATE(.GMADATE,.GMRAASK) Q:GMRAOUT D
|
---|
59 | .N GMRAX
|
---|
60 | .;Add the data to the new reaction unless it has a date
|
---|
61 | .;Reaction from the reaction file 120.8
|
---|
62 | .S GMRAX=0 F S GMRAX=$O(GMRARAD(GMRAX)) Q:GMRAX<1 D
|
---|
63 | ..I $P(GMRARAD(GMRAX),U,2)'=""!($D(GMRARADD("DONE",GMRAX))) Q ;Date had been added to this reaction or reaction has already been processed. Allows null entry
|
---|
64 | ..S $P(GMRARAD(GMRAX),U,2)=GMADATE,GMRARADD("DONE",GMRAX)="" ;keeps track of entries edited so null dates aren't over written during same session
|
---|
65 | ..S $P(GMRARPR($P(GMRARAD(GMRAX),U),GMRAX),U,3)=GMADATE
|
---|
66 | ..Q
|
---|
67 | .;Other Reaction
|
---|
68 | .S GMRAX="" F S GMRAX=$O(GMRAROT(GMRAX)) Q:GMRAX="" D
|
---|
69 | ..I $P(GMRAROT(GMRAX),U,2)'=""!($D(GMRAROTT("DONE",GMRAX))) Q ;Date had been added to this reaction or sign has already been processed.
|
---|
70 | ..S $P(GMRAROT(GMRAX),U,2)=GMADATE,GMRAROTT("DONE",GMRAX)="" ;entries processed will not be overwritten by other sign/symptoms during same editing session
|
---|
71 | ..S $P(GMRARPR($P(GMRAROT(GMRAX),U),GMRAOTH),U,3)=GMADATE
|
---|
72 | .Q
|
---|
73 | K GMADATE ;Delete date associated with this sign/symptom
|
---|
74 | Q
|
---|
75 | ADREAC ;This is the site parameter's top ten most common signs/symptoms
|
---|
76 | I $G(ERR) W !!,"One or more entries you selected were inactive. Please use option 11",!,"to find a similar term to replace the inactive sign/symptom you selected." K ERR ;23
|
---|
77 | W !!,"The following are the top ten most common signs/symptoms:"
|
---|
78 | F GMRAREAC=1:1:5 W !,$J(GMRAREAC,2),".",?4,$P(GMRAR10(GMRAREAC),U,2),?35,$J(GMRAREAC+6,2),".",?39,$P(GMRAR10(GMRAREAC+6),U,2)
|
---|
79 | W !?1,"6.",?4,$P(GMRAR10(6),U,2)
|
---|
80 | RRD ;
|
---|
81 | K DIR S DIR(0)="LOA^1:11"
|
---|
82 | S DIR(0)=DIR(0)_"^I X[""."" W !,""DO NOT USE DECIMAL VALUES."",$C(7) K X Q"
|
---|
83 | S DIR("A")="Enter from the list above : "
|
---|
84 | S DIR("?",1)="PLEASE ENTER THE NUMBERS OF THE SIGNS/SYMPTOMS YOU WOULD LIKE TO ADD."
|
---|
85 | S DIR("?",2)="RANGES CAN BE SEPARATED BY A HYPHEN (-) AND GROUPS OF NUMBERS,"
|
---|
86 | S DIR("?")="SEPARATED BY A COMMA (,)."
|
---|
87 | D ^DIR K DIR
|
---|
88 | S:$D(DTOUT) GMRAOUT=1
|
---|
89 | S:$D(DUOUT) GMRAOUT=1
|
---|
90 | Q:GMRAOUT!(Y="")
|
---|
91 | S GMRADO=Y K Y,GMRAY
|
---|
92 | S GMRAASK=0
|
---|
93 | F Y=1:1:$L(GMRADO,",") S GMRAY=$P(GMRADO,",",Y) I +GMRAY D
|
---|
94 | .I +GMRAY=11 D ADD Q ;23 Handle request for "other" separately
|
---|
95 | .I $L($T(SCREEN^XTID)) I $$SCREEN^XTID(120.83,.01,$P(GMRAR10(+GMRAY),U)_",") W !!,$P(GMRAR10(+GMRAY),U,2)," is inactive and may not be used." S ERR=1 Q ;23
|
---|
96 | .D ADD ;23
|
---|
97 | I $G(ERR) G ADREAC ;23
|
---|
98 | Q
|
---|
99 | CHC() ; Check reaction to see if user can see and edit this reaction
|
---|
100 | I $P(GMRARPR(GMRAREAC,GMRARECN),U,2)=DUZ!'$L($P(GMRARPR(GMRAREAC,GMRARECN),U,2)),'$P(GMRAPA(0),U,12)!$D(^XUSEC("GMRA-ALLERGY VERIFY",DUZ)) S GMRACTR=GMRACTR+1 Q GMRACTR
|
---|
101 | Q 0
|
---|
102 | PRTREAC ;
|
---|
103 | N GMRAPDAT
|
---|
104 | I X=1 D
|
---|
105 | .W !!," Signs/Symptoms " W:'$G(GMRANDT) "Date Observed"
|
---|
106 | .W !,$$REPEAT^XLFSTR("-",75)
|
---|
107 | .Q
|
---|
108 | W !?1,$S(X:$J(X,2),1:""),?5,$E($P(GMRARPR(GMRAREAC,GMRARECN),U),1,45)
|
---|
109 | S GMRAPDAT=$S($P(GMRARPR(GMRAREAC,GMRARECN),U,3)'="":$P(GMRARPR(GMRAREAC,GMRARECN),U,3),$G(GMRADATE)>0:GMADATE,1:"")
|
---|
110 | I '$G(GMRANDT) W ?53 W:GMRAPDAT'="" $$FMTE^XLFDT(GMRAPDAT,1)
|
---|
111 | Q
|
---|
112 | ADD ;
|
---|
113 | N Y
|
---|
114 | I GMRAY=11 D Q
|
---|
115 | .F D Q:+Y<0
|
---|
116 | ..S DIC=120.83,DIC(0)="AEMQ",DIC("S")="I $P(^(0),U)'=""OTHER REACTION"",$S($L($T(SCREEN^XTID)):'$$SCREEN^XTID(120.83,.01,Y_"",""),1:1)" D ^DIC
|
---|
117 | ..I +Y>0 D SETT
|
---|
118 | S Y=GMRAR10(GMRAY) D SETT
|
---|
119 | Q
|
---|
120 | SETT ;
|
---|
121 | Q:'$L(Y)
|
---|
122 | S GMRAREAC=$P(Y,U,2),GMRARECN=$P(Y,U) K GMRARDL(GMRARECN)
|
---|
123 | S:'$D(GMRARPR(GMRAREAC,GMRARECN)) GMRARAD(GMRARECN)=GMRAREAC,GMRARPR(GMRAREAC,GMRARECN)=GMRAREAC
|
---|
124 | Q
|
---|
125 | STRIN ;This will handle a string input
|
---|
126 | W !!,"Enter OTHER SIGN/SYMPTOM: " R X:DTIME S:'$T X="^^" I "^^"[X S:X="^^"!(X=U) GMRAOUT=1 Q
|
---|
127 | S DIC="^GMRD(120.83,",DIC("S")="I $P(^(0),U)'=""OTHER REACTION"",$S($L($T(SCREEN^XTID)):'$$SCREEN^XTID(120.83,.01,Y_"",""),1:1)",DIC(0)="EM",D="B^D",GMRAREAC=X K DTOUT,DUOUT D MIX^DIC1 K DIC G:X?1"?".E STRIN ;21,23
|
---|
128 | I +Y'>0 S:$D(DTOUT)!$D(DUOUT) GMRAOUT=1 Q:GMRAOUT D ADDG Q:GMRAOUT G STRIN:%=2,ASKAN
|
---|
129 | YNOK W !,$P(Y,U,2)_" OK " S %=1 D YN^DICN I '% W !?4,$C(7),"ANSWER YES IF THE DATA ABOVE IS CORRECT, ELSE ANSWER NO." G YNOK
|
---|
130 | I %=-1 S GMRAOUT=1 Q
|
---|
131 | I %=2 S X=GMRAREAC G STRIN:X=$P(Y,U,2) D ADDG Q:GMRAOUT G STRIN:%=2,ASKAN
|
---|
132 | D SETT
|
---|
133 | ASKAN ;
|
---|
134 | W !,"Would you like to add another sign/symptom" S %=2 D YN^DICN I '% W !?4,$C(7),"ANSWER YES TO ADD ANOTHER SIGN/SYMPTOM, ELSE ANSWER NO." G ASKAN
|
---|
135 | S:%=-1 GMRAOUT=1 Q:%=2!GMRAOUT
|
---|
136 | G STRIN
|
---|
137 | Q
|
---|
138 | ADDG ;
|
---|
139 | I $L(X)<3!($L(X)>30) W " ??",$C(7) S %=2 Q
|
---|
140 | W !,X," is not in the Sign/Symptoms file." S %=2 D:$L($T(NTRTMSG^HDISVAP)) NTRTMSG^HDISVAP() Q ;
|
---|
141 | S:%=-1 GMRAOUT=1
|
---|
142 | I %=1 N % I 'GMRAOUT S:'$D(GMRARPR(X,GMRAOTH)) GMRAROT(X)=X,GMRARPR(X,GMRAOTH)=X K GMRAROTD(X)
|
---|
143 | Q
|
---|
144 | DATE(DATE,ASK) ; Enter the date for a reaction
|
---|
145 | Q:ASK
|
---|
146 | N %DT,X,Y
|
---|
147 | S DATE=$G(DATE,""),%DT="AEPT",%DT("A")="Date(Time Optional) of appearance of Sign/Symptom(s): "
|
---|
148 | S:$P(GMRAPA(0),U,6)="o" %DT("B")=$S(DATE="":"NOW",1:$$FMTE^XLFDT(DATE,1))
|
---|
149 | S %DT(0)="-NOW" D ^%DT I "^^"[X S GMRAOUT=$L(X) Q
|
---|
150 | S DATE=Y,ASK=1
|
---|
151 | Q
|
---|