1 | IBDFDE3 ;ALB/AAS - AICS Manual Data Entry, process handprint fields ; 24-FEB-96
|
---|
2 | ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
|
---|
3 | ;
|
---|
4 | % G ^IBDFDE
|
---|
5 | ;
|
---|
6 | HNDPR(RESULT,IBDF) ; -- Procedure
|
---|
7 | ; -- Manual Data entry routine for Hand Print Fields
|
---|
8 | ; Input : Result := call by reference, used to output results
|
---|
9 | ; IBDF("IEN") := pointer to hand print file (359.94)
|
---|
10 | ; IBDF("PI") := pointer to input package interface
|
---|
11 | ; IBDF("DFN") := pointer to patient
|
---|
12 | ; IBDF("CLINIC") := pointer to hospital location
|
---|
13 | ;
|
---|
14 | ; output: Result(n) $p1 := pointer to package interface
|
---|
15 | ; $p2 := input value (validated user input)
|
---|
16 | ; $p3 := null
|
---|
17 | ; $p4 := null
|
---|
18 | ; $p5 := null
|
---|
19 | ; $p6 := measurement type for vitals
|
---|
20 | ; $p7 := ien in handprint file
|
---|
21 | ; $p8 := vital type (name from 359.1)
|
---|
22 | ; $P9 := Units (for Vitals)
|
---|
23 | ; ibdpi(package interface, qlfr or n) := result(n)
|
---|
24 | ; $P13 := number of the selection
|
---|
25 | ;
|
---|
26 | N I,J,X,Y,ANS,DISPTXT,HDR,DIR,DIRUT,DUOUT,DTOUT,IBDX,QLFR,CHOICE,OVER,IBDPRE
|
---|
27 | S (IBQUIT,OVER)=0,(ANS,QLFR)=""
|
---|
28 | D OBJLST^IBDFRPC1(.CHOICE,.IBDF)
|
---|
29 | I +CHOICE(0)<1 G HPQ
|
---|
30 | S IBDASK=$P(CHOICE(1),"^")_" "
|
---|
31 | I '$D(^TMP("IBD-ASK",$J,IBDFMIEN,IBDASK)) S ^TMP("IBD-ASK",$J,IBDFMIEN,$$UP^XLFSTR(IBDASK),IBDF("IBDF"))=""
|
---|
32 | I $P($G(^IBE(357.6,+IBDF("PI"),0)),"^")["INPUT VITALS" S QLFR=$P(CHOICE(1),"^",5)
|
---|
33 | ;
|
---|
34 | OVER ;
|
---|
35 | K X,Y,DIR,DIRUT,DUOUT,DTOUT
|
---|
36 | S OVER=0
|
---|
37 | S DIR("?")="Enter the value on the form, or enter Return if there is no value"
|
---|
38 | S DIR(0)="FOA^2:"_$P(CHOICE(1),"^",3)
|
---|
39 | I $G(QLFR)'="",$P($G(IBDPI(IBDF("PI"),QLFR)),"^",2)'="" S DIR("B")=$P($G(IBDPI(IBDF("PI"),QLFR)),"^",2)
|
---|
40 | S DIR("A")=$P(CHOICE(1),"^")_" "
|
---|
41 | I $D(IBDF("ASKDATE")) S Y=$$ASKDT^IBDFDE0(DIR("A"),$S($D(DIR("B")):DIR("B"),1:$G(IBDF("DEFLT"))),"",IBDF("APPT")) G REV
|
---|
42 | D ^DIR
|
---|
43 | REV I $G(IBDREDIT),$G(DIR("B"))'="" S IBDPRE=DIR("B") G:Y=$G(DIR("B")) HPQ
|
---|
44 | S ANS=$$UP^XLFSTR(Y)
|
---|
45 | K DIR
|
---|
46 | I $G(IBDREDIT),$G(IBDPRE)'="",ANS="" D DELETE W " Deleted!" G HPQ
|
---|
47 | I ANS="" G HPQ
|
---|
48 | I ANS["^",ANS'="^" D G HPOVER
|
---|
49 | .S GOTO=$$UP^XLFSTR($P(ANS,"^",2))
|
---|
50 | .I "????"[GOTO X "W !!,""Valid Blocks to Jump to: "" S IBDX=0 F S IBDX=$O(^TMP(""IBD-ASK"",$J,IBDFMIEN,IBDX)) Q:IBDX="""" W !,?6,IBDX" S OVER=1 Q
|
---|
51 | .S X=$O(^TMP("IBD-ASK",$J,IBDFMIEN,GOTO))
|
---|
52 | .I X'="",X[GOTO W $E(X,$L(GOTO)+1,$L(X)) S IBDF("GOTO")=+$O(^TMP("IBD-ASK",$J,IBDFMIEN,X,""))-1,IBDREDIT=1 Q
|
---|
53 | .S IBQUIT=1
|
---|
54 | I $D(DIRUT) S IBQUIT=1 G HPQ
|
---|
55 | ;
|
---|
56 | VITALS ; -- if vitals, validate input
|
---|
57 | S OVER=0
|
---|
58 | I $G(QLFR)'="" D I OVER G HPOVER
|
---|
59 | .I $L($T(RATECHK^GMRVPCE0)) D Q
|
---|
60 | ..S OVER='$$RATECHK^GMRVPCE0(QLFR,ANS,$P(CHOICE(1),"^",6))
|
---|
61 | ..Q:'OVER
|
---|
62 | ..D HELP^GMRVPCE0(QLFR,"HELP")
|
---|
63 | ..W ! S IBDX="" F S IBDX=$O(HELP(IBDX)) Q:IBDX="" W !,HELP(IBDX)
|
---|
64 | ..W ! K ANS,HELP
|
---|
65 | .I $L($T(@(QLFR))) D @QLFR Q
|
---|
66 | ;
|
---|
67 | ; -- delete old answer
|
---|
68 | I $G(IBDREDIT),$G(IBDPRE)'="",$G(IBDPRE)'=ANS D DELETE
|
---|
69 | ;
|
---|
70 | I ANS'="" D
|
---|
71 | .S RESULT(0)=$G(RESULT(0))+1
|
---|
72 | .S RESULT(RESULT(0))=+IBDF("PI")_"^"_ANS_"^^^^"_QLFR_"^"_$G(IBDF("IEN"))_"^"_$G(IBDF("VITAL"))_"^"_$P(CHOICE(1),"^",4)
|
---|
73 | .S IBDPI(IBDF("PI"),$S($G(QLFR)'="":QLFR,1:RESULT(0)))=IBDSEL(RESULT(0))
|
---|
74 | .S $P(IBDPI(IBDF("PI"),$S($G(QLFR)'="":QLFR,1:RESULT(0))),"^",13)=RESULT(0)
|
---|
75 | ;
|
---|
76 | HPOVER G:OVER OVER
|
---|
77 | HPQ Q
|
---|
78 | ;
|
---|
79 | DELETE ; -- delete old answer if changed
|
---|
80 | Q:'$G(IBDREDIT)!(ANS=$G(IBDPRE))
|
---|
81 | S SEL=+$P($G(IBDPI(IBDF("PI"),QLFR)),"^",13) Q:'SEL
|
---|
82 | K IBDPI(IBDF("PI"),QLFR),RESULT(SEL)
|
---|
83 | I $G(RESULT(0))=1 S RESULT(0)=0
|
---|
84 | Q
|
---|
85 | ;
|
---|
86 | BP ; -- validate blood pressure
|
---|
87 | N D,S
|
---|
88 | I ANS'?2.3N1"/"2.3N S OVER=1 K ANS G BPQ
|
---|
89 | S S=$P(ANS,"/"),D=$P(ANS,"/",2)
|
---|
90 | I D<20!(D>200)!(S<20)!(S>275) K ANS S OVER=1
|
---|
91 | I S'>D K ANS S OVER=1
|
---|
92 | BPQ I OVER W !,"Invalid format. Enter as SYSTOLIC/DIASTOLIC (120/80). SYSTOLIC must be",!,"between 20 and 275. DIASTOLIC must be between 20 and 200. SYSTOLIC must be",!,"greater than DIASTOLIC.",!
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | WT ; -- validate body weight
|
---|
96 | I ANS'?1.3N.1".".1N!(ANS<2)!(ANS>750)!(+ANS'=ANS) K ANS S OVER=1
|
---|
97 | WTQ I OVER W !,"Enter a body weight, 1 decimal place allowed, between 2 and 750 lbs.",!
|
---|
98 | Q
|
---|
99 | ;
|
---|
100 | HT ; --validate body height
|
---|
101 | I ANS'?2N.1".".1N!(ANS<10)!(ANS>80) K ANS S OVER=1
|
---|
102 | I OVER W !,"Enter the body height in inches, 1 decimal place allowed, between 10 and 80.",!
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | AG ; -- validate adominal girth
|
---|
106 | I +ANS'=ANS!(ANS?.E1"."1N.N)!(ANS<10)!(ANS>750) K ANS S OVER=1
|
---|
107 | I OVER W !,"Enter the abdominal girth in inches, no decimal places, between 10 and 750.",!
|
---|
108 | Q
|
---|
109 | ;
|
---|
110 | AUD ; -- validate audiometry
|
---|
111 | N %AUI,%AUX
|
---|
112 | I $L(ANS,"/")'=17 K ANS S OVER=1
|
---|
113 | F %AUI=1:1:16 S %AUX=$P(X,"/",%AUI) I %AUX'="" I %AUX'?1.3N!(+%AUX>110) K ANS S OVER=1
|
---|
114 | I OVER W !,"Enter 8 readings for right ear followed by 8 readings for left ear,",!,"all followed by slashes (/). Values must be between 0 and 110.",!,"EXAMPLE: 100/100/100/95/90/90/85/80/105/105/105/105/100/100/95/90/",!
|
---|
115 | Q
|
---|
116 | ;
|
---|
117 | TMP ; -- validate temperature
|
---|
118 | I ANS'?2.3N.1".".1N!(ANS<94)!(ANS>109.9)!(+ANS'=ANS) K ANS S OVER=1
|
---|
119 | I OVER W !,"Enter the body temperature in degrees fahrenheit, must be between 94 and 109.9.",!
|
---|
120 | Q
|
---|
121 | ;
|
---|
122 | FT ; -- validate fetal heart tones
|
---|
123 | I ANS'=+ANS!(ANS<50)!(ANS>250)!(ANS?.E1"."1N.N) K ANS S OVER=1
|
---|
124 | I OVER W !,"Enter Fetal Heart Tone. Must be in the range 50 -250.",!
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | FH ; -- validate fundal height
|
---|
128 | I ANS'=+ANS!(ANS<10)!(ANS>250)!(ANS?.E1"."1N.N) K ANS S OVER=1
|
---|
129 | I OVER W !,"Enter a fundal Height. Must be in the range 10 - 50",!
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | HC ; -- validate head circumference
|
---|
133 | I ANS'=+ANS!(ANS<10)!(ANS>30)!(ANS?.E1"."3N.N) K ANS S OVER=1
|
---|
134 | I OVER W !,"To enter head circumference in inches, enter the inches",!,"and decimal. Must be 10 - 30 inches and the fractional decimal part must",!,"be a multiple of 1/8 (.125)",!
|
---|
135 | Q
|
---|
136 | ;
|
---|
137 | HE ; -- validate hearing
|
---|
138 | S ANS=$$UP^XLFSTR($E(ANS))
|
---|
139 | I "AN"'[ANS K ANS S OVER=1
|
---|
140 | I OVER W !,"Enter 'A' for abnormal, or 'N' for Normal.",!
|
---|
141 | Q
|
---|
142 | ;
|
---|
143 | PU ; -- validate pulse
|
---|
144 | I ANS'?1.3N!(ANS<30)!(ANS>250) K ANS S OVER=1
|
---|
145 | I OVER W !,"Enter the patients 1 minute pulse, enter a number between 30 and 250.",!
|
---|
146 | Q
|
---|
147 | ;
|
---|
148 | RS ; -- validate respirations
|
---|
149 | I ANS'?1.2N!(ANS<8)!(ANS>90) K ANS S OVER=1
|
---|
150 | I OVER W !,"Enter the patients 1 minute number of resperations, enter a number between 8 and 90.",!
|
---|
151 | Q
|
---|
152 | ;
|
---|
153 | TON ; -- validate tonometry
|
---|
154 | N AUTONR,AUTONL
|
---|
155 | I $L(ANS)>7!($L(ANS)<2)!'((ANS?.1"R"1.2N1"/")!(ANS?1"/".1"L"1.2N)!(ANS?.1"R"1.2N1"/".1"L"1.2N)) K ANS S OVER=1
|
---|
156 | S AUTONR=$P(ANS,"/",1) S:AUTONR?1"R".N AUTONR=$E(AUTONR,2,10)
|
---|
157 | S AUTONL=$P(ANS,"/",2) S:AUTONL?1"L".N AUTONL=$E(AUTONL,2,10)
|
---|
158 | I AUTONR'="" I AUTONR<0!(AUTONR>80) K ANS S OVER=1
|
---|
159 | I AUTONL'="" I AUTONL<0!(AUTONL>80) K ANS S OVER=1
|
---|
160 | TONX I OVER W !,"Enter a reading for the RIGHT eye, followed by a SLASH, followed",!,"by the reading for the LEFT eye. The SLASH is required. Readings can be",!,"between 0 and 80. Examples: 18/18, /20, 18/, 10/13"
|
---|
161 | Q
|
---|
162 | ;
|
---|
163 | VC ; -- validate vision corrected
|
---|
164 | ; same input as uncorrected
|
---|
165 | VU ; -- validate vision uncorrected
|
---|
166 | I $L(ANS)>7!($L(ANS)<2)!'((ANS?2.3N)!(ANS?1"/"2.3N)!(ANS?2.3N1"/"2.3N)) K ANS S OVER=1
|
---|
167 | I $P(ANS,"/",1)'="" I $P(ANS,"/",1)<10!($P(ANS,"/",1)>999) K ANS S OVER=1
|
---|
168 | I $P(ANS,"/",2)'="" I $P(ANS,"/",2)<10!($P(ANS,"/",2)>999) K ANS S OVER=1
|
---|
169 | I OVER W !,"Enter denominators only. The 20/ is assumed. Enter right eye",!,"/ left eye in form n/n (20/20). If right eye only enter n (20).",!,"If left eye only enter /n (/20). Must be between 10 and 999."
|
---|
170 | Q
|
---|