Produced by Araxis Merge on 4/16/2019 12:20:47 PM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
# | Location | File | Last Modified |
---|---|---|---|
1 | C:\AraxisMergeCompare\Pri_un\CPRS_32_P2_PCE\OR_30_405V60_SRC\Womens Health | fWVPregLacStatusUpdate.pas | Wed Dec 12 14:04:42 2018 UTC |
2 | C:\AraxisMergeCompare\Pri_re\CPRS v32 P2 PCE Standardization-redacted\CPRS_32_P2_PCE\OR_30_405V60_SRC\Womens Health | fWVPregLacStatusUpdate.pas | Fri Apr 12 13:47:12 2019 UTC |
Description | Between Files 1 and 2 |
|
---|---|---|
Text Blocks | Lines | |
Unchanged | 2 | 964 |
Changed | 1 | 2 |
Inserted | 0 | 0 |
Removed | 0 | 0 |
Whitespace | |
---|---|
Character case | Differences in character case are significant |
Line endings | Differences in line endings (CR and LF characters) are ignored |
CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
1 | unit fWVPr egLacStatu sUpdate; | |
2 | { | |
3 | ======== ========== ========== ========== ========== ========== ========== ========== == | |
4 | * | |
5 | * Applicatio n: TDrugs Patch OR* 3*377 and WV*1*24 | |
6 | * Developer: PII | |
7 | * Site: Salt L ake City I SC | |
8 | * | |
9 | * Descriptio n: Update form to e nter the a ppropriate informati on for | |
10 | * pregna ncy and la ctation da ta. Caller supplies the | |
11 | * approp riate pati ent via th e TWVPatie nt object as | |
12 | * an IWV Paitent in terface. | |
13 | * | |
14 | * Notes: | |
15 | * | |
16 | ======== ========== ========== ========== ========== ========== ========== ========== == | |
17 | } | |
18 | ||
19 | interface | |
20 | ||
21 | uses | |
22 | System.A ctions, | |
23 | System.C lasses, | |
24 | System.S ysUtils, | |
25 | System.U ITypes, | |
26 | System.V ariants, | |
27 | Vcl.Actn List, | |
28 | Vcl.ComC trls, | |
29 | Vcl.Cont rols, | |
30 | Vcl.Dial ogs, | |
31 | Vcl.ExtC trls, | |
32 | Vcl.Form s, | |
33 | Vcl.Grap hics, | |
34 | Vcl.Menu s, | |
35 | Vcl.StdC trls, | |
36 | Winapi.M essages, | |
37 | Winapi.W indows, | |
38 | iWVInter face, | |
39 | DateUtil s, | |
40 | rMisc, | |
41 | ORFn, | |
42 | ORCtrls, | |
43 | VAUtils, | |
44 | ORDtTm, | |
45 | rReminde rs, VA508A ccessibili tyManager; | |
46 | ||
47 | type | |
48 | TfrmWVPr egLacStatu sUpdate = class(TFor m) | |
49 | btnCan cel: TButt on; | |
50 | btnSav e: TButton ; | |
51 | pnlOpt ions: TPan el; | |
52 | robnAb leToConcei veYes: TRa dioButton; | |
53 | robnAb leToConcei veNo: TRad ioButton; | |
54 | ckbxMe nopause: T CheckBox; | |
55 | ckbxHy sterectomy : TCheckBo x; | |
56 | stxtAb leToConcei ve: TStati cText; | |
57 | stxtCu rrentlyPre gnant: TSt aticText; | |
58 | pnlLac tationStat us: TPanel ; | |
59 | robnLa ctatingNo: TRadioBut ton; | |
60 | stxtLa ctationSta tus: TStat icText; | |
61 | ckbxPe rmanent: T CheckBox; | |
62 | stxtRe aderStop: TStaticTex t; | |
63 | grdCon ceive: TGr idPanel; | |
64 | pnlCon eiveLabel: TPanel; | |
65 | grdPre gStatus: T GridPanel; | |
66 | pnlPre gStatusLab el: TPanel ; | |
67 | grdLay out: TGrid Panel; | |
68 | pnlCon veive: TPa nel; | |
69 | pnlPre gnant: TPa nel; | |
70 | pnlLac tationLabe l: TPanel; | |
71 | grdLac tation: TG ridPanel; | |
72 | pnlOth er: TPanel ; | |
73 | ststxt Other: TSt aticText; | |
74 | edtOth er: TEdit; | |
75 | scroll Box: TScro llBox; | |
76 | pnlFor m: TPanel; | |
77 | VA508A ccessibili tyManager1 : TVA508Ac cessibilit yManager; | |
78 | robnLa ctatingYes : TRadioBu tton; | |
79 | robnPr egnantUnsu re: TRadio Button; | |
80 | robnPr egnantNo: TRadioButt on; | |
81 | robnPr egnantYes: TRadioBut ton; | |
82 | pnlLMP : TPanel; | |
83 | stxtLa stMenstrua lPeriod: T StaticText ; | |
84 | dteLMP D: TORDate Box; | |
85 | pnlEDD : TPanel; | |
86 | stxtED DMethod: T StaticText ; | |
87 | dteEDD : TORDateB ox; | |
88 | ||
89 | proced ure AbleTo ConceiveYe sNo(Sender : TObject) ; | |
90 | proced ure Pregna ntYesNoUns ure(Sender : TObject) ; | |
91 | proced ure CheckO kToSave(Se nder: TObj ect); | |
92 | proced ure robnLa ctatingYes NoClick(Se nder: TObj ect); | |
93 | proced ure FormCr eate(Sende r: TObject ); | |
94 | proced ure FormCl ose(Sender : TObject; var Actio n: TCloseA ction); | |
95 | proced ure dteLMP DExit(Send er: TObjec t); | |
96 | proced ure dteLMP DChange(Se nder: TObj ect); | |
97 | proced ure dteEDD Change(Sen der: TObje ct); | |
98 | proced ure dteLMP DMouseLeav e(Sender: TObject); | |
99 | proced ure scroll BoxResize( Sender: TO bject); | |
100 | proced ure SetScr ollBarHeig ht(FontSiz e: Integer ); | |
101 | proced ure dteLMP DDateDialo gClosed(Se nder: TObj ect); | |
102 | private | |
103 | { Priv ate declar ations } | |
104 | fDFN: string; | |
105 | MinFor mHeight: I nteger; // Determines when the scrollbars appear | |
106 | MinFor mWidth: In teger; | |
107 | functi on calcDat es(origina lValue, ne wValue: TF MDateTime; update, p atient: st ring): TFM DateTime; | |
108 | proced ure update EDD(date: TFMDateTim e); | |
109 | public | |
110 | EDD: i nteger; | |
111 | functi on Execute : Boolean; | |
112 | functi on GetData (aList: TS tringList) : Boolean; | |
113 | end; | |
114 | ||
115 | function N ewPLUpdate Form(aDFN: string): TfrmWVPreg LacStatusU pdate; | |
116 | ||
117 | implementa tion | |
118 | ||
119 | {$R *.dfm} | |
120 | ||
121 | ||
122 | const | |
123 | { Names for Name=V alue pairs } | |
124 | SUB_ABLE _TO_CONCEI VE = 'ABLE TO CONCEI VE'; | |
125 | SUB_LACT ATION_STAT US = 'LACT ATION STAT US'; | |
126 | SUB_LAST _MENSTRUAL _PERIOD = 'LAST MENS TRUAL PERI OD DATE'; | |
127 | SUB_EDD = 'EXPECTE D DUE DATE '; | |
128 | SUB_MEDI CAL_REASON = 'MEDICA L REASON'; | |
129 | SUB_PATI ENT = 'PAT IENT'; | |
130 | SUB_PREG NANCY_STAT US = 'PREG NANCY STAT US'; | |
131 | ||
132 | ||
133 | function N ewPLUpdate Form(aDFN: string): TfrmWVPreg LacStatusU pdate; | |
134 | begin | |
135 | Result : = TfrmWVPr egLacStatu sUpdate.Cr eate(Appli cation.Mai nForm); | |
136 | ||
137 | with Res ult do | |
138 | begin | |
139 | Load ed; | |
140 | fDFN := aDFN; | |
141 | pnlL actationSt atus.Visib le := True ; | |
142 | end; | |
143 | end; | |
144 | ||
145 | function T frmWVPregL acStatusUp date.calcD ates(origi nalValue, | |
146 | newValue : TFMDateT ime; updat e, patient : string): TFMDateTi me; | |
147 | var | |
148 | itemID, te mp: string ; | |
149 | begin | |
150 | if updat e = 'EDD' then | |
151 | begin | |
152 | if E DD < 1 the n | |
153 | be gin | |
154 | Result := -1; | |
155 | Exit; | |
156 | en d; | |
157 | item ID := IntT oStr(EDD); | |
158 | end; | |
159 | temp := getLinkPro mptValue(F loatToStr( newValue), itemID, F loatToStr( originalVa lue), pati ent); | |
160 | Result : = StrToFlo atDef(temp , -1); | |
161 | end; | |
162 | ||
163 | procedure TfrmWVPreg LacStatusU pdate.Chec kOkToSave( Sender: TO bject); | |
164 | begin | |
165 | if robnA bleToConce iveYes.Che cked then | |
166 | begin | |
167 | if r obnPregnan tYes.Check ed then | |
168 | bt nSave.Enab led := (dt eEDD.FMDat eTime > 0) | |
169 | els e btnSave. Enabled := robnPregn antNo.Chec ked or rob nPregnantU nsure.Chec ked; | |
170 | end | |
171 | else if robnAbleTo ConceiveNo .Checked t hen | |
172 | btnSav e.Enabled := ckbxHys terectomy. Checked or ckbxMenop ause.Check ed or ckbx Permanent. Checked | |
173 | or (ed tOther.Tex t <> '') | |
174 | else if robnLactat ingYes.Che cked or ro bnLactatin gNo.Checke d then | |
175 | btnSav e.Enabled := True | |
176 | else | |
177 | btnSav e.Enabled := False; | |
178 | end; | |
179 | ||
180 | procedure TfrmWVPreg LacStatusU pdate.dteE DDChange(S ender: TOb ject); | |
181 | begin | |
182 | CheckOkT oSave(Send er); | |
183 | end; | |
184 | ||
185 | procedure TfrmWVPreg LacStatusU pdate.dteL MPDChange( Sender: TO bject); | |
186 | begin | |
187 | // CheckO kToSave(Se nder); | |
188 | end; | |
189 | ||
190 | procedure TfrmWVPreg LacStatusU pdate.dteL MPDDateDia logClosed( Sender: TO bject); | |
191 | begin | |
192 | updateED D(dteLMPD. FMDateTime ); | |
193 | CheckOkT oSave(Send er); | |
194 | end; | |
195 | ||
196 | procedure TfrmWVPreg LacStatusU pdate.dteL MPDExit(Se nder: TObj ect); | |
197 | begin | |
198 | updateED D(dteLMPD. FMDateTime ); | |
199 | end; | |
200 | ||
201 | procedure TfrmWVPreg LacStatusU pdate.dteL MPDMouseLe ave(Sender : TObject) ; | |
202 | begin | |
203 | updateED D(dteLMPD. FMDateTime ); | |
204 | CheckOkT oSave(Send er); | |
205 | end; | |
206 | ||
207 | procedure TfrmWVPreg LacStatusU pdate.robn LactatingY esNoClick( Sender: TO bject); | |
208 | begin | |
209 | CheckOkT oSave(Send er); | |
210 | end; | |
211 | ||
212 | ||
213 | procedure TfrmWVPreg LacStatusU pdate.scro llBoxResiz e(Sender: TObject); | |
214 | begin | |
215 | inherite d; | |
216 | ScrollBo x.OnResize := nil; | |
217 | //At lea st minimum | |
218 | if (pnl Form.Width < MinForm Width) or (pnlForm.H eight < Mi nFormHeigh t) then | |
219 | pnlForm .Align := alNone; | |
220 | pnlForm .AutoSize := false; | |
221 | if (pnl Form.Width < MinForm Width) the n pnlForm. Width := M inFormWidt h; | |
222 | if pnlF orm.Height < MinForm Height the n pnlForm. Height := MinFormHei ght; | |
223 | ||
224 | ||
225 | if (Scro llBox.Widt h >= MinFo rmWidth) t hen | |
226 | begin | |
227 | if (Scr ollBox.Hei ght >= (Mi nFormHeigh t)) then | |
228 | begin | |
229 | pnl Form.Align := alClie nt; | |
230 | end els e begin | |
231 | pnlFo rm.Align : = alTop; | |
232 | pnlFo rm.AutoSiz e := true; | |
233 | end; | |
234 | end else begin | |
235 | if (Scr ollBox.Hei ght >= (Mi nFormHeigh t)) then | |
236 | begin | |
237 | pnlFor m.Align := alNone; | |
238 | pnlFor m.Top := 0 ; | |
239 | pnlFor m.Left := 0; | |
240 | pnlFor m.AutoSize := false; | |
241 | pnlFor m.Width := MinFormWi dth; | |
242 | pnlFor m.height : = ScrollB ox.Height; | |
243 | end els e begin | |
244 | pnlFor m.Align := alNone; | |
245 | pnlFor m.Top := 0 ; | |
246 | pnlFor m.Left := 0; | |
247 | pnlFor m.AutoSize := true; | |
248 | end; | |
249 | end; | |
250 | ScrollBo x.OnResize := Scroll BoxResize; | |
251 | end; | |
252 | ||
253 | procedure TfrmWVPreg LacStatusU pdate.SetS crollBarHe ight(FontS ize: Integ er); | |
254 | begin | |
255 | MinFormH eight := ( self.grdPr egStatus.H eight + se lf.grdConc eive.Heigh t + self.g rdConceive .Height); | |
256 | case Fon tSize of | |
257 | 8: Min FormWidth := self.ck bxPermanen t.Left + s elf.ckbxPe rmanent.Wi dth + 5; | |
258 | 10: Mi nFormWidth := self.c kbxPermane nt.Left + self.ckbxP ermanent.W idth + 5; | |
259 | 12: Mi nFormWidth := self.c kbxPermane nt.Left + self.ckbxP ermanent.W idth + 30; | |
260 | 14: Mi nFormWidth := 800; | |
261 | 18: Mi nFormWidth := 1000; | |
262 | end; | |
263 | ||
264 | end; | |
265 | ||
266 | procedure TfrmWVPreg LacStatusU pdate.upda teEDD(date : TFMDateT ime); | |
267 | var | |
268 | aDate: TFM DateTime; | |
269 | begin | |
270 | aDate := calcDates (0, date, 'EDD', fDF N); | |
271 | if aDate > 0 then dteEDD.FMD ateTime := aDate; | |
272 | end; | |
273 | ||
274 | procedure TfrmWVPreg LacStatusU pdate.Able ToConceive YesNo(Send er: TObjec t); | |
275 | begin | |
276 | if robnA bleToConce iveYes.Che cked then | |
277 | begin | |
278 | ckbx Menopause. Checked := False; | |
279 | ckbx Menopause. Enabled := False; | |
280 | ckbx Hysterecto my.Checked := False; | |
281 | ckbx Hysterecto my.Enabled := False; | |
282 | ckbx Permanent. Checked := False; | |
283 | ckbx Permanent. Enabled := False; | |
284 | stst xtOther.En abled := f alse; | |
285 | edto ther.Enabl ed := fals e; | |
286 | ||
287 | robn PregnantYe s.Enabled := True; | |
288 | robn PregnantYe s.TabStop := True; | |
289 | robn PregnantNo .Enabled : = True; | |
290 | robn PregnantUn sure.Enabl ed := True ; | |
291 | ||
292 | stxt LastMenstr ualPeriod. Enabled := False; | |
293 | dteL MPD.Enable d := false ; | |
294 | dteE DD.Enabled := false; | |
295 | stxt EDDMethod. Enabled := False; | |
296 | end | |
297 | else if robnAbleTo ConceiveNo .Checked t hen | |
298 | begin | |
299 | ckbx Menopause. Enabled := True; | |
300 | ckbx Hysterecto my.Enabled := True; | |
301 | ckbx Permanent. Enabled := True; | |
302 | stst xtOther.En abled := t rue; | |
303 | edtO ther.Enabl ed := true ; | |
304 | ||
305 | robn PregnantYe s.Enabled := False; | |
306 | robn PregnantYe s.Checked := False; | |
307 | robn PregnantNo .Enabled : = False; | |
308 | robn PregnantNo .Checked : = False; | |
309 | robn PregnantUn sure.Enabl ed := Fals e; | |
310 | robn PregnantUn sure.Check ed := Fals e; | |
311 | ||
312 | stxt LastMenstr ualPeriod. Enabled := False; | |
313 | dteL MPD.Enable d := false ; | |
314 | dteE DD.Enabled := false; | |
315 | stxt EDDMethod. Enabled := False; | |
316 | end | |
317 | else | |
318 | begin | |
319 | ckbx Menopause. Checked := False; | |
320 | ckbx Menopause. Enabled := False; | |
321 | ckbx Hysterecto my.Checked := False; | |
322 | ckbx Hysterecto my.Enabled := False; | |
323 | ckbx Permanent. Checked := False; | |
324 | ckbx Permanent. Enabled := False; | |
325 | stst xtOther.En abled := f alse; | |
326 | edtO ther.Enabl ed := fals e; | |
327 | ||
328 | robn PregnantYe s.Enabled := False; | |
329 | robn PregnantYe s.Checked := False; | |
330 | robn PregnantNo .Enabled : = False; | |
331 | robn PregnantNo .Checked : = False; | |
332 | robn PregnantUn sure.Enabl ed := Fals e; | |
333 | robn PregnantUn sure.Check ed := Fals e; | |
334 | ||
335 | stxt LastMenstr ualPeriod. Enabled := False; | |
336 | dteL MPD.Enable d := false ; | |
337 | dteE DD.Enabled := false; | |
338 | stxt EDDMethod. Enabled := False; | |
339 | end; | |
340 | ||
341 | CheckOkT oSave(Send er); | |
342 | end; | |
343 | ||
344 | procedure TfrmWVPreg LacStatusU pdate.Preg nantYesNoU nsure(Send er: TObjec t); | |
345 | begin | |
346 | if rob nPregnantY es.Checked then | |
347 | begi n | |
348 | st xtLastMens trualPerio d.Enabled := True; | |
349 | dt eLMPD.Enab led := tru e; | |
350 | dt eEDD.Enabl ed := true ; | |
351 | st xtEDDMetho d.Enabled := True; | |
352 | // if ScreenR eaderActiv e then | |
353 | // begin | |
354 | // stxtEDDM ethod.TabS top := Tru e; | |
355 | // stxtEDDM ethod.TabO rder := 4; | |
356 | // end; | |
357 | end | |
358 | else | |
359 | begi n | |
360 | st xtLastMens trualPerio d.Enabled := False; | |
361 | dt eLMPD.FMDa teTime := 0; | |
362 | dt eEDD.FMDat eTime := 0 ; | |
363 | dt eLMPD.Text := ''; | |
364 | dt eEDD.Text := ''; | |
365 | dt eLMPD.Enab led := fal se; | |
366 | dt eEDD.Enabl ed := fals e; | |
367 | st xtEDDMetho d.Enabled := False; | |
368 | end; | |
369 | ||
370 | CheckOkT oSave(Send er); | |
371 | end; | |
372 | ||
373 | function T frmWVPregL acStatusUp date.Execu te: Boolea n; | |
374 | begin | |
375 | Result : = (ShowMod al = mrOk) ; | |
376 | end; | |
377 | ||
378 | procedure TfrmWVPreg LacStatusU pdate.Form Close(Send er: TObjec t; | |
379 | var Acti on: TClose Action); | |
380 | begin | |
381 | inherite d; | |
382 | try | |
383 | SaveUs erBounds(S elf); | |
384 | Action := caFree ; | |
385 | finally | |
386 | Action := caFree ; | |
387 | end; | |
388 | end; | |
389 | ||
390 | procedure TfrmWVPreg LacStatusU pdate.Form Create(Sen der: TObje ct); | |
391 | var | |
392 | height: integer; | |
393 | begin | |
394 | inherite d; | |
395 | SetFormP osition(Se lf); | |
396 | ResizeFo rmToFont(s elf); | |
397 | //setLab elTabStops (ScreenRea derActive) ; | |
398 | height : = TextHeig htByFont(s txtAbleToC onceive.Fo nt.Handle, stxtAbleT oConceive. Caption); | |
399 | pnlConei veLabel.He ight := he ight + 5; | |
400 | pnlPregS tatusLabel .Height := height + 5; | |
401 | pnlLacta tionLabel. Height := height + 5 ; | |
402 | SetScrol lBarHeight (MainFontS ize); | |
403 | end; | |
404 | ||
405 | function T frmWVPregL acStatusUp date.GetDa ta(aList: TStringLis t): Boolea n; | |
406 | var | |
407 | aStr: st ring; | |
408 | ||
409 | procedur e AddReaso n(var aStr : string; aValue: st ring); | |
410 | begin | |
411 | if aSt r <> '' th en | |
412 | begi n | |
413 | // Remove an y previous 'and's | |
414 | if Pos(' and ', aStr) > 0 then | |
415 | aStr := St ringReplac e(aStr, ' and ', ', ', [rfRepl aceAll]); | |
416 | // Append on this valu e with a g ramaticall y correct 'and' | |
417 | aS tr := Form at('%s and %s', [aSt r, aValue] ); | |
418 | // Set capit ialization to gramat ically cor rect first char only | |
419 | aS tr := Uppe rCase(Copy (aStr, 1, 1)) + Lowe rCase(Copy (aStr, 2, Length(aSt r))); | |
420 | end | |
421 | else | |
422 | aStr := aValue ; | |
423 | end; | |
424 | ||
425 | begin | |
426 | aList.Cl ear; | |
427 | try | |
428 | aList. Values[SUB _PATIENT] := fDFN; | |
429 | ||
430 | if rob nAbleToCon ceiveYes.C hecked the n | |
431 | begi n | |
432 | aL ist.Values [SUB_ABLE_ TO_CONCEIV E] := 'Yes '; | |
433 | ||
434 | if robnPregn antYes.Che cked then | |
435 | begin | |
436 | aList.Va lues[SUB_P REGNANCY_S TATUS] := 'Yes'; | |
437 | if dteLM PD.FMDateT ime > 0 th en aList.V alues[SUB_ LAST_MENST RUAL_PERIO D] := Floa tToStr(dte LMPD.FMDat eTime); | |
438 | if dteED D.FMDateTi me > 0 the n aList.Va lues[SUB_E DD] := Flo atToStr(dt eEDD.FMDat eTime); | |
439 | end | |
440 | el se if robn PregnantNo .Checked t hen | |
441 | aList.Valu es[SUB_PRE GNANCY_STA TUS] := 'N o' | |
442 | el se if robn PregnantUn sure.Check ed then | |
443 | aList.Valu es[SUB_PRE GNANCY_STA TUS] := 'U nsure' | |
444 | el se | |
445 | aList.Valu es[SUB_PRE GNANCY_STA TUS] := 'U nknown'; | |
446 | end | |
447 | else i f robnAble ToConceive No.Checked then | |
448 | begi n | |
449 | aL ist.Values [SUB_ABLE_ TO_CONCEIV E] := 'No' ; | |
450 | aS tr := ''; | |
451 | ||
452 | if ckbxHyste rectomy.Ch ecked then | |
453 | AddReason( aStr, ckbx Hysterecto my.Caption ); | |
454 | ||
455 | if ckbxMenop ause.Check ed then | |
456 | AddReason( aStr, ckbx Menopause. Caption); | |
457 | ||
458 | if ckbxPerma nent.Check ed then | |
459 | AddReason( aStr, ckbx Permanent. Caption); | |
460 | ||
461 | if edtOther. Text <> '' then | |
462 | AddReason( aStr, edtO ther.Text) ; | |
463 | ||
464 | aL ist.Values [SUB_MEDIC AL_REASON] := aStr; | |
465 | end; | |
466 | ||
467 | if rob nLactating Yes.Checke d then | |
468 | aLis t.Values[S UB_LACTATI ON_STATUS] := 'Yes' | |
469 | else i f robnLact atingNo.Ch ecked then | |
470 | aLis t.Values[S UB_LACTATI ON_STATUS] := 'No'; | |
471 | ||
472 | Result := True; | |
473 | except | |
474 | on e: Exception do | |
475 | begi n | |
476 | aL ist.Clear; | |
477 | aL ist.Add('- 1^' + e.Me ssage); | |
478 | Re sult := Fa lse; | |
479 | end; | |
480 | end; | |
481 | end; | |
482 | ||
483 | end. |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.