Ανάπτυξη Εφαρμογής Εύρεσης Επικρατέστερου Ομοιοπαθητικού Φαρμάκου



Σχετικά έγγραφα
How to register an account with the Hellenic Community of Sheffield.

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

PortSip Softphone. Ελληνικά Ι English 1/20

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

Υπολογιστικά Συστήματα

SilverPlatter WebSPIRS 4.1.

Advanced Subsidiary Unit 1: Understanding and Written Response

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΙΛΟΓΗΣ-MSGBOX ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Υλοποίηση προγράµµατος σε Visual Basic µε σκοπό τη δηµιουργία του προγράµµατος εξεταστικής του Τ.Ε.Ι.

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

FirstSearch (OCLC) Βασικά χαρακτηριστικά:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Management Classes Create Class Create Class Management Classes List of Classes

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

Management School School Profile Save

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

SOAP API. Table of Contents

ΟΔΗΓΙΕΣ ΔΗΜΙΟΥΡΓΙΑΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΜΕΣΟΥ ΑΡΧΕΙΟΥ ΣΕ ΠΕΡΙΒΑΛΛΟΝ VISUAL STUDIO NET

Εγχειρίδιο Οδηγιών. BrainStorm. Διαχείριση Πινάκων. Εισαγωγή, Μεταβολή, Διαγραφή Κατάταξη, Εντοπισμός Εγγραφών

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

SPEEDO AQUABEAT. Specially Designed for Aquatic Athletes and Active People

1. Απαιτήσεις εργασίας

HY150a Φροντιστήριο 3 24/11/2017

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Υπολογιστικά Συστήματα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ

EE512: Error Control Coding

Εγχειρίδιο χρήσης του SIEMENS Industry MALL. (Έκδοση 4.0)

Τα αντικείμενα ή Χειριστήρια και οι βασικές ιδιότητες τους (properties)

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ. Πτυχιακή εργασία Η ΚΑΤΑΘΛΙΨΗ ΣΕ ΕΦΗΒΟΥΣ ΜΕ ΣΑΚΧΑΡΩΔΗ ΔΙΑΒΗΤΗ ΤΥΠΟΥ 1

C.S. 430 Assignment 6, Sample Solutions

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Πώς εκτυπώνουμε μία λίστα από εγγραφές μίας Access database

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ

Wilson Web Art Databases, H.W. Wilson

1. Άνοιγμα Και Κλείσιμο Της Εφαρμογής Φυλλομετρητή Ιστού (Internet Explorer)

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Είσοδος Έξοδος - Μεταβλητές

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ. Πτυχιακή διατριβή. Ονοματεπώνυμο: Αργυρώ Ιωάννου. Επιβλέπων καθηγητής: Δρ. Αντρέας Χαραλάμπους

Πώς εκτυπώνουμε μία λίστα εγγραφών από μία Access database (γενικός τρόπος)

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ

Εκπαίδευση KOHA ΚΟΗΑ ΠΕΡΙΟΔΙΚΑ ΑΝΑΖΗΤΗΣΗ ΠΕΡΙΟΔΙΚΩΝ / ΠΕΡΙΛΗΨΗ ΑΠΟΚΤΗΜΑΤΩΝ / ΣΥΝΔΡΟΜΕΣ ΠΕΡΙΟΔΙΚΩΝ / ΠΑΡΑΛΑΒΗ ΤΕΥΧΩΝ / ΚΛΕΙΣΤΕΣ ΣΥΝΔΡΟΜΕΣ

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή)

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ. Πτυχιακή εργασία ΑΓΧΟΣ ΚΑΙ ΚΑΤΑΘΛΙΨΗ ΣΕ ΓΥΝΑΙΚΕΣ ΜΕ ΚΑΡΚΙΝΟΥ ΤΟΥ ΜΑΣΤΟΥ ΜΕΤΑ ΑΠΟ ΜΑΣΤΕΚΤΟΜΗ

Ερευνητικό Αποθετήριο Πανεπιστημίου Πειραία

1. Γνωριμία Με Το Περιβάλλον Του Ηλεκτρονικού Υπολογιστή

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Συναρτήσεις στη Visual Basic 6.0

ΛΥΚΕΙΟ ΑΓΙΟΥ ΝΕΟΦΥΤΟΥ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2011

METALIB Σύστημα μετα-αναζήτησης για ηλεκτρονικές πηγές πληροφόρησης

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΟΣ ασική Πληροφορική 1 Θεωρία 5 ου ΕΞΑΜΗΝΟΥ ΜΑΘΗΜΑ 1 ο Λάζαρος Σ. Ηλιάδης Αναπληρωτής Καθηγητής ΠΘ

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Eισαγωγή στο λογισμικό QGis

Σύνδεση στον CallCatcher Server (βλ. Σελ.4) Παραμετροποίηση συνδέσεων (βλ. Σελ.4) Επιλογή χειροκίνητης εγγραφής (βλ. Σελ.15)

Επίλυση προβλήματος με Access

Οδηγίες Πρόσβασης στο EndNote Web. Πρόσβαση στο EndNote Web

CYTA Cloud Server Set Up Instructions

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

(C) 2010 Pearson Education, Inc. All rights reserved.

Ερευνητικό Αποθετήριο ΤΕΙ Ηπείρου. Οδηγίες κατάθεσης δημοσίευσης στο σύστημα Ερευνητικού Αποθετηρίου CRIS

ΕΡΓΑΣΤΗΡΙΟ FRONT PAGE 3

Εντολή If-Then-Else Σκοπός Μαθήματος

ΣΧΕΣΕΙΣ στην Northwind

Οδηγίες Εγγραφής στις Εξετάσεις για Ανεξάρτητους Υποψηφίους

derivation of the Laplacian from rectangular to spherical coordinates

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Σημειώσεις για τις Ιστοσελίδες του Google

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Υπολογιστικά Συστήματα

Αρχεία κειμένου και η VB.NET

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στο EV3 Μέρος 2

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

Ελληνικό Αρχείο όγκων Ήπατος, Παγκρέατος, Χοληφόρων (Hellenic Registry of the HPB cancers)

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΥΓΕΙΑΣ ΤΜΗΜΑ ΝΟΣΗΛΕΥΤΙΚΗΣ. Πτυχιακή Εργασία

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΗ ΒΙΟΙΑΤΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Ανάπτυξη Εφαρμογής Εύρεσης Επικρατέστερου Ομοιοπαθητικού Φαρμάκου ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Γεωργία Μαρίνα Ι. Πατεροπούλου ΕΠΙΒΛΕΠΩΝ : Δημήτρης Κουτσούρης Καθηγητής Ε.Μ.Π. Εργαστήριο Βιοϊατρικής Τεχνολογίας Αθήνα, Σεπτέμβριος 2006

Αφιερωμένο με πολλή αγάπη στον πατέρα μου 2

... Γεωργία Μαρίνα Ι. Πατεροπούλου Διπλωματούχος Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π. Copyright Γεωργία Μαρίνα Ι. Πατεροπούλου, 2006 Με επιφύλαξη παντός δικαιώματος. All rights reserved. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Εθνικού Μετσόβιου Πολυτεχνείου. 3

Πίνακας Περιεχομένων 1. ΕΙΣΑΓΩΓΗ...6 2. ΓΡΑΦΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ ΕΦΑΡΜΟΓΗΣ...7 2.1. ΚΕΝΤΡΙΚΗ ΦΟΡΜΑ...7 2.2. ΦΟΡΜΑ ΦΑΚΕΛΟΥ ΑΣΘΕΝΟΥΣ...9 2.3. ΣΗΜΕΙΩΜΑΤΑΡΙΟ ΕΠΙΣΚΕΨΗΣ...11 2.3.1. ΣΥΜΠΤΩΜΑΤΑ ΕΠΙΣΚΕΨΗΣ...11 2.3.2. ΣΗΜΕΙΩΣΕΙΣ ΕΠΙΣΚΕΨΗΣ...12 2.3.3. ΣΥΝΤΑΓΟΓΡΑΦΗΣΗ ΕΠΙΣΚΕΨΗΣ...13 2.4. ΦΟΡΜΑ ΚΕΦΑΛΑΙΩΝ...14 2.5. ΦΟΡΜΑ ΣΥΜΠΤΩΜΑΤΩΝ ΚΕΦΑΛΑΙΟΥ...16 2.6. ΑΝΑΖΗΤΗΣΕΙΣ...19 2.6.1. ΑΝΑΖΗΤΗΣΗ ΑΓΓΛΙΚΩΝ ΛΕΞΕΩΝ ΣΤΑ ΣΥΜΠΤΩΜΑΤΑ...19 2.6.2. ΑΝΑΖΗΤΗΣΗ ΕΛΛΗΝΙΚΩΝ ΛΕΞΕΩΝ ΣΤΑ ΣΥΜΠΤΩΜΑΤΑ...21 2.6.3. ΑΝΑΖΗΤΗΣΗ ΣΥΜΠΤΩΜΑΤΩΝ ΦΑΡΜΑΚΟΥ...22 2.7. ΑΝΑΛΥΣΗ ΚΑΤΑΓΡΑΦΕΝΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ...25 2.7.1. ΑΠΛΗ ΑΝΑΛΥΣΗ...25 2.7.2. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΒΑΡΥΤΗΤΑΣ ΤΩΝ ΚΑΤΑΓΡΑΦΕΝΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ...28 2.7.3. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΟΡΙΣΜΟΥ ΤΩΝ ΣΗΜΑΝΤΙΚΩΝ ΣΥΜΠΤΩΜΑΤΩΝ...29 2.7.4. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΟΡΙΣΜΟΥ ΤΩΝ ΑΝΑΝΤΙΚΑΤΑΣΤΑΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ...30 4

2.7.5. ΣΥΝΘΕΤΙΚΗ ΠΑΡΟΥΣΙΑΣΗ...31 2.8. ΛΟΙΠΕΣ ΛΕΙΤΟΥΡΓΙΕΣ...32 2.8.1. ΑΓΓΛΟΕΛΛΗΝΙΚΟ ΛΕΞΙΚΟ REPERTORY...32 2.8.2. ΕΛΛΗΝΟΑΓΓΛΙΚΟ ΛΕΞΙΚΟ REPERTORY...33 2.8.3. ΠΙΝΑΚΑΣ ΦΑΡΜΑΚΩΝ...33 2.8.4. ΦΑΡΜΑΚΟΛΟΓΙΑ...34 2.8.5. ΑΠΟΘΗΚΕΥΣΗ ΔΕΔΟΜΕΝΩΝ...35 3. ΚΩΔΙΚΑΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ...36 3.1. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΦΑΚΕΛΟΥ ΑΣΘΕΝΟΥΣ...36 3.2. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΚΕΦΑΛΑΙΩΝ...51 3.3. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΣΥΜΠΤΩΜΑΤΩΝ ΚΕΦΑΛΑΙΩΝ...56 3.4. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΑΝΑΛΥΣΗΣ ΣΥΜΠΤΩΜΑΤΩΝ...67 4. ΕΠΙΛΟΓΟΣ...91 5. ΒΙΒΛΙΟΓΡΑΦΙΑ...92 5

1. ΕΙΣΑΓΩΓΗ Ως κίνητρο της επιλογής του θέματος της Διπλωματικής μου Εργασίας «Ανάπτυξη Εφαρμογής Εύρεσης του Επικρατέστερου Ομοιοπαθητικού Φαρμάκου» αποτέλεσε η δυσκολία ενός ομοιοπαθητικού ιατρού να βρει την κατάλληλη θεραπεία για έναν ασθενή του, λόγω του τεράστιου όγκου των πληροφοριών που υπάρχουν σήμερα καταγεγραμμένες στην παγκόσμια ομοιοπαθητική βιβλιογραφία Στην ογκώδη αυτή βιβλιογραφία ανατρέχει κάθε φορά ο ομοιοπαθητικός ιατρός, πολλές φορές την ημέρα, σε κάθε επίσκεψη ασθενούς του προκειμένου να αντλήσει τα δεδομένα για να την εύρεση της θεραπείας του. Η χρήση Η/Υ και η ανάπτυξη μιας Εφαρμογής στηριζόμενη στα δεδομένα της προαναφερόμενης βιβλιογραφίας θα αποτελούσε ένα πολύ δυνατό εργαλείο για τον ιατροό για την ευκολότερη και ορθότερη διεξαγωγή της δουλειάς τους. Έτσι, η Εφαρμογή αυτή αναπτύχθηκε με σκοπό να βοηθήσει τους ιατρούς στην ανεύρεση του κατάλληλου ομοιοπαθητικού φαρμάκου (φάρμακο απειροελάχιστης δόσης) που χρειάζεται ο ασθενής για την ίασή του. Στην προκειμένη περίπτωση το πρόγραμμα επεξεργάζεται το υλικό συμπτωμάτων του ομοιοπαθητικού Repertory Organon 2001 που είναι και το πληρέστερο στον κόσμο. Σε κάθε σύμπτωμα αντιστοιχούν ένα ή περισσότερα φάρμακα. Η δουλειά του γιατρού είναι μέσω της συνεδρίας με τον ασθενή να επιλέξει τα κατάλληλα ψυχικά και σωματικά συμπτώματα. Το πρόγραμμα επεξεργάζεται τα δεδομένα και προτείνει λίστα ομοιοπαθητικών φαρμάκων, κατατάσσοντάς τα με σειρά προτεραιότητας με πέντε διαφορετικές μεθοδολογίες. Για οικονομία χώρου όλα τα ομοιοπαθητικά Repertory συμπτωμάτων είναι δομήθηκαν σε δενδροειδή διάταξη. Το σύνολο των επεξεργαζόμενων από το πρόγραμμα ομοιοπαθητικών φαρμάκων είναι 3.885, το δε σύνολο των αναφορών προς επεξεργασία συμπτώματα-φάρμακα είναι 3.504.445, όγκος που είναι πολύ δύσκολο να επεξεργασθεί και από τον καλύτερο ομοιοπαθητικό ιατρό. Στην περίπτωση του παρόντος προγράμματος σε σχέση με τα βιβλία των ομοιοπαθητικών Repertory, ο γιατρός έχει το πλεονέκτημα να ψάχνει ευκολότερα τα απαιτούμενα συμπτώματα μέσω των εργαλείων ανεύρεσης, αλλά και να βλέπει το υλικό καλύτερα γιατί δίνεται η δυνατότητα, επιλέγοντας κάποιο σύμπτωμα, να εμφανίζονται δεξιά του μόνον τα υποσυμπτώματά του και σε συνέχεια επιλέγοντας ομοίως κάποιο υποσύμπτωμα να εμφανίζονται δεξιά του πάλι μόνο τα δικά του υποσυμπτώματα, κ.ο.κ. μέχρι και 5 επίπεδα Η παρουσίαση των συμπτωμάτων έχει γίνει αλφαβητικά στην αγγλική, που είναι η συνήθης γλώσσα των ομοιοπαθητικών Repertorys, με σύγχρονη μετάφραση όμως και στην ελληνική γλώσσα προς διευκόλυνσή του ιατρού. 6

2. ΓΡΑΦΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ ΕΦΑΡΜΟΓΗΣ Στη συνέχεια παρατίθενται μερικές από τις πιο χαρακτηριστικές φόρμες που συμπεριλαμβάνει η Εφαρμογή και εξηγούνται σύντομα η αλληλεπίδραση που μπορεί να έχει ο Ιατρός με την Εφαρμογή και οι λειτουργίες που έχουν αναπτυχθεί για να τον βοηθήσουν να διεξάγει πιο εύκολα και όσο το δυνατόν πιο σωστά το έργο του. 2.1. ΚΕΝΤΡΙΚΗ ΦΟΡΜΑ Επιλέχθηκε ως ξεκίνημα η εικόνα του Παρθενώνα με υπότιτλο ρήση του Σωκράτη από το βιβλίο του Πλάτωνα Περί σωφροσύνης, όπου τονίζεται ότι όλες οι ασθένειες του ανθρώπου ξεκινούν από την ψυχή. Το ίδιο γίνεται και με την επόμενη φόρμα όπου εμφανίζεται σκίτσο με απεικόνιση αρχαιοελληνικού θεραπευτηρίου, καθώς και το υπέροχο άγαλμα του έφηβου των Αντικυθήρων στη φόρμα των κεφαλαίων. ΠΑΡΘΕΝΩΝ 7

ΑΡΧΑΙΟ ΘΕΡΑΠΕΥΤΗΡΙΟ Εδώ ο γιατρός μπορεί να επιλέξει βασικές λειτουργίες του προγράμματος, όπως περίπτωση test χωρίς καταγραφή ασθενούς, φάκελο νέου ασθενούς, αρχείο ασθενών, Άγγλο-Ελληνικό λεξικό και Έλληνο-Αγγλικό λεξικό του repertory, λίστα ομοιοπαθητικών φαρμάκων με τις χρησιμοποιούμενες συντομογραφίες τους, φαρμακολογία 6 κλασσικών ομοιοπαθητικών συγγραφέων, αποθήκευση δεδομένων (backup). 8

2.2. ΦΟΡΜΑ ΦΑΚΕΛΟΥ ΑΣΘΕΝΟΥΣ ΦΑΚΕΛΟΣ ΝΕΟΥ ΑΣΘΕΝΟΥΣ Στην παραπάνω φόρμα συμπληρώνονται κάποια στοιχεία του ασθενούς για να ανοίξει φάκελος για έναν καινούριο ασθενή. Τα έγχρωμα πεδία αποτελούν τα σημαντικότερα στοιχεία του ασθενούς, τα οποία είναι υποχρεωτικά να συμπληρωθούν κατά τη δημιουργία ενός καινούριου φακέλου ασθενούς. Επίσης, γίνεται αυτόματη καταγραφή της ημερομηνίας επίσκεψης, με δυνατότητα ετεροχρονισμού της στην περίπτωση που αυτή δεν καταγραφεί αυθημερόν. 9

ΑΡΧΕΙΟ ΑΣΘΕΝΩΝ Στη φόρμα αυτή ο ιατρός μπορεί να διατρέξει το αρχείο όλων των ασθενών του και να επιλέξει έναν από αυτούς. Παράλληλα του δίνεται η δυνατότητα πρόσβασης στις προηγούμενες επισκέψεις του επιλεγμένου ασθενούς, ώστε να μπορεί απλά να ενημερώσει ή να χρησιμοποιήσει στην τρέχουσα επίσκεψη τα συμπτώματα προηγούμενης επίσκεψης. 10

2.3. ΣΗΜΕΙΩΜΑΤΑΡΙΟ ΕΠΙΣΚΕΨΗΣ 2.3.1. ΣΥΜΠΤΩΜΑΤΑ ΕΠΙΣΚΕΨΗΣ Στη φόρμα αυτή ο ιατρός μπορεί να δει τα συμπτώματα προηγούμενων επισκέψεων του ασθενούς και να τα συμπεριλάβει αν επιθυμεί ως συμπτώματα και της τρέχουσας επίσκεψης. 11

2.3.2. ΣΗΜΕΙΩΣΕΙΣ ΕΠΙΣΚΕΨΗΣ Στη φόρμα αυτή ο ιατρός μπορεί κρατήσει προσωπικές σημειώσεις για κάποιον ασθενή του. 12

2.3.3. ΣΥΝΤΑΓΟΓΡΑΦΗΣΗ ΕΠΙΣΚΕΨΗΣ Στη φόρμα αυτή ο ιατρός μπορεί συμπληρώσει τη συνταγή που προτείνει σε κάθε επίσκεψη ενός ασθενούς του και να κρατάει με αυτόν τον τρόπο ενημερωμένο ένα αρχείο με όλα τα χρήσιμα στοιχεία για τον ασθενή του. 13

2.4. ΦΟΡΜΑ ΚΕΦΑΛΑΙΩΝ ΚΕΦΑΛΑΙΑ REPERTORY - ΕΛΛΗΝΙΚΑ Τα κεφάλαια με τα συμπτώματά τους έχουν διαχωριστεί σε 2 μεγάλες ομάδες: ΨΥΧΙΣΜΟΣ και ΣΩΜΑ (ΓΕΝΙΚΑ, ΣΩΜΑΤΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ, ΟΡΓΑΝΑ, ΠΟΝΟΣ ΟΡΓΑΝΟΥ). Με απλό κλικ επιλέγουμε ένα από τα 79 κεφάλαια και μας παρουσιάζονται τα συμπτώματά του. Από τις αλφαβητικές λίστες των Υπέρ-Κεφαλαίων MIND (ΨΥΧΙΣΜΟΣ) και GENERALS (ΓΕΝΙΚΑ) μπορούμε με απλό κλικ να επιλέξουμε το σύμπτωμα και να πληροφορηθούμε σε ποιο κεφάλαιο ανήκει ή με διπλό κλικ επί του συμπτώματος να έχουμε την αυτόματη εμφάνιση και επιλογή του στην οθόνη των συμπτωμάτων του κεφαλαίου που ανήκει. Όπως φαίνεται και από την παρακάτω εικόνα, η φόρμα των κεφαλαίων δίνεται σε 2 διαφορετικές γλώσσες στην ελληνική και στην αγγλική. Αυτό συμβαίνει γιατί παρόλο που το πρόγραμμα αναπτύχθηκε για Έλληνες γιατρούς, η βιβλιογραφία και η ορολογία με τις οποίες είναι ως τώρα εξοικειωμένοι, είναι γραμμένες στην αγγλική γλώσσα. 14

ΚΕΦΑΛΑΙΑ REPERTORY - ΑΓΓΛΙΚΑ 15

2.5. ΦΟΡΜΑ ΣΥΜΠΤΩΜΑΤΩΝ ΚΕΦΑΛΑΙΟΥ ΣΥΜΠΤΩΜΑΤΑ - 1 Η εμφάνιση των συμπτωμάτων και των υπό-συμπτωμάτων του ασθενούς είναι δενδροειδής μέχρι 5 επίπεδα. Στη φόρμα αυτή εμφανίζονται στο χρήστη οι συντομογραφίες των φαρμάκων του επιλεγέντος συμπτώματος μαζί με τον συνολικό αριθμό τους. Παράλληλα εμφανίζεται ο βαθμός έντασης (1 έως 4) του κάθε φαρμάκου και ανάλογος χρωματισμός του. Υποστηρίζεται επίσης η εμφάνιση των παραπομπών σε σχετικά συμπτώματα. Η κόκκινη τελεία πριν από κάποιο σύμπτωμα υποδεικνύει στον ιατρό ότι το συγκεκριμένο σύμπτωμα έχει υπό-συμπτώματα, τα οποία εμφανίζονται με την επιλογή του συμπτώματος. Η κόκκινη τεθλασμένη γραμμή που οδηγεί στα φάρμακα υποδεικνύει το τρέχον επίπεδο στην δενδροειδή κατάταξη. Υπάρχει επίσης δυνατότητα προβολής της ολογραφίας και του ονόματος των συγγραφέων του κάθε φαρμάκου. 16

ΣΥΜΠΤΩΜΑΤΑ 2 Δίνεται η δυνατότητα ηλεκτρονικής εύρεσης της πρώτης λέξης (κύρια λέξη) του συμπτώματος στο καθένα από τα 5 επίπεδα με αναγραφή της στο κίτρινο παραθυράκι. 17

ΣΥΜΠΤΩΜΑΤΑ 3 Επιλεγμένα συμπτώματα που παρουσιάζει ο ασθενής, μπορούν να καταγραφούν. Τα καταγεγραμμένα συμπτώματα εμφανίζονται κάτω αριστερά στη φόρμα. Υπάρχει δυνατότητα διαγραφής καταγεγραμμένου συμπτώματος, ενώ η διπλό - καταγραφή ενός συμπτώματος δεν επιτρέπεται. ο Ιατρός προειδοποιείται σε μια τέτοια περίπτωση από την εφαρμογή με την εμφάνιση ενός μηνύματος. 18

2.6. ΑΝΑΖΗΤΗΣΕΙΣ 2.6.1. ΑΝΑΖΗΤΗΣΗ ΑΓΓΛΙΚΩΝ ΛΕΞΕΩΝ ΣΤΑ ΣΥΜΠΤΩΜΑΤΑ ΑΝΑΖΗΤΗΣΗ Επιλέγοντας μια αγγλική λέξη μας εμφανίζεται πίνακας με τα συμπτώματα που περιέχουν τη λέξη. 19

ΑΠΟΤΕΛΕΣΜΑΤΑ Με διπλό κλικ σε ένα από τα συμπτώματα των αποτελεσμάτων έχουμε την αυτόματη εμφάνιση και επιλογή του στη φόρμα των συμπτωμάτων. Δίνεται η δυνατότητα αναζήτησης τής λέξης είτε στο τρέχον είτε και στα 79 κεφάλαια συνολικά. Υπάρχει επίσης η δυνατότητα να αναζητηθούν όλες οι αγγλικές λέξεις που έχουν κοινή αρχή και διαφορετική κατάληξη. Ακόμη, με τη σύνθετη αναζήτηση αναζητούμε συμπτώματα με χρήση δύο λέξεων (είτε αυτά να περιέχουν και τις δύο λέξεις, είτε να περιέχουν μόνο τη μια ή μόνο την άλλη λέξη, είτε να περιέχουν τις δύο λέξεις στη σειρά). 20

2.6.2. ΑΝΑΖΗΤΗΣΗ ΕΛΛΗΝΙΚΩΝ ΛΕΞΕΩΝ ΣΤΑ ΣΥΜΠΤΩΜΑΤΑ ΑΝΑΖΗΤΗΣΗ Όμοια λειτουργία με την αναζήτηση αγγλικών λέξεων. Επιλέγοντας την ελληνική λέξη το πρόγραμμα αναζητά την αντίστοιχη αγγλική. Έτσι σε περίπτωση που κάποια ελληνική λέξη αποδίδεται με δύο αγγλικές τότε κάνουμε χρήση της σύνθετης αναζήτησης, ώστε να αναζητηθούν και οι δύο λέξεις. 21

2.6.3. ΑΝΑΖΗΤΗΣΗ ΣΥΜΠΤΩΜΑΤΩΝ ΦΑΡΜΑΚΟΥ ΑΝΑΖΗΤΗΣΗ Αναζήτηση όλων των συμπτωμάτων μέχρι και τριών συγχρόνως φαρμάκων είτε μόνο στο τρέχον κεφάλαιο είτε σε όλα τα κεφάλαια της εφαρμογής. Δίνεται και η δυνατότητα αναζήτησης των συμπτωμάτων τα οποία έχουν για μοναδικό φάρμακο μόνον το υπόψη φάρμακο. 22

ΑΠΟΤΕΛΕΣΜΑΤΑ Με διπλό κλικ σε ένα από τα συμπτώματα των αποτελεσμάτων μας εμφανίζεται η οθόνη των συμπτωμάτων του κεφαλαίου με επιλεγμένο αυτό το σύμπτωμα. 23

ΥΠΟ - ΑΠΟΤΕΛΕΣΜΑΤΑ Με το κουμπί Αναζήτηση Αποτελέσματος εντοπίζονται τα συμπτώματα που περιέχουν μια ορισμένη λέξη (π.χ. morning. Έτσι ο ιατρός μπορεί να εντοπίσει τι συμπτώματα του φαρμάκου υπάρχουν μόνον το πρωί). 24

2.7. ΑΝΑΛΥΣΗ ΚΑΤΑΓΡΑΦΕΝΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ 2.7.1. ΑΠΛΗ ΑΝΑΛΥΣΗ ΑΝΑΛΥΣΗ ΚΑΛΥΠΤΟΜΕΝΩΝ ΣΥΜΠΤΩΜΑΤΩΝ Τα φάρμακα μπορούν να αναλυθούν με σειρά κατάταξης, ανάλογα με τον αριθμό των καλυπτόμενων συμπτωμάτων ανά φάρμακο όπως φαίνεται στην παραπάνω φόρμα ή ανάλογα με την συνολική βαθμολογία των εντάσεων των φαρμάκων του κάθε καταγεγραμμένου συμπτώματος όπως φαίνεται στη φόρμα που ακολουθεί. 25

ΑΝΑΛΥΣΗ ΒΑΘΜΟΛΟΓΙΑΣ ΕΝΤΑΣΕΩΝ 26

ΠΑΡΟΥΣΙΑΣΗ ΦΑΡΜΑΚΩΝ Η παρουσίαση της σειράς κατάταξης ενός φαρμάκου σε σχέση με όλα τα συμμετέχοντα στην ανάλυση φάρμακα, γίνεται σε έναν ειδικό αλφαβητικό πίνακα που υποστηρίζει με διπλό κλικ την εύρεση του φαρμάκου στον πίνακα ανάλυσης. 27

2.7.2. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΒΑΡΥΤΗΤΑΣ ΤΩΝ ΚΑΤΑΓΡΑΦΕΝΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ Ο ιατρός μπορεί σύμφωνα με την κρίση του να καθορίσει, αν θέλει, τη βαρύτητας του κάθε καταγραφέντος συμπτώματος με βαθμό από 1 έως 10. 28

2.7.3. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΟΡΙΣΜΟΥ ΤΩΝ ΣΗΜΑΝΤΙΚΩΝ ΣΥΜΠΤΩΜΑΤΩΝ Η ανάλυση αυτή στηρίζεται μόνο στα φάρμακα που αποτελούνται από τη μαθηματικής ένωση των φαρμάκων που χαρακτηρίζονται από τον ιατρό ως σημαντικά συμπτώματα. 29

2.7.4. ΑΝΑΛΥΣΗ ΒΑΣΕΙ ΟΡΙΣΜΟΥ ΤΩΝ ΑΝΑΝΤΙΚΑΤΑΣΤΑΤΩΝ ΣΥΜΠΤΩΜΑΤΩΝ Με αυτόν τον τρόπο ορίζουμε κάποια συμπτώματα πρώτιστης σημασίας και η ανάλυση δίνει απόλυτη προτεραιότητα στα φάρμακα που καλύπτουν τα αναντικατάστατα συμπτώματα. Χρησιμοποιούνται μόνον τα φάρμακα της μαθηματικής τομής των φαρμάκων των αναντικατάστατων συμπτωμάτων. 30

2.7.5. ΣΥΝΘΕΤΙΚΗ ΠΑΡΟΥΣΙΑΣΗ Για την ευκολότερη συγκριτική μελέτη της ανάλυσης δίνεται η δυνατότητα επιλογής μέχρι 4 φαρμάκων και συγκεντρωτικής παρουσίασής τους. 31

2.8. ΛΟΙΠΕΣ ΛΕΙΤΟΥΡΓΙΕΣ 2.8.1. ΑΓΓΛΟΕΛΛΗΝΙΚΟ ΛΕΞΙΚΟ REPERTORY 32

2.8.2. ΕΛΛΗΝΟΑΓΓΛΙΚΟ ΛΕΞΙΚΟ REPERTORY 2.8.3. ΠΙΝΑΚΑΣ ΦΑΡΜΑΚΩΝ Γίνεται αλφαβητική παρουσίαση των 3.885 φαρμάκων με τις συντομογραφίες τους. 33

2.8.4. ΦΑΡΜΑΚΟΛΟΓΙΑ Συμπεριλαμβάνεται φαρμακολογία 6 κλασσικών συγγραφέων για 1093 ομοιοπαθητικά φάρμακα, στην αγγλική γλώσσα. Επιλεγόμενο το φάρμακο εμφανίζεται λίστα των 6 συγγραφέων με επισήμανση αυτών που έγραψαν για το υπόψη φάρμακο ώστε να επιλέξουμε αυτόν που επιθυμούμε. 34

2.8.5. ΑΠΟΘΗΚΕΥΣΗ ΔΕΔΟΜΕΝΩΝ Δίνεται η δυνατότητα στον ιατρό να μπορεί να κρατήσει, είτε για λόγους ασφαλείας είτε για λόγους ευελιξίας, αντίγραφο ασφαλείας (backup) των φακέλων των ασθενών του, καθώς και να επαναφέρει τους φακέλους του από ένα αντίγραφο δεδομένων, οποιαδήποτε στιγμή αυτός επιθυμεί. 35

3. ΚΩΔΙΚΑΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ Η Εφαρμογή αναπτύχθηκε σε Visual Basic 6.0, και τα δεδομένα αποθηκεύονται σε Βάσεις της Microsoft Access. Στη συνέχεια παρατείθεται ο κώδικας όπως αναπτύχθηκε για την υλοποίηση των βασικότερων φορμών της Εφαρμογής. 3.1. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΦΑΚΕΛΟΥ ΑΣΘΕΝΟΥΣ Option Explicit Dim nextpatientid As Long Dim countpatients Dim saved As Boolean ' New Patient's Code ' Number of Patients ' Successfully Saved Dim cbo1arrayidlfname() As String ' For cbo1 values Dim cbo3arraycaptions() As String ' For cbo3 values Dim cbo8arraycaptions() As String ' For cbo8 values Private Sub Form_Load() Call LoadResStrings(Me, I_Lang) Call InitiateFields Call LoadCBOsElementsCaptions Depending on Language ' Show ComboBoxes Elements Call RefreshComboBoxes Select Case typepatient Case newpatient Me.Icon = LoadResPicture(101, vbresicon) nextpatientid = 0 saved = False Call NSPBeforeSave Case selectpatient Me.Icon = LoadResPicture(102, vbresicon) saved = False Call SPBeforeSelect Case Else End Select If Me.Caption <> LoadResString(I_Lang + frmpatientcardres + 1) Then ' If Me.Caption <> "SELECT PATIENT" Then lbl100.visible = True Private Sub Form_Activate() If currentversion <> "English" And currentlanguage = currentversion Then Call ChangeKeyBoardLanguage(currentVersion) Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If Me.Caption <> LoadResString(I_Lang + frmpatientcardres + 1) Then ' If Me.Caption <> "SELECT PATIENT" Then If saved = False Then 36

If (Trim(Text1.Text) <> "" Or Trim(Text2.Text) <> "" Or Trim(cbo3.Text) <> "" _ Or Trim(Text4.Text) <> "" Or Trim(Text5.Text) <> "" Or Trim(Text6.Text) <> "" _ Or Trim(Text7.Text) <> "" Or Trim(cbo8.Text) <> "" Or Trim(Text9.Text) <> "" _ Or Trim(Text10.Text) <> "" Or Trim(Text11.Text) <> "" Or Trim(Text12.Text) <> "" _ Or Trim(Text13.Text) <> "" Or Trim(Text14.Text) <> "" Or Trim(Text15.Text) <> "" _ Or Trim(Text16.Text) <> "") Then If Me.Caption = LoadResString(I_Lang + frmpatientcardres + 0) Then ' If Me.Caption = "NEW PATIENT" Then r = MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 1), vbyesnocancel + vbquestion + vbapplicationmodal, LoadResString(I_Lang + 1010)) ' r = MsgBox(" Do you want to Save Patient?", vbyesnocancel + vbquestion + vbapplicationmodal, "Organon 2001") If Me.Caption = LoadResString(I_Lang + frmpatientcardres + 2) Then ' If Me.Caption = "UPDATE PATIENT" Then r = MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 2), vbyesnocancel + vbquestion + vbapplicationmodal, LoadResString(I_Lang + 1010)) ' r = MsgBox(" Do you want to Update Patient?", vbyesnocancel + vbquestion + vbapplicationmodal, "Organon 2001") Select Case r Case vbyes Call cmdsave_click If saved = False Then Cancel = True Case vbno Case vbcancel Cancel = True End Select If Cancel = False Then frmmdi.enabled = True 'Call frmmdi.setfocus If currentversion <> "English" And currentlanguage = currentversion Then 'Restore Keyboard Language Configuration Call ChangeKeyBoardLanguage("Default") Private Sub ReSize1_PreResize(ControlName As String, ControlType As String, NewTop As Single, NewLeft As Single, NewHeight As Single, NewWidth As Single, NewFontSize As Single, IgnoreControl As Boolean, ByVal CurrentControl As Object) If ControlName = "cbo1" Then Dim NewDropDownWidth As Long NewDropDownWidth = 1.25 * NewWidth / Xtwips 37

Call SendMessage(cbo1.hWnd, CB_SETDROPPEDWIDTH, NewDropDownWidth, ByVal 0) ' Longer Drop Down Private Sub DTPicker00_Change() currentdateofvisit = DTPicker00.Value Private Sub cbo0_click() Dim i As Integer If cbo0.listindex <> -1 Then currentpatient = cbo0.list(cbo0.listindex) For i = 0 To countpatients - 1 If cbo1arrayidlfname(i, 0) = cbo0.list(cbo0.listindex) Then Exit For Next i currentpatientname = cbo1arrayidlfname(i, 3) Call SPAfterSelect Private Sub cbo1_click() Dim i As Integer If cbo1.listindex <> -1 Then For i = 0 To countpatients - 1 If cbo1arrayidlfname(i, 3) = cbo1.list(cbo1.listindex) Then Exit For Next i currentpatient = cbo1arrayidlfname(i, 0) currentpatientname = cbo1arrayidlfname(i, 3) Call SPAfterSelect Private Sub cbo1b_dropdown() cbo1b.clear cbo1.visible = True cbo1b.visible = False Exit Sub Private Sub Text4_Click() If Text4.Locked = False Then Text4.Text = DTPicker4.Value Text4.Visible = False DTPicker4.Visible = True Private Sub Text5_Click() If Text5.Locked = False Then Text5.Text = DTPicker5.Value Text5.Visible = False 38

DTPicker5.Visible = True Private Sub Text5_KeyPress(KeyAscii As Integer) If Text5.Locked = False Then Text5.Text = DTPicker5.Value ' This Field is not necessary Text5.Visible = False DTPicker5.Visible = True Private Sub DTPicker4_Change() Text4.Text = DTPicker4.Value Private Sub DTPicker5_Change() Text5.Text = DTPicker5.Value Private Sub cmdviewpastvisits_click() Call Load(frmVisits) If therearepastvisits = True Then frmvisits.lblreason.caption = "ViewPastVisits" frmvisits.cmdclose.caption = LoadResString(I_Lang + frmvisitsres + CInt(frmVisits.cmdClose.Tag) + 0) ' frmvisits.cmdclose.caption = "Close" Me.Hide frmvisits.show (vbmodal) Else Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 3), vbokonly + vbinformation, LoadResString(I_Lang + 1010)) ' Call MsgBox("The selected Patient has NO Past Visits!", vbokonly + vbinformation, "Organon 2001") Call Unload(frmVisits) Private Sub cmdsave_click() If cmdsave.caption = LoadResString(I_Lang + frmpatientcardres + CInt(cmdSave.Tag) + 0) Then 'Save or Update ' If cmdsave.caption = "Save" Then 'Save or Update Call SavePatients Else ' Before Update Call NSPBeforeSave Me.Caption = LoadResString(I_Lang + frmpatientcardres + 2) ' Me.Caption = "UPDATE PATIENT" Call UnLockFields cbo0.locked = True cbo1b.visible = False Private Sub cmddelete_click() r = MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 4) & currentpatient & "?", vbyesnocancel + vbquestion + vbapplicationmodal, LoadResString(I_Lang + 1010)) ' r = MsgBox("Are you sure you want to Delete Patient with Code: " & currentpatient & "?", vbyesnocancel + vbquestion + vbapplicationmodal, "Organon 2001") If r = vbyes Then Call DeletePatients 39

Private Sub cmdprint_click() Dim endtime As Date ' Time Delay after Print Dialog Box Disappears Dim PrnPicWidth As Double Dim PrnPicHeight As Double Dim printcopies As Integer ' User Selected Number of Copies Dim noerror As Boolean ' Set to True if an Error or Canceled is Pressed Dim i As Integer Call PrinterDialogBox(printCopies, noerror) ' Hide these Fields from PRINTING Call FieldsBeforePrint ' Time Delay after Print Dialog Box Disappears ' in order to catch the Right Picture for Form endtime = DateAdd("s", 2, Now) Do Until Now > endtime DoEvents Loop If noerror = True Then ' Print only Client Area from Form Set PicturePrint.Picture = CaptureClient(Me) ' Declared in PrintModule PrintPictureToFitPage Printer, PicturePrint.Picture, PrnPicWidth, PrnPicHeight For i = 1 To printcopies ' User Selected Number of Copies ' Print the picture using the PaintPicture method.(567 = 1 cm) Printer.PaintPicture PicturePrint.Picture, 0, 567, PrnPicWidth, PrnPicHeight Next i ' Send to Printer Printer.EndDoc Set PicturePrint.Picture = Nothing ' Show these Fields again after PRINTING or ERROR Call FieldsAfterPrint Private Sub cmdclear_click() Call InitiateFields If Me.Caption = LoadResString(I_Lang + frmpatientcardres + 0) Then ' If Me.Caption = "NEW PATIENT" Then ' New Patient saved = False Call NSPBeforeSave Call UnLockFields Text000.Visible = False lbl000.visible = False lbl100.caption = LoadResString(I_Lang + frmpatientcardres + CInt(lbl100.Tag)) 40

' lbl100.caption = "Please Fill In all colored Fields!" lbl100.visible = True Else ' Update Patient Call SPBeforeSelect Private Sub cmdclose_click() Call Unload(Me) ' Because frmpatientcard is not Shown as Modal frmmdi.enabled = True 'Call frmmdi.setfocus Private Sub cmdcontinue_click() r = vbno ' If there are NO Past Visits, do Case vbno ' Because frmpatientcard is not Shown as Modal frmmdi.enabled = True ' For Previous Visits Call Load(frmVisits) If therearepastvisits = True Then r = MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 5), vbyesnocancel + vbquestion, LoadResString(I_Lang + 1010)) ' r = MsgBox("Do you want to include Symptoms of Patient's Past Visits?", vbyesnocancel + vbquestion, "Organon 2001") Select Case r Case vbyes frmvisits.lblreason.caption = "LoadPastSymptoms" frmvisits.cmdclose.caption = LoadResString(I_Lang + frmvisitsres + CInt(frmVisits.cmdClose.Tag) + 1) ' frmvisits.cmdclose.caption = "Cancel" Call Unload(Me) frmvisits.show (vbmodal) Case vbno ' AND If there are NO Past Visits ' For Symptoms-Drugs of Previous Visit:Empty cursymptsdrugsarray cursymptsdrugsarray = Split("") Call frmvisits.insertvisits startvalueofsymptoms = visitsarray(indexofcurrentvisit, 4) ' To Track Updates of Symptoms frmvisits.lblreason.caption = "Use" frmvisits.cmdclose.caption = LoadResString(I_Lang + frmvisitsres + CInt(frmVisits.cmdClose.Tag) + 0) ' frmvisits.cmdclose.caption = "Close" Call Unload(Me) frmchapters.show Call frmchapters.menuinitiations Case vbcancel Call Unload(frmVisits) Case Else End Select Private Sub InitiateFields() Dim NewDropDownWidth As Long NewDropDownWidth = 1.25 * cbo1.width / Xtwips 41

Call SendMessage(cbo1.hWnd, CB_SETDROPPEDWIDTH, NewDropDownWidth, ByVal 0) ' Longer Drop Down DTPicker00.Value = Date ' Initiations of Fields currentdateofvisit = DTPicker00.Value Text000.Text = "" cbo0.text = "" Text0.Text = "" cbo1.text = "" cbo1b.text = "" Text1.Text = "" Text2.Text = "" cbo3.text = " " DTPicker4.Value = "1/1/1950" Text4.Text = "" DTPicker5.Value = "00:00:00" Text5.Text = "" Text6.Text = "" Text7.Text = "" cbo8.text = " " Text9.Text = "" Text10.Text = "" Text11.Text = "" Text12.Text = "" Text13.Text = "" Text14.Text = "" Text15.Text = "" Text16.Text = "" lbllastvisit.visible = False Private Sub LoadCBOsElementsCaptions() Dim i As Integer ' SEX Field: Male, Female cbo3.clear ReDim cbo3arraycaptions(2) cbo3.additem " " cbo3arraycaptions(0) = "" For i = 1 To 2 cbo3.additem LoadResString(I_Lang + frmpatientcardres + CInt(lbl3.Tag) + i) cbo3arraycaptions(i) = LoadResString(I_English + frmpatientcardres + CInt(lbl3.Tag) + i) Next i ' Marital Status Field: Single, Married, Widow, Widower, Divorced cbo8.clear ReDim cbo8arraycaptions(5) cbo8.additem " " cbo8arraycaptions(0) = "" For i = 1 To 5 cbo8.additem LoadResString(I_Lang + frmpatientcardres + CInt(lbl8.Tag) + i) cbo8arraycaptions(i) = LoadResString(I_English + frmpatientcardres + CInt(lbl8.Tag) + i) Next i Private Function LoadRightCBOValue(cbo As ComboBox) As String Select Case cbo.name Case "cbo3" 42

If cbo3.listindex <> -1 Then LoadRightCBOValue = cbo3arraycaptions(cbo3.listindex) Else LoadRightCBOValue = "" Case "cbo8" If cbo8.listindex <> -1 Then LoadRightCBOValue = cbo8arraycaptions(cbo8.listindex) Else LoadRightCBOValue = "" Case Else LoadRightCBOValue = "" End Select End Function Private Function RetrieveRightCBOValue(cbo As ComboBox, Txt As String) As String Dim i As Integer Dim found As Boolean Select Case cbo.name Case "cbo3" found = False For i = LBound(cbo3ArrayCaptions) + 1 To UBound(cbo3ArrayCaptions) If cbo3arraycaptions(i) = Txt Then RetrieveRightCBOValue = LoadResString(I_Lang + frmpatientcardres + CInt(lbl3.Tag) + i) Exit For If found = False Then RetrieveRightCBOValue = " " Next i Case "cbo8" found = False For i = LBound(cbo8ArrayCaptions) + 1 To UBound(cbo8ArrayCaptions) If cbo8arraycaptions(i) = Txt Then RetrieveRightCBOValue = LoadResString(I_Lang + frmpatientcardres + CInt(lbl8.Tag) + i) Exit For If found = False Then RetrieveRightCBOValue = " " Next i Case Else RetrieveRightCBOValue = " " End Select End Function Private Sub RefreshComboBoxes() Dim rs As New ADODB.Recordset Dim strquery As String Dim i As Integer If typepatient <> newpatient Then cbo0.clear cbo1.clear cbo1b.clear ' Fill in Name 43

countpatients = 0 On Error GoTo ErrHandler strquery = "Patients" rs.open strquery, connpatvisdb, adopenkeyset, adlockreadonly, adcmdtabledirect If rs.eof = False Then ' If there are Patients countpatients = rs.recordcount 'Keeps ID, LastName,FirstName and LastName Space(3) FirstName ReDim cbo1arrayidlfname(countpatients - 1, 4) For i = 0 To countpatients - 1 cbo1arrayidlfname(i, 0) = rs.fields(0).value cbo1arrayidlfname(i, 1) = rs.fields(1).value cbo1arrayidlfname(i, 2) = rs.fields(2).value cbo1arrayidlfname(i, 3) = rs.fields(1).value & Space$(3) & rs.fields(2).value cbo0.additem (cbo1arrayidlfname(i, 0)) cbo1.additem (cbo1arrayidlfname(i, 3)) 'cbo1b.additem (cbo1arrayidlfname(i, 1)) rs.movenext Next i rs.close Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 6) & vbnewline & _ "Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error when Retrieving Patients:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") Private Sub NSPBeforeSave() Me.Caption = LoadResString(I_Lang + frmpatientcardres + 0) ' Me.Caption = "NEW PATIENT" ' Captions cmdsave.caption = LoadResString(I_Lang + frmpatientcardres + CInt(cmdSave.Tag) + 0) ' cmdsave.caption = "Save" Text000.Locked = True cbo0.locked = True Text0.Locked = True ' Age ' Patient's Code Text0.Top = DTPicker00.Top Text0.Visible = True ' Fields Text1.Top = Text2.Top cbo1.visible = False cbo1b.visible = False Text1.Visible = True 44

Text4.Top = Text6.Top Text4.Visible = True Text5.Top = Text6.Top Text5.Visible = True Text1.BackColor = &HFFFF80 Text2.BackColor = &HFFFF80 cbo3.backcolor = &HFFFF80 Text4.BackColor = &HFFFF80 Text10.BackColor = &HFFFF80 Text13.BackColor = &HFFFF80 ' Colors cmdviewpastvisits.enabled = False cmdsave.enabled = True cmddelete.enabled = False cmdprint.enabled = False cmdcontinue.enabled = False cmdclear.enabled = True cmdclose.enabled = True ' Buttons Private Sub SPBeforeSelect() Me.Caption = LoadResString(I_Lang + frmpatientcardres + 1) ' Me.Caption = "SELECT PATIENT" cmdsave.caption = LoadResString(I_Lang + frmpatientcardres + CInt(cmdSave.Tag) + 1) ' cmdsave.caption = "Update" Text1.BackColor = &H80000005 Text2.BackColor = &H80000005 cbo3.backcolor = &H80000005 Text4.BackColor = &H80000005 Text10.BackColor = &H80000005 Text13.BackColor = &H80000005 cbo0.visible = True Text0.Visible = False cbo1.visible = True cbo1b.visible = False Text1.Visible = False Text4.Top = Text6.Top Text4.Visible = True Text5.Top = Text6.Top Text5.Visible = True ' Colors ' Fields Call LockFields DTPicker00.Enabled = True ' These Fields must be unlocked cbo0.locked = False Text0.Locked = False cbo1.locked = False cbo1b.locked = False Text1.Locked = False cmdviewpastvisits.enabled = False cmdsave.enabled = False cmddelete.enabled = False cmdprint.enabled = False cmdcontinue.enabled = False cmdclear.enabled = False cmdclose.enabled = True ' Buttons 45

Private Sub SPAfterSelect() Dim rs As New ADODB.Recordset Dim strquery As String On Error GoTo ErrHandler strquery = "SELECT * FROM Patients" & _ " WHERE ID = " & currentpatient rs.open strquery, connpatvisdb, adopenkeyset, adlockreadonly, adcmdtext cbo1.visible = False cbo1b.visible = True cbo1b.top = Text2.Top cbo0.text = rs.fields(0).value ' Retrieve Patient's Data Text0.Text = cbo0.text cbo1.text = rs.fields(1).value & Space$(3) & rs.fields(2).value cbo1b.text = rs.fields(1).value 'call msgbox(cbo1.text, vbokonly + vbcritical, "Organon 2001") Text1.Text = cbo1b.text Text2.Text = rs.fields(2).value & "" cbo3.text = RetrieveRightCBOValue(cbo3, rs.fields(3).value) DTPicker4.Value = rs.fields(4).value Text4.Text = DTPicker4.Value If rs.fields(5).value <> "" Then DTPicker5.Value = rs.fields(5).value Text5.Text = DTPicker5.Value Else Text5.Text = "" Text6.Text = rs.fields(6).value & "" Text7.Text = rs.fields(7).value & "" If rs.fields(8).value <> "" Then cbo8.text = RetrieveRightCBOValue(cbo8, rs.fields(8).value) Else cbo8.text = " " Text9.Text = rs.fields(9).value & "" Text10.Text = rs.fields(10).value & "" Text11.Text = rs.fields(11).value & "" Text12.Text = rs.fields(12).value & "" Text13.Text = rs.fields(13).value & "" Text14.Text = rs.fields(14).value & "" Text15.Text = rs.fields(15).value & "" Text16.Text = rs.fields(16).value & "" Text000.Text = DateDiff("yyyy", DTPicker4.Value, Now) Age Text000.Visible = True lbl000.visible = True lbllastvisit.visible = True ' Show cmdviewpastvisits.enabled = True cmdsave.enabled = True cmddelete.enabled = True cmdprint.enabled = True cmdclear.enabled = True cmdcontinue.enabled = True ' Buttons rs.close 46

' Last Visit Field strquery = "SELECT Date FROM Visits" & _ " WHERE PatientID = " & currentpatient & _ " ORDER BY Date DESC" rs.open strquery, connpatvisdb, adopenkeyset, adlockreadonly, adcmdtext If rs.eof = False Then ' If there are Visits lbllastvisit.caption = LoadResString(I_Lang + frmpatientcardres + CInt(lblLastVisit.Tag)) & _ rs.fields(0).value ' lbllastvisit.caption = "Last Visit: " & rs.fields(0).value Else lbllastvisit.caption = LoadResString(I_Lang + frmpatientcardres + CInt(lblLastVisit.Tag)) & _ "-" ' lbllastvisit.caption = "Last Visit: -" rs.close Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 7) & vbnewline & _ "Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error after Selecting Patients:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") Private Sub InsertPatients(column2 As String, column3 As String, column4 As String, _ column5 As String, column6 As String, column7 As String, _ column8 As String, column9 As String, column10 As String, _ column11 As String, column12 As String, column13 As String, _ column14 As String, column15 As String, column16 As String, _ column17 As String) Dim rs As New ADODB.Recordset Dim strquery As String On Error GoTo ErrHandler strquery = "SELECT * FROM Patients ORDER BY ID" rs.open strquery, connpatvisdb, adopenkeyset, adlockoptimistic, adcmdtext If nextpatientid = 0 Then ' Whenever the Form is first Loaded If rs.eof = False Then ' If there are Patients rs.movelast ' Count Patients nextpatientid = rs.fields(0).value + 1 Else nextpatientid = 1 ' The first Patient Else ' For Sequential Saves without closing the Form nextpatientid = nextpatientid + 1 47

rs.addnew rs.fields(0).value = nextpatientid rs.fields(1).value = column2 rs.fields(2).value = column3 rs.fields(3).value = column4 rs.fields(4).value = column5 rs.fields(5).value = column6 rs.fields(6).value = column7 rs.fields(7).value = column8 rs.fields(8).value = column9 rs.fields(9).value = column10 rs.fields(10).value = column11 rs.fields(11).value = column12 rs.fields(12).value = column13 rs.fields(13).value = column14 rs.fields(14).value = column15 rs.fields(15).value = column16 rs.fields(16).value = column17 rs.update rs.close currentpatient = nextpatientid currentpatientname = column2 & Space$(3) & column3 Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 13) & vbnewline & _ "Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error when Inserting Patients:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") Private Sub UpdatePatients(column2 As String, column3 As String, column4 As String, _ column5 As String, column6 As String, column7 As String, _ column8 As String, column9 As String, column10 As String, _ column11 As String, column12 As String, column13 As String, _ column14 As String, column15 As String, column16 As String, _ column17 As String) Dim rs As New ADODB.Recordset Dim strquery As String On Error GoTo ErrHandler strquery = "SELECT * FROM Patients" & _ " WHERE ID = " & currentpatient rs.open strquery, connpatvisdb, adopenkeyset, adlockoptimistic, adcmdtext If rs.eof = False Then ' If there are Patients rs.fields(1).value = column2 rs.fields(2).value = column3 rs.fields(3).value = column4 rs.fields(4).value = column5 48

rs.fields(5).value = column6 rs.fields(6).value = column7 rs.fields(7).value = column8 rs.fields(8).value = column9 rs.fields(9).value = column10 rs.fields(10).value = column11 rs.fields(11).value = column12 rs.fields(12).value = column13 rs.fields(13).value = column14 rs.fields(14).value = column15 rs.fields(15).value = column16 rs.fields(16).value = column17 rs.update rs.close currentpatientname = column2 & Space$(3) & column3 Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 14) & vbnewline & _ "Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error when Updating Patients:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") Private Sub DeletePatients() Dim rs As New ADODB.Recordset Dim strquery As String On Error GoTo ErrHandler strquery = "SELECT * FROM Patients" & _ " WHERE ID = " & currentpatient rs.open strquery, connpatvisdb, adopenkeyset, adlockoptimistic, adcmdtext If rs.eof = False Then ' If there are Patients rs.delete Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 15), vbokonly + vbinformation, LoadResString(I_Lang + 1010)) ' Call MsgBox("The Patient has been successfully Deleted!", vbokonly + vbinformation, "Organon 2001") Call InitiateFields Call RefreshComboBoxes Call SPBeforeSelect rs.close Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmpatientcardres + I_MsgBox + 16) & vbnewline & _ "Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error when Deleting Patients:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") 49

Private Sub FieldsBeforePrint() frmpatientcard.backcolor = vbwhite lbl000.backcolor = vbwhite lbl00.backcolor = vbwhite lbl0.backcolor = vbwhite lbl1.backcolor = vbwhite lbl2.backcolor = vbwhite lbl3.backcolor = vbwhite lbl4.backcolor = vbwhite lbl5.backcolor = vbwhite lbl6.backcolor = vbwhite lbl7.backcolor = vbwhite lbl8.backcolor = vbwhite lbl9.backcolor = vbwhite lbl10.backcolor = vbwhite lbl11.backcolor = vbwhite lbl12.backcolor = vbwhite lbl13.backcolor = vbwhite lbl14.backcolor = vbwhite lbl15.backcolor = vbwhite lbl16.backcolor = vbwhite cbo0.backcolor = vbwhite cbo1.backcolor = vbwhite cbo1b.backcolor = vbwhite cmdviewpastvisits.visible = False cmdsave.visible = False cmddelete.visible = False cmdprint.visible = False cmdclear.visible = False cmdclose.visible = False cmdcontinue.visible = False shp2.visible = False Private Sub FieldsAfterPrint() frmpatientcard.backcolor = vbbuttonface lbl000.backcolor = vbbuttonface lbl00.backcolor = vbbuttonface lbl0.backcolor = vbbuttonface lbl1.backcolor = vbbuttonface lbl2.backcolor = vbbuttonface lbl3.backcolor = vbbuttonface lbl4.backcolor = vbbuttonface lbl5.backcolor = vbbuttonface lbl6.backcolor = vbbuttonface lbl7.backcolor = vbbuttonface lbl8.backcolor = vbbuttonface lbl9.backcolor = vbbuttonface lbl10.backcolor = vbbuttonface lbl11.backcolor = vbbuttonface lbl12.backcolor = vbbuttonface lbl13.backcolor = vbbuttonface lbl14.backcolor = vbbuttonface lbl15.backcolor = vbbuttonface lbl16.backcolor = vbbuttonface cbo0.backcolor = &HFFFF80 cbo1.backcolor = &HFFFF80 cbo1b.backcolor = &HFFFF80 cmdviewpastvisits.visible = True cmdsave.visible = True 50

cmddelete.visible = True cmdprint.visible = True cmdclear.visible = True cmdclose.visible = True cmdcontinue.visible = True shp2.visible = True 3.2. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΚΕΦΑΛΑΙΩΝ Option Explicit Dim I_TempLang As Long Private Sub Form_Activate() Dim ctl As Control Dim sctltype As String ' Avoid FLICKERING Me.ReSize1.Enabled = False ' For Each ctl In Me.Controls sctltype = TypeName(ctl) MsgBox sctltype '= TypeName(ctl) If sctltype = "Shape" Or sctltype = "Image" Or sctltype = "Label" Or sctltype = "Frame" Or sctltype = "CommandButton" Then ctl.visible = True Next ' Otherwise it Loses Focus because INITIALLY is Invisible cmdmind.setfocus Private Sub Form_Load() Me.ReSize1.Enabled = True I_TempLang = I_English Call LoadResStrings(Me, I_TempLang) Call LabelCaptions Call PositionOfFields Call InitiateFields Call RetrieveSUMA Private Sub Form_Click() Call lstmind_lostfocus Call lstgenerals_lostfocus Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If currentpatientname <> LoadResString(I_Lang + 1001) Then ' Prevent Save for Test Case ' If currentpatientname <> "Test Case" Then ' Prevent Save for Test Case If visitsarray(indexofcurrentvisit, 4) <> startvalueofsymptoms Then r = MsgBox(LoadResString(I_Lang + frmchaptersres + I_MsgBox + 1) & vbnewline & _ 51

LoadResString(I_Lang + frmchaptersres + I_MsgBox + 2) & currentdateofvisit & "?", vbyesno + vbquestion, LoadResString(I_Lang + 1010)) ' r = MsgBox("Do you want to Save Changes in Symptoms" & vbnewline & " of Patient's Visit on: " & currentdateofvisit & "?", vbyesno + vbquestion, "Organon 2001") Select Case r Case vbyes Call frmvisits.updatesymptomsdrugsofvisits Case vbno startvalueofsymptoms = "" visitsarray(indexofcurrentvisit, 4) = startvalueofsymptoms ' Restore Values to Check if BLANK Case Else End Select Call frmmdi.menuinitiations Private Sub Form_Unload(Cancel As Integer) If currentpatientname <> LoadResString(I_Lang + 1001) Then ' For Test Case frmvisits is NOT Loaded ' If currentpatientname <> "Test Case" Then ' For Test Case frmvisits is NOT Loaded frmvisits.unloadfrmvisitsfromchapters = True ' In order to Unload and not just Hide Call Unload(frmVisits) ' Saves Also Changes in Notes/Prescription Else ' No Current Patient and Visit currentpatient = 0 currentpatientname = LoadResString(I_Lang + 1001) ' currentpatientname = "Test Case" currentdateofvisit = Date ' For Symptoms-Drugs of Previous Visit:Empty cursymptsdrugsarray cursymptsdrugsarray = Split("") currentvisitid = -1 visitsarray() = Split("") indexofcurrentvisit = -1 Private Sub cmdmind_click() ln1.visible = True lstmind.visible = True lstmind.setfocus Private Sub cmdgenerals_click() ln2.visible = True lstgenerals.visible = True lstgenerals.setfocus Private Sub imggreek_click() Call lstmind_lostfocus Call lstgenerals_lostfocus If I_TempLang <> I_Greek Then I_TempLang = I_Greek Call LoadResStrings(Me, I_TempLang) 52

Call LabelCaptions Private Sub imgenglish_click() Call lstmind_lostfocus Call lstgenerals_lostfocus If I_TempLang <> I_English Then I_TempLang = I_English Call LoadResStrings(Me, I_TempLang) Call LabelCaptions Private Sub imgteenager_click() Call lstmind_lostfocus Call lstgenerals_lostfocus Private Sub fragenitalia_click() Call lstmind_lostfocus Call lstgenerals_lostfocus Private Sub imgfemale_click() Call lstmind_lostfocus Call lstgenerals_lostfocus Private Sub imgmale_click() Call lstmind_lostfocus Call lstgenerals_lostfocus Private Sub lstmind_mousedown(button As Integer, Shift As Integer, x As Single, y As Single) If Button = 2 Then frmfindword.callfromform = "frmchapters" frmmdi.popupmenu frmmdi.mnupopupmenu Public Sub MenuInitiations() ' frmmdi.mnuexitorganon2001.enabled = True ' frmmdi.toolbar1.buttons("exit Organon 2001").Enabled = True frmmdi.mnutestcase.enabled = False frmmdi.toolbar1.buttons("test Case").Enabled = False frmmdi.mnunewpatient.enabled = False frmmdi.toolbar1.buttons("new Patient").Enabled = False frmmdi.mnuselectpatient.enabled = False frmmdi.toolbar1.buttons("select Patient").Enabled = False frmmdi.mnuclosepatient.enabled = True frmmdi.toolbar1.buttons("close Patient").Enabled = True ' frmmdi.mnunewdrugs.enabled = True ' frmmdi.toolbar1.buttons("new Drugs").Enabled = True ' frmmdi.mnualldrugs.enabled = True ' frmmdi.toolbar1.buttons("all Drugs").Enabled = True ' frmmdi.mnumateriamedica.enabled = True ' frmmdi.toolbar1.buttons("materia Medica").Enabled = True frmmdi.mnusearchenglishwords.enabled = False frmmdi.toolbar1.buttons("search English Words").Enabled = False frmmdi.mnusearchgreekwords.enabled = False 53

' ' ' ' frmmdi.toolbar1.buttons("search Greek Words").Enabled = False frmmdi.mnusearchdrugs.enabled = False frmmdi.toolbar1.buttons("search Drugs Symptoms").Enabled = False frmmdi.mnuresultswords.enabled = False frmmdi.toolbar1.buttons("results Words").Enabled = False frmmdi.mnuresultsdrugs.enabled = False frmmdi.toolbar1.buttons("results Drugs Symptoms").Enabled = False frmmdi.mnuenglishlexiko.enabled = True frmmdi.toolbar1.buttons("english Lexiko").Enabled = True frmmdi.mnugreeklexiko.enabled = True frmmdi.toolbar1.buttons("greek Lexiko").Enabled = True frmmdi.mnulanguage.enabled = False frmmdi.mnunotebook.enabled = True frmmdi.toolbar1.buttons("note Book").Enabled = True frmmdi.mnubackup.enabled = False frmmdi.toolbar1.buttons("backup").enabled = False frmmdi.mnuaboutorganon2001.enabled = True ' Private Sub PositionOfFields() lstmind.top = 120 lstmind.left = 2280 lstmind.height = 5320 lstmind.width = 3550 ln1.x1 = 1800 ln1.y1 = 720 ln1.x2 = 2280 ln1.y2 = 240 lstgenerals.top = 195 lstgenerals.left = 4080 lstgenerals.height = 5320 lstgenerals.width = 3550 ln2.x1 = 3960 ln2.y1 = 1800 ln2.x2 = 4080 ln2.y2 = 360 Private Sub InitiateFields() ' To Show Horizontal Scrollbars to Lists Call SendMessage(lstMind.hWnd, LB_SETHORIZONTALEXTENT, 2000, ByVal 0&) Call SendMessage(lstGenerals.hWnd, LB_SETHORIZONTALEXTENT, 2000, ByVal 0&) cmdmind.backcolor = &HD1A67E cmdgenerals.backcolor = &HC2B83A cmdmind_references.backcolor = &H48D9F2 cmdgenerals_references.backcolor = &H48D9F2 lstmind.backcolor = &HFFFFC0 lstgenerals.backcolor = &HC0FFC0 ln1.bordercolor = &HFF0000 ln2.bordercolor = &HC0C000 If currentversion = "English" Then frachangelanguage.height = 0 54

Private Sub RetrieveSUMA() Dim rs As New ADODB.Recordset Dim strquery As String Dim i As Integer Dim count As Integer ' Counts the rows Dim column1 As String Dim column2 As Integer Dim column3 As String On Error GoTo ErrHandler ' Mind SUMA lstmind.clear strquery = "Select * from MindSUMA order by Rubric" rs.open strquery, connsupdb, adopenkeyset, adlockreadonly, adcmdtext If rs.eof = False Then count = rs.recordcount For i = 1 To count column1 = rs.fields(0).value column2 = rs.fields(1).value column3 = rs.fields(2).value lstmind.additemanddata column1 & ":",, 3,,,,, itemheight1,, eixvcentre, MyFont1 lstmind.itemdata(lstmind.newindex) = column2 lstmind.additemanddata column3 & ":",, 11,, RGB(220, 220, 220),,, itemheight2,,, MyFont2 rs.movenext Next i rs.close 'Generals SUMA lstgenerals.clear strquery = "Select * from GenSUMA order by Rubric" rs.open strquery, connsupdb, adopenkeyset, adlockreadonly, adcmdtext If rs.eof = False Then count = rs.recordcount For i = 1 To count column1 = rs.fields(0).value column2 = rs.fields(1).value column3 = rs.fields(2).value lstgenerals.additemanddata column1 & ":",, 3,,,,, itemheight1,, eixvcentre, MyFont1 lstgenerals.itemdata(lstgenerals.newindex) = column2 lstgenerals.additemanddata column3 & ":",, 11,, RGB(220, 220, 220),,, itemheight2,,, MyFont2 rs.movenext Next i rs.close Exit Sub ErrHandler: Call MsgBox(LoadResString(I_Lang + frmchaptersres + I_MsgBox + 3) & vbnewline & _ 55

"Err " & Err & ".", vbokonly + vbcritical, LoadResString(I_Lang + 1011)) ' Call MsgBox("Unexpected ADO Error when Retrieving SUMA:" & vbnewline & _ ' "Err " & Err & ".", vbokonly + vbcritical, "Error") Public Sub FindListElement(lst As OwnerDrawComboList, searchtext As String) Dim lindex As Long ' Search the listbox for the text. Not case sensitive. ' The result is the index into the listbox. ' ' Wparam indicates the index to start searching from. -1 = start at top. ' lparam is address of the string to search for. lindex = SendMessage(lst.hWnd, LB_FINDSTRING, -1, ByVal searchtext) ' Only if there is a matching ENGLISH entry, else don't change anything If lindex <> -1 And (lindex Mod 2 = 0) Then ' Scroll the listbox item to the top of the list. ' Wparam indicates the item to move to the top. lparam is always 0. Call SendMessage(lst.hWnd, LB_SETTOPINDEX, lindex, 0&) lst.listindex = lindex ' Call SendMessage(lst.hWnd, LB_SETCURSEL, lindex, 0&) Private Sub LabelCaptions() Me.Caption = LoadResString(I_Lang + frmchaptersres + 0) & Space(10) & _ LoadResString(I_Lang + frmchaptersres + 1) & currentpatientname ' Me.Caption = "CHAPTERS" & Space(10) & "Patient : " & currentpatientname 3.3. ΚΩΔΙΚΑΣ ΦΟΡΜΑΣ ΣΥΜΠΤΩΜΑΤΩΝ ΚΕΦΑΛΑΙΩΝ Option Explicit Private Sub Form_Activate() Dim ctl As Control Dim sctltype As String ' Avoid FLICKERING Me.ReSize1.Enabled = False ' For Each ctl In Me.Controls sctltype = TypeName(ctl) MsgBox sctltype '= TypeName(ctl) If sctltype = "Shape" Or sctltype = "CommandButton" Or _ ctl.name = "lstlevel1" Or ctl.name = "lstlevel2" Or ctl.name = "lstlevel3" Or _ 56

ctl.name = "lstlevel4" Or ctl.name = "lstlevel5" Or _ ctl.name = "txtfind" Or ctl.name = "imgmore" Or _ ctl.name = "lblsymptoms" Or ctl.name = "lbldrugs" Or ctl.name = "lblreferences" Or _ ctl.name = "lstsymptoms" Or ctl.name = "mshdrugs" Or ctl.name = "lstreferences" Then ctl.visible = True Next ' Otherwise it Loses Focus because INITIALLY is Invisible lstlevel1.setfocus Private Sub Form_Load() Me.ReSize1.Enabled = True curchapterenglsyntom = FindEnglSyntomFromCurChapt(currentChapter) ' Find curchapterenglsyntom from currentchapter curchapterenglholog = FindEnglHologFromCurChapt(currentChapter) ' Find curchapterenglholog from currentchapter curchaptertranslsyntom = FindTranslSyntomFromCurChapt(currentChapter) ' Find curchaptertranslsyntom from currentchapter curchaptertranslholog = FindTranslHologFromCurChapt(currentChapter) ' Find curchaptertranslholog from currentchapter ' To Keep Track After Unloading Repertorization for the STATE of Results in Menus, Toolbar resultswordsenabled = False resultsdrugsenabled = False Call LoadResStrings(Me, I_Lang) Call LabelCaptions Call InitiateListsParameters Call InitiateFields WinDecl1.SetListBox lstlevel1, lstlevel2, lstlevel3, lstlevel4, lstlevel5, lsttemplevel, lstsymptoms WinDecl1.SetHooks Call RetrieveLevel1 Call RetrieveSymptoms ' For Rubrics of Level1 ' For Symptoms Private Sub Form_Click() Call txtenglish_lostfocus Call txttranslation_lostfocus Call lsttemplevel_lostfocus Call lsttemp_lostfocus Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' In Order to Unload and not Hide frmfindresults,frmfinddrugsresults frmmdi.mnuresultswords.enabled = False frmmdi.mnuresultsdrugs.enabled = False If UnloadMode <> vbformmdiform Then ' Else Unload is called from MDI Unload frmchapters.visible = True 57

Call frmchapters.menuinitiations Me.Hide Private Sub Form_Resize() Dim i As Integer For i = 0 To mshdrugs.cols - 1 mshdrugs.colwidth(i) = mshdrugs.width / (1.1 * mshdrugs.cols) Next i Private Sub Form_Unload(Cancel As Integer) Call Unload(frmFindEngl) Call Unload(frmFindTransl) Call Unload(frmFindDrugs) Call Unload(frmFindResults) Call Unload(frmFindDrugsResults) WinDecl1.UnSetHooks Private Sub ReSize1_PreResize(ControlName As String, ControlType As String, NewTop As Single, NewLeft As Single, NewHeight As Single, NewWidth As Single, NewFontSize As Single, IgnoreControl As Boolean, ByVal CurrentControl As Object) If CurrentControl.Name = "mshdrugs" Then NewFontSize = CurrentControl.FONTSIZE If CurrentControl.Name = "lstreferences" Or CurrentControl.Name = "lsttemp" Then NewFontSize = CurrentControl.Font.size Private Sub lblenglish_click() Call lsttemplevel_lostfocus Call lsttemp_lostfocus Private Sub lbltranslation_click() Call lsttemplevel_lostfocus Call lsttemp_lostfocus Private Sub imgcontinueenglish_click() txtenglish.text = english If txtenglish.visible = False Then txtenglish.visible = True txtenglish.setfocus Else Call txtenglish_lostfocus Call lsttemplevel_lostfocus Call lsttemp_lostfocus Public Sub txtenglish_lostfocus() txtenglish.visible = False Private Sub imgcontinuetranslation_click() txttranslation.text = translation 58

If txttranslation.visible = False Then txttranslation.visible = True txttranslation.setfocus Else Call txttranslation_lostfocus Call lsttemplevel_lostfocus Call lsttemp_lostfocus Public Sub txttranslation_lostfocus() txttranslation.visible = False Private Sub lstlevel1_click() If lstlevel1.listindex Mod 2 = 0 Then English Call LevelXClick("Level1", lstlevel1.listindex) ' Only for Private Sub lstlevel1_dblclick() Call ShowListTempLevel("Level1", lstlevel1.listindex) Private Sub lstlevel1_change() ' When with Page Down selects the Last Row If lstlevel1.listindex = lstlevel1.listcount - 1 Then lstlevel1.listindex = lstlevel1.listindex - 1 Private Sub lstlevel2_click() If lstlevel2.listindex Mod 2 = 0 Then English Call LevelXClick("Level2", lstlevel2.listindex) ' Only for Private Sub lstlevel2_dblclick() Call ShowListTempLevel("Level2", lstlevel2.listindex) Private Sub lstlevel2_change() ' When with Page Down selects the Last Row If lstlevel2.listindex = lstlevel2.listcount - 1 Then lstlevel2.listindex = lstlevel2.listindex - 1 Private Sub lstlevel3_click() If lstlevel3.listindex Mod 2 = 0 Then English Call LevelXClick("Level3", lstlevel3.listindex) ' Only for Private Sub lstlevel3_dblclick() Call ShowListTempLevel("Level3", lstlevel3.listindex) 59