The Design of an Interactive Computer Assisted System To
Transcription
The Design of an Interactive Computer Assisted System To
The Design of an Interactive Computer Assisted System To Formulate Retrieval Requests For a Medical Information System Using an Intelligent Tutoring System Master’s Thesis at Graz University of Technology submitted by Max Brunold Matr.-Nr. 8712177 Institute for Information Processing and Computer Supported New Media (IICM) Graz, University of Technology A-8010 Graz, Austria Graz, August 2000 o. Univ. Prof. Dr. phil. Dr. h. c. Hermann Maurer Univ. Lect. Ing. Mag. rer. nat. Mag. phil. Dr. phil. Andreas Holzinger Entwurf eines computergestützten interaktiven Systems zur Formulierung einer Auswertung aus einer medizinischen Datenbank mit Hilfe eines intelligenten Assitenten Diplomarbeit an der Technischen Universität Graz vorgelegt von Max Brunold Matr.-Nr. 8712177 Institut für Informationsverarbeitung und Computergestützte neue Medien Technische Universität Graz A-8010 Graz Graz, im August 2000 Diese Diplomarbeit ist in englischer Sprache verfasst. o. Univ. Prof. Dr. phil. Dr. h. c. Hermann Maurer Univ. Lect. Ing. Mag. rer. nat. Mag. phil. Dr. phil. Andreas Holzinger CAMIS - HCI in Medical Informatics Abstract Abstract: At Graz University, a medical information system contains three million of diagnostic reports, which form the basis of patient care and of scientific work. Complex retrieval systems are prepared in a time consuming dialogue between clinical researchers and IS-experts. The main target of this thesis was to describe the design of an Intranet Web-based query/answer system with reference to aspects of human-computer interaction. The system formulates a well structured and, ideally, machine interpretable retrieval request in interaction with the user (i.e. medical professionals, bio-statistical researchers, ...) and stores it in an existing request-management-application. The user learns, incidentally, how to use the hospital information system for his needs. For optimal interpretation of the gathered information exact formulation of the questions is essential. An intelligent guidance during the dialogue is obligatory since we cannot assume any technical skill on the part of the medical users. In the near future this service will be extended to the countrywide hospital information system. By using this system, the quality of the retrieval and therefore the quality of scientific research and medical studies are raised. Less iteration means a lower system workload. Last but not least, it is expected to lower the response time without increasing the need of human resources. Keywords: Information-Systems, Human-Computer-Interaction, Intelligent Tutorial System, Knowledge Management, Incidental Learning "When we write programs that ‘learn’, it turns out that we do and they don't." (Alan J. Perlis, Yale University) I CAMIS - HCI in Medical Informatics Acknowledgements I hereby certify that all work included in this thesis is my own, that work performed by others is appropriately cited and disallowed aids have not been used. Ich versichere, diese Arbeit selbständig verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt und mich auch sonst keiner unerlaubten Hilfsmittel bedient zu haben. Max Brunold Graz, August 2000 Many names used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those names appear in this thesis, and I was aware of a trademark claim, the names have been printed in caps or initial caps, rather than listing the names and entities that own such trademarks or inserting a trademark symbol with each mention of the trademark. However, the absence of this notation does not imply the non-existence of a trademark. II CAMIS - HCI in Medical Informatics Acknowledgements Acknowledgements I would like to thank all members of the CAMIS team for the friendly cooperation during the research phase, the feasibility study and the design of the CAMIS application. In particular I want to thank my advisor Dr. Andreas Holzinger for his continuous and indefatigable support and for correcting all the draft versions of this thesis. Additional thanks go to Ing. Andreas Kainz and Andrea Schlemmer who were forming the project’s staff. They did give a lot of support and valuable information in a technical as well as in a logistical way, providing software licenses and explaining a lot of things that were related to the KAGES organization. Thanks a lot to Prof. Gell who was putting a workstation at my disposal so I was able to do the major part of my work at the IMI office. Without the trouble-free support from Rational, Borland and TogetherSoft, it wouldn’t have been possible to build up a good and useful developing environment for the project. All three companies were willing to give me student versions of their software packages "Rational Rose 98", "Together 4" and "JBuilder 3.5" without any bureaucratic problems. Big thanks also go to Prof. Gerti Kappel, who was giving an almost private lecture about UML to the CAMIS project team - travelling from Linz to Graz without hesitating, just to give a two-day lecture. Not to forget Prof. Hermann Maurer who made it possible for me to write this thesis with the support from the people mentioned above. Thanks a lot. Finally my most heartfelt thanks go to my family who was always supporting me in my pursuit to finish my studies. It would never have been possible to reach that aim without the help and support of my parents, who were always believing in me and never hesitated to give all I was asking for. A lot of thanks to my life companion Doris and my daughter Ella, who were often forced to refrain from my presence and who also had to spend a lot of weekends alone, because I was banished in front of my screen. They had a hard time but did never complain and were also willing to release me for whatever I had to do to be able to finish this thesis. III CAMIS - HCI in Medical Informatics Table of Contents Table of Contents I II III IV Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VI List of Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X 1 Introduction 1.1 Motivation and Starting Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 General Background and Main Goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Client and Human IS-Expert Conversation . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Preliminarily Investigations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Distributed and Portable Application with Database Connectivity . . . . . . 1.3.2 Software Design using UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 UML and Java enabled Software Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 3 5 5 6 9 CAMIS Requirements 2.1 Interface and Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Current Situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Target Situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Application Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Decision for J2EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Administrative Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Interface Creation Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Database Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Example Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 CAMIS Use-Case Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 CAMIS Activity Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 17 17 17 17 18 22 22 23 25 26 29 Specification 3.1 Introduction into the J2EE Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 The Multi-Tier Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 J2EE Architecture Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 J2EE Standard Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4 What is a Servlet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.5 What is an Enterprise Java Bean? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.6 Database Integration with JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.7 J2EE Applications and Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Database System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 The Relational Database Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 The Object-Oriented Database Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 The Entity-Relationship Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 Structured Query Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 CAMIS Database Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 33 36 38 44 49 53 59 59 63 65 68 72 2 3 IV CAMIS - HCI in Medical Informatics 4 5 Table of Contents 3.3 Intelligent Tutoring Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 What is an ITS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 The Problematic of Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Interface and Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 ITS Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 CAMIS Enterprise Application Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 CAMIS Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 CAMIS JavaBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 76 77 79 80 81 81 83 Implementation 4.1 General Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 CAMIS Application Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 The CAMIS Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 The CAMIS Intelligent Tutoring System . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 The Meta Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 The Real World Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Frontend - the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Possible Dialogue Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Possible Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 86 86 87 90 91 92 92 92 97 Future Perspectives 5.1 Project Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.2 Developing the Prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3 Evaluation Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4 Refinement and KAGES Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Appendix A: Appendix B: Appendix C: Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 Paper submitted to ED-Media 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 V CAMIS - HCI in Medical Informatics I Preface Preface As long as I can remember, what machines can do for humans and especially what computers can do to simplify the life of mankind always has fascinated me. However, thinking back about the first computers which have been built and even thinking about the machines that followed up to the late eighties, we realize how much the user had to prepare himself to be able to use the computerized tools these machines had to offer. Very often man was working for the machine and not vice versa. Nowadays, we should not accept a situation like that anymore. So I was very much interested in the topics covered by human-computer-interaction (HCI) theories. I met Dr. Andreas Holzinger, who was teaching a lecture called "MML - MultiMedial Learning" and was covering subjects concerning HCI, computer aided learning and multi-media as a tool of incidental learning. He gave me the chance to realize this master’s thesis. A very interesting thing to notice is that especially doctors of medicine are frustrated by bad user interfaces and incomplete, or unclear messages rather quickly and therefore tend to avoid working with computers. Many highly qualified doctors hesitate or even refuse using a computerized tool, because they fear loosing a lot of time due to bad interfaces and inappropriate answers. Taking this into account and being confronted with the real-life need for an application that helps doctors at the University Hospital of Graz initiated the begin of this project. The main focus of the project was not to implement a powerful and speedy application, but to define the needs of such an application, to point out the main subjects and last but not least to focus on HCI. It had to be established how any interface must be designed to meet the expectations and needs for the target group, medical doctors in partucular. VI CAMIS - HCI in Medical Informatics List of Abbreviations II List of Abbreviations Abbreviation Explanation ACM ACT AI ANSI API ASP BLOB CAI CAMIS CASE CGI CI COM CORBA DB DBMS DCOM BDK EER EIS EJB ERM FTP GUI HCI HTML HTTP IDL IFS IIS IMI IS ISO IT ITS J2EE J2SDKEE J2SE JDBC JDI JDK JMS JNDI Association for Computer Machinery Adaptive Control of Thought Artificial Intelligence American National Standards Institute Application Programming Interface Active Server Pages Binary Large Object Computer Assisted Instructional (system) Computer Assisted Medical Information Survey Computer Aided Software Engineering Common Gateway Interface Corporate Identity Component Object Model Common Object Request Broker Architecture Database Database Management System Distributed Component Object Model Beans Development Kit Extended Entity-Relationship Model Enterprise Information Server Enterprise Java Bean Entity Relationship Model File Transfer Protocol Graphical User Interface Human Computer Interaction Hyper Text Markup Language Hyper Text Transfer Protocol Interactive Data Language Institute for Information Systems (Microsoft) Internet Information Server Institute for Medical Informatics Information System International Organization for Standardization Information Technology Intelligent Tutoring System Java 2 Platform Enterprise Edition Java 2 Software Development Kit, Enterprise Edition Java 2 Platform Standard Edition Java Database Connectivity* Java Debugging Interface Java Development Kit Java Message Service Java Naming and Directory Interface * this naming is not officially confirmed by Sun Microsystems, but accepted in the Java community. VII CAMIS - HCI in Medical Informatics JRE JSAPI JSP JTA JVM JWS KAGES KFU LISPITS MD MDD MRI MS MSIIS MSIE ODBC ODBMS ODMG OLE OMG OMT OODBMS ORB ORDBMS RDBMS RMI SEQUEL SPSS SQL TCP/IP UML URL XML ZRI Java Runtime Environment Java Servlet Application Programming Interface Java Server Pages Java Transaction API Java Virtual Machine Java Web Server Krankenanstalten Gesellschaft (Styrian Hospital Organization) Karl Franzens University Graz LISP Intelligent Tutoring System Medical Doctor Meta Data Dictionary Magnetic Resonance Imaging Microsoft Microsoft Internet Information Server Microsoft Internet Explorer Open Database Connectivity shortcut for OODBMS (see below) Object Data Management Group Object Linking and Embedding Object Management Group Object Modeling Technique Object Oriented Database Management System Object Request Broker Object Relational Database Management System Relational Database Management System Remote Method Invocation Structured English Query Language Statistical Package for the Social Sciences, or also Statistical Product and Service Solutions Structured Query Language Transmission Control Protocol/Internet Protocol Unified Modeling Language Unique Resource Location Extensible Markup Language Zentral Röntgen Institut (Central x-ray Institute) VIII CAMIS - HCI in Medical Informatics List of Figures III List of Figures Figure F1-1: Figure F1-2: Figure F1-3: Figure F1-4: Figure F2-1: Figure F2-2: Figure F2-3: Figure F2-4: Figure F2-5: Figure F3-1: Figure F3-2: Figure F3-3: Figure F3-4: Figure F3-5: Figure F3-6: Figure F3-7: Figure F3-8: Figure F3-9: Figure F3-10: Figure F3-11: Figure F3-12: Figure F3-13: Figure F3-14: Figure F3-15: Figure F3-16: Figure F3-17: Figure F3-18: Figure F3-19: Figure F3-20: Figure F4-1: Figure F4-2: Figure F4-3: Figure F4-4: Figure F4-5: Figure F4-6: Figure F4-7: Figure F4-8: Figure F4-9: Figure F4-10: Figure F5-1: Figure 1-1: Together 4 Development Interface . . . . . . . . . . . . . . . . . . . . . 10 JDBC Explorer in JBuilder 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Borland JBuilder 3.5 Development Interface . . . . . . . . . . . . . . . . . . . . . . . 12 Borland JBuilder CodeInsight pop-up Window . . . . . . . . . . . . . . . . . . . . . 13 Homepage of the Karl-Franzens University Graz . . . . . . . . . . . . . . . . . . . 15 Application Model in Multi-Tier Architecture . . . . . . . . . . . . . . . . . . . . . . 20 Creation of HTML answer file by a Servlet . . . . . . . . . . . . . . . . . . . . . . . . 23 UML Use-Case Diagram from User’s View . . . . . . . . . . . . . . . . . . . . . . . 27 UML Activity Diagram from User’s View . . . . . . . . . . . . . . . . . . . . . . . . . 30 Two Tier vs. Three Tier Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Thin Client Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 J2EE Architecture Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 J2EE Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 J2EE Interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 The servlet life cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Java Servlets within a Web-based DB application . . . . . . . . . . . . . . . . . . . 40 EJB Client and Container Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Principle of Accessing Databases via JDBC . . . . . . . . . . . . . . . . . . . . . . . 49 Database Access via pure Java JDBC Drivers . . . . . . . . . . . . . . . . . . . . . . 50 Database Access using the JDBC/ODBC Bridge . . . . . . . . . . . . . . . . . . . . 51 Contents of a J2EE Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Deploying an J2EE Application on the Server . . . . . . . . . . . . . . . . . . . . . . 56 Deploying an Entity Java Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 JNDI Binding and SQL Code Generation for an Entity Java Bean . . . . . . 58 Binary Large Objects (BLOB) shown in the JDBC Explorer . . . . . . . . . . 63 Example for a ER-Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 The CAMIS ERM for User-relevant Tables . . . . . . . . . . . . . . . . . . . . . . . . 73 The CAMIS ERM concerning the META Data Dictionary . . . . . . . . . . . . 74 The User’s Personal Start Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 CAMIS application framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 The CAMIS ITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 The CAMIS ITS and the Meta Data Dictionary . . . . . . . . . . . . . . . . . . . . . 89 The CAMIS Application Framework in Detail . . . . . . . . . . . . . . . . . . . . . 90 User Interface - Dialogue Title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 User Interface - Global Orientation on Interests . . . . . . . . . . . . . . . . . . . . 94 User Interface - Selection of Departments using Lists . . . . . . . . . . . . . . . . 95 User Interface - Patient Type Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 User Interface - Time Constraint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 User Interface - Entering Free Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Prototype Project Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 IX CAMIS - HCI in Medical Informatics List of Tables IV List of Tables Table T1-1: Table T3-1: Table T3-2: Table T3-3: Table T3-4: Table T3-5: Table T5-1: Number of requests per database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Java 2 Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 J2EE Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Session Beans and Entity Beans compared . . . . . . . . . . . . . . . . . . . . . . . . . . 47 J2EE Application Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ACT Assumptions & Related Principles for Computer-Implemented Tutor. 77 CAMIS Project Plan - Timeline Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 X CAMIS - HCI in Medical Informatics Chapter 1 - Introduction 1 Introduction This Chapter describes the motivation and the need for a computer assisted retrieval system which offers a user interface the user can handle and understand intuitively. The biggest problem that had been identified at the University Hospital was the fact that a very big amount of valuable data is currently not available to the doctors right away. Due to this, it took a very long time and caused a lot of administrative overhead to get the right information to the right person within an acceptable time. 1.1 Motivation and Starting Point The information systems at the departments of radiology and pathology at the University Hospital in Graz, with approximately 2.300 beds, support activities in patient care and serve as a basis for scientific research, not only for radiology and pathology but also for all other clinical departments, which refer to these systems in connection with their own patient data. Since the data are partly in standardized form (codes for examination types, organizational entities) and partly in natural language, scientific retrievals require complex strategies to yield optimal results. As will be shown below, the scope of the retrieval request is defined in an interactive discussion between a clinical researcher and an IS-expert. The main goal was to replace this procedure as far as possible by the proposed system, which should be referred to as CAMIS (Computer Assisted Medical Information Survey). The system is primarily designed to be used by medical doctors or assistants. To improve the quality of data preparation it is necessary to provide precisely formulated questions. Since the typical user does not have detailed technical knowledge intelligent guidance is required during the dialogue. The user starts the dialogue with the system by stating his question as precisely as possible. During the dialogue the user is encouraged to acquire an increasingly appropriate formulation for further questions. Succeeding dialogues must always be based on information already ascertained, thus avoiding ‘silly questions’. Following the indicated evaluation of criteria and features, only useful selections of data-reports should be offered. The main emphasis of this project is ‘the dialogue’. The dialogue will help the user understand and benefit from the functional possibilities of the information system. Furthermore it will help him to accept limitations and guide him to provide structured information. The high level of the system’s operating comfort should persuade the user not to impose complicated and time consuming telephone discussions or use written inquiries to collect the required information. This system provides a remarkable potential of savings in administrative expenditures by means of good integration into existing administration facilities and furthermore it will add to the quality of data evaluation. The system itself has to adapt to the user’s formulation of a question not only per session but also in the long term, thus adapting to the importance and priority of knowledge objects in general. 1 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction 1.2 General Background and Main Goal The Information-System used for research and patient care was originally developed by the Institute of Medical Informatics, Statistics and Documentation (IMI) at Graz University for use in Radiology, Pathology, Neurosurgery and Pediatrics, and has been continually refined ever since the early seventies. The IS Data Base contains approximately three million medical documents, which have been gathered since 1971. Patient information, technical parameters and performance data are saved in a thoroughly structured form; anamneses, examination descriptions and diagnoses are available in free text. Besides hundreds of simple routine retrievals for patient care, there are an average of about one or two highly complex retrieval requests per day for scientific purposes, which require IS-expert knowledge. Quite often the huge possibilities and potentialities of filtering, structuring and representing are not familiar or even known to the medical researcher. High competence by the IS-expert in medical and technological fields is needed to assess the real scope of the information required by the clinical researcher for his work. The formulation of the retrieval needs are elaborated in a personal discussion between the clinician and the IS-expert, which is a time consuming process, that requires patience, perseverance and involves a lot of time on both sides. Due to personnel shortage and the increasing demands based on increasing standards in quality management, output documentation, health reports, etc. an automation of this process was considered necessary to enable a continued service in the future. Table 1-1 illustrates the number of requests which were done during one year. The requests themselves might not look very impressive in terms of frequency, but each of the requests processed by a human IS expert puts a lot of workload upon the concerned person. With the growing amount of data expected within the next year(s), there is the danger of overburdening the IS expert. So the demand for an electronic solution was clear. Database Requests Requests per Day Requests per Working Day # of Records in Database (End 1999) # of Records in Database (rounded) PATHO Graz 88 0,2 0,3 1108130 1108000 ZRI Graz (incl. external DB) 250 0,7 1,0 1976889 1977000 MR Graz 57 0,2 0,2 84942 85000 Total 395 1,1 1,5 3169961 3170000 Table T1-1: Number of requests per database (01.05.1999 - 30.04.2000) 2 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction 1.2.1 Client and Human IS-Expert Conversation The following excerpt of a conversation between an IS-expert and a client shows that several areas of knowledge are necessary to lead an intelligent dialogue: Client: "I would like to have all reports of the angiography with interventional cases from 1998 up to the present." IS-Expert: "You mean all types of examinations concerning the angiography" Client: "Yes, because the examinations are all entered with different coding abbreviations." IS-Expert: "That is clear to me. How can I identify interventions? What does the examination report say?" Client: "... well, the criteria of the contexts are ... (speaks slowly and pause for a moment) ... A.carotis, A.vertebralis, A.basilaris, embolisation, neuroembolisation, stent, balloon dilatation, PTA, ..." IS-Expert: "... hmm, that appears to be a lot to me ... if I ... for instance only look for A.carotis or A.vertebralis ... then I will find a vast amount of data-sets ... should these criteria really all combined by ‘OR’?" Client: "... no, no ... I only mean neuroembolisation OR embolisation etc. with A.carotis OR A.vertebralis, ..." IS-Expert: "... ah, I see, ... well that is O.K., ... I am looking for interventions in the examination reports such as embolisation, neuroembolisation, stent, balloon dilatation and PTA and within the diagnosis for A.carotis OR A. vertebralis, OR A. basilaris" Client: "yes exactly ..." IS-Expert: "... would you like to read all the documents of the interventions ... or are you primarily interested in the patience convalescence ..." Client: "No, we are looking for eventual complications which might have occurred later ..." IS-Expert: "Ah, yes ..." It would be extremely difficult and exhaustive to feed the whole specialized medical knowledge into the system. For instance, a balloon dilatation is already an intervention, on the other hand A. basilaris is an organ, where the intervention actually has been made. 3 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction Also the knowledge about the structure of the IS (types of examinations are divided into coding abbreviations, these depict the radiological technology, but not an interventional operation) and meta-knowledge would be extremely difficult to feed into the system. With the strategy mentioned above, one can find the initial intervention, but to find more about complications it requires other strategies. This problems are solved by using a combinatorial approach. Every fact, which can be used as a filter, a classification item or as a representation feature during the request, is represented by an object. Over and above a good meta-data strategy as the semantical basis is laid down in the form of actions. Additionally there are methods, which enable the dialogue with the user (e.g. a question about an examination type within a meaningful subset). The reactions to alterations of the factual knowledge basis of a particular session and the influence to the persistent user depended state of learning are also important methods which shall be implemented in these objects. 4 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction 1.3 Preliminary Investigations As already mentioned in Chapter 1.2, the database system currently used by the University Hospital was established in the early seventies and has been improved ever since, but is likely to be replaced by another solution in the near future. This meant that it was not possible to stick to a given database platform and/or API (Application Programming Interface), because the decision for a new database system (that will hold all the data collected during the years) was not clear by the time the CAMIS project was started. The only thing that could have been considered for granted is that any new enterprise database system would understand SQL and would offer any API for the "outside world". This API is very likely to offer an ODBC (Open Database Connectivity) or a JDBC (Java Database Connectivity) Interface. It's very important in any new project to be aware of any possible future systems and to try to be prepared for them. Secondly, it was pretty obvious that CAMIS should be designed as an intranet-based retrieval system that would be platform-independent and internet-capable (in case it should ever apply that doctors could have access to the system from their home). Therefore, it was clear that the front-end application had to be a standard webbrowser. Considering what was said about the database system that might apply for the Hospital Data, this immediately implies the need for a webserver with an interface to the CAMIS Engine and database connectivity via ODBC. 1.3.1 Distributed and Portable Application with Database Connectivity Sticking to what the University Hospital offered in terms of infrastructure, it was almost sure that the Microsoft Internet Information Server (MSIIS) would be used as webserver application, running on Windows NT 4.0. Considering the possibility that this platform might be changed within KAGES in the future, it hat to be investigated what developer suite currently on the market would produce applications that would also be able to run on (almost) any new platform. In addition to that, it was important to create a scalable and reliable business application that could also be expanded in a modular way that allows adding function modules whenever needed. That meant that the ultimate "Write Once, Run Anywhere" platform independent application had to be developed. This platform independence not only concerned the client side, but also the server side and it had to be ensured that the application would run on all major web servers and would be able to connect to all major relational databases. Therefore, the choice for Java [link: Java, Technology] as a programming language was pretty obvious, because this was the programming language that best met all the requirements for the CAMIS project, with Java Servlets and JDBC on the server side and HTML with Java Script on the client side. Servlets and JDBC by far ensure platform-independence providing the ability to run on any web server and offer flexible database connectivity. 5 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction In addition to that, Java also provides a JDBC/ODBC Bridge that allows access to almost any ODBC database. This was very important, because it had to be assumed that any University Hospital DB of the future would offer an SQL Server interface with ODBC. This kind of database connection allows JAVA to directly access any ODBC datasources which are available to the system (more info about JDBC and the JDBC/ODBC Bridge is found in Chapter 3.1.6). However, it had to be kept in mind that the main goal of CAMIS was not to implement a full access to the University Hospital DB, but to formulate meaningful and relevant questions that can be used to create a SQL query. On the other hand, it would also be nice to be prepared for any extension or alteration the project could undergo in future. Therefore, the possibility for an interface to a big database should also be covered by the question: Which tools should be used to guarantee a good, modern, open and reliable implementation? 1.3.2 Software Design using UML It was a great honor to me and the IMI that Prof. Dr. Gerti Kappel, teaching at the Institute for Information Systems (IFS) of the University of Linz, was willing to give an almost private lecture about "Improved Team-Communication in Software Project Design using UML". [link: Kappel (1999)] The Unified Modelling Language (UML) is a very modern Language to be used for software design and specification in object-oriented environments and consists of a set of mostly graphical description techniques. It was also designed for documentation of object-oriented systems. Grady Booch, Ivar Jacobson and James Rumbaugh have proposed UML as a standard notation for the modelling of real-world objects as a first step in developing an object-oriented program. Its notation is derived from and unifies the notations of three object-oriented design and analysis methodologies: • Grady Booch's methodology for describing a set of objects and their relationships [link: Booch] • James Rumbaugh's Object-Modelling Technique (OMT) • Ivar Jacobson's approach which includes a use case methodology Besides some common structuring mechanisms like a package mechanism for the organization of the development documents and a notation for annotations of all kinds of model elements, UML provides description techniques for various aspects of a system, like classes, objects, diagrams, meta-modelling, relations, sequences, collaboration, interaction, association, responsibility, activity, interface, use case, sequence, state, transition, drafts, frameworks, analysis and design. In Java, packages contain a group of classes logically related to each other. Operations, attributes, and whole classes can be hidden from other classes or other packages. Packages can import other packages that contain any needed functionality. These concepts can also be modeled with the UML package concept. 6 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction Due to the fact that UML consists of mostly graphical design elements, an overview of the most important diagrams defined in UML is given: Static Structure Diagrams Static Structure Diagrams model the data aspect of an object-oriented system and can also inform about the functionality of the data items. These diagrams exist in two different variants: Class Diagrams show the classes of the program code, their attributes and methods and the relationships and dependencies between them. Object Diagrams show graphs of object instances that may arise during the runtime of a system. Class diagrams are very common in object-oriented development methods [Booch (1994)] and are used for data modelling in early development phases. They also can be translated into class skeletons in a later development phase. Use case Diagrams Use case Diagrams model the users and their interaction with the system at a very high level of abstraction. They cannot contain very much information about the functionality of a system, but serve as a structuring tool for more specific descriptions of a system’s functionality as done in sequence diagrams (see below). On the other hand, customers can easily understand use case diagrams and they are very useful for early requirement analysis, because they enforce the identification of the different users and the usage of a system. Sequence Diagrams Sequence diagrams are also known as message sequence charts [Loidl (1997)] and show example communication applications between users or objects. UML provides constructs for the creation and deletion of objects as well as for synchronous and asynchronous communication. A sequence diagram exemplary shows interactions between objects, emphasizes the time dimension and contains the association links between the objects implicitly. Furthermore, sequence diagrams together with class diagrams are the predominant description technique in design meetings [link: UML, Modeling], because they can give a precise semantic. Collaboration Diagrams Collaboration diagrams are a special form of object diagrams enriched with information about the message flow between the objects and about object creation and deletion. Although the graphical syntax of collaboration diagrams is different from sequence diagrams, they almost represent the same information. The main difference is that sequence diagrams focus on the temporal order of events, whereas collaboration diagrams concentrate on the relations and connections between objects. An automatic translation between sequence diagrams and collaboration diagrams is possible with one exception: Connections not used for communication can only be represented in collaboration diagrams. Class State Diagrams Class State Diagrams are used to model the data state and its changes during the lifecycle of the objects of a certain class. The data state of an object consists of the actual attribute val- 7 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction ues of the object, its references to other objects and possibly also the data state of referenced objects. A special notation is provided for state transitions that trigger the sending of messages to other objects. Activity Diagrams Activity Diagrams are special kinds of state transition diagrams used to specify control state. They may be used on different levels of abstraction for business process modelling of user interactions as well as for modelling the control flow of single operations. Activity diagrams can either serve as an explicit, operational specification for a specialized workflow engine controlling the functionality of the system, or serve as a specification for the interaction of components. The last mentioned is common with user interfaces where the control flow will not likely be implemented by a centralized workflow component, but will be integrated in the callbacks and operations of the GUI classes [link: UML, Modeling]. Implementation Diagrams Implementation Diagrams, like static structure diagrams, also exist in two variants. Component diagrams show the structure of the source code and its partitioning into components. Deployment diagrams show the runtime implementation structure and the distribution of objects and components on physical computing devices. These two views are isomorphic only in the special case where each object instance has its own source code. The UML Advantage UML has been fostered and now is an accepted standard of the Object Management Group (OMG) [link: OMG], which is also the home of CORBA (Common Object Request Broker Architecture), the leading industry standard for distributed object programming. Vendors of CASE (Computer-Aided Software Engineering) products are now supporting UML and it has been endorsed by almost every maker of software development products, including IBM and Microsoft (for its Visual Basic environment). Martin Fowler, in his book UML Distilled [Fowler (1997)], observes that, although UML is a notation system so everyone can communicate about a model, it's developed from methodologies that also describe the processes in developing and using the model. While there is no single accepted process, the contributors to UML all describe somewhat similar approaches and these are usually described along with tutorials about UML itself. The standard specification of UML1.3 can be found at the Rational Software website, which was originally distributed by the OMG [link: UML, specification]. More information about UML can be found in Appendix A, "Part IV: General References", where a comprehensive list of suggested books and links concerning UML can be found. 8 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction 1.3.3 UML and Java enabled Software Tools Thinking about UML and reading Prof. Kappel’s book [Kappel (1999)] quickly leads the reader to "Rational Rose 98" by Rational Software Corporation, one of the best known and mostly used UML-Tools worldwide. This fact is easy to understand, because on one hand the "fathers" of UML, Grady Booch, Ivar Jacobson and James Rumbaugh are all working at Rational Software Corp., and on the other hand Rational Rose sticks to the UML standard concepts as much as possible. In addition to that, "Rational Rose" is said to be a user-friendly software, because it supports well-known techniques like OLE and drag-and-drop. The software even sticks to the GUI-Styleguides, so it had to be assumed that working with this tool shouldn’t be a too timeconsuming process. By the time the CAMIS-project was started, the software of choice was "Rational Rose" 2000 Enterprise edition, which also supports code generation tools for C++, CORBA/IDL, Visual Basic and JAVA via special "Add-Ins". Even connections to Oracle 8 databases are possible using the "export"-functionality. However, when taking the first steps with "Rational Rose", it turned out to be a highly sophisticated product that requires a lot of preliminarily work and knowledge to get productive instantly. Due to this it was pretty clear that also other products in that range had to be examined. It turned out that "Together 3" from TogetherSoft Corporation is a good choice for an esolution platform development software that supports UML as design and specification language [link: TogetherSoft]. There is a big amount of evolutionary dynamics in the Java and Java Enterprise Services community, especially concerning Sun’s J2EE technology. This lead to the release of Together 4 [link: Togethersoft] in June 2000 which now also implied support to the JAVA Beans technology, which made the choice for this product pretty clear. Together 4 Together Enterprise 4 is a multi-platform for solution-building teams featuring simultaneous round-trip engineering, team support, and multi-level documentation generation. Together Enterprise design was driven by Peter Coad (pronounced "code") one of the world's most experienced object and component modelers in the industry [link: TogetherSoft, Peter Coad]. It was built to provide a comprehensive, enterprise-wide "backbone" for developing Java-based solutions in Internet time. Peter Coad is the leading author of a best-selling Java design book, Java Design [Coad (1998)] and is also the leading author of the first book to systematically apply color for building better models, Java Modeling in Color with UML [Coad (1999)]. Peter Coad is one of the world's most experienced model builders (hundreds of models in nearly every industry imaginable). His current consulting practice focuses on Java-inspired modeling for building better enterprise-wide applications. 9 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction Peter Coad is also the developer of "The Coad Method" - a teaching system focusing on how to build better object models expressed in UML notation. The Coad Method includes hundreds of strategies and patterns, communicated by example, with amplified learning techniques to drive home the most important lessons. He believes that the best way to communicate the best insights is by example. The top features of Together Enterprise 4 are as follows: • • • • • • • • • • Simultaneous round-trip engineering for Java and C++ Major UML diagrams EJB support Fast robust documentation generation Forward and reverse engineering for sequence diagrams Extensive configurability of reverse engineering and code generation Server-side support of team-wide configuration settings Rational Rose import/export Open API for extensibility Proven performance on multiple OS platforms Figure F1-1: Together 4 Development Interface 10 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction Borland JBuilder 3.5 In addition to that, the first steps in J2EE development using Servlets and EJBs were taken using Borland`s JBuiler 3 software [link: Borland] which rather quickly led to first results in getting familiar with the J2EE idea and technology. JBuilder 3.5 is the most comprehensive set of award-winning visual development tools for building Pure Java applications, applets, JSP/Servlets, JavaBeans, EJB and distributed CORBA applications for the Java 2 Platform. With JBuilder 3.5, it is possible to rapidly deliver a full spectrum of platform independent solutions, from applets to full applications. JBuilder provides developers with an open, scalable, and standards-based development environment for rapidly delivering the full spectrum of platform-independent solutions, ranging from applets and applications that require networked database connectivity to client/server and enterprisewide, distributed multi-tier computing solutions [link: Borland, JBuilder 3.5]. Figure F1-2: JDBC Explorer in JBuilder 3.5 11 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction Figure F1-3: Borland JBuilder 3.5 Development Interface JBuilder 3.5 features the "AppBrowser" integrated development environment, graphical debugging, visual designers, automated wizards, industry-standard database connectivity, and Enterprise Java development, supporting a wide range of Java 2 technologies, including the ones listed below. • • • • • • • • Pure Java 2 Development Java Server Pages (JSP) and Servlets JavaBeans Enterprise JavaBeans (EJB) Common Object Request Broker Architecture (CORBA) Remote Method Invocation (RMI) Java Database Connectivity (JDBC) Java Debugging Interface (JDI) In addition to the wealth of features included with JBuilder 3.5, its flexible, open architecture allows developers to easily incorporate new JDKs, third-party tools, add-ins, and JavaBean components directly into the JBuilder environment. As the programmer writes code, JBuilder automatically provides access to all relevant properties, events, and methods. Borland calls this feature "CodeInsight" and it is very impressive and incredibly useful (see Figure F1-4). JBuilder also makes it easy to build and deploy pure Java applications on the client, middle tier, and server. Using the Servlet Wizard, developers can rapidly create dynamic, server-side Java applications that integrate into a new or existing Web site. Connecting to major corporate 12 CAMIS - HCI in Medical Informatics Chapter 1 - Introduction databases including Oracle, Sybase, Informix, DB2, and InterBase, using industry-standard JDBC connectivity is provided through the JDBC explorer (illustrated in Figure F1-2). JBuilder 3.5 and Together 4 compared When comparing Borland’s JBuilder 3.5 and Togethersoft’s Together 4, one quickly finds out that these two products will fit together nicely. Together 4 is a very handy tool for modelling applications, but does not seem to be the first choice for the "core" programmer who also wants to type in code and develop methods within an editor as usual. JBuilder, however, will not provide these powerful tools for modeling (especially in UML), but provides a very powerful programming interface any programmer will get familiar with quite quickly. In addition, JBuilder is nicely prepared to work with J2EE technology and also implements deployment mechanisms which should make the administrator’s life even more comfortable. Therefore, a combination of both products within a development team might be a good approach. Figure F1-4: Borland JBuilder CodeInsight pop-up Window 13 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements 2 CAMIS Requirements This Chapter briefly describes all parts of the CAMIS project to give an overview of all components that were needed to implement the systems. A more detailed technical description will be stated in chapters 3 and 4. At the end of this Chapter, you will also find some UML use-case diagrams that give a good idea of what the system can do for the user. 2.1 Interface and Interaction The most important thing to be kept in mind during CAMIS design was that it had to be assumed that the user would hardly have any knowledge about computers and/or databases. Therefore, focus had to be kept on an easy to use and easy to understand interface design, avoiding confusing control elements, "silly" questions and deadlock situations. In an object-oriented environment, the question at the beginning of the design phase should be "WHAT problems are we going to solve?" - instead of "HOW are we going to do this?" (like you would ask in a procedural environment). Analogously, when thinking about interface design and keeping focus on the user’s benefit, it is essential to take up with a "usercentered" design instead of a "system-centered design". Therefore, the questions that had to be asked at the beginning of the interface design-phase were the following: • • • • what are the user’s abilities? what are the user’s needs? in which context will the user need the system’s help? what tasks will the user want the system to do? The CAMIS development process has to be focused on the target group of medical doctors (MDs). Therefore, it has to be assumed that the users will not have very much knowledge in the computer domain, nor do they know how to use a databases system. However - nowadays, one may assume that most of the people ever having touched a computer’s mouse and keyboard will most likely know how to use an internet browser. Therefore, this is the exact approach to take: Provide an interface using a standard browser with no additional plug-ins or extensions needed (to avoid the need for any proprietary assistance). This will also insure compatibility to right-off-the-shelf computers. What a user expects from a browser-based system like CAMIS is always the same, regardless whether talking about a simple internet search engine or a medical information system: Ease of use, speed and a nice and easy to understand interface with good navigational possibilities. The need for speed is one thing a development team will have to focus on from the very beginning, therefore choosing the right software and the right hardware platforms (this also implies the need for taking a look on what internet connection will be available – on the server side as well as on the client’s side). 14 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements The context in which the user will need the system should be restricted to the application of consulting the system for information, which is the main task and target of the whole project. The only thing the user wants the system to do is to deliver relevant information in a way a human IS-expert did before. The interface itself should be designed in an self-explanatory way so the user will never need to look for any "help" button. (refer to chapter 4.3 for more information about the CAMIS interface). These basic questions and the answers that were given led to seven very important principles of interface design [Link: Andrews - HCI]: a) b) c) d) e) f) g) use the knowledge in the world and the knowledge in the head of the user simplify the structure of tasks make things visible and do not hide anything from the user get the mappings right exploit the power of constraints design for error when all else fails, standardize Therefore, also in interface design one should apply the rules of "usability engineering" as proposed by Jacob Nielsen [Nielsen (1993)], thus using an iterative approach to improve the usability of a system. This is, of course, mainly a matter of time and money. Figure F2-1: Homepage of the Karl-Franzens-University Graz 15 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements The main topics to focus on when applying the methods of usability engineering are: • • • • • Learnability - how easy can novice users learn to use the system efficiently? Efficiency - how efficient can expert users exploit the system? Memorability - how hard is it to remember the system’s rules for casual users? Errors - how many minor errors and how many catastrophic errors do users generate? Subjective satisfaction - how pleasant do users feel the system is and how satisfied do users feel at the end of their session? However, there were a few constraints to be taken into account, like the corporate identity (CI) of the Karl-Franzens-University Graz (KFU) that reflected a rough idea of what the user interface had to look like. Therefore, it was not possible to use techniques like brainstorming, parallel design or icon testing during the interface CI design process. So the main direction of what the interface should look like was already traced, because it has to be ensured that the CAMIS web interface would clearly be assigned to the KFU Corporate Identity [link: KFU]. Figure F2-1 shows the KFU Homepage that actually had to be taken as a starting point for the CAMIS interface design. A good point to start when designing an information website is to reckon with the tips from David Siegel [Link: Siegel] concerning the use of colors, image file formats, compression, tables, style sheets and tools. 16 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements 2.2 System Requirements 2.2.1 Current Situation Currently, a medical doctor does not have the possibility to use any kind of computer-aided information service to look for digitally stored data about patients, their anamneses, surgeries, diagnosis or treatments at all. In case the doctor needs some information from the hospital database, he has to call a person (referred to as "Information-System-Expert" or "IS-Expert") and tells this IS-Expert what information he/she is looking for. When doing so, he/she has to be as specific as possible to avoid misunderstandings and to avoid being flooded with a huge amount of irrelevant data (see also Chapter 1.2). According to this, there is the need for an information service that will make human assistance obsolete when looking for any stored data in the hospital database, which of course means that something had to be designed and developed from scratch, because there is nothing like CAMIS available on the market. 2.2.2 Target Situation The information service should be opened to and used by almost any medical doctor (referred to as "the user" or "MD") working in the hospital, but without the need of any additional hardware or software to be put at the user’s disposal. This implies that the system has to be accessible via a standard web browser (Netscape or MSIE) and due to security reasons, CAMIS should only be accessible on the hospital-intranet. In addition to that, there is also the need for an individual use-authentication scheme to avoid misuse of the service within the Intranet by unauthorized personnel. At the time the project was started it was not pretty clear what type of database system will be used by KAGES to store the patient’s data, the only thing for sure was that a SQL-database system will be used. So it was not the intention of the CAMIS project to deliver an application that would retrieve data directly from the various KAGES databases, but to deliver a relevant SQL query string as output. This SQL query string then can be post-processed (by any other application to be developed in another project) and may be used as input for the KAGES databases of any kind. 2.2.3 Application Requirements Concerning the implementation of this system, there were several preconditions to be taken into consideration. Firstly, the system is supposed to work in cooperation with the Meta-Data strategy of existing department information systems that currently work on proprietary databases. As mentioned before, by the time of this writing the information systems were about to be replaced with 17 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements a countrywide information system within approximately one year. That meant that the solution needed to provide a business logic that can be easily extended or replaced. Secondly, it had to be kept in mind that the system should be implemented in a way that the result of the development process would provide an as open an architecture as possible, concerning interfaces and interoperability with other systems and platforms. Thirdly, the system should also provide a possibility of easy expansion, e.g. to add additional functionality in the future at very low expense, therefore looking for a maximum modularity. Fourthly, in the event of migration to other hardware and/or software platforms in the future, it should be easily possible to port the system without endangering the stability and/or functionality. Only minor changes or adaptations should be necessary by that time. So it was pretty clear that portability and scalability are important for long term viability, especially when considering that CAMIS is expected to become an enterprise application, once. So it must scale from a small working prototype and test case to a complete 24hour-working, enterprise-wide service, accessible by tens, or even hundreds of clients simultaneously. In today's heterogeneous environment, enterprise applications have to integrate services from a variety of vendors with a diverse set of application models and other standards, which has to be kept in mind to keep future costs as low as possible. [Holzinger (1999)] Therefore there was a strong demand for a modular system to fulfill the prerequisites stated above. Going even one step further, it was considered that it probably would make sense to design all modules in a way that would make it possible for them to even run on independent computers (preferably in the same network, of course) only communicating via TCP/IP [Postel (1981a, 1981b)]. Indeed, it is obvious that precaution has to be taken in case any TCP/IP connection might not be available at a given time, thus providing the proper handlers that would catch a situation like that without leaving the user out in the dark. 2.2.4 Decision for J2EE Before going any further and describing the aspects of taking a decision for a qualified development platform, a short definition of the term enterprise computing should be given. Enterprise is a hot buzzword these days, everyone in the IT (Information Technology) industry wants to be doing enterprise something, since enterprise is "where the money is". Enterprise Computing Enterprise computing has a reputation for complexity and is often surrounded by a shroud of mystery and is therefore very often intimidating. However, it should be remembered that enterprise computing is just a synonym for distributed computing, which very much demystifies this term. In distributed computing, computation is done by groups of programs interacting over a network, probably sharing resources. On the other hand, it should not be forgotten that distributed applications normally bring a lot of elements of uncertainty, because distributed computing takes place in a heterogeneous network. Computers may range from large mainframes and supercomputers down to outdated 18 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements personal computers. These systems might run on two or three different operation systems and only have one thing in common: they speak the same fundamental network protocol, which usually is TCP/IP. In addition to that, a variety of server applications might already run on top of the heterogeneous hardware environment. An enterprise might have database software from various companies, each of which defines different and therefore incompatible interfaces. Enterprise computing involves the use of network protocols and standards. Some protocols might have been extended in various, vendor-specific and nonstandard ways. Small projects may not have the same enterprise-scale distributed computing needs large business applications have, but it very often makes sense to take a closer look on distributed computing. With the exponential growth of the Internet and of network services, just about anyone can find a reason to write a distributed application. Although these potential problems have to be kept in mind, we should not forget that enterprise programmers (like many people in the high-tech world) tend to make their work seem more complicated than it actually is. This is a natural human tendency, to be a part of the "in" group and keep outsiders out, but this tendency seems somehow magnified in the IT industry. Java helps to alleviate these intimidating aspects, since Java is platform-independent and the heterogeneous nature of the network is not an issue. Java 2 Enterprise Edition When looking for a platform and development environment that would fit to the ideas stated above (whilst eliminating the uncertainties and risk-factors), the developer will come across the "Java 2 Platform Enterprise Edition" [Link: J2EE, Sun]which is distributed by Sun Microsystems Inc., for free. J2EE (Java 2 Platform, Enterprise Edition) is a Java platform designed for the mainframescale computing typical of large enterprises. Sun Microsystems (together with industry partners such as IBM) designed J2EE to simplify application development in a thin client multitiered environment (for more information about the terms multi-tier and thin-client refer to Chapter 3.1.1). J2EE simplifies application development and decreases the need for programming and programmer training by creating standardized, reusable modular components and by enabling the middle tier to handle many aspects of programming automatically. The Java Enterprise APIs form a single, standard layer on top of various proprietary or vendor-modified APIs, especially the JDBC (see Chapter 3.1.6 for more info on JDBC) provides a single, standard and consistent way of interacting with almost any relational database server, regardless of the underlying network protocol or database vendor. Many protocols and standards were developed before the days of object-oriented programming. The power and elegance of the Java language allow the Java enterprise APIs to be simpler, easier to use and easier to understand than the non-Java APIs. Therefore, enterprise computing is for everyone and almost every programmer can write distributed applications using the Java Enterprise APIs. 19 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements The J2EE provides all the functionality and tools that fulfill the preconditions of the project listed above and impresses the developer with its "write once - run anywhere" feature. What makes the developer take a closer look at the J2EE environment? Simply what Sun and other developers (like Oz Lubling from Razorfish) say about J2EE and the distributed, platform-independent idea [link: Razorfish]: • Platform-independent on the client side - that means that the application may be used by PC, UNIX, and Macintosh users. • (almost) Platform-independent on the server side, because the environment includes both UNIX and Windows NT servers. • Ability to connect to a variety of databases, including Oracle, Informix, and SQLServer. • Ability to run on different web servers, because the environment includes: Apache, Netscape, Java Web Server, and Microsoft IIS (this quickly rules out proprietary scripting languages such as Netscape's LiveWire or Microsoft's Active Server Pages). • Total latency (network + web server + database) of no more than a few seconds per request. • Easy to implement and low cost. • Highly modular so that more functionality can be added in the future. The Java 2 Platform, Enterprise Edition (J2EE) defines the standard for developing multitier enterprise applications. J2EE simplifies enterprise applications by basing them on standardized, modular components, by providing a complete set of services to those components, and by handling many details of application behavior automatically, without complex programming [Link: J2EE, Overview]. Figure F2-2: Application Model in Multi-Tier Architecure [link: Sun] 20 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements Building on the base of the Java 2 Platform Standard Edition, Java 2 Enterprise Edition adds full support for Enterprise JavaBeans [Link: EJB, Overview] components, Java Servlets API [Link: JSAPI, Overview], JavaServer Pages and XML technology, which should make it pretty easy to expand or modify the system in future. That means that J2EE gives the developer the advantage of minimum possible implementation time and low costs combined with a maximum outcome. Networking, multithreading, security and even database connectivity are available via standard APIs and do not have to be written again from scratch. Since the release of Java in 1996, a big community of Java developers (the Java Developer Connection, which counts more than 1 Mio. members) has evolved, who provide a wide variety of Servlets and Beans (reusable components, see chapters 3.1.4 and 3.1.5 for more information) almost for free which can easily be integrated in any project without having to "reinvent the wheel". When considering an open system that is expected to provide as much interoperability and expandability as possible, the choice for a Multi-Tier architecture approach is obvious. Using a Multi-Tier architecture also ensures that the whole system is built to work in a distributed scalable environment, which was another prerequisite of the project. Figure F2-2 was taken from Sun Microsystems [link: Sun Microsystems] and shows the idea of a multi-tiered architecture design used in J2EE business applications. At this point, we can already isolate the main parts that build the CAMIS, using a multi-tier architecture. A more detailed description of multi-tier architectures can be found in Chapter 3. 21 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements 2.3 Administrative Requirements Considering the fact that CAMIS shall be accessed via a standard webbrowser, it had to be reflected upon good possibilities of administration. Clearly speaking, the application framework design also had to aim on the creation of a good and easy mechanism to administrate all modules of the system via standard tools which already exist. This would eliminate the need for programming something new and provides the possibility of sticking to standard interfaces. In addition to that, this approach would also make sure that CAMIS can be administrated by a person who was not involved in the actual design and implementation process. 2.3.1 Interface Creation and Administration The user interface is based on HTML files that consist of static and "dynamic" parts. The static parts are template-files that hold the header and the body of the page, thus representing the core of the look-and-feel interface by means of design. The dynamic part of a HTML answer is being created by the appropriate CAMIS servlet on-the-fly. This "dynamic" code is simply JAVA Script code that is inserted into the HTML template and will access, affect and/or modify predefined objects within the HTML page. This way it is guaranteed that one specific template can dynamically be "filled" with different content always matching the actual user context. Figure F2-3 illustrates how an answer is assembled from a template and a JAVA Script source code is inserted. This means that the answer CAMIS delivers to the browser is being created by the servlet in these steps: • read the proper HTML template from a directory on the server (according to the current state of the active dialogue) • consult the CAMIS ITS and receive the next question and/or parameters the be delivered to the user • insert JAVA Script code into the HTML template • deliver answer back to the client and wait for next user action The templates themselves can easily be changed or adapted via a standard FTP-Service [Link: RFC959 (1985)] which is additionally offered on the http-Server [Toexcell (1999), Link: RFC2068 (1995)], because they are simple HTML files that reside in a predefined directory on the server. Unlike the templates, the dynamic parts are being created by Java Servlets which interact with Java Beans (the CAMIS ITS). The HTML [Link: RFC1866 (1995)] Data needed to build the answer for the user is retrieved from the Meta Data Dictionary via Java Beans, then passed to the servlet and delivered to the Server. For more information about the CAMIS ITS please refer to chapter 4.2.2. 22 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements This means that only simple text files containing HTML stubs have to be altered whenever a change to the dynamic interface’s look-and-feel has to be done. As long as the predefined objects which are accessed by the JAVA Script code are not removed and/or altered (e.g. renamed), no modification of the CAMIS business logic is necessary (see Chapter 4.3 for more information about the dynamic interface). 2.3.2 Database Administration In association with this diploma thesis, it was important to carry out a feasibility study for the project and to identify implementation and design patterns for a concrete implementation process. In chapter 4, a more detailed description about an implementation approach for the CAMIS project is given. So it was also a topic to choose a DBMS that will hold the CAMIS tables needed for persistent storage within the system. Apart from keeping an eye on database performance, one also has to focus on administration tasks. At the time of this writing, it is not really clear which DBMS is going to be used for CAMIS, because the KAGES is currently moving from an old platform to a new one (as described in chapter 1). Therefore, Microsoft Access was chosen for the CAMIS prototype. The reasons for this decision were mainly availability and fairly easy administration. However, something like Oracle 8i should be preferred in a real world application, but this was not available right away. HEADER Server Directory JavaScript code BODY ITS Input Figure F2-3: Creation of HTML answer file by a Servlet 23 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements It is not considered to be a problem to replace the CAMIS DBMS with any other DBMS whenever there is a need for this step, because the CAMIS DB design pattern sticks to standards that can be expected to be supported by any valid DBMS. According to this, a new DBMS candidate for CAMIS will have to fulfill the following requirements: • a relational DBMS • supporting SQL • provides a native JDBC Interface (or at least an ODBC Interface) 24 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements 2.4 Example Application Choosing UML as the language to design the project logically results in UML diagrams to illustrate the idea of the application and to show how the software is used. There are two actors accessing the system: The medical doctor (to be referred as "user" or "MD") and the system administrator (to be referred as "admin"). The roles of these actors are shown in figures F2-4 and F2-5. Terminology: Dialogue vs. Session It is important to notice that there is a big difference between the terms session and dialogue within CAMIS. A session is defined as a certain amount of time. Within this timespan, a user has uninterrupted, continuous access to a system. The session starts when the user requests access to the (probably remote) system. At this very moment, a SessionID is created by the system, which is used to keep track of the user during the whole session (for more information about session tracking, refer to chapter 3.1.4). A session may be terminated via two different ways: Either, the user ends the session by explicitly logging off the server (thus telling the server to end the session), or the server itself ends the session due to a timeout. A timeout occurs whenever a certain predefined amount of time passes without any communication between client and server. In this case, the server assumes that the user is not online anymore or has forgotten about the session. In terms of security, its a good idea to let the server terminate the session. Whenever a session has been ended (due to any reason), the user will have to log into the server again, thus creating a new session. In contrast to a session, a dialogue is never being created nor being terminated by the server itself. A dialogue is always explicitly created by a user, either by "opening" a new dialogue, or by cloning a previously created dialogue. A dialogue can only be closed by a user, whenever he/she decides a dialogue to be finished. In case a user is logged off from a server (due to a timeout terminating the user’s session), it is always possible to log in again (creating a new session) and resuming the previously created dialogue. More information about dialogues is be given in the below paragraphs. Applications A standard web browser is used to access the system and this will lead the user to the CAMIS login-page where an authentication is necessary to continue. After having logged into the system, a new session is created and a startpage is presented to the user. which gives three different choices: a) create a new dialogue The user wants to state a complete new question to the system and is therefore looking for information he was never asking for before. A new dialogue-ID is created and an initial question (evaluated by the ITS) is presented to the user. b) resume an open dialogue The user does not have to finish a dialogue within the very same session by necessity. Whenever a user has to leave the system (due to whatever reason) the current dialogue re25 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements mains open. That means that any open dialogue may be resumed later on. In this case, CAMIS will query the dialogue-table (see Chapter 3.2.5 for more info on CAMIS databases) to see what was the last question presented to the user in the earlier session and will evaluate the next question to be presented to the user within this specific dialogue. A dialogue may either be closed by the ITS (in case there are no more questions to be answered) or by the user himself (as soon as he decides to do so). c) clone an old dialogue Every dialogue that has ever taken place between the user and CAMIS is stored in a database. That means that the user may reuse an old dialogue to retrieve the very same information he was already looking for in the past. It is considered that this is a very important feature of CAMIS. In addition to that, old dialogues may also be modified to specify a question only similar to the one stated earlier (to be able to look for similar information to the one retrieved in the old dialogue). It is very important to notice that once a dialogue is closed, it will remain unmodified within the dialogue-database. Even when cloning an old dialogue, a new dialogueID must be created and stored separately from the one it was created from. Whenever a user logs out from CAMIS, any open dialogues remain open (the difference between the terms "session" and "dialogue" has been described above). Due to security reasons, CAMIS will also automatically have to log out the user whenever a timeout occurs, that is whenever a users stays idle for a preset amount of time. A good visualization of the functionality and workflow CAMIS can supply to the user is shown in figure F2-5, which is an UML Activity-Diagram created with Together 4. Here, it is illustrated what steps have to be taken to manage all use cases and how the system interacts with the user-relevant databases. It has to be noticed that the activities "find first question" and "ITS eval next question" invoke the Intelligent Tutoring System, which is described in chapter 4.2.2. For more detailed information about sessions, dialogues, databases and evaluation of questions please refer to chapter 4, which deals with a proposal for CAMIS implementation. 2.4.1 CAMIS Use Case Diagram The use case diagram in figure F2-4 consists of various elements that should be explained in further detail below. Every explanation about relationships or other diagram elements refer to this very diagram. For further information about use case diagrams or any other types of UML diagrams, please refer to [Kappel (1999)]. Classifiers The system (to be implemented) is visualized via its system boundary that is illustrated by the gray area. The user, located outside the system, is illustrated via a stick man figure that is given a name (medical doctor in this case), because it may also be possible that different type of users access the system at the same time. The elliptic white shapes visualize use cases and are given names regarding to their functionality. Wherever the designer likes to stick a note to 26 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements the diagram, he can do this by placing a rectangular shape with a dog-ear. The lines connecting the actor with various use cases symbolize the communication paths between the system and the actors. Include relationship The include relationship defines an association between classifiers, in this case a relationship between two use cases. An include relationship directed from use case A to use case B means that the behavior of B is included in the behavior of A. In this case here, the use case "open session" will include the use case "new session". This means that whenever a user opens a session, a new session will be created automatically, because a session can never be resumed (as already explained above in this chapter). Figure F2-4: UML Use Case Diagram from User’s View 27 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements Extend Relationship The extend relationship also defines an association between classifiers, but in this case a relationship directed from use case A to use case B means that the behavior of use case B might be included in use case A. So the extended relationship defines an optional relationship between two classifiers. In our case here, the use case "open session" might be followed by a "logout" (whenever the user chooses to do so), but this does not necessarily have to be the case (the logout might also occur due to a timeout). Generalization The third relationship defined for use case diagrams is generalization. A generalization relationship between a use case A and a use case B can be compared to inheritance between classes. That means use case B inherits its complete behavior from use case A, but use case B may also modify or extend this behavior. In our case, the use cases "new dialogue", "reuse old dialogue" and "resume open dialogue" are inherited from "open session" and extend the behavior of this use case in the proper manner. It is worth mentioning that also the communication relationship is inherited via the generalization. That means that the user implicitly not only communicates with used case A, but also with use case B, which was inherited from use case A. The Diagram This UML use case diagram was designed to illustrate what CAMIS can do for a user and what structures will be needed in the system and to be able to draw more specific diagrams like sequence-diagrams and activity-diagrams. 28 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements 2.4.2 CAMIS Activity Diagram Object-oriented modeling focuses on objects and their interaction with other objects, whereas the description of processes within a system is not that important in this approach. Despite of this it seems to make sense to have a method available that will also illustrate and document processes to get a good overview of what the system is expected to do and to see why various modules need to be implemented. The necessity of models like activity diagrams is also pointed out in OMT (Object modeling Technique) [Rumbaugh (1991)], where dataflow-diagrams where used to fulfill this task. Activity diagrams allow the description of a process by specifying the following: • single steps of each process, including its methods and objects • arrangement of the individual steps • responsibilities for and results of processes The activity-diagram in figure F2-5 consists of various elements which should be explained in further detail below. Every explanation about relationships or other diagram elements refer to this very diagram. For further information about activity diagrams or any other types of UML diagrams, please refer to [Kappel (1999)]. The diagram has a starting point and an ending point that illustrates the termination of a process. The ovals illustrate one single step within the whole process and identifies it with a name. Every step leads sequentially to a next step, but may also deliver a result that may go through a decision branch (visualized via a diamond symbol) first. One step is connected to the next step (or to a decision branch) via a link called transition. Moreover, a step may also be related to an object (illustrated via a rectangle) that may either be responsible for the step or be a result of a step. In this case, at the end of the diagram there is a join symbol which allows to synchronize tasks that run in parallel or which also is used to split a transition into separate tasks. In the latter case, the join symbol is called a fork symbol. 29 CAMIS - HCI in Medical Informatics Chapter 2 - CAMIS Requirements Figure F2-5: UML Activity Diagram from User’s View 30 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3 CAMIS Specification This chapter specifies what was needed for the CAMIS project, its development environment, the application framework, its modules and the database system used. Before describing the software modules that were implemented, there is also a description of the Java 2 Enterprise Edition technology given in more detail to point out the advantages of this technology. 3.1 Introduction to the J2EE Technology In addition to the experience that enterprises need today to extend their reach, reduce their cost and lower their response time, we also had another constraint, not exactly knowing how the hardware and software environment would change in the hospital area within the next year. Typically, applications that have to provide high flexibility must combine existing information systems with new business functions that deliver services to a broad range of users. Furthermore, these services need to be highly available, scalable, secure and reliable. With the Java 2 Enterprise Edition, Sun Microsystems Inc. [Link: Sun, Inc.] provides a great platform that reduces the cost and complexity of developing multi-tier services resulting in services that can rapidly be deployed and easily enhanced as there is any need of modification or growth. 3.1.1 The Multi-Tier Approach During the early 90’s, traditional enterprise information system providers began responding to customer needs by shifting from the two-tier, client-server application model to more flexible three-tier and multi-tier application models. The new models separated business logic from both system services and the user interface, placing it in a middle-tier between the two. In general, a tier (pronounced TEE-er; from the medieval French "tire" meaning rank, as in a line of soldiers) is a row or layer in a series of similarly arranged objects. In computer programming, the parts of a program can be distributed among several tiers, each located in a different computer in a network. Such a program is said to be tiered, multi-tier, or multi-tiered. The 3-tier application model is probably the most common way of organizing a program in a network. Figure F3-1: Two Tier vs. Three Tier Architecture [from: J2EE, SimpleGuide] 31 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification The evolution of new middleware services - transaction monitors, message-oriented middleware, object request brokers, and others - gave additional impetus to this new architecture. At about the same time, the growing use of the Internet and Intranets for enterprise applications contributed to a greater emphasis on lightweight, easy to deploy clients. So whenever there is a need for flexible internet or intranet applications today, it is a good approach to construct these services as multi-tier applications. A middle-tier that implements the new services needs to integrate existing information systems (IS) with the business functions and data of the new service. The service middle-tier also shields first-tier clients (webbrowers in our case) from the complexity of the enterprise and takes advantage of the rapidly maturing web technologies to eliminate or drastically reduce user administration or training. Multi-tier design dramatically simplifies developing, deploying, and maintaining enterprise applications. It enables developers to focus on the specifics of programming their business logic, relying on various back-end services to provide the infrastructure, and client-side applications (both standalone and within web browsers) to provide the user interaction. Once developed, business logic can be deployed on servers appropriate to existing needs of an organization. The middle tier represents an environment that is closely controlled by an enterprise's information technology department. The middle tier is typically run on dedicated server hardware and has access to the full services of the enterprise. J2EE applications often rely on the EIS-Tier to store the enterprise's business-critical data. This data and the systems that manage it are at the inner-core of the enterprise. Originally, the two-tier, client-server application model promised improved scalability and functionality. Unfortunately, the complexity of delivering EIS services directly to every user and the administrative problems caused by installing and maintaining business logic on every user machine have proved to be major limitations. These two-tier limitations are avoided by implementing enterprise services as multi-tier applications. Multi-tier applications provide the increased accessibility that is now demanded by all elements of an enterprise. This shift is driving major investments in the development of middle-tier software. Developing multi-tier services has been complicated by the need to develop both the service's business function and the more complex infrastructure code required to access databases and other system resources. Because each multi-tier server product had its own application model, it was difficult to hire and train an experienced development staff. In addition, as serv- Figure F3-2: Thin Client Principle [J2EE SimpleGuide] 32 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification ice volume increased it was often necessary to change the whole multi-tier infrastructure, resulting in major porting costs and delays [Link: J2EE, SimpleGuide]. A thin client is a client program that invokes business logic running on the server. It is called thin because most of the processing happens on the server. In the figure F3-2, the servlet may also be seen as a thin client, because a servlet invokes Enterprise Beans that run on the Enterprise JavaBeans server. It also executes logic that creates web pages that appear in the browser. Client programs communicate with the database through the application server using high-level and platform independent calls. The application server responds to the client requests, makes database calls as needed to the underlying database, and replies to the client program as appropriate. 3.1.2 J2EE Architecture Overview To get an idea about how the J2EE environment is organized, an outline the J2EE architecture parts is given first. (An explanation why J2EE was chosen as a platform for CAMIS can be found in Chapter 2.2.4.) "Java 2" Defined Sun announced the "Java 2" name [link: Java2, Definition] in December of 1998, just as it released the first technology delivered under this new brand, the product formerly called JDK1.2 (Java Development Kit Version 1.2). Table T3-1 explains how the overarching "Java 2" brand applies to the specific technology that Sun delivers. Notice that the core platform formerly was thought of as the "JDK" and is now known as the Java 2 Platform, Standard Edition [link: J2SE]. The same structure is also be applied to the "professional" version, the Java 2 Platform, Enterprise Edition (formerly called "Project JPE") [link: J2EE]. The Enterprise Edition can be considered a proper superset of the Java 2 Platform, Standard Edition. The additional technology is essentially a server-centered set of standard extensions. J2EE consists of application components, containers, resource manager drivers and database connectivity. It includes many components from the Java 2 Platform, Standard Edition (J2SE): • The Java Development Kit (JDK) is included as the core language package. • Write Once Run Anywhere technology is included to ensure portability. • Support is provided for Common Object Request Broker Architecture (CORBA), a predecessor of Enterprise JavaBeans (EJB), so that Java objects can communicate with CORBA objects both locally and over a network through its interface broker. • Java Database Connectivity 2.0 (JDBC), the Java equivalent to Open Database Connectivity (ODBC), is included as the standard interface for Java databases (for more info about JDBC, refer to Chapter 3.1.6). • A security model is included to protect data both locally and in Web-based applications. J2EE also includes a number of components that have been added to the J2SE model, such as full support for Enterprise JavaBeans (EJB, described in chapter 3.1.5). In addition to that, 33 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification New Name Old Name What it applies to Java 2 Platform, Standard Edition, v 1.2 (J2SE) none The abstract Java 2 platform (the technology and/or environment described in Sun’s specifications of the Java 2 Platform, Standard Edition, v 1.2). For example, the Java 2 SDK, Standard Edition, v 1.2 is Sun’s implementation of the Java 2 Platform, Standard Edition, v 1.2. Java 2 SDK, Standard Edition, v 1.2 JDK Sun’s product that implements (J2SDK) version 1.2 the Java 2 Platform, Standard Edition, v 1.2; it is a software development kit that can be used to build applications for the Java 2 Platform, Standard Edition, v 1.2. The SDK includes both the development tools (compiler, etc.) and the Java 2 Runtime Environment, Standard Edition, v 1.2. Java 2 Runtime Environment, Standard Edition, v 1.2 (J2RE) JRE 1.2 (JRE is not Sun’s product that implements the runtime environment with trademarked) which to run applications written for the Java 2 Platform, Standard Edition, v 1.2. Table T3-1: Java 2 Naming [link: Java2] the Java Servlets API (application programming interface) enhances consistency for developers without requiring a graphical user interface (GUI) and finally, Java Server Pages (JSP) is the Java equivalent to Microsoft's Active Server Pages (ASP) and is used for dynamic Web-enabled data access and manipulation. Application components in J2EE can be either Java programming language programs (typically GUI programs that execute on a desktop computer), Java Applets (that GUI components that typically execute in a web browser), Servlets and Java Server Pages (JSP - that typically execute in a web server and respond to HTTP requests from web clients), Enterprise Java Beans (EJB - components that execute in managed environments) or even simple HTML files to provide a more limited user interface for J2EE applications. The application components can be deployed, managed and executed on a J2EE server (in our case the Servlets and the EJBs), but could also be executed on a client machine (this is not 34 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification J2EE Part Description J2EE Application model A standard model to facilitate developing multi-tier, thin-client applications. J2EE Platform A standard platform for hosting J2EE applications (includes necessary policies and APIs such as the Java Servlets, EJB and JMS J2EE Compatibility Test Suite Used for verifying that the J2EE product complies with the J2EE standard. The J2EE Reference Implementation Explains J2EE capabilities and provides its operational definition Table T3-2: J2EE Parts the case in the CAMIS project). In our case, we used a combination of HTML files, Servlets and Entity Java Beans. Containers provide the runtime support for the application components. A container provides a federated view of the underlying J2EE APIs to the application components. Interposing a container between the application components and the J2EE services allows the container to transparently inject services defined by the component’s deployment descriptors, such as transaction management, resource pooling ot state management. The CAMIS project provides a web components container and an enterprise bean container. The figure F3-3 illustrates the relationship of the J2EE components. Note that the figure shows the logical relationship of the components, it is not meant to imply a physical partitioning. The Web container is a runtime environment for JSP files and servlets, whereas the EJB container is responsible for Entity Java Beans. Resource manager drivers are system-level components that implement network connectivity to an external resource manager. A driver can extend the functionality of the J2EE platform by implementing one of the J2EE standard service APIs, such as a JDBC Driver. The J2EE software package delivered by Sun Microsystems also includes a database engine, accessible through the JDBC API, for the storage of business data. This database engine called "Cloudscape" (originally delivered from Informix [link: Cloudscape]) is accessible from web components, enterprise beans and application client components. In the CAMIS project, Java Entity Beans were used to access the database via Java Servlets. However, due to Cloudscape lacking a comfortable administration interface, it was not chosen as the database engine for CAMIS. Instead, the choice was simply Microsoft Access 2000, although it was very clear that this would not be the database of choice for the final CAMIS application. The reason why MS Access was chosen was simply availability of the engine, ease of administration, existent experience and a valid software license. It has to be kept in mind that 35 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification this doesn’t make any difference to the implementation process regardless which database engine is being used. It would make sense to use a powerful database engine (like Oracle 8) to make CAMIS a performing and powerful application, of course, but using the JDBC/ODBC API, it is possible to use a MS Access database in the first step and replace it with Oracle (or any other DBMS) whenever needed without having to change the CAMIS application code. 3.1.3 J2EE Standard Services The J2EE includes a wide variety of services, including the following which were used in the CAMIS project: • HTTP: The HTTP client-side API is defined by the java.net package. The HTTP serverside API is defined by the servlet and JSP interfaces. • Java Transaction API (JTA): consists of an application-level demarcation interface that is used by the container and application components to demarcate transaction boundaries. • JDBC: The JDBC API is responsible for the connectivity with database systems. It has two parts: An application-level interface used by application components to access a database and a service provider interface to attach a JDBC driver to the J2EE platform (as it is done with the Cloudscape engine in the J2EE test environment). • Java Naming and Directory Interface (JNDI): The JNDI API is the standard API for naming and directory access. It consists of an application-level interface used by the application components to access naming and directory services and a service provider interface to attach a provider of a naming and directory service. A Java Servlet, for example, find an EJB through its JNDI name (which is to be defined at deployment time). Figure F3-3: J2EE Architecture Diagram [Shannon(1999)] 36 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Most of the APIs described above provide interoperability with components which are not part of the J2EE platform, such as external CORBA services. The J2EE specification does not require a J2EE product to be implemented by a single program, a single server, or even a single machine. This is also considered to be a very big advantage, as it grants a distributed environment. Figures F3-4 and F3-5 illustrate the architecture for the J2EE platform and give an idea of how the J2EE solution can work in a distributed, multi-tier environment. Figure F3-4: J2EE Structure [LINK: JDBC; Datasheet] Figure F3-5: J2EE Interoperability [link: J2EE, DevGuide] 37 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.1.4 What is a Servlet? A servlet is a piece of Java code that runs within a server to provide a service to a client. The name servlet is a takeoff on applet - a servlet is a server-side applet. Java applets, usually intended for running on a client, can result in such services as performing a calculation for a user or positioning an image based on user interaction. The Java Servlet API provides a generic mechanism for extending the functionality of any kind of server that uses a protocol based on requests and responses. Right now, primarily web servers use servlets. Some programs, often those that access databases based on user input, need to be on the server. Typically, these have been implemented using a Common Gateway Interface (CGI) application. However, with a Java Virtual Machine (JVM) running on the server, such programs can be implemented with the Java programming language. On the growing number of web servers that support them, servlets are Java based replacements for CGI scripts. They can also replace competing technologies, such as Microsoft’s Active Server Pages (ASP) or Netscape’s Server-Side Java Script. The advantage of servlets over these technologies is that servlets are portable among operating systems and among servers. The Java Servlet API is being adopted by numerous servers, and modules for running Java Servlets are provided for Netscape, IIS and Apache servers, Java Servlets in essence can run almost anywhere. Therefore, Java Servlets are platform-independent server extensions, both in the sense of hardware/OS and Web server type. Servlet advantages The major difference between CGI scripts and servlets is that Java Servlets are direct extensions to the web server. They are simply Java objects that are loaded dynamically by the web server’s Java Runtime Environment when needed. This is a very important feature that also gives a tremendous performance advantage compared to Java Applets, because the Java code executes on the server and not on the client machine. That means the Java codes does not have to be sent (downloaded) to the client - which could have taken a quite considerable long time on huge applets. In addition to that, the service provider now has direct control of the application performance by choosing the right server hardware (since the application itself does not execute on the client anymore). In addition to that, Servlets are persistent among invocations, which also gives them a major performance benefit over CGI programs. Rather than causing a separate program process to be created, each user request is invoked as a thread in a single daemon process, meaning that the amount of system overhead for each request is slight. A servlet’s thread does not have to terminate once it has sent back it’s response. Therefore a servlet may also be seen as a small application server. The request-processing time for a servlet can vary, but it is typically quite fast when compared to a similar CGI program. Servlets also have full access to the rest of the Java platform, so features such as database access are automatically supported. At high-traffic sites, the performance benefits can be quite dramatic. Instead of putting up and tearing down a hundert thousand database connections, the servlet needs to create a connection only once. There is also a method of the servlet that will clean up resources when the server shuts down. 38 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-6: The servlet life cycle [from: Flanagan(1999)] Java Servlet Lifecycle Since Java Servlets can forward requests to other servers, a Java Servlet could balance load among several servers which mirror the same content, or a Java Servlet could be used to partition a single logical service between several servers, routing requests according to task type or organizational boundaries. Instead of a URL that designates the name of a CGI application (in a "cgi-bin" subdirectory), a request in a form on a Web HTML page that results in a Java servlet getting called would call a URL that looks like this: http://www.domain.com:8080/servlet/gotoUrl?http://www.someplace.com The "8080" port number in the URL means the request is intended directly for the Web server itself. The "servlet" would indicate to the Web server that a servlet was being requested. When a client makes a request involving a servlet, the server loads and executes the appropriate Java classes. Those classes generate content, and the web server sends the content back to the client. In most cases, the client is a web browser, the server is a web server and the servlet returns standard HTML. From the web browser’s perspective, this isn’t any different from requesting a page generated by a CGI script, or, indeed, standard HTML. On the server side, however, there is one important difference: persistence. (Caution: In this very context, "persistence" means "enduring between invocations" and not "written to permanent storage", as it is used for Java Entity Beans.) Instead of shutting down at the end of each request, the servlet can remain loaded, ready to handle subsequent requests. For example, to implement a page counter, it is possible to store a number in a static variable rather than consulting a file (or database) for each request. Using this technique, a read or write to disk is only needed occasionally to preserve state. This way, a lot of filesystem and/or databases accesses can actually be removed. Figure F3-6 shows how all this fits together. 39 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-7: Java Servlets within a Web-based DB application [link: JWS] Java Servlets can be loaded dynamically, and administration can be performed dynamically. In practical terms this means that Java Servlets can be written for specialized purposes and loaded on-the-fly, and administration can be performed without bringing down the server. Servlet API The Servlet API differs from many other Java Enterprise APIs in as much that it is not a Java layer on top of an existing network service or protocol. Instead, servlets are Java-specific enhancements to the world of enterprise computing. With the growth of internet and the World-wide-Web, many enterprises are interested in taking the advantages of web browsers, which is a universally available (thin) client that can run on any desktop. Sun's article, Inside the Java Web Server [link: JWS], includes a discussion of the Servlet API. There are numerous methods and classes included in the servlet API that make application development easier than usual and provide a simple, robust and powerful object framework for building HTML-based applications. This includes objects for retrieving arguments from a web-server request, a simple stream interface for sending the HTML response to the client, and even more advanced functionality, such as cookies and server-side inclusions of servlets. Most common CGI tasks require a lot of fiddling on the programmer’s part - even decoding HTML form parameters can be a core - to mention dealing with cookies and session tracking. In the servlet API, libraries exist to help with these complex tasks (at least for most of the rou40 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification tine tasks), thus cutting development time and keeping things consistent also for multiple developers on a project. Under this model, the web server becomes enterprise middleware and is responsible for running applications for clients. Servlets are a perfect fit here. The user makes a request to the web server and the server invokes the appropriate servlet. The servlet may use JNDI (Java Naming and Directory Interface), JDBC and other Java Enterprise APIs to fulfill the request, and returns the result to the user usually in HTML-formatted text. The Servlet API is a standard extension to the Java 2 platform, implemented in Java packages [Flanagan (1999)]. Therefore, the most common use of Java Servlets will be to function as part of middle tiers in enterprise networks, connecting to SQL databases via JDBC. Just as perhaps 80% of the worlds applications are database applications, and many corporate developers already use Java Servlets for an endless variety of purposes over Intranets, Extranets and the Internet. Whether "Human Resources" needs to deploy an application about employee benefits, or an enterprise-wide solution is needed for customer service, account management and inventory control, Java Servlets and the Web service offer a flexible and extensible solution. Figure F3-7 shows how Java Servlets are embedded in an enterprise web-based database application. On the client’s side, there need not necessarily be an Applet, but pure HTML containing forms that use POST or GET commands instead (as it is done in the CAMIS project). In terms of specific functions, among the most common for Java Servlets is to accept FORM input and generate HTML pages dynamically. This is quite common for the kinds of applications that heretofore were written as CGI-bin scripts, such as online store and shopping cart programs. In addition to generating HTML on the fly, the Java Servlet may interact with a back-end database via JDBC for storing and accessing user account and merchandise information (refer to Chapter 3.2.5 to read more about the database system used in CAMIS). Session Tracking Very few web applications are confined to a single page and applications that access databases are most likely security-sensitive. Therefore, having a mechanism for tracking users through a site can often simplify application development. The problem is that the Web is an inherently stateless environment. That means a client makes a request, the server delivers an answer and both promptly forget about each other. In the past, an application that needed to keep track of the user all the time had to deal with cookies, URL rewriting or forms with hidden fields to contain state information. Since version 2.0 of the J2EE Servlet API, classes and methods are provided specifically designed to handle session tracking. A servlet can use the session-tracking API to delegate the most of the user-tracking functions to the server via a javax.servlet.http.HttpSession class. In addition to that, a timeout mechanism is provided also, destroying the session object after a certain amount of inactive time (for more information refer to [Flanagan (1999)]). Therefore CAMIS application itself does not have to worry about validation of a session, because this is done by the servlet itself. 41 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification When a user accesses a session-enabled servlet (not to be mixed up with a session-bean), the server creates a unique session-ID that is associated with the client. The server does this by first trying to set a cookie on the client. If this fails (because the client does not support cookies or has disabled cookie support), the API allows servlets to rewrite internal links to include the sessionID, using the encodeUrl() method. (However, on-the-fly URL encoding can become a performance bottleneck, because the server needs to perform additional parsing on each incoming request.) For more information about cookies, please refer to [link: Netscape, Cookies]. The unique sessionID created by the server can be accessed by the getID() method of the HttpSession object that has been instantiated by the servlet. This is enough for most applications, since a servlet can use some other storage mechanism to store the unique information associated with the session. In CAMIS, the unique session ID is stored in the session database (as described in Chapter 3.2.5), to keep the ID persistent outside of the servlet, too. In addition to the unique session ID, it is also possible to bind additional information to a session using the putValue() method of the HttpSession object. This way, almost any information can be kept persistently, like a hitcounter, a username, a primary key or the IP address of the client that did access the system. Objects bound to a session this way are available for all servlets running on the same server. This means that any other servlet may also easily check whether a user is allowed to access the requested information or to use the provided business methods. Thread Safety In a typical servlet scenario, only one copy of any particular servlet is loaded at any given time, regardless how many clients access it. So each servlet might be called upon to deal with multiple requests at the very same time. This means that a servlet needs to be thread-safe. If a servlet does not use any class variables (such as not changing any shared information), it is generally thread-safe already. In contradiction to this, a servlet may also maintain persistent resources and therefore needs to make sure that nothing untoward happens to those resources. To be more specific, imagine that a servlet handles several requests in multiple threads, all accessing the same class vaiables, reading and writing their contents. Due to the fact that thread-switching cannot be predicted from the programmer’s point of view, it is impossible to know in what order the threads will access class variables. This means that thread A might read a class variable X and uses this value as an initial value for a calculation. In the meantime, thread B also reads the very same class variable X (reading the same value as thread A) and also takes this value as a basis for any other calculation. Now, thread A finishes its calculation and writes back the result to variable X. After that, thread B finishes its work and also writes its calculated result back to variable X. The problem now is that the result of the calculation from thread A has been overwritten and has disappeared. The status of the class variable X is the same as if thread A would have never done any calculation at all. So the system actuality delivers a wrong output! 42 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Obviously, this is incorrect behavior. So it must be assured that thread A writes back its result to variable X before thread B is allowed to read its contents. This is done by surrounding critical sections of the servlet with synchronized blocks. While a particular synchronized block is executing, no other sections of the code that are synchronized on the same object (variable X in this example) can execute (see [Flanagan (1999)] for more information about thread safety). 43 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.1.5 What is an Enterprise Java Bean? JavaBeans is an object-oriented programming interface from Sun Microsystems that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform [link: JavaBeans]. Like Java applets, JavaBeans components (or "Beans") can be used to give World Wide Web pages (or other applications) interactive capabilities such as computing interest rates or varying page content based on user or browser characteristics. In its JavaBeans application program interface for writing a component, Sun Microsystems calls a component a "Bean" (thus continuing their coffee analogy). Therefore, Bean is simply the Sun Microsystems variation on the idea of a component. From a user's point-of-view, a component can be a button that you interact with or a small calculating program that gets initiated when you press the button. From a developer's point-ofview, the button component and the calculator component are created separately and can then be used together or in different combinations with other components in different applications or situations. When the components or Beans are in use, the properties of a Bean (for example, the background color of a window) are visible to other Beans and Beans that haven't "met" before can learn each other's properties dynamically and interact accordingly. Beans are developed with a Beans Development Kit (BDK) from Sun and can be run on any major operating system platform (Windows 95, UNIX, MacOS) inside a number of application environments (known as containers), including browsers, word processors, and other applications. However, the J2EE platform extends this specification in a way for which Sun delivers a nice tool that helps the administrator to deploy J2EE applications on a server (refer to Chapter 3.1.7 for more information on deployment). Beans also have persistence, which is a mechanism for storing the state of a component in a safe place (in this context "persistence" really means "written to permanent storage"). This would allow, for example, a component (bean) to "remember" data that a particular user had already entered in an earlier user session. Enterprise JavaBeans (EJB) [link: EJB] is an architecture for setting up program components, written in the Java programming language, that run in the server parts of a computer network which uses the client/server model. The introduction of RMI (Remote Method Invocation) and JavaBeans to the core Java APIs brought a standard distributed object framework and a component model to Java. Enterprise JavaBeans is built on the JavaBeans technology for distributing program components to clients in a network. Enterprise JavaBeans offers enterprises the advantage of being able to control change at the server rather than having to update each individual computer with a client whenever a new program component is changed or added. EJB components have the advantage of being reusable in multiple applications. To deploy an EJB Bean or component, it must be part of a specific application, which is called a container. EJBs as remote objects An EJB component is an RMI object, in the sense that it’s exported as a remote object using RMI. And an EJB component is also a JavaBeans component, since it has properties that can be introspected, and it uses the JavaBeans convention for defining accessor methods for its 44 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification properties. The EJB architecture provides a framework in which the enterprise bean developer can easily take advantage of transaction processing, security, persistence, and resource-pooling facilities provided by an EJB environment [Flanagan (1999)]. Originated by Sun Microsystems [link: Sun]], Enterprise JavaBeans is roughly equivalent to Microsoft's COM/DCOM (Component Object Model/Distributed Component Object Model) architecture, but, like all Java-based architectures, programs can be deployed across all major operating systems, not just Windows. EJB's program components are generally known as servlets (as described in the previous chapter). The application or container that runs the servlets is sometimes called an application server. A typical use of Enterprise JavaBeans in combination with servlets is to provide an interface between Web users and a legacy mainframe application and its database. However, EJBs are useful in any situation where regular distributed objects are useful. They excel, however, in situations that take advantage of the components nature of EJB objects and the other services that EJB objects can provide with relative ease, such as transaction processing and persistence. The EJB component model insulates applications and beans form the details of component services included in the specification. A benefit of this separation is the ability to deploy the same enterprise bean under different conditions, as needed by specific applications. The parameters used to control a beans’ transactional nature are specified in separate deployment descriptors and or not embedded in the beans’ implementation. So, when a bean is deployed in a distributed application, the properties of the deployment environment can be accounted for and reflected in the settings of the bean’s deployment options (see Chapter 3.1.7 for more information about deployment). EJB container and its interfaces In the RMI environment, there are two fundamental roles: the client of a remote object and the object itself, which acts as a kind of server or service provider. These two roles exist in the EJB environment as well, but EJB adds a third role, called the container provider. The container provider is responsible for implementing all the extra services for an EJB object (those mentioned earlier in this chapter like persistence). The EJB container may roughly be seen as equivalent to the ORB (Object Request Broker) in CORBA (Common Object Request Broker) with a few of the CORBA services thrown in as well. In EJB, the container is strictly a serverside entity. The client doesn’t need its own container to use EJB objects, but an EJB object needs to have a container in order to be exported for remote use. Figure F3-8 [from Flanagan (1999)] shows how the three roles interact with each other. An EJB client uses remote EJB objects to access data and perform tasks. The first action a client performs is to find the home interface for a type of EJB object it wants to use. This home interface is a kind of object factory that is used to create new instances of the object types, look up existing instances (only when using entity EJB objects, discussed later in this chapter) and delete EJB objects. In a sense, the use of home interfaces in EJB is just formalizing the role of factory objects in distributed component applications. The EJB home interfaces are located by the client using JNDI (Java Naming Directory Interface). An EJB server publishes the home interface for a particular EJB object under a particular name under the JNDI namespace. 45 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-8: EJB Client and Container Interaction [from: Flanagan(1999)] To summarize the interaction of client and bean, it can be said that the client will take the following steps when using a bean: • • • • get a JNDI context from the EJB server use this context to look up a home interface for the bean to be used use the home interface to create or find an instance of a bean call methods on the bean An EJB object provides three interfaces/classes in order to fully describe itself to an EJB container: • a home interface • a remote interface • an enterprise bean implementation The remote interface acts as the interface the client uses to interact with EJB Objects and the implementation is where the object itself executes methods. A client issues method requests trough a stub derived from the remote interface and eventually these requests make their way to the corresponding bean instance on the server. In addition to the interfaces that describe the EJB object type, an EJB object also provides deployment descriptors to its containers. The deployment descriptors tell the container the 46 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification name to use for registering the bean’s home interface in JNDI, how to manage transactions for the bean, the access rights that remote identities are given to invoke methods on the EJB, and how persistence of the EJB objects should be handled. The container does provide all these services to the bean, but the EJB object has to tell the container how it wants these services managed. An EJB application server can contain multiple EJB containers, each managing multiple EJB objects. Rollback History One of the value-added features that Enterprise JavaBeans provides over regular remote objects is semi-automatic transaction management. Transactions break up a series of interactions into units of work that can be either committed (if they are successfully executed) or rolled back at any time before the transaction is committed. If a transaction is rolled back, all parties involved in the transaction are responsible for restoring their state to their pre-transaction condition. Transaction support is especially important in a distributed environment and when accessing databases, since agents may lose network contact with each other or a database might nor be available at a certain time. The Enterprise JavaBeans relies on the Java Transaction API (JTA) for transaction support. Session Beans vs. Entity Beans In Enterprise JavaBeans, there are two types of beans: session beans and entity beans. An entity bean is described as one that, unlike a session bean, has persistence and can retain its original behavior or state. (Caution: The term "entity" shall not be mixed up with "enterprise". An entity bean is an enterprise bean, but an enterprise bean is not automatically an entity bean, because a session bean is an enterprise bean, too.) A session bean is accessed by a single client at a time and is nonpersistent. It lives for a specific period of time (namely a session) and then gets removed by the server. An entity bean, on the other hand, represents a data entity stored in persistent storage (e.g. a database or a filesystem). It can be accessed by multiple clients concurrently and is persistent beyond a session or even the lifetime of the EJB server. Session Bean Entity Bean Purpose Performs a task for a client Represents a business entity object that exists in persistent storage Shared Access May have one client May be shared by multiple clients Persistence Not persistent. When the client Persistent. Even when the EJB terminates its session bean is no longer available container terminates, the entity state remains in a database Table T3-3: Session Beans and Entity Beans compared [from: J2EE, DevGuide] 47 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Persistence and Database Access To allow the EJB server to work on databases using entity beans, the enterprise bean typically needs to acquire JDBC connections in a manner specified by the EJB server. In most cases, this is done by providing a pool of JDBC connection that is defined in any server configuration file (as it is with J2EE, too). The bean then may use a JDBC URL to pull connections from this pool at runtime. There are two ways persistent storage for an entity bean can be managed: by the EJB container or by the bean itself. In the first case, the bean is called a container managed entity bean and the bean leaves the database calls to the container. The deployment tools provided with the EJB server deployment are responsible for generating these database calls in the classes it uses to deploy the bean. In the second case, the bean is called a beanmanaged entity bean and the database calls for managing the bean’s persistent storage have to be implemented in the bean itself. To rely on the EJB container to handle the entity bean’s persistence can be a huge benefit, since no JDBC code has to be added to the bean. But the automated support is limited, and so sometimes it might make sense to manage persistence directly in the entity bean. In the CAMIS project, mainly container managed entity beans have been used. When implementing a container managed entity bean, data members are defined on the bean implementation that hold the state of the entity and tell the EJB container how to map these data members to persistent storage. If the persistent storage is a database, the container is told which columns in which tables hold the various data members of the bean’s entity. The container is responsible for loading, updating and removing the entity data from persistent storage, based on the mapping that was provided. The container also implements all the finder methods required by the bean’s home interface. 48 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.1.6 Database Integration with JDBC It is very common in the Java community to interpret JDBC as an abbreviation for "Java Database Connectivity" (derived from ODBC - Open Database Connectivity). However, it is important to notice that this term has never been confirmed from Sun Microsystems. JDBC is a registered trademark of Sun, but is never used in combination with "Java Database Connectivity" anywhere within Sun’s own Java documentation, regardless whether in printed paper, online or any other digital form. JDBC is an application program interface (API) specification for connecting programs written in Java to the data in popular databases. The application program interface lets the developer encode access request statements in structured query language (SQL, see chapter 3.2.4) that are then passed to the program that manages the database. It returns the results through a similar interface. JDBC is very similar to the SQL Access Group's Open Database Connectivity (ODBC) and, with a small bridge program (JDBC/ODBC Bridge), it is possible to use the JDBC interface to access databases through the ODBC interface. This way, it is possible to write applications that access many popular database products on a number of different operation systems. Sun provides a list of "native" JDBC drivers on their Java Homepage [link: JDBC Drivers]. The JDBC API makes it possible to do three things: • Establish a connection with a database or access any tabular data source • Send SQL statements • Process the results Figure F3-9: Principle of Accessing Databases via JDBC [link: JDBC, Datasheet] 49 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-10: Database Access via pure Java JDBC Drivers [link: JDBC Datasheet] JDBC Architecture The JDBC API actually has two levels of interface. The first is the JDBC API for application writers, specifying a set of object-orient programming classes for the programmer to use in building SQL requests. The second is the lower-level JDBC driver API for driver writers. The most common SQL data types, mapped to Java data types, are supported. The API provides for implementation-specific support for transactional requests and the ability to commit or roll back to the beginning of a transaction. JDBC technology drivers fit into one of four categories (a more detailed description of these categories is given below). It is important to note that there is also an API from a JDBC manager that in turn communicates with individual database product drivers, the JDBC/ODBC bridge if necessary, and a JDBC network driver when the Java program is running in a network environment (accessing a remote database). When accessing a remote database, JDBC takes advantage of the Internet's file addressing scheme and a file name looks much like a Web page address (or URL). The JDBC 2.0 API adds an even better way to identify and connect to a data source, using a DataSource object, that makes code even more portable and easier to maintain. For example, a Java SQL statement might identify the database as: jdbc:odbc://www.somecompany.com:400/databasefile In addition to this important advantage, DataSource objects can provide connection pooling and distributed transactions, essential for enterprise database computing. This functionality is provided transparently to the programmer. Figure F3-9 shows how the client will connect to a DBMS on an application server via a JDBCdriver using the JNDI (Java Naming Directory Interface). 50 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Applications and applets can access databases via the JDBC API using pure Java JDBC technology-based drivers, as illustrated in Figure F3-10. The direct-to-database "pure" Java Driver converts JDBC calls into the network protocol used directly by DBMSs (Database Management System), allowing a direct call from the client machine to the DBMS server. Another type JDBC access uses a pure Java Driver for database middleware. This style of driver translates JDBC calls into the middleware vendor's protocol, which is then translated to a DBMS protocol by a middleware server. The middleware provides connectivity to many different databases. The second possibility to access databases via JDBC is using the JDBC/ODBC bridge (illustrated in Figure F3-11). This technique cannot be overestimated, because it allows access to almost any database platform that provides an ODBC driver. ODBC binary code - and in many cases, database client code - must be loaded on each client machine that uses a JDBCODBC Bridge. Sun provides a JDBC-ODBC Bridge driver, which is appropriate for experimental use and for situations in which no other driver is available. There is also a native-API partly Java technology-enabled driver: This type of driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine. Figure F3-11: Database Access using the JDBC/ODBC Bridge [link: JDBC Datasheet] 51 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Advantages of JDBC Technology With JDBC technology, application environments are not locked in any proprietary architecture. It is possible to use already installed databases and to access information easily - even if it is stored on different DBMSs. The combination of the Java API and the JDBC API makes application development more simple and economical. JDBC hides the complexity of many data access tasks (e.g. when using Entity Java Beans), doing most of the "heavy lifting" for the programmer behind the scenes. Using the JDBC API means that no configuration is required on the client side. With a driver written in the Java programming language, all the information that is needed to make a connection is completely defined by the JDBC URL or by a DataSource object registered with a JNDI naming service. Any pure JDBC technology-based driver does not require special installation. It is automatically downloaded as part of the client application that invokes the JDBC calls. Zero configuration for clients supports the network computing paradigm and centralizes software maintenance. 52 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.1.7 J2EE Applications and Deployment A J2EE application is assembled from three kinds of modules: enterprise beans (as described in Chapter 3.1.5), web components and J2EE application clients. These modules are reusable - that means that new applications can be built from existing enterprise beans and components. In addition to that, a J2EE application will run on any J2EE server that conforms to the J2EE specifications [link: J2EE, DevGuide]. An enterprise bean is always composed of three class files: The EJB class, the remote interface and the home interface (refer to Chapter 3.1.5 for more information about EJB classes). A web component may contain files of the following types: • • • • • Servlet (as described in Chapter 3.1.4) Class JSP (Java Server Pages) HTML GIF (Graphics Interchange Format) A J2EE application client is a Java application that runs within a container which allows it to access J2EE services. The flexibility of the J2EE architecture allows enterprise beans to have a variety of clients: • • • • • Stand-Alone Java Applications J2EE Application Clients Servlets JavaServer Pages Components Other Enterprise Beans Although a J2EE application client is a Java application, it differs from a stand-alone Java application client because it is a J2EE component. Like other J2EE components, a J2EE application client is created with the Application Deployment Tool (see below for more information about the deployment tool) and is added to a J2EE application. Because it is part of a J2EE application, a J2EE application client has important advantages over a stand-alone Java application client. For example, a J2EE application client is portable, which means it will run on any J2EE-compliant server and it may access J2EE services. Deployment Descriptor Each application, web component, and J2EE application client has a deployment descriptor. A deployment descriptor is an XML (Extensible Markup Language) file that describes the component. For example, a deployment descriptor of an EJB declares transaction attributes and security authorizations. These transaction attributes declare which DBMS is to be accessed, which tables are to be used and (in case of a container managed bean) also the SQL strings for some methods (e.g. "find by primary key"). Due to the fact that a deployment descriptor is declarative, it can be changed without requiring modifications to the bean’s source code. This is a very important feature, because it allows switching DBMSs without having to do any modifications on the J2EE applications’ source code. At runtime, the J2EE server reads this information and acts upon the bean accordingly. 53 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification J2EE Element File Type J2EE Application .ear J2EE Application Deployment Descriptor .xml Enterprise Bean ejb .jar EJB Deployment Descriptor .xml EJB Class .class Remote Interface .class Home Interface .class Web Component .war Web Component Deployment Descriptor .xml JSP File .jsp Servlet Class .class GIF File .gif HTML File .html J2EE Application Client .jar J2EE Application Client Deployment .xml Descriptor .class Java Application Table T3-4: J2EE Application Elements [link: J2EE, DevGuide] Application File Formats Each file belonging to a J2EE application is bundled into a file with a particular format - a J2EE application goes into an EAR (Enterprise Archive) file, an EJB into a JAR (Java Archive) and a web component into a WAR (Web Archive) file. Table T3-4 shows the file types of every element residing in a J2EE application. Not all files available in an J2EE environment are described here in extensively, for more information, please refer to Java 2 Enterprise Edition Developer’s Guide [link: J2EE, DevGuide]. Figure F3-12 shows how all this fits together in a J2EE application. 54 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Application Deployment However, to be able to make a J2EE application run on the server, it has to be deployed first (assuming that all the required Java code was written and compiled previously). During deployment, a system administrator adds the J2EE application (the EAR file) created in the preceding development phase to the server. He then configures the J2EE application for the operational environment by modifying the deployment descriptor of the J2EE application. Finally, he deploys (installs) the J2EE application (that is the EAR file) into the server. Focusing on an EJB, a short example of a deployment task shall be given. As described above, it is not possible to deploy an enterprise bean into a server directly. Instead, the bean is added to a J2EE application, which is then deployed into the server. Sun provides a deployment-tool (the deploytool) to do the whole deployment process and to control the assembly of the J2EE application. For EJBs, an "Enterprise Bean Wizard" helps the administrator to bind the bean into the J2EE application. The deployment tool will perform the following tasks: • • • • Create the bean’s deployment descriptor Package the deployment descriptor and the bean’s classes in an EJB JAR file. Insert the EJB JAR file into the application’s ConverterApp EAR file. Specify the JNDI name of the enterprise bean (used to locate the home interface of the bean) Figure F3-12: Contents of a J2EE Application [link: J2EE, DevGuide] 55 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-13: Deploying an J2EE Application on the Server Figures F3-13, F3-14 and F3-15 illustrate how this deployment process works. Figure F312 shows the environment of deploying an application on the server, whereas Figures F3-14 and F3-15 show how the deployment descriptors for an EJB are set. Notice that in this case, a container-managed entity java bean is being deployed and therefore, the deployment tool will also ask for a JNDI name of the DBMS and will create SQL statements for the administrator automatically to ensure that the container knows how the beans methods are about to access of the DBMS. In the J2SDKEE Version 1.2.1 (Java 2 Software Development Kit, Enterprise Edition) the deployment tool was refined compared to the 1.2 Version. Now it suddenly is possible to "redeploy" applications without having to go trough all dialogs and deployment descriptors again. That means whenever a modification to the application source is done, it is very easy to redeploy the modified application onto the server (reusing the very same deployment descriptors), thus overwriting the old application on the server. The old application does not need to be deleted first and the server does not need to be restarted. Everything just happens "up and running". This is a very big step compared to the old version 1.2. At the time when the CAMIS project began, there was only J2SDKEE 1.2 available (to be precise, it was rather announced than released) which had some critical disadvantages concerning the deployment tool. That 56 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification time, it was not possible to redeploy an application. That meant that the administrator had to redeclare and redeploy the whole application manually every time the application source code was modified. This was a very time-consuming process. However, it was really remarkable to see how fast information sources and application releases changed on Sun’s website within a few months. In spring 2000, there was almost no detailed information about the J2EE environment available from Sun – apart from a 22-page "developers guide". Now, the developers guide counts more than 200 pages and is a real good starting point to work with J2EE and to learn and understand what it is all about. Figure F3-14: Deploying an Entity Java Bean 57 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-15: JNDI Binding and SQL Code Generation for an Entity Java Bean 58 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.2 Database System In order to be able to keep track of the usage of the system and the keep CAMIS as flexible as possible, the decision for a database-driven backend tier was pretty obvious. Before describing the database model used in CAMIS, more general explanations of database models are given, because this will make it more easy to understand the CAMIS database model. The most popular database management systems (DBMS) today implement a relational database model, so it makes sense also to use this database model in the CAMIS project. The fact that it was not sure which DBMS will be used for the final release of CAMIS was another reason for choosing a relational database model. On the other hand, in Java and the J2EE environment, it is also pretty easy to write objects into a database table using the serializable class, which means that a look at the object-oriented database model should be taken, too. 3.2.1 The Relational Database Model A relational database is a collection of data items organized as a set of of formally described tables from which data can be accessed or reassembled in many different ways without having to reorganize the database tables. The relational database was "invented" by E. F. Codd at IBM in 1970 [Codd (1970)], when he published a paper while working at IBM's San Jose research lab: "Future users of large data banks must be protected from having to know how the data is organized in the machine (the internal representation). ... Activities of users at terminals and most application programs should remain unaffected when the internal representation of data is changed and even when some aspects of the external representation are changed. Changes in data representation will often be needed as a result of changes in query, update, and report traffic and natural growth in the types of stored information." A reprint of Codd’s original paper can be found at Association for Computer Machinery (ACM) [link: Codd, ACM]. Tables and attributes A relational database is a set of tables containing data fitting into predefined categories. Each table (which is sometimes called a relation) contains one or more data categories in columns, which hold sets of information (called entities). All entities are data of the same kind. The description of each entity corresponds to one line (or row) of the respective table and each row contains a unique instance of data for the categories defined by the columns. The columns of a table are called attributes. Each attribute has its own name and is always referenced by that name instead of its position. In addition to that, all attributes have defined ranges of valid values that may be compared with datatypes in programming languages. It is a very important principle of the relational model that the values of the attributes of rows contain simple values only, or in other words values that are atomic (e.g. datatypes like Integer, Real or String). This means that attributes values cannot be fragmented into smaller pieces. 59 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification However, there is an exception to this, whenever an application writes a serialized object as an attribute to a database row (as it is possible using an Entity Java Bean). In this case, the object’s structure (variables and methods) needs to be known to be able to retrieve information properly from the database. Writing a serialized object into a relational database system leads to what is commonly called an object-relational database system (see Chapter 3.2.2 below for more information on this special topic). Database creation and visualization When creating a relational database, it is possible to define the domain of possible values in a data column and further constraints that may apply to that data value. For example, a domain of possible customers could allow up to ten possible customer names but be constrained in one table allowing only three of these customer names to be specifiable. The definition of a relational database results in a table of metadata or formal descriptions of the tables, columns, domains, and constraints. In addition to being created and accessed relatively simple, a relational database has the important advantage of being extened easily. After the original database creation, a new data category can be added without requiring that all existing applications be modified, because all attributes of a table are being referenced by name and not by position, as already mentioned above. For example, a typical business order entry database would include a table that describes a customer with columns for name, address, phone number, and so forth. Another table would describe an order: product, customer, date, sales price, and so forth. A user of the database could obtain a view of the database that fits the users needs (therefore leaving out attributes the user is not interested in or is not allowed to see). For example, a branch office manager might like a view (or report) on all customers that had bought products after a certain date. A financial services manager in the same company could, from the same tables, obtain a report on accounts that needed to be paid. Database keys A key of a relation is a subset of the attributes of that relation meeting the following two conditions: 1. The unique identification that guarantees that a table's row can be uniquely referenced by the value of the key. 2. The absence of redundancies means that no attribute of the key can be omitted without violating rule 1. As mentioned above, each row of a relation is unique and therefore there always a key exists. A trivial key that includes all attributes of the relation will always fulfill condition 1. So it remains to find the subset meeting condition 2. A relation can have more than one candidate key. That means that there may exist two or more different subsets of attributes that fulfill both conditions. In this case a primary key must be chosen. 60 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Relationships The relationships between tables – that is between individual rows of two tables – are generated by storing references to the other table attributes values in the source table. Let’s assume there are two tables, "table A" (the source table) and "table B" (the target table), where A owns a primary key "Key A" and B owns the primary key "Key B". In order to let a certain row of table B be related to some rows of table A, the primary key value (Key B) of B’s row is stored as an attribute value in the corresponding rows of table A. From table A’s point of view, these stored references of Key B are called foreign key values, because these values are actually key values of table B, thus uniquely identifying B’s rows. It is important to notice that these key values are not key values of table A. The term foreign key identifies the table’s attribute where the foreign key values are stored. However, it is important to know that there are three different types of relationships, as listed below. • the 1:1 (one-to-one) relationship • the 1:n (one-to-many) relationship • the n:m (many-to-many) relationship A 1:1 relationship is very easy to understand. It simply means that each row of a source table is being related to exactly one row of a target table (and vice versa). In an 1:n relationship, each row of a source table has (or at least may have) a number n of related rows in the target table. (This was already described shortly above when giving the example with "table A" and "table B".) From the target table’s point of view, each of its rows belongs to exactly one of the source table. This relationship is also known as master-detail relationship where the source table is representing the master table and the target table represents the detail table. So a 1:n relationship is defined as a relationship where each row of the master table can have any number (including zero) of depending rows in the corresponding target table. Having an n:m relationship means that the 1:n relationship is extended in a way that there are no restrictions in the number of rows that are related to each other in both tables. To be precise, any row (let’s call it "row A") in the source table may belong to a number of rows in the target table, but this row A may also belong to a set of rows (within the source table) that is referenced from a row B within the target table. Normal forms A relational database model that is designed according to the definitions above may still contain certain ambiguities and inconsistencies that should be cleared up before implementation of any database system. This process is called normalization [Hughes(1992)]. The theory of normalization is based on the concept of normal forms, starting with the first normal form. If each attribute value of a row is atomic, a not further divisible unit of data, a relation is called to be in first normal form. As this condition is already included in the defi- 61 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification nition of a relation, every relation that is created according to the definition given above is in first normal form. The following normal forms have been defined (in order of increasing the precision of their conditions): • • • • • • First normal form Second normal form Third normal form Boyce-Codd normal form Fourth normal form Fifth normal form Every single normal form is based on the previous normal form. This means that a relation that is in second normal form also already is in first normal form and a relation in third normal form is implicitly also in first and second normal form (and so on). Having a relation in second normal form of course means that it is in first normal form, but in addition to that, each non-key attribute is fully functional dependent on the primary key. This means that there cannot exist any non-key attribute of which the value is implied by any other attribute besides the primary key. A relation is in third normal form whenever it is in second normal form and each non-key attribute is not transitively dependent on the primary key. This means that no non-key attribute is allowed to depend on another non-key attribute which itself depends on the primary key. Moving from one normal form to the "next higher" normal form can be done by splitting up relations. Doing so will never result in loss of information, because joining the new relations can always restore the original relation (that is the relation the new relations were created of). A relational model in third normal form may still have some inconsistencies that can be eliminated by moving to a higher level of normal forms. However, such inconsistencies rarely appear and therefore the third normal form may be considered as sufficient for the most applications. In addition to that, a total normalization of a relation is not always desirable, because retrieving data might become more complicated, because tables must be joined then (this might also affect database performance) [Hughes(1992)]. For the CAMIS project, it is considered that the third normal form will entirely satisfy the system’s requirements and therefore the other normal forms are not described any further here. 62 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.2.2 The Object-Oriented Database Model Many modern programming languages (like Java) offer efficient algorithmic structures for representing complex data by binding them into data objects. The possibility to define such data objects (together with their methods) is very useful for applications using databases [Hughes]. In comparison to the relational database model, the object-oriented database model is based on the application-oriented representation of data. This approach enables the programmer to imagine the database as a collection of complex objects having relationships among each other and viewing the objects at the exact abstraction level required to understand the application. These objects are serializeable objects and are stored as BLOBs (binary large objects) in a database table. Figure F3-16 shows the representation of a BLOB in JBuilder’s JDBC Explorer. An OODBMS (Object-Oriented Database Management System, sometimes shortened to ODBMS for Object Database Management System) is a DBMS that supports the modeling and creation of data as objects. This includes some kind of support for classes of objects and the inheritance of class properties and methods by subclasses and their objects. It is important to notice that there is currently no widely agreed-upon standard for what constitutes an OODBMS, and OODBMS products are still considered to be in their infancy. In the meantime, the Object-Relational Database Management System (ORDBMS) is reflecting Figure F3-16: Binary Large Objects (BLOB) shown in the JDBC Explorer 63 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification the idea that object-oriented database concepts can be superimposed on relational databases. This is more commonly encountered in available products, like in "Oracle 8i Release 3" [link: Oracle, 8i Release 3], which is very commonly used in enterprise environments. An object-oriented database interface standard is being developed by an industry group, the Object Data Management Group (ODMG) [link: ODMG]. The Object Management Group (OMG) [link: OMG] has already standardized an object-oriented data brokering interface between systems in a network. In their influential paper, the Object-Oriented Database Manifesto, Malcolm Atkinson and others define an OODBMS as follows [link: Atkinson]: "An object-oriented database system must satisfy two criteria: it should be a DBMS, and it should be an object-oriented system, i.e., to the extent possible, it should be consistent with the current crop of object-oriented programming languages. The first criterion translates into five features: persistence, secondary storage management, concurrency, recovery and an ad hoc query facility. The second one translates into eight features: complex objects, object identity, encapsulation, types or classes, inheritance, overriding combined with late binding, extensibility and computational completeness." In an object-oriented database, every object is an instance of a class. All objects that belong to a class are described by class definitions. The state of an object is realized by attributes. However, in contrast to the relational model, these attributes are not restricted to atomic data types such as Integer, Real or String, but may contain complex objects themselves. As mentioned above, relational database models use attributes as keys that can uniquely identify certain rows of a table. In this way the contents of the data are used instead of an address to find related data. Object-Oriented models use a more complex way of identifying an object in a database, namely by the object’s identity. This is a property of an object that sets it apart from other objects and can be used for regaining that object. Three levels of independence [Hughes (1992)] implement this identity. • the location independence requires the preservation of the object’s identity regardless of the location of its storage. • the value independence demands the preservation of the object’s identity independent of changes of the object’s values. • the structure independence ensures that the object’s identity is independent of changing the object’s structure. There are some more characteristics a object-oriented database model has to fulfill, but as these characteristics are very similar to the ones defined for objects in object-oriented programming languages, no further explanation should be given here. For more information, please refer to [link: Atkinson]. 64 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.2.3 The Entity-Relationship Model For the design of databases, several concepts were suggested that did not have great impact, because they turned out to be too complex and also hard to implement. A very important model widely used today is known as the Entity-Relationship Model (ERM). In the last years, database developers had to face increasing complexity of applications that required extended semantic concepts for data modeling and in this way, the ERM was derived from the Extended Entity-Relationship Model (EER) which was originally introduced by Chen [Chen, (1976)]. Entities Entity Relationship modeling is a method of analyzing the logical structure of an organizations information. The entity relationship model is a way of graphically representing what the information is about, how it relates to other information and business concepts and how business rules are applied to its use in the system. In the ER-Model information is represented by means of entities, attributes and relationships, where • an entity is a "thing" that can be distinctly identified, e.g. a data object, a person or a place • a relationship is an association between entities This is an attempt to prevent the problems of inconsistency, integrity and redundancy by modelling the underlying structure of how a system is intended to hold what data and how that data interrelates in reality. Schematic representations of entity-relationship models use diagrams that describe the natural structure of the stored data and the data structure of the proposed system. Such a diagram is called an Entity Relationship Diagram. Entities do not remain isolated, they are related to other entities. In a ER-model which represents a logical and not physical explanation of a system, the relationships between entities represent business associations or rules and not physical links. A line on the diagram joins any entities that are related. The line is labeled with the name of the relationship in both directions and the relationship is two way (figure F3-17 illustrates how this fits together). Relationships A relationship between two entities, however, can be of different types (like 1:1, 1:n, n:m), called the degree of the relationship. This degree denotes the number of occurrences of each entity type participating on the relationship (the different types of relationships have already been described in chapter 3.2.1). Most relationships that appear during database design are 1:n, but in the overview (feasibility) stage, the diagram may also show several n:m relationships. These are acceptable for the high level summary provided by the overview diagram at the feasibility stage, but they must be resolved during more detailed investigations of the system - with two m:1 relationships [link: ERM]. 65 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification The main reasons for this are: • the m:n relationship hides many master-detail relationships • m:n relationships make navigation around the model very difficult or even impossible • m:n relationships invariably hide information about the participating relationships or the entities themselves As with m:n relationships, 1:1 relationships are useful in the overview diagram at the feasibility stage, but these too must be resolved. This is achieved either by merging the entities involved or by replacing the 1:1 relationship by a 1:M relationship (which reads one or more). The reason for this is: • 1:1 relationships often obscure an underlying single entity • there may be a missing link entity • later design techniques may require all relationships to be master-detail An entity relationship diagram can be thought of as a route map, as such that by following the relationships the programmer can navigate between any pair of entities, possibly by a number of different routes. One of the aims of drawing a clear diagram should be to include only the minimum number of relationships needed to apply all the business rules relating to the data. Any unnecessary relationships are called redundant and will involve a maintenance overhead if implemented in the final system Country Name Population 1 lies in N Person Name Adress Phone email Town 1 is major of 1 Name Location Population Figure F3-17: Example for a ER-Diagram 66 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-17 shows a simple example of an ER-diagram. Each of the entities, person, town and country is represented by a rectangle showing the entity’s name and its attributes listed below the name. The lines with the diamond between the entities represent the relationships. The diamonds name the relationships. Since one town always has exactly one major, there is a 1:1 relationship between a person and a town. However, it is possible that many towns are located in the same country and therefore, this has to be a 1:n relationship, which is illustrated via the "crows feet". 67 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.2.4 Structured Query Language SQL (an acronym for Structured Query Language and pronounced "ess-cue-el" or "sequel") is a standard interactive and programming language for updating and getting information from a database. As SQL is both an ANSI (American National Standards Institute) and an ISO (International Organization for Standardization) standard, many database products support SQL, but often with proprietary extensions to the standard language. Queries take the form of a command language that lets the user select, insert, update, find out the location of data, and so forth. There is also a programming interface. SQL was ratified as a standard by ANSI in 1986 (at a time when it mainly consisted of the IBM dialect of SQL) and was later also accepted by ISO. From an application programmer's point of view, the biggest innovation in the relational database environment is that one uses a declarative query language, namely SQL. Most computer languages used to be procedural, where the programmer tells the computer what to do, step by step, specifying a procedure. In SQL, the programmer says "I want data that meet the following criteria" and the RDBMS (Relational Database Management System) query planner figures out how to get it. There are two advantages of using a declarative language. The first is that the queries no longer depend on the data representation. The RDBMS is free to store data however it wants. The second is increased software reliability. It is much harder to have "a little bug" in an SQL query than in a procedural program. SQL History Originally, SQL was intended to be a language for managing relational data, but up to now the standard has developed so that it is no longer really relational. Therefore, the term "managing SQL-Data" is used instead. The starting point of the SQL development was already set from E.F. Codd in 1970 [Codd (1970)] when the relational database model was introduced. Starting from that paper, the development of relational DB technology involved the design and implementation of a number of relational languages, like the SEQUEL (Structured English Query Language) which was a commercial success of IBM. SEQUEL was developed further and its name was changed to SQL. Finally, IBM and other vendors brought SQL-based DBMSs to market, such as DB2 [link: DB2], Sybase [link: Sybase] or Oracle [link: Oracle, Corp]. Today, one will certainly find more than 100 products on the market that all support some dialect of SQL, running on different platforms and machines. Therefore, it is considered that SQL has become the de-facto standard in the database world. However, it is important to notice that the original standard ANSI version of SQL was known as SQL/86, which has been refined and extended till the early 1990s, resulting in ISO and ANSI announcing the SQL/92-standard, which is normally referred to as "the SQL standard" today [link: Greenspun]. 68 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification SQL Organization SQL is composed of a data definition language, a data manipulation language, and a control language. Using these three parts of the language ensures support of all kinds of relational data processing [Sayles (1988)]. Data Definition Language The data definition language allows creation, deletion and modification of data structures, including databases, tables and indexes. Example commands in the data definition language are: CREATE: CREATE TABLE "UserDataBeanTable" ("theUserName" VARCHAR(255) , "theUserPassword" VARCHAR(255), CONSTRAINT "pk_UserDataBeanTable" PRIMARY KEY ("theUserName")) This command will create a table called UserDataBeanTable with the attributes theUserName and theUserPassword having theUserName as primary key. Both attributes are of type String with a maximum size of 255 characters. DROP: DROP TABLE "UserDataBeanTable" This will simply delete the table called UserDataBeanTable. ALTER: ALTER TABLE "UserDataBeanTable" ADD ("Institute", VARCHAR(255)) Executing this statement will affect the UserDataBeanTable in a way that an attribute called Institute (of type VARCHAR) is added to the table. Data Manipulation Language The data manipulation language is divided into three types of commands: retrieving, manipulating and updating of data. Retrieving data means querying the database and obtaining the desired data elements from different tables. Data manipulation commands allow to perform statistical functions on data (such as calculating averages or sums of columns) or other mathematical functions. To update data means inserting and/or deleting rows in tables or changing values in columns of a table, hence doing database maintenance. 69 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Examples for data manipulation commands are: SELECT: SELECT "theUserName" FROM "UserDataBeanTable" WHERE "theUserName" = "Max" This statement will find all rows in the UserDataBeanTable where the theUserName is exactly equivalent to "Max". SQL it seems, is to be quite easy to read, but this is only true for very simple statements. As soon as lines get longer, it starts getting tuff for humans to read them. UPDATE: UPDATE "UserDataBeanTable" SET "theUserPassword" = "123" WHERE "theUserName" = "Max" This command is used to set the password attribute of the user "Max" to "123" (on the condition that the user who states that command has the rights to do this, of course). INSERT: INSERT INTO "UserDataBeanTable" ("theUserName" , "theUserPassword") VALUES ("Max" , "123") Using the INSERT command, a user can create a new entity in the database table. The above statement will create a new user named "Max" in the UserDataBeanTable, having a password "123". DELETE: DELETE FROM "UserDataBeanTable" WHERE "theUserName" = "Max" This will delete all users named "Max" from the UserDataBeanTable (on the condition that the user who states that command has the rights to do this). Data Control Language Data control statements allow the definition of security mechanisms to protect data from unauthorized access. These statements consist of granting and revoking commands that will change access privileges for any user on any data object of the databases system. Examples for data control commands are: GRANT: GRANT CREATE SESSION to Max GRANT executive to Max with ADMIN OPTION 70 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification The GRANT command is a very powerful command that is based on assigning database users to predefined roles. These roles include certain rights that are bound to the database, like the above executive role that allows the user Max to exercise any privileges in the role’s domain, including the CREATE TABLE system privilege. In addition to that, the ADMIN OPTION allows the user to GRANT and REVOKE the role from and to users. The first GRANT statement above allows the user Max to access the database, thus creating a session. Without a right like that, a user will never have access to a table. REVOKE: REVOKE executive FROM Max REVOKE DROP ANY TABLE FROM Max REVOKE CREATE TABLE SPACE FROM executive The first command will remove the user Max from the executive role. Max will no longer be able to exercise any privileges in the role’s domain, whereas the second command will only cancel the user’s right to drop a table. It is also possible to modify a role’s rights using the GRANT and REVOKE commands (as in the third example above), thus affecting the rights of all users assigned to that role. There are several hundred books available about SQL, but the main focus of this diploma thesis is not on SQL, therefore no further description is given on SQL here. In Appendix A "Part IV: General References" there is a list of suggested SQL Books. 71 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.2.5 CAMIS Database Model To satisfy the needs of CAMIS, a relational Database model is used (as described in Chapter 3.2.1). The database consists of four main tables and four "helper-tables" that are needed in the back-end-tier as listed below. All relations between tables are explained later in this chapter and are illustrated in the Entity-Relationship-Model in figure F3-18. • • • • the UserData-Table the Dialogue-Table with its helper table Dialogue-Element-Table the Session-Table the META-DataDictionary-Table with its helper tables DataField-Table, DatabasesTable and DataTypes-Table User Data Table The UserData-Table holds all information about the persons who will be allowed to use the system (referred to as "users"). Therefore, a name, a password, a UserID and additional information (like department, function, and main interests) are attributes in the UserData-Table. This table will be consulted by the Login-Servlet using an EJB whenever a user wants to access the system and therefore tries to login (refer to Chapter 3.4.1 for more information about Servlets CAMIS uses). In addition to that, also the ITS will access this information to evaluate the initial question for the user reflecting upon his profile. The primary key in this table is the User-ID, which is created by the system administrator when the user is created in the database table for the first time. Dialogue-Table and Dialogue-Element-Table The Dialogue-Table is used to store all dialogues a user creates. A row in the DialoqueTable holds a unique DialoqueID (as primary key), a DialoqueStatus and a UserID (as a foreign key). A new entry in this table and therefore a new DialoqueID is created whenever a user creates a new dialogue. This is the case either when the user chooses to create a completely new dialogue or when the user selects an old dialogue to be re-used or modified. The DialogueID is a simple Integer number that is continuously incremented every time a new dialogue is created. To ensure that a user may resume any open dialogue or clone any old (already closed) dialogue and to be sure to keep track of any dialogue a user executes, a DialogueElement-Table is needed to hold all question-answer pairs (referred to as DialogueElement) created during a session. Each time a user returns an answer to the system, a new DialogueElement is added to the DialogueTable. A row in this table contains a DialogueElementID (as primary key) and a DialogueID (as secondary key). The DialogueElementID is created in the very same way as the DialogueID, although they are not identical, of course. As an additional attribute, the DialogueElementTable also holds a FactObject, which stores information about how a user has answered a specific question. This way, a dialogue may always be reproduced and/or modified in future sessions. It might also be the case that a dialogue behaves in a different manner after the META Data Dictionary has been altered. This is quite clear when considering the fact that the DDIC is a knowledge repository to the whole system. 72 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-18: ´The CAMIS ERM for User-relevant Tables Session-Table A Session-Table is used to keep track of the usage of the system by authorized users. Each time a user logs into the system, a new entry is created and a unique SessionID (the primary key in this table) is stored. The SessionID is created using the session-context that automatically has been created by the Login-Servlet (see Chapter 3.1.4 for more information about session tracking with servlets). In addition to that, the SessionTable carries the following attributes: An OpenedTimeStamp that stores the date and the exact time (taken from the server’s internal hardware clock) when the user started the specified session. The ClosedTimeStamp will hold the time when the session was closed (either because the user explicitly closed his session or a time-out occurred). The DialogueID attribute is used as foreign key within the Session-Table. META-Data-Dictionary-Table and its helper tables The DataDictionary-Table (called DDIC-Table in Figure F3-19) may be seen as the "knowledge repository" of the whole system. It is also referred to as "META Data Dictionary" (or in short just MDD); it stores all questions that could be presented to the user and reflects all data sources available at the KAGES. It carries a unique DDIC_ID that is assigned by the person who administrates that databases and builds its contents. This ID is used as a primary key to the META Data Dictionary. The additional attributes in this table, DDIC_short and DDIC_long, hold descriptions of possible questions a user could ask. For example, in a specific row, DDIC_long could read "diagnosis" and DDIC_short could be "DIA". This would mean that the user could ask the system to look for any diagosis-type, which will have to be specified in further detail. CAMIS then uses the META-Data-Dictionary to see where it can 73 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification find more information about types of diagnosis. This is where the relationships of the DDICTable to its helper tables gain importance. One could also say that the DDIC Table not really holds questions, but facts. The main function of the META Data Dictionary is to be an information source that helps to give an answer to the question where to find what within the KAGES information repository. The helper table DataFieldTable holds information about the fairly abstract definition of a DDIC entity given above, thus providing a more specific implementation of a fact. The DataField ID (DFLD_ID) is used as primary key and is created by the database administrator when creating the entry in the table. The DataField Name (DFLD_name) obviously holds a descriptive name of a fact, like "diagnosis", whereas the attributes DFLD_first (DataField First) and DFLD_last (DataField Last) specify a range of valid values for this very entry of a fact. This range is used as a constraint to a DataFieldTable element. For example, a data field could hold an entry that specifies an age of a patient, therefore a constraint must apply to that data field - in a way that a human being cannot have a negative number in his/her age or will very improbably have an age above 110 years. These constraint fields are needed, because they will deliver valuable information when creating the dynamic HTML response for to the browser (in a way that a JavaScript function may check the user’s input in a field that applies to a constraint). This is also considered as a good way of avoiding "silly" input from the user. The attribute DFLD_list will hold information whenever the stored fact is of a LIST type, providing more information about the structure of that list. For example, a physical examination type is most likely mapped to various shortcuts that correspond to a range of techniques used for that type of examination. This way, CAMIS gives the MD the chance to either use shortcuts as an entry in the HTML form or investigate the full text description of a specific examination type. Figure F3-19: The CAMIS ERM concerning the META Data Dictionary 74 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Finally, there are three attributes used as foreign keys within the DataField Table (the corresponding relations are described below). The DB_ID (Database ID) specifies a database of the KAGES system in which CAMIS will find more information about the selected fact. In addition to that, when CAMIS looks for a specific attribute in an external database via the DB_ID, it also has to know the data type of the attribute, because otherwise it would not be able to read its contents properly. Therefore, the DType_ID specifies the datatype of the corresponding attribute in the database DB_ID, carrying the type (DType_short) and the size (DType_size) of the attribute. For example, DType_short clould hold the specifier "Integer", "Char" or "String". It might be important to notice that the DDICTable is the only table in the system that is not modified by CAMIS application components, but by database administration tools only. Relations The CAMIS ERM is in third formal form (as explained in chapter 3.2.1), and sticking to what has been said in chapter 3.2.3, only 1:n relationships exist in the shown in figure F3-18. Starting at the UserDataTable, it is very easy to see that one specific user may have (therefore is related to) a number (one or more) dialogues. A dialogue, again, has a number of DialogueElements and also may have a number of sessions. Its very easy to understand that one specific dialogue may have a number of sessions: A user might have chosen to continue an old dialogue and in this case, no new DialogueID is created, but a new session will be added to the Session-Table, thus being related to the very same dialogue. From the DataDictionary-Table’s point of view, a DDICTable entity may have a number of concrete implementations, using the DDIC_ID as foreign key in the DataField Table. One specific KAGES Database will have a number of related rows in the DataField table, too, therefore using a 1:n relationship via the foreign key DB_ID within the DataField Table. (It is obvious that one specific row in the DataFieldTable may only correspond to one specific Database in the KAGES system). The DType_ID in the DataFieldTable will of course only be related to one specific datatype, whereas one datatype may correspond to a number of entries within the DataField Table, therefore a 1:n relationship is applied here, too. 75 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.3 Intelligent Tutoring Systems A core part of CAMIS is the Intelligent Tutoring System (ITS) which evaluates the questions to be presented to the user by interrelating a lot of parameters. The ITS represents a part of the CAMIS Business Logic implemented in the Business Tier. Before describing the CAMIS ITS, an overview of Intelligent Tutoring Systems is given first (the CAMIS ITS itself is described in Chapter 4.2.2). 3.3.1 What is an ITS? The developments of Intelligent Tutoring Systems have to be seen in the context of Artificial Intelligence (AI) and cognitivistic educational theory. Until very recently, workers in the AI community have performed the majority of work on ITS with little interaction with educational researchers. Although there was great enthusiasm for the prospects of ITS throughout the 1970's and into the 1980's, this excitement has recently waned. A number of developments in both AI and educational psychology have caused many to forsake ITS. Some consider them an embarrassing reminder of the naive enthusiasm both disciplines had, preferring to concentrate on issues such as the use of standard computer software as cognitive tools. However, it may be premature to dismiss ITS as a dead end [Link: Urban-Lurain]. Intelligent Tutoring Systems are remarkable with regard to their methods and the fundamental theories used. Their origin comes from the field of Computer Assisted Learning and can also be found in the Artificial Intelligence (AI) movement of the late 1950's and early 1960's. Then, workers such as Alan Turing, Marvin Minsky, John McCarthy and Allen Newell thought that computers that could "think" as humans do were just around the corner. Many thought that the main constraint on this goal was the creation of faster, bigger computers. It seemed reasonable to assume that, once we created machines that could think, they could perform any task we associate with human thought, such as instruction. Generally the "Intelligence" in ITS is traced back to Carbonell in 1970. Carbonells prototype SCHOLAR, which was actually an interactive program for computer-aided instruction based on semantic networks as the representation of knowledge, was primarily designed for learning geography. He implemented a socratic dialogue in an artificial tutor [Holzinger (2000b)]. ITS generally provide a high level of guidance and control interactive processes in great detail. Possible navigation decisions by the users are controlled by the system. The programmer has to know in advance what type of user responses are possible and decide what information the system would then present. There is no clear border between adaptive systems and those generally called ITS [Sleeman & Brown (1982)]. The term "Intelligent Tutoring System" was coined to describe these new and evolving systems in the 1980’s to distinguish them from the previous CAI systems. The implicit assumption about the user focuses on "learning-by-doing". Recently, ideas from both intelligent tutoring systems and from hypermedia have been brought together. This has lead to interactive and adaptive hypermedia, which are used in the system. This synthesis responds to the specific strengths and weaknesses of both approaches. A domain model representing all facts of the field to be learnt usually forms the background for a model of the learner's knowledge and knowledge acquisition. [Holzinger (1999)] 76 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.3.2 The Problematic of Intelligence Constant misuse and misinterpretation of the term "intelligence" and in particular "artificial intelligence" has made it increasingly undesirable to label systems with this designation. During the 1980's, computer scientists specializing in AI continued to focus on the problems of natural language, student models, and deduction. However, the field also attracted researchers from outside the computer science discipline, most notably John Anderson. Anderson was working in cognitive science, developing the Adaptive Control of Thought (ACT) theory of cognition [Anderson (1983)]. Table T3-5 summarizes the ACT principles and their implications for ITS [Corbett and Anderson (1992)]. Although Anderson and his colleagues created ACT as a cognitive theory, they believed that it was rigorous enough to test by implementing the principles in computer software. When doing so, Corbett and Anderson compared the actual steps the users took with a model that drew a plan of how to solve a specific problem. This monitoring and remediating process was called "knowledge tracing". Their goal was a mastery model, where every user masters 95% of the rules for a given set of tasks before moving to the next section. Corbett and Anderson found that users who were working with their Intelligent Tutoring System called "LISPITS" (LISP Intelligent Tutoring System) completed the mastery model exercises considerably faster than users who worked without an ITS, but not as fast as people who worked with human tutors. ACT Assumptions Corresponding Tutoring Principles Problem-solving behavior is goal driven Communicate the goal structure underlying the problem-solving task. Declarative and procedural knowledge are separate. The units of procedural knowledge are IF-THEN rules called Represent the student’s knowledge as a production set. productions. Initial performance of a task is Provide instruction in the problem-solving accomplished by applying weak (general) procedures to declarative knowledge structures. context; let student’s knowledge develop through successive approximations to the target skill. As a result of additional practice, productions can be chained together into Adjust the step size of instruction as learning progresses. larger-scale productions. The student maintains the current state of Minimize working memory load. the problem in a limited capacity working memory. Table T3-5: ACT assumptions and related principles for a computer-implemented tutor. 77 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Anderson's name has become synonymous with ITS work insofar as people often speak of "Anderson-style tutors" [Chipman (1993)]. Perhaps this is because his systems are some of the few that have actually been used in classroom settings and were not solely research projects. By the mid-1980's, ITS began to move out of the AI laboratories into classrooms and other instructional settings and they began to attract critical reactions. Some shortcomings of ITS became apparent as researchers realized that the problems associated with creating ITS were more intractable than they had originally anticipated. Rosenberg notes that most papers about ITS make few references to the education literature; the majority is grounded in the computing literature. He asserts that much ITS work suffers from two major flaws: a) The systems are not grounded in a substantiated model of learning. Model formulation should be preceded by protocol analysis, but very little analysis is done, almost none of it qualitative. The administrators and the users who will use the systems should validate ITS models, but ITS researchers do not appear to consult these experts. b) Testing is incomplete, inconclusive, or in some cases totally lacking. Data on computerized tutorials is, at best, mixed. The almost universally positive claims for ITS and other computerized instructional systems - most notable in the education literature - are based on results from severely flawed tests. [Rosenberg (1987)]. It was obvious that the basic premises of ITS research needed revision. There were two opposing views of ITS: the traditional view of computers as instructional delivery devices and the emerging view of computers as a tool for exploratory learning. Wenger claims that by viewing ITS as knowledge communication tools it is possible to merge these apparently opposing views of ITS [Wenger (1987)]. It is common and accepted within the scientific community to refer to an "Intelligent Tutoring System" if the system is able to a) build a more or less sophisticated model of cognitive processes, b) adapt this processes consecutively and c) based on these fundamentals to control an question-answer-interaction For CAMIS, the basics of Intelligent Tutoring Systems are most suitable. 78 Chapter 3 - CAMIS Specification CAMIS - HCI in Medical Informatics 3.3.3 Interface and Interaction Primarily, an ITS should be able to analyze the current process of knowledge acquisition. Based on this information the ITS should be able to build instructions for the user. An ITS is generally considered to be "intelligent", if it is able to react to the process of communication in a flexible and adaptive manner. The interface allows communication between the user and the other aspects of the ITS. Here, research from the human factors and software design disciplines is applicable, but the pedagogical implications of an ITS interface must also be considered. Wenger suggests that the goal of knowledge communication requires that the interface contains a discourse model to resolve ambiguities in the user’s responses. Since the user is most likely to provide incomplete or contradictory responses when stymied, providing a properly supportive response is important. This helps the ITS avoid redundant presentations and enhances instruction. The other facet of the interface is knowledge presentation. If a system merely makes knowledge available, it becomes a knowledge exploration environment. Such systems place all the responsibility for learning upon the user, who must navigate through the knowledge using the interface provided. For knowledge communication to take place - even in an exploratory environment - an ITS must provide some coaching or guidance to prevent the user from foundering or missing important aspects of the domain. The desire for ITS to provide more active guidance or tutoring raises the specter of ITS replacing human tutors, a topic that always prompts impassioned discussion [Epstein and Hillegeist (1990)]. However, Wenger points out that replacing human tutors is not to be the issue: The anthropomorphic view that more intelligence for systems means more humanlike capabilities can be as much of a distraction as it is an inspiration. Indeed, the communication environment created by two people and that created by a person and a machine is not likely to be the same. The terms of the cooperation required for successful communication may differ in fundamental ways. Hence, computational models of knowledge communication will require new theories of knowledge communication, as computer-based systems evolve and as research in artificial intelligence and related disciplines provides more powerful models. Kearsley distinguishes basically between five different types of interfaces for IT-Systems [Kearsley (1987)]: 1) socratic dialogue 2) coaching 3) debugging 4) microworlds 5) explainable expert-systems. In CAMIS the principles of the "socratic dialogue" are used. The system questions the user on the basis of the questions and answers so the system guides the user through a controlled interaction. A specific answer of the user is a starting point for the next question. The interaction happens close to a natural-language dialogue [Kearsley (1993)]. 79 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.3.4 ITS Conclusion Considering Wenger's daunting framework, one might conclude that ITS are impossible to create. However, the prospects for ITS may not be so bleak. Donald and De Kerckhove claim that global computer and video networks are further accelerating the pace of change and that the role of the individual mind is changing in ways that we cannot yet predict [Donald (1991), De Kerckhove (1995)]. These changes are reflected in the evolving cognitive theories that we have seen in the past thirty years in educational psychology. Consider the impact of written word on our cognitive processes. Reading and writing are now such an integral part of how we learn and think that studying them is now a major avenue for understanding our cognitive process. Just as a better understanding of reading informs our cognitive theories and these theories in turn inform the ways in which we teach reading, so too will understanding the ways in which we interact with evolving knowledge communication systems inform both our theories of cognition and the creation of these systems. Our cognitive theories will need to evolve, not only to describe how we interact with these systems, but in order to accommodate the changes to our cognitive processes that these systems will bring. With an improved understanding of the evolution of our cognitive processes, we will be able to create better knowledge communication systems. In turn, these systems will be built upon the evolving cognitive theories, in addition to computer science theories of information processing. Intelligent Tutoring Systems emerged from Artificial Intelligence at the very time that AI was struggling to transcend the goal of mimicking human intelligence by creating machines that could "think" like humans. As researchers came to grips with the intractable problems of this task, they realized that trying to emulate human cognition with computers was misguided because they assumed that people thought like computers. The resulting crisis provoked a reassessment of AI's goals, allowing researchers to begin making progress in areas such as expert systems. Expert systems research was productive because it concentrated on systems that were useful in their right, rather than attempting to create "thinking" machines. However, this shift in focus prompted many to lose interest in ITS. At the same time, educational psychology was undergoing a paradigm shift from behaviorism towards cognition, constructivism, and socially situated learning. This revolution prompted many educators to question the practices that evolved during the post-war education boom. ITS technology, much of which was grounded in the behaviorism of CAI, lost favor. It might appear that ITS are doomed to become a footnote in the history of both computer science and educational psychology. However, the prospect of applying the rapidly expanding power of computers not just to information management, but to knowledge communication, is too appealing to allow us to dismiss ITS research just yet. Combining Wenger's framework with a global perspective such as that suggested by Donald provides one possible avenue for developing the necessary interdisciplinary theories upon which new research and ITS can be developed. Moving towards a cognitive understanding of productive communication environments is likely to be fruitful for both ITS and educational researchers. In this way we may be able to create the theories and technology required making the dream of intelligent knowledge communication systems a reality. 80 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification 3.4 CAMIS Application Components As already mentioned in chapter 3.1.1, a wide variety of application components can be used within the J2EE environment. In CAMIS, we used Java Servlets, HTML Files and Java Entity Beans. Although the terms Session and Dialogue already have been defined in chapter 2.4, it is important to be aware of the exact difference between Session and Dialogue in the following context, before describing the different application components used in CAMIS. A new Session is created each time a user logs in the system. That means that a new Session-ID is created within the Session Database whenever a user is authenticated successfully. A Session will either be closed when a user logs out explicitly or whenever a time-out occurs on the server (due to long user inactivity). It is not possible to carry on with an old session as soon as a logout takes place on the server. In this case, a user would have to "resume an open dialogue" (see below). Therefore, a Session is defined as a specific period of time a user uses the system without interruption. An interruption is defined as a specific period of inactivity so that a time-out is triggered on the server. Contradictory to a Session, a Dialogue is defined as a set of questions and answers that evolved between the user and the system itself. The result of a dialogue is a well-defined question that can be translated into an SQL Query String for the KAGES Database. This set of questions and answers is needed to find out what the user is actually looking for (we have to keep in mind that we cannot use an ordinary database interface, because we have to assume that the user does not know how to browse databases). A Dialogue is defined as closed under the following circumstances: Either, a user explicitly closes a dialogue, because he decides that the set of questions is precisely enough to fulfill his needs, or the system closes the dialogue, because the Intelligent Tutoring System (ITS - described in Chapter 4.2.2) does not have any further questions available for the user. In any case, a dialogue will never be closed due to a session time-out. In case a session time-out occurs, the dialogue itself will be kept "open" in the Dialogue-database and may be resumed at any time (see below). 3.4.1 CAMIS Servlets There are three different servlets defined within the CAMIS project: The Login-Servlet, the Dialogue-Servlet and the Admin-Servlet. Each Servlet offers it’s very own service and is called from the clients side via HTML Forms. The Login-Servlet is called from the "login-page" (which in fact is an ordinary HTMLFile containing a form) and takes a username and a password as parameters. The Servlet will authenticate the user’s rights by consulting the user-database via an EJB. In case a user logs in successfully, the Login-Servlet creates a unique SessionID and a Session Context automatically. The SessionID is stored in the Session-Database (refer to chapter 3.1.4 for more information about Session Contexts created by servlets). Finally, the Login-Servlet will deliver a startpage (see figure F3-20) back to the HTTP server. (The start page is simply read from the server’s template directory.) As a result, the client receives a page that lists all previous dialogues that have been created by the user and gives different choices how to go on (a more detailed description of the user interface can be found in chapter 4.3). 81 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification Figure F3-20: The User’s Personal Start Page Whenever a user chooses to go on and either creates a new dialogue or reuses and old dialogue, control is passed to the Dialogue-Servlet that is responsible for communicating with the ITS on the one side and with the client on the other side. The Dialogue-Servlet will take the session context from the Login-Servlet, thus keeping track of the user during the whole session. By consulting the user database, the servlet also knows about preferences of the user which may affect the ITS’ behavior. This will help to find the initial question that is passed to the user’s browser as HTML file (which is created by the dialogue-servlet described in chapter 4.2.1). The servlet might also create a new Dialogue-ID in the Dialogue-Database (in case the user has chosen to create a new dialogue or clone an old dialogue). The first question page contains a HTML form that again is targeting onto the DialogueServlet, which will pass the answer (as a new fact) to the ITS. The ITS will evaluate the next question to be presented to the user and delivers the information needed for the DialogueServlet to build the proper JAVAScript code (that is inserted into the HTML template for the next question-page). In addition to that, the Dialogue-Servlet also accesses the Dialogue-Element-Database and stores any new fact-object of the current dialogue by using an EJB (that is bound to the Dialogue-Element-Database). The dialogue may be "closed" (or "finished") by the user at any time. However, the system itself may also close a dialogue as soon as the ITS cannot evaluate a "next question" (because there are no more options available, for example). In this case, a SQL query string will be cre82 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification ated by CAMIS to be used as an input for the KAGES database (as soon as there is an interface from another application that is able to pick up this string). In the CAMIS prototype, the SQL string is simply embedded into a HTML "result" File and written back to the user. The Admin-Servlet may be seen as a future aspect of the whole project. It is planned to implement a web-based interface that allows database administration from a web browser. The idea is that an administrator would have the possibility to access the user database via this interface using the Admin-servlet without having proprietary database management tools at hand. The Admin servlet is not described in further detail, here. 3.4.2 CAMIS Enterprise JavaBeans In CAMIS, two different types of Enterprise JAVA Beans are used: Entity JavaBeans and Session JavaBeans (a detailed description of Enterprise Java Beans has been given in chapter 3.1.5). Entity Java Beans are used to represent rows in various databases and provide access to these databases to the CAMIS servlets (and their threads) that will run on the server during the system’s execution. Entity Java Beans An EJB class will be needed to access the User Database, for example, and another Bean class will be bound to the dialogue Elements Database. At least one Bean class will be needed to access the MDD, and so forth. This means that every piece of information which is needed to be kept persistent in a database will be passed to an Entity JavaBean. This guarantees that a servlet itself does not have to care about various data sources and that the system itself is kept modular, allowing changes to be done easily in small pieces of code. This is considered to be a big advantage of this approach. Stateful Session Beans Most parts of the CAMIS Business logic (the middle tier in terms of the multi-tier application approach) are implemented as Stateful Session Beans (Session Beans are explained in chapter 3.1.5). In extension to "ordinary" session beans, it is possible to keep some businessstate in memory by using Stateful Session Beans. These types of beans contain member-variables within the Session Bean object that keep their contents as long as the bean "lives" within the bean container. This ensures that any information acquired in a previous access to the bean remains "saved" until the Dialogue-Servlet (or any other CAMIS component) does the next access to the bean. This mechanism is needed, because the ITS has to be implemented as a stateful component, due to the fact that any previous action that has been taken by the user will affect the decision the ITS has to take. In addition to that, even facts that come from the "outside world" might influence the ITS’ internal state (see "the real world module" in chapter 4.2.4). In contradiction to a entity bean, a session bean will be "killed" as soon as the session context of the user is no longer valid, therefore also eliminating the state of the business logic of this very session. 83 CAMIS - HCI in Medical Informatics Chapter 3 - CAMIS Specification The fact that a stateful session bean disappears from the server’s memory as soon as a session is ended implies that a new instance of every single session bean has to be created for every user. This is very interesting when comparing this to a servlet which is only instantiated once, but creates a number of threads - one for each client accessing the servlet. The very same thing said about entity beans above also applies for session beans here: Using this technology gives the developer the chance to modify and/or extend the system with more (or a better) business logic without having to interfere with the client’s side. 84 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation 4 Implementation 4.1 General Objectives As already mentioned in the previous chapters, the main goal of this thesis was not the implementation of a fully functional application, but to point out a guideline of how a system like CAMIS should work. Therefore, a detailed analysis of the system’s requirements and prerequisites was given in the earlier chapters. In order to be prepared for an upcoming implementation project that will deliver a running version of CAMIS, a plan of the application’s specification was drawn in chapter 3, giving a pretty detailed view of the main components in chapter 3.4. The only thing that was still missing up to now is a detailed portrayal of the application design that give any programming team a good guideline for a successful implementation. Therefore, the following chapters describe the application framework using UML component diagrams that characterize the CAMIS components to a further specific extend. Starting with the CAMIS application below, the ITS and its components are visualized in chapter 4.2.2. In chapter 4.2.there is a guideline for the MDD and finally in chapter 4.2.4, the real world module is taken care of. Figure F4-1: CAMIS application framework 85 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation The CAMIS user interface has been roughly implemented on the basis of this thesis, ensuring that the HCI aspects considered to be important will also be reflected in the final application. So the most important parts of the user interface are described in chapter 4.3, but being limited to the implementation of the HTML templates that have been described in chapter 2.3.1. 4.2 CAMIS Application Framework The CAMIS application framework is based on the Java 2 Enterprise Edition (J2EE) from Sun Microsystems [link: J2EE] and consists of four major parts: • The CAMIS application • The Intelligent Tutoring System • The META-Data Dictionary • The "real world" Figures F4-1 to F4-3 visualize the CAMIS application framework using UML components diagrams. Each diagram focuses on one specific part of the whole framework. At the end of this document, the complete framework is illustrated in a greater detail (see figure F4-4). The following subchapters describe every single part of the application framework. 4.2.1 The CAMIS Application Based on the J2EE technology, the CAMIS application (illustrated as the yellow part in figure F4-1) may be divided into several logical components that are defined as follows: The web browser is working as a "thin client" and is therefore not providing any built-in business logic or algorithms. It is just used to send information to the server and to visualize the results delivered by CAMIS in HTML format. The web browser is sending requests to the HTTP server and invokes a servlet on the server itself using a simple HTML form using a GET or POST action tag. The servlet running on the server may also be seen as a part of the client-tier (in terms of CAMIS being a multi-tier application), because it is a client of the business-logic (which is the middle tier, implemented by Enterprise Java Beans – see below). The result of any action submitted from the web browser is sent back to the client via the HTTP server, but is created and delivered from the servlet. As already mentioned before in chapter 3.4.1, there is not only one servlet running on the server, there are at least two of them that are involved with any user access. The dialogue servlet implements an interface called "setQuestion". This interface is used by the ITS to send new information to the servlet, passing a new question (and facts) to be presented to the user during a dialogue. The EJB container within the application implements an interface "getFact" that is used by the ITS (described below). In addition to that, it also communicates with the Dialogue-Servlet, delivering information about a user and storing database entries for the dialogue database. The container holds various entity beans that represent rows in tables of the user-database. The user database stores information about the registered users (only registered users may access 86 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation Figure F4-2: The CAMIS ITS the system) and their dialogue history. This information also reflects a user profile which is used by the ITS’ Knowledge-Objects (see below for further information about knowledge objects) to evaluate the next question to be presented to the user on this basis. 4.2.2 The CAMIS Intelligent Tutoring System In CAMIS, an ITS is used to evaluate the questions to be presented to the user. The ITS uses a Knowledge-broker, several Knowledge-Objects and an Inference-Engine. In addition to that, there are several interfaces that are used for communication inside and outside the ITS. Knowledge Broker and Knowledge Objects The Knowledge-Broker is a central organizational part of the program that controls all Knowledge Objects. It is implemented as a stateful session bean and receives messages from the CAMIS application and sends messages to the appropriate Knowledge-Objects. The Knowledge-Objects themselves are also implemented as stateful session beans, as well as the Inference-Engine. All these objects represent a core part of the CAMIS business logic. Using the interface "newFact", the CAMIS application (the servlet, to be more specific) sends a new 87 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation fact to the knowledge broker. A new fact will be sent whenever a user gives an answer to a question he/she has been presented with before. This answer is considered to be a new fact for the ITS to be taken into account when evaluating the next action that qualifies to be sent back to the user. To be able to do so, the knowledge broker needs to know what Knowledge-Objects are available in the ITS. Therefore, every active Knowledge-Object will have to register at the Knowledge-Broker first. Doing so, the Knowledge-Broker knows what Knowledge-Objects are available and what they are responsible for. As soon as a new fact arrives, the KnowledgeBroker will pass the new fact to the appropriate Knowledge-Object using the Knowledge-Object’s "message" (msg) interface. In addition to that, the Knowledge-Broker may also "fire" the most recent action, that means that it may trigger the inference engine to deliver the next question to the client. Component Interfaces Any Knowledge-Object that receives a new fact from the knowledge-broker may use either (or all or any combination) of the following interfaces: get fact - implemented by CAMIS application. This interface is used to retrieve any needed information from the user database or to receive information about answers a user delivered to the system as a "new given fact" (e.g. the user specifies the department and therefore the knowledge-object will set a high priority for the specified department within the inference engine’s list - see "inference engine" below). get fact- implemented by the "real world" component. This interface is used to get any needed information "from the world outside", like today’s date or the local time. get fact - from the Meta Data Dictionary (described in greater detail below). refine - implemented by the inference-engine (see below) to pass different levels of priorities to the inference engine. This priorities will have a tremendous impact on what the next question to be presented to the user will be. The big advantage of using Knowledge-Objects has to be seen in scalability. The ITS may be refined by adding new Knowledge-Objects whenever needed. Each Knowledge-Object is responsible for one particular domain of knowledge and will evaluate user-relevant priorities based on what the Knowledge-Object itself "knows" about the user and the dialogue history. Furthermore, it can retrieve new knowledge by accessing other parts of CAMIS - like the Meta Data Dictionary or the user database – via the interfaces described above. Inference Engine The Inference-Engine collects a list of possible questions that qualify to be presented to the user. This list is implemented as a sorted list and will be sorted by priorities, depending on the user’s profile and on the answers the user has given to previous questions. The list of questions is build up by the Knowledge-Objects using the "refine" interface of the Inference-Engine. The engine itself consults the Meta Data Dictionary to get names of lists with relevant actions for the user via the interface "getQuestions" (which is implemented by the Meta Data Dictionary). Via the "refine" interface, the Inference-Engine receives messages from the 88 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation FigureF4-3: The CAMIS ITS and the Meta Data Dictionary Knowledge-Objects that will affect the sorting of the current list of qualified actions. The Knowledge-Broker also controls the Inference-Engine by instructing it to "fire" the next action to the user. This "fire" command will be triggered as soon as all the Knowledge-Objects are finished with their tasks belonging to the most recent action (therefore the Knowledge-Broker needs feedback from the Knowledge-Objects). Whenever the Inference-Engine is instructed to fire the action, it creates JAVA Script code that contains all data needed for the next question page and sends this code back to the CAMIS application. This JavaScript code is the code that fits to the top most item in the inference engine’s list of actions. Whenever more than one question has the same priority, the inference engine picks a question randomly. The CAMIS application (that is the Dialogue-Servlet in this case) then uses an HTML template (stored on the server) and creates the HTML answer by combining the HTML template and the JavaScript code received from the inference engine (as described in chapter 2.3.1). 89 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation 4.2.3 The Meta Data Dictionary The Meta Data Dictionary (MDD) is used to build and reflect a model of all databases currently used at KAGES. Due to the fact that all these databases are different in tables and/or platforms, there was a need for a good representation of what information sources are available to the user. Therefore, the MDD contains tables that represent the structure of the databases currently in use at the hospital’s institutes, like ZRI, Pathology, MRI and neurosurgery. These tables enable the ITS to find out what information sources are available to the user and what the structure of this information looks like. This way, the ITS is able to evaluate new questions that qualify to be asked to the user by retrieving lists of possible questions and/or information sources from the MDD. The MDD may be referred to as "Knowledge Repository", because any alteration of the MDD would have a tremendous impact on the behavior of the whole system. This is a remarkable feature, though, because this makes the system "live" and provides a very nice possibility of adaptation whenever new information sources are available throughout the KAGES. There are EJBs (Entity Java Beans) used in CAMIS to implement the Meta Data Dictionary, whereas the tables themselves are part of a simple relational Databases. At this stage of the project, a simple Microsoft Access database engine is used, but it has to be kept in mind that it is quite easy to replace this database system with any other relational Database that Figure F4-4: The CAMIS Application Framework in Detail 90 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation (preferably) provides a JDBC interface. Via the JDBC-ODBC Bridge (provided with the Java Development Kit) it is no problem to access any other relational database platforms that support ODBC. There are two interfaces implemented in the MDD: getFact – this interface is used by the Knowledge-Objects when they retrieve new facts from the MDD getQuestion – this interface is used by the inference engine get information about questions that qualify to be asked to the user. That way the inference engine consults the MDD to get names of lists for appropriate actions (via these names, the MDD maps the existing database of the KAGES institutes). 4.2.4 The Real World Module The real world component in CAMIS implements an interface to any information that cannot be predicted in any way, but is (or might be) relevant for the ITS evaluation process. Via the "getFact" interface, the Knowledge-Objects implemented in the ITS may request information from the "outside world", like the local time or any other information that is fed into the real world component via external applications or interfaces. Like the Admin-servlet, the RealWorld-Module is only a suggestion for a future extension to the system and is therefore not described in further detail. 91 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation 4.3 Frontend - the User Interface When accessing CAMIS, any user has to log in the system, first. To carry out a successful login, the user must be registered in the UserData-Table as described in chapter 3.2.5. After that, the system will present a list of "personal" dialogues (see figure F3-20 on page 82) to the user that gives three choices: • create a new dialogue • resume an open dialogue • clone an old dialogue 4.3.1 Possible Dialogue Types Creating a new Dialogue means that the user wants to state a new request to the system, because he/she is looking for something he/she has never been looking for before. A new unique Dialogue-ID will be created by the Dialogue-Servlet within the Dialogue-Database and an "initial question” will be presented to the user. This initial question is evaluated by the ITS (consulting the user-database which stores a user-profile). The option to resume on open dialogue will be used whenever a user wants to continue a dialogue that already has been created in a previous session. In this case, it has to be assumed that the user was logged out of the system due to any reasons described above (refer to chapter 2.4 to read more about log-out reasons). The ITS will read and analyze the existing set of questions and answers to evaluate the next question to be presented to the user. Cloning a dialogue will be chosen in two cases: Either the user is looking for something similar he/she was already looking for in a previous dialogue (and just wants to alter the old dialogue without having to run through the whole question-answer-process), or he/she is looking for exactly the same result that was already found before. In any case a new Dialogue-ID will be created, leaving the old Dialogue unchanged. 4.3.2 Possible Questions The CAMIS ITS may choose from a list of questions that can stated to the user depending on his/her profile (and on other criteria like previous facts - see chapter 4.2.2 for info on the ITS) as follows: • • • • • • • dialogue title global orientation on interests clinic location department physical examination type examination shortcut out-patient or clinical patient 92 CAMIS - HCI in Medical Informatics • • • • • Chapter 4 - CAMIS Implementation period of time age of patient sex free text selection assignment In the following, the questions listed above are described in greater detail. Most of the questions are illustrated by figures, starting with figure F4-5. It is very important to notice that the questions are absolutely not unconditionally presented to the user in the order of the above list. It is the ITS that chooses the order of the questions. In this context, it could well be the case that a question might be skipped, because it makes no sense to ask the user for a certain information. (Like asking for the patient’s sex when the MD focuses on uterus examinations.) In a further extend, it might well be the case that the order of the question is revised by the ITS in a way that makes more sense to the user. After having chosen a dialogue-type, the user is asked to enter a unique dialogue title. This should help the user to identify the dialogue in a way that he/she is able to recognize it again in a future session. This ensures that the user will be able to reuse the dialogue whenever needed. FigureF4-5: User Interface - Dialogue Title 93 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation FigureF4-6: User Interface - Global Orientation on Interests The question for a global orientation on interests gives the possibility to limit the dialogue to one of the following topics: anamnesis, specific examination type, a specific patient, complications on examinations, patients with specific post-surgery examination. A clinic-location template will ask the user for the clinic he/she is interested in. The choices that where available at the time of this thesis are: ZRI Graz, pathology Graz, neurosurgery Graz and casualty surgery Graz. These options may be widened at any time, by simply modifying the template and adding new information to the MDD (see chapter 3.2.5 for more information about the MDD). As soon as the ITS knows what clinic the user is interested in, it will offer the possibility to restrict the dialogue on a number of departments (including the one the user belongs to) as illustrated in figure F4-7. On the left side of the screen, there is the "offer" list of available departments, whereas the right side shows the user’s selection. The selection may be changed at any time. All items that are click-selected automatically move to the opposite side, thus providing a very easy and logical method of selection. The questions for the type of a physical examination and an examination shortcut both use the very same interface as the departments question does (therefore this interfaces are not shown in figures). The lists of physical examinations available depend on the answers that were given to the previous questions. The ITS will consult the MDD to find a relevant list that 94 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation FigureF4-7: User Interface - Selection of Departments using Lists fits the user’s profile and his/her interests defined via the fact objects collected so far. The very same applies for examination shortcuts, but with the extension that the list of shortcuts will be affected by the choice of examination types that has been done before. It might be of interest to the MD what type of patient he/she is looking for and therefore it also might make sense to limit the query to patients that are either outpatients or clinical patients. Using radio-buttons as visualized in figure F4-8 does this selection. Under some circumstances this distinction might be irrelevant and therefore also may be skipped. By the way, it is important to notice that the user may always skip any question by simply clicking onto the "continue" button, thus telling the ITS that this question is relevant. Doing so will of course have a tremendous effect on the behavior of the ITS. The period of time interface (figure F4-9) allows the user to select a specific period of time that is desired as another constraint for the query. It is possible to choose from the options current year, last year, the last year including the current year, the last two years including the current year and finally the option to indicate a specific period of time. Concerning a patient’s age, it is a good idea not to ask for a specific age, but for a range of years. That range is simply entered by specifying the upper and the lower limit using two simple text boxes that are being monitored by JavaScripts. These scripts are supposed to prevent the user from entering out of range numbers. 95 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation Asking for the patient’s sex might not always be necessary - as already mentioned above, but still is a very significant criterion in some cases. This question is very simple to be answered and therefore two simple radio buttons are used in the interface. However, it might well be the case that the ITS still asks for a patient‘s sex, although the MD does not want to restrict the query to male or female patients. In this case, the user simply may skip the question, thus stating that it is irrelevant. A very sophisticated feature of CAMIS is offered through the free-text selection page (see figure F4-10). It allows users to enter any text that is intended to fit to the corresponding attributes "diagnosis", "examination text" and "additional remarks" that exist in any database within the KAGES. This feature will mostly be used by MDs who exactly know what they are looking for and who also know how text has been entered in the corresponding databases. (Maybe they know, because they have entered the text by themselves in the past.) Last, but not least, it very often is also interesting where a patient came from. That means to clarify the question from what department or what clinic the patient was sent. This question is answered using an assignment interface that works exactly in the same way like the "selection of departments" does, such using two lists. One list holds the department (or clinic) candidates and the other one shows the user selection. In case the user does not select anything, the ITS will consider this question irrelevant. FigureF4-8: User Interface - Patient Type Selection 96 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation FigureF4-9: User Interface - Time Constraint 4.4 Conclusion Eventually, when the KAGES information system is extended to a countrywide hospital information system, it will no longer be possible to include the whole system information in one human to human consultation call (as it is today). The findings and experiences of this project will lead to a suitable knowledge representation, which provides an interactive dialogue suitable for a much more complex and bigger system. Finally the quality of requests for scientific medical research can be increased by reducing the response-time and lowering the system work load through minimizing iteration cycles. 97 CAMIS - HCI in Medical Informatics Chapter 4 - CAMIS Implementation FigureF4-10: User Interface - Entering Free Text 98 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives 5 Future Perspectives This thesis was primarily focused on a feasibility study for the possibility that a system like CAMIS is put to use in real life. Therefore, in-depth studies were carried out concerning the following aspects: • • • • • • • • • • understand the demands for a medical information system acquire knowledge about the KAGES infrastructure define requirements for the project evaluate suitable development environments and platforms decide for a platform find adequate methods and tools get familiar with the Java 2 Enterprise Edition environment do research on ITS specify and application framework sketch a user interface with respect to well known HCI aspects So what is still left is a proposal for an implementation plan based on what has been done up to now. This proposal is given in the following chapters and is supposed to be an implementation guideline. It can be assumed that a project team will be able to put CAMIS to use in real life by using the information that has been given in this thesis. Dr. Andreas Holzinger of the IMI Graz currently does further research scientific studies, especially on aspects of human computer interaction concerning the CAMIS project. The results of these studies are therefore not part of this theses, but proposals are given in chapter 5.3. 5.1 Project Plan Nowadays, every software project has to be planned thoroughly. The era of the "white paper programmers" is over. Software projects have become much too big and complex to be understood in a whole by a single person. In addition to that, the time that is available for getting a new product ready for the market gets shorter and shorter every year - not to mention the tremendous impact underestimated costs have on the success of a project. Not planning a project and not using enough time for this task would inescapably lead to a complete disaster. The whole project would be a failure and a financial loss. A software project should be divided into several steps (or stages). These stages are called phases. Each phase has a certain name and will hold specific activities that have to be done during a phase. At the end of a phase, it must be possible to identify a result to be able to see whether a phase has been successfully finished or not. These results must explicitly be defined before the beginning of a phase. Preferably, all results of phases should already be clear (at least in a rough context) at the beginning of the project. Dividing a project into phases means splitting it into smaller pieces that can be understood much easier than the whole thing at once. 99 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives Furthermore, project phases allow the working team to approach every problem in a logical and predefined way. With phases, it is possible to control the whole project and to see whether it on still in time (and within costs) or whether it is already out of bounds. At the end of each phase, there must be a meeting of the team to see whether the milestone (that is the result of a phase) has been reached or not. At these meetings, the project manager and his team will have to decide whether to step into the next phase or not. (These are so called "go/no-go") decisions. A software project should be divided into the following phases: A) Planning motivation and starting point definition of system requirements B) Design specification of the system’s framework specification of the system’s components and their interfaces C) Implementation programming work on the system’s components D) Integration assemble all components to a complete application E) Test test the working system (with appropriate real-life data and in real-life circumstances) F) Usage running the system in the real-life application it has been designed for Additionally, it is also possible to add some more phases which need to be added, like a refinement phase. A refinement phase should be considered while planning a project, especially when working in a domain quite unknown. Generally speaking, it is a quite tough job to plan a project and it takes a lot of experience to be able to avoid mortal sins. What makes a good product manager is the ability to adapt project plans while the project itself is already in process. Being able to change plans and to react to new facts that come up during the project is very often essential for success. It is also important to notice that there are different models for approaching a project, like the sequential waterfall model (as stated above), the versions-model and the spiral-model. More detailed information about the different phases of a software project and ways how to crackdown a big project can be found in [Haberfellner (1999)]. 100 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives Sticking to what has been said above and considering CAMIS and J2EE as new technologies, it seems to be a good idea to divide the "big" CAMIS project into smaller project "portions". Each of these portions should be considered as individual projects. The portions suggested are: Developing a prototype, evaluation, refinement, integration into KAGES. 5.2 Developing the Prototype CAMIS is considered a new project in a rather new domain. It is not possible to predict the outcome of the project based on experience, because there is no other project that can be compared to this one within the IMI. Therefore, the project plan described below may only be seen as a first sketch of what has to be done. The timeline indicates a rough idea based on an estimation that was done together with Ing. Andreas Kainz and Dr. Andreas Holzinger. It has to be kept in mind that the project plan will most likely have to be modified during the running project (as it very often has to be done in new project, as already described in chapter 5.1). Figure F5-1 below gives a guideline on what the project’s structure should look like. The different phases are illustrated via colored shapes. The naming "M1" to "M7" mark milestones that require a milestone meeting of the team (as described above). The term "IM3" means that an interim milestone will be necessary to avoid a time period passing too long without any meetings of the project team. System Requirement Detailed Specification Component Test Defintion Rough Specification Implementation Integration M1 M2 IM3 M3 IM4 M4 Motivation & Starting Point System Test Integration Evaluation First Application to be continued based on evaluation results M5 M6 IM7 M7 Figure F5-1: Prototype Project Plan 101 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives Illustrating and planning a project’s progress using the classical "waterfall" model is a very nice thing, because it is easy to understand and it is not too hard to be refined. However, one should be aware of the fact that CAMIS is a fairly new domain. This might cause a waterfall model to fail or - at least - not to be the best way to run the project. Considering these very complex tasks that have to be solved and integrated, a use-case driven iterative process should be taken into account. Probably, a "spiral model" would do better in this case. On the other hand, a spiral model needs a very experienced project manager who also knows how to handle "crisis" situations and how to avoid them. (More information about project models and problems that may arise during a project can be found at [Hubmer (1999)].) In addition to Figure F5-1, Table T5-1 shows how the CAMIS project can evolve and how much time will be needed for each phase. Sticking to what Dr. Heinz Humber said about managing and planning software projects [Hubmer (1999)], the whole project is divided into phases with approriate percentages assigned. Each phase is considered to need a certain amount of time based on the whole project. Therefore, the "System Requirements" phase and the "Feasibility Study" is considered to be the "Analysis" part of the project which should take about 15% of the costs of the project. In this context, the term "costs" does not only mean time, it also means manpower. Therefore, the costs of a project are measured by "weeks of work per person". It is possible to reduce the time needed to bring a phase to a successful end by providing more people who work on the project at the same time. However, it will hardly be possible to reduce the costs of the project. Therefore, it is important to notice that time column given in Table T5-1 displays weeks per person that will be needed to finish the corresponding phase. The specifications phase consists of the "Rough Specification" and the "Detailed Specification" and is assumed to take about 28% of the projects timeline. This is a very critical phase that has to be done and monitored thoroughly. Mistakes that are done during the design phase may easily cause a project to fail - or, at least, they will dramatically increase the project’s costs. Mistakes that are done during an early phase of a project can only be corrected at very high costs (if they remain undetected till any later phases of the project). Each phase has certain requirements. It has to be thoroughly checked and taken care of that these requirements are really there and approved. This is also another reason why a project manager has to be sure that milestone-meetings really take place and that everybody who is involved in the project knows what it is all about. In addition to that it is most critical that a good and complete documentation is available. Every step that is done by any person within the project team has to be documented. Any error that has been detected, any modification, any change request or any milestone result has to be in the documentation. Otherwise, it is very likely that the project team finds itself "lost in code" some day and has to face a lot of expenses to get things right again. 102 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives Project Phase % est. Time Status within Thesis Requirements System Requirements 5 1,2 Chapters 2.2.1, 2.2.2 List of Demands 10 2,4 Chapters 2.2.3, 2.2.4, List of Duties; 2.3, 2.4, 3.1 Tools and Environment Definition Feasibility Study Rough Specification 8 1,9 Chapter s 3.2, 3.3, 3.4 Project Plan Draft Detailed Specification 20 4,8 partly done see Chapter 4 Detailed Project Plan Implementation of Interface 11 2,7 partly done see Chapter 4.3 Confirmed Specification; Refined Project Implementation of Application 16 3,8 partly done during Feasibility Study Plan Component Test 15 3,6 Implemented Components Integration Tested Components; Full Documentation System Test 15 3,6 Working & Tested Product Total 100 24 Table T5-1: CAMIS Project Plan - Timeline Prosposal There are even more phases that will extend the project but have to be considered outside of the "CAMIS Prototype" project and are therefore not shown in Table T5-1. These phases are "First Application", "Evaluation" (as shown in figure F5-1) and "Refinement". Probably there could also be a new project called "extending CAMIS" (see Chapter 5.4). "First Application" will be necessary to see how CAMIS will do in a real life environment application, when MDs use the system in their everyday work. "Evaluation" will be a very important phase to make CAMIS a successful and accepted product. A proposal of how the evaluation phase could work is given in chapter 5.3. At this stage, it is not possible to say anything about the timeframe of these phases. 103 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives 5.3 Evaluation Proposal As already mentioned above, Dr. Andreas Holzinger is doing scientific studies on aspects of human computer interaction concerning the CAMIS project. In this very context, are few proposals on how to evaluate a running application are given here. As an experimental design it might be a good idea to apply a pre-test/post-test controlgroup approach, assisted by qualitative analysis via interviews. The experimental sample to be examined should include 24 people: 12 experts (MD's and qualified hospital personnel as well as biomedical researchers) and 12 novices (students of medicine). The research questions are proposed to be divided into dialogue, usability and learning. The proceeding of the evaluation may contain the following steps: 1) 2) 3) 4) 5) 6) 7) stating a question we want to examine forming a hypothesis pre-test with questionnaires and interviews post-test with questionnaires and interviews Raw-Data-Acquisition in MS Excel doing the statistics in SPSS testing the hypothesis based on the received data via a) verification b) falsification or c) no statement 8) presenting the result 9) interpretation of the result. Different collection of questions should be aggregated, concerning the domains dialogue, usability and learning. The questions could well be like the following lists: Dialogue • Do medical doctors handle the machine-dialogue quicker than they would do a humandialogue provided by an IS-expert? • How fast do users proceed within the dialogue? • At which time does the user quit the dialogue? • Why do the users break off the dialogue ? • How often do users get useless or irrelevant information? Usability • How does the GUI influence the user’s behavior? • Does a familiar web-browser based interface - as applied in CAMIS - support the acceptance of the machine-dialogue? • What is the difference between experts and novices when using the interface? • What screen contents and hints can be useful for novices and which ones for experts? 104 CAMIS - HCI in Medical Informatics Chapter 5 - Future Perspectives Learning • How is learning achievement by using the system? • How does incidental learning [Holzinger and Maurer (1999)] increase the efforts of the users ? • Do the medical doctors gradually use less "silly" questions after they worked with CAMIS? • How does motivation influence necessary actions to keep the dialogue process alive? • Does the CAMIS GUI based dialogue provide enough motivation to keep medical doctors on the session until they finally find relevant data for their specific research? 5.4 Refinement and KAGES Integration Taking into account that the CAMIS project is placed in a fairly unknown domain, one should be aware of the fact that the project plan will be very likely modified during the development of the product. It should be focused on a use-case driven architecture-centered and iterative incremental process in the application development. After having finished the phase of evaluation, it will be necessary to formulate a new project plan that will allow a refinement of the software. This refinement will be needed to remove the problems and shortcomings the team should have acquired during the evaluation phase. In addition to that, some more important value could be added to the project by implementing an interface that would pass the SQL query string to any database systems used within KAGES. Furthermore, it would be very nice to be able to collect all the results delivered from KAGES databases and visualize these results on the screen - again, using a simple HTML Format. Solutions that are based on an idea like that already exist (like the WebObjects Tool from Apple [link: WebObjects]) - therefore it can be considered to be a realistic approach. 105 CAMIS - HCI in Medical Informatics Appendix A: Bibliography Appendix A: Bibliography Part I: Citations • Anderson, J. R.; (1983): „The Architecture of Cognition“; Cambridge, Massachusetts; Harvard University Press • Booch, Grady; (1994): „Object-Oriented Analysis and Design with Applications“; Benjamin/Cummings, 2nd Edition • Chen, P. P. S.; (1976): „The Entity Relationship Model: Towards a Unified View of Data“; In: ACM Trans. On Database Systems; Vol. 1; No. 1; pp 9-36; Association for computer machinery. • Coad, Peter; Mayfield, Mark; Kern, Jonathan (1998): „Java Design: Building Better Apps and Applets“; Prentice Hall Computer Books; ISBN: 0139111816 • Coad, Peter; Lefebvre, Eric; De Luca, Jeff (1999): „Java Modeling In Color With UML: Enterprise Components and Process“; Prentice Hall; ISBN: 013011510X • Codd, E.F. (1970): „A Relational Model of Data for Large Shared Data Banks“; in: communications of the ACM; Vol 13; No. 1; pp 377-387; Baltimore (MD): Association for Computer Machinery • Chipman, S. F.; (1983): „Gazing Once More Into the Silicon Chip: Who's Revolutionary Now?“; In S. P. Lajoie, Ed. & S. J. Derry, Ed (Eds.), Computers as Cognitive Tools (pp. 341-367). Hillsdale, New Jersey: Lawrence Erlbaum Associates, Publishers • Corbett, A. T.; Anderson, J. R. (1992): “LISP intelligent Tutoring System: Research in Skill Acquisition”; In J. H. Larkin & R. W. Chabay (Eds.), Computer-Assisted Instruction and Intelligent Tutoring Systems: Shared Goals and Complementary Approaches (pp. 73109). Hillsdale, New Jersey: Lawrence Erlbaum Associates, Publishers • De Kerckhove, D. (1995): “The Skin of Culture: Investigating the New Electronic Reality”; Toronto: Somerville House Publishing • Donald, M. (1991): “Origins of the modern mind: three stages in the evolutions of culture and cognition”; Cambridge, MA: Harvard University Press • Epstein, K.; Hillegeist, E. (1990): “Intelligent Instructional Systems: Teachers and Computer-Based Intelligent Tutoring Systems”; Educational Technology, 30(11), 13-19. • Flanagan, David et. al. (1999): “Java Enterprise in a Nutshell”; Sebatsopol, CA; O’Reilly, ISBN: 1-56592-483-5 • Fowler, Martin et. al. (1997): “Applying the Standard Object Modeling Language”; Addison-Wesley (out of print) Page A-1 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Haberfellner, Reinhard et. al. (1999): “Systems Engineering”; Zürich; Verlag Industrielle Organisation; ISBN: 385743998X • Holzinger, Andreas (2000b): "Basiswissen Multimedia. Band 2: Lernen”; Vogel-Verlag, Würzburg; ISBN: 3802318579 • Holzinger, Andreas; Gell, Guenther; Maurer Hermann; Kainz Andreas; Brunold, Max (1999): “Interactive Computer Assisted Formulation of Retrieval Requests for a Medical Information System using an Intelligent Tutoring System”; Proceedings to EDMEDIA 2000; Charlotsville: Association of Advancements of Computing in Education; p. 431-436 • Holzinger, A.; Maurer H. (1999) "Incidental learning, motivation and the Tamagotchi Effect: VR-Friends, chances for new ways of learning with computers"; In: CAL99 Abstract Book; p. 70; London: Elsevier. • Hubmer, Heinz (1999) "Managing large Software Projects"; Lecture at the Technical University of Graz; Lecture No. 448.050 • Kappel, Gerti; Hitz, Martin; (1999): „UML@Work“; Wien; Linz: dpunkt.verlag • Hughes, Jon G. (1992): „Objektorientierte Datenbanken“; München, Wien: Carl Hanser Verlag; London: Prentice-Hall • Kearsley, G.P., Ed. (1987): "Artificial Intelligence and Instruction”; Reading (MA): Addison-Wesley. • Kearsley, G.P. (1993): "Intelligent Agents and Instructional Systems: Implications of a New Paradigm”; In: Journal of Artificial Intelligence in Education, 4, 1993, pp. 295-304. • Loidl, Stefan; Rudolph, Ekkart; Hinkel, Ursula (1997): "Msc ‘96 and beyond - a critical look”; In A. Cavalli A. Sarma, editor, SDL Forum 97; Elsevier • Nieslen, Jacob (1993): “Usability Engineering”; Academic Press; ISBN 0125184050 • Postel, Johnathan B.; (1981a): “Internet Protocol - DARPA Internet Program Protocol Specification“; In: Request for Comments: 791; Marina del Rey (CA): University of Southern California / Information Sciences • Postel, Johnathan B.; (1981b): “Transmission Control Protocol - DARPA Internet Program Protocol Specification“; In: Request for Comments: 791; Marina del Rey (CA): University of Southern California / Information Sciences • Rumbaugh, J.; et al (1991): “Object-Oriented Modeling and Design”; Prentice-Hall • Rosenberg, R.; (1987): “A Critical Analysis of Research on Intelligent Tutoring Systems. Educational Technology“; 27(11), 7-13. • Sayles, Jonathan; (1988): "SQL spoken here”; Q E D Pub Co; ISBN: 0894352628 Page A-2 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Shannon, Bill (1999): "Java 2 Platform Enterprise Edition Specification”; Palo Alto, CA; Sun Microsystems, Inc. • Sleeman, D.; Brown, J.S. (1982): "Intelligent Tutoring Systems”; London: Academic Press • Toexcell, Inc.; (1999): „Hypertext Transfer Protocol Http 1.0 Specifications“; iUniverse ISBN: 1583482709 • Wenger, E.; (1987): „Artificial Intelligence and Tutoring Systems: Computational and Cognitive Approaches to the Communication of Knowledge“; Los Altos, CA: Morgan Kaufmann Publishers, Inc. Part II: URLs referred to • ACM, Codd: „A relational Model of Data for Large Shared Data Banks“; (last visited 30/7/2000) http://www.acm.org/classics/nov95/toc.html • Andrews, Keith: „Human Computer Interaction“; (last visited 16/6/2000) http://www.iicm.edu/hci • Atkinson, Malcolm et al.: „The Object-Oriented Database System Manifesto“; (last visited 24/7/2000) http://www.cs.cmu.edu/People/clamen/OODBMS/Manifesto/htManifesto/Manifesto.html • Borland, Inprise Corporation: „Borland JBuilder “; (last visited 15/6/2000) http://netserv.borland.com/jbuilder/ • Borland, JBuilder 3.5 Datasheet: „JBuilder 3.5 Datasheet“; (last visited 15/6/2000) http://www.borland.com/jbuilder/productinfo/datasheet.html • Booch, Grady: „The Booch Method“; (last visited 7/7/2000) http://hepunx.rl.ac.uk/BFROOT/www/doc/workbook/coding/booch/method.html • Cloudscape, Informix: „Cloudscape Product Information“; (last visited 17/7/2000) http://www.cloudscape.com/Products/products.htm • DB2, IBM: „DB2 Product Family Overview“; (last visited 30/7/2000) http://www-4.ibm.com/software/data/db2/ • EJB, Overview: „Enterprise JavaBeans Technology“; (last visited 13/6/2000) http://java.sun.com/products/ejb/index.html • ERM, Overview: „Entity Relationship Modeling“; (last visited 30/7/2000) http://www.soc.staffs.ac.uk/~cmtrmk/ssat/erm/erm1.htm Page A-3 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Greenspun, Philip: „SQL for Web Nerds“; (last visited 30/7/2000) http://www.arsdigita.com/books/sql/ • Holzinger, Andreas: „Multimedial Learning“; (last visited 7/8/2000) http://www-ang.kfunigraz.ac.at/~holzinge/mml/ • Java, Technology: „java.sun.com - The Source for Java Technology“; (last visited 14/7/2000) http://java.sun.com/s/ • Java 2, Definition: „Java 2 Name“; (last visited 16/7/2000) http://java.sun.com/products/jdk/1.2/java2.html • JavaBeans, Overview: „Java Beans Component Architecture for Java Technology“; (last visited 8/7/2000) http://java.sun.com/beans/ • JDBC, API: „JDBC Data Access API“; (last visited 13/6/2000) http://java.sun.com/products/jdbc/ • JDBC, Datasheet: „JDBC Universal Database Access for the Enterprise“; (last visited 13/7/2000) http://java.sun.com/products/jdbc/datasheet.html • JDBC, drivers: „JDBC Technology - Drivers“; (last visited 13/7/2000) http://industry.java.sun.com/products/jdbc/drivers • J2EE, Sun: „JAVA 2 Platform - Enterprise Edition“; (last visited 13/6/2000) http://java.sun.com/j2ee/ • J2EE, Overview: „JAVA 2 Platform - Enterprise Edition - Overview“; (last visited 13/6/2000) http://java.sun.com/j2ee/overview.html • J2EE, DevGuide: „Java 2 Enterprise Edition Developer’s Guide“; (last visited 17/7/2000) http://java.sun.com/j2ee/j2sdkee/devguide1_2_1.pdf • J2EE, SimpleGuide: „Simplified Guide to the Java 2 Platform, Enterprise Edition“; (last visited 18/6/2000) http://java.sun.com/j2ee/j2sdkee/techdocs/guides/j2ee-overview/cover.fm.html • J2SE, Overview: „Java 2 Platform, Standard Edition“; (last visited 16/7/2000) http://java.sun.com/j2se/ Page A-4 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • JSAPI, Overview: „Java Servlet API - The Power Behind the Server”; (last visited 13/6/2000) http://java.sun.com/products/servlet/index.html • JWS, Overview: „Inside the Java Web Server”; (last visited 7/7/2000) http://java.sun.com/features/1997/aug/jws1.html • Kappel, Gerti (1999): “Optimized Communication in Projects Teams using UML”; (last visited 15/6/2000) http://www.kfunigraz.ac.at/imiwww/ak/past_lectures.html • KFU Graz: “Karl-Franzens-Universität Graz, Österreich - University of Graz, Austria”; (last visited 2/7/2000) http://www.kfunigraz.ac.at/ • Netscape, Cookies: “Persistent Client State Http Cookies”; (last visited 21/7/2000) http://home.netscape.com/newsref/std/cookie_spec.html • ODMG: “Object Data Management Group”; (last visited 24/7/2000) http://www.odmg.org/ • OMG: “The Object Management Group”; (last visited 11/7/2000) http://www.omg.org/ • Oracle, 8i Release 3: “Oracle 8i - Database - Oracle Corporation”; (last visited 24/7/2000) http://www.oracle.com/database/oracle8i/index.html • Oracle, Corp: “Oracle Corporation”; (last visited 30/7/2000) http://www.oracle.com/ • Razorfish, Oz Lubling and Leonardo Malave: „Developing Scalable, Reliable, Business Applications with Servlets“; (last visited 2/7/2000) http://developer.java.sun.com/developer/technicalArticles//Servlets/Razor/index.html • RFC959, J. Postel et al (1985): „File Transfer Protocol - FTP“; (last visited 13/6/2000) http://www.cis.ohio-state.edu/htbin/rfc/rfc959.html • RFC1866, T. Berners-Lee, D. Connolly (1995): „Hypertext Markup Language - 2.0“; (last visited 13/6/2000) http://www.cis.ohio-state.edu/htbin/rfc/rfc1866.html • RFC2068, R. Fielding et al (1995): „Hypertext Transfer Protocol -- HTTP/1.1“; (last visited 13/6/2000) http://www.cis.ohio-state.edu/htbin/rfc/rfc2068.html • Siegel, David: „Creating Killer Websites Online“; (last visited 17/6/2000) http://www.killersites.com Page A-5 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Sun, Microsystems Inc: „The Dot Com Developer“; (last visited 13/6/2000) http://www.sun.com • Sun, Microsystems Inc: „J2EE Application Model“; (last visited 15/6/2000) http://java.sun.com/j2ee/images/appmodel.jpg • Sybase, Inc: „Sybase Inc.“; (last visited 30/7/2000) http://www.sybase.com/home/ • TogetherSoft, Corporation: „Together 4 e-solution platform“; (last visited 15/6/2000) http://www.togethersoft.com/together/whatsnew_40.html • TogetherSoft, Peter Coad: „Together: About Peter Coad“; (last visited 20/7/2000) http://www.togethersoft.com/company/coad-bio.html • UML, Modeling: „Using UML for Modeling a Distributed Java Application“; (last visited 11/7/2000) http://www4.informatik.tu-muenchen.de/reports/TUM-I9735.html • UML, Specification: „UML 1.3 Specification“; (last visited 31/7/2000) - pdf File in .zip format http://www.rational.com/uml/resources/documentation/media/ad99-06-08-pdf.zip • Urban-Lurain, Mark: „Intelligent Tutoring Systems - An Historic Review in the Context of the Development of Artificial Intelligence and Educational Psychology“; (last visited 18/6/2000) http://web.cps.msu.edu/~urban/ITS.htm • WebObjects, Apple: „WebObjects Application Server“; (last visited 10/8/2000) http://www.apple.com/webobjects/ Part III: URLs for further information • EJB, Supporters: „Enterprise JavaBeans supporters“; (last visited 8/7/2000) http://java.sun.com/products/ejb/tools1.html • EJB, Background: „Enterprise JavaBeans Technolgy Background“; (last visited 10/7/2000) http://java.sun.com/products/ejb/background.html • J2EE, Simplified Guide to the Java 2 Platform, Enterprise Edition: „Writing Enterprise Applications with Java 2 SDK, Enterprise Edition“; http://java.sun.com/j2ee/j2ee_guide.pdf Page A-6 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • J2EE, Documentation: „Java 2 Platform, Enterprise Edition Documentation“; (last visited 8/7/2000) http://java.sun.com/j2ee/docs.html • JavaBeans, FAQs: „JavaBeans Component Architecture FAQs“; (last visited 10/7/2000) http://java.sun.com/beans/FAQ.html • JDBC, Start: „Getting started with the JDBC API“; (last visited 13/7/2000) http://java.sun.com/j2se/1.3/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html • JDBC, Integration: „Integrating Databases with Java via JDBC“; (last visited 13/7/2000) http://www.javaworld.com/javaworld/jw-05-1996/jw-05-shah.html • JSAPI, Product Info: „Java Servlet API - The Power behind the Server“; (last visited 8/7/2000) http://java.sun.com/products/servlet/ • Servlet Central, Magazine: „Servlet Central - the server-side Java magazine“; (last visited 7/7/2000) http://www.servletcentral.com/ • Tier, Architecture: „3-Tier versus 2-Tier Architecture“; (last visited 11/7/2000) http://www.mgt.buffalo.edu/software/Client_Server/cs3tier.htm • UML, FAQs: „Unified Modeling Language FAQ“; (last visited 11/7/2000) http://microgold.com/Stage/UML_FAQ.html Part IV: General References • Anderson, J. R. (1991): "The place of cognitive architectures in a rational analysis”; In: K. VanLehn (Ed), Architectures for intelligence; Hillsdale (NJ): Erlbaum, pp. 1-24. • Booch, Grady; Jacobson, Ivar; Rumbaugh, James (1998): „The Unified Modeling Language User Guide”; Addison-Wesley Longman, Inc.; ISBN: 0201571684 • Bowman, Judith S.; Emerson, Sandra L.; Darnovsky, Marcy (1996): "The Practical Sql Handbook : Using Structured Query Language”; Addison-Wesley Pub Co; ISBN: 0201447878 • Carlile, S.; Barnet, S.; Sefton, A.; Uther, J. (1998): "Medical problem based learning supported by Intranet technology: a natural student centred approach”; In: International Journal of Medical Informatics 50, p.225 - 233. Page A-7 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Chan, T. W. (1994): "Curriculum tree: a knowledge-based architecture for intelligent tutoring systems”; In: Artificial Intelligence in Education, pp. 140-147. • Chignell, M.H.; Hancock, P.A. (1988): "Intelligent Interface Design”; In: HELANDER, M., Handbook of Human-Computer Interaction; Amsterdam; New York; Oxford; Tokyo: North Holland; pp. 969-995. • Chisnall, A. C.; John, R. I.; Bennett, S. C. (1995): "Knowledge Elicitation Techniques for Grounded Theory”; In: Research and Development in Expert Systems XII, Proceedings of Expert Systems '95; SGES Publications: Oxford. • Chowdhury, G. G (1999): "Introduction to modern information retrieval”; London: Library Association Publications. • Coad, Peter; Lefebvre, Eric; De Luca, Jeff (1999): "Java Modeling In Color With UML: Enterprise Components and Process”; Prentice Hall; ISBN: 013011510X • Collins, A.; Brown, J. S. (1988): "The computer as a tool for learning through reflection”; In H. Mandl & A.Lesgold (Eds.), Learning issues for intelligent tutoring systems; New York: Springer-Verlag, pp. 1-18. • Cornell, University: „Introduction to Database Design - Entity Relationship Diagrams“; (last visited 30/7/2000) http://www.cit.cornell.edu/atc/materials/old/dbdesign/erd.shtml • Faulkner, C.; (1998): "The Essence of Human Computer Interaction”; Prentice-Hall Computer Books; ISBN: 0137519753 • Fowler, Martin et. al. (1999): “UML Distilled, Second Edition: A Brief Guide to the Standard Object Modeling Language (The Addison-Wesley Object Technology Series) ”; Addison-Wesley; ISBN: 020165783X • Gell, G.; Oser, W; Schwarz, G. (1974): "The AURA Free Text System”; AER-Symposium: Computers in Diagnostic Radiology, The Hague, June 18-21, 1974 • Gonzalez, J.; (1998): "The 21st Century Intranet”; Prentice-Hall Computer Books; ISBN: 0138423377 • Gosling, J.; Arnold K. (1998): "The Java Programming Language (Java Series)"; Reading (MA): Addison Wesley. • Hirschheim, R.; Klein, H. (1989): "Four paradigms of information system development”; In: Communications of the ACM, 32, pp. 1199-1216. • Holzinger, Andreas (2000a): "Basiswissen Multimedia. Band 1: Technik”; Vogel-Verlag, Würzburg; ISBN: 3802318560 • Holzinger, Andreas (2000c): "Basiswissen Multimedia. Band 3: Design”; Vogel-Verlag, Würzburg; ISBN: 3802318587 Page A-8 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Hunter, J. (1998): "Java Servlet Programming”; Cambridge (MA): O’ Reilly • Jacobson, Ivar; Booch, Grady; Rumbaugh, James (1999): „Unified Software Development Process”; Addison-Wesley Pub Co • Mandl, H.; Lesgold, A., Eds. (1988): "Learning issues for intelligent tutoring systems”; Berlin; Heidelberg: Springer. • Mark, M. A.; Greer, J. E. (1993): "Evaluation Methodologies for Intelligent Tutoring Systems”; In: Journal of Artificial Intelligence in Education, Vol. 4, pp. 129-153. • Monson-Haefel, Richard (2000): "Enterprise JavaBeans”; O'Reilly & Associates; ISBN: 1565928695 • Newell, A; Simon, H. A. (1972): "Human Problem Solving”; Englewood Cliffs (NJ): Prentice-Hall. • Nkambou, R; Gauthier, G. (1996): "Use of WWW Resources by an Intelligent Tutoring System”; In: Proceedings of ED-MEDIA 96, Boston (MA), June 17-22; pp. 121-126. • Ntuen, C. A..; Hanspal, K. (1999): "Intelligent Objects in Human-Computer Interaction”; In: Proceedings of 8th HCI International Conference on Human-Computer Interaction, Munich, Germany, August 22-26; Vol. I; Ergonomics and User-Interfaces; pp. 1262-1267. • Preece, J.; Keller, L. (1990): "Human-Computer Interaction: Selected Readings”; Englewood Cliffs (NJ): Prentice Hall. • Puppe, F.; Puppe, B.; Reinhardt B.; Schewe S.; Buscher, H.P. (1998): "Evaluation medizinischer Diagnostik-Expertensysteme zur Wissensvermittlung”; Informatik, Biometrie und Epidemiologie in Medizin und Biologie 29 (1), pp. 48-59. • Reinhardt B. (1997): "Generating Case Oriented Intelligent Tutoring Systems”; AAAI Fall Symposium, IST Authoring Systems. • Reinhardt, T; Schewe, S. (1995): "A Shell for Intelligent Tutoring Systems”; In: Proceedings of Conference on Artificial Intelligence in Education (AIED 95), 1995, pp. 83-90. • Salter, W. J. (1988): "Human Factors in Knowledge Acquisition”; In: HELANDER, M., Handbook of Human-Computer Interaction; Amsterdam; New York; Oxford; Tokyo: North Holland; pp. 957-968. • Schewe, S.; Quak, T.; Reinhardt, T;. Puppe, F (1996): Evaluation of a knowledge based tutorial program in rheumatology - a part of mandatory course in internal medicine; In: Proceedings of 3rd. International Conference on Intelligent Tutoring Systems (ITS-96), Springer, pp. 531-539. • Schneider, Geri; Winters, Jason P.; Jacobson, Ivar (1998): „Applying Use Cases : A Practical Guide”; Addison-Wesley Pub Co Page A-9 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • Seitz, A.; Martens, A; Bernauer, J.; Scheuerer, C.; Thomsen, J. (1999): "An Architecture for Intelligent Support of Authoring and Tutoring in Multimedia Learning Environments”; In: Proceedings of ED-MEDIA 99, Seattle (WA), June 19-24; pp. 852-857. • Self, J., Ed. (1988): "Artificial Intelligence and Human Learning: Intelligent ComputerAided Instruction”; London: Chapman and Hall. • Sleeman, D.; Ward, R.D. (1988): "Intelligent Tutoring Systems in Training and Education: Prospects & Problems”; In: Research & Development in Expert Systems, V, (B Kelly & A Rector (Eds) C.U.P.: Cambridge, pp 331-343. • Stonebraker, Michael; Hellerstein, Joe; Hellerstein, Joseph L. (1998): "Readings in Database Systems”; Morgan Kaufmann Publishers; ISBN: 155860523 ; • Sutcliffe, A.G. (1999): "Developing HCI Design Principles for Information Retrieval Applications”; In: Proceedings of 8th HCI International Conference on Human-Computer Interaction, Munich, Germany, August 22-26; Vol. II; Communication, Cooperation and Application Design; pp. 90-96. • Sybase, 2J2EE: „Enterprise Application Server“; (last visited 30/7/2000) http://my.sybase.com/detail?id=1008943 • UML, Booch: „UML Directions“; (last visited 31/7/2000) - by Grady Booch http://cgi.omg.org/news/pr99/Booch_UML/index.htm • UML, Center: „Computer Associates UML Center“; (last visited 31/7/2000) http://www.platinum.com/corp/uml/uml.htm • UML, Conference2000: „UML2000 - Third International Conference on the Unified Modeling Language“; (last visited 31/7/2000) http://www.cs.york.ac.uk/uml2000/ • UML, Conference99: „The Second International Conference on The Unified Modeling Language “; (last visited 31/7/2000) http://www.cs.colostate.edu/UML99/ • UML, Docus: „UML Documentation Resources“; (last visited 31/7/2000) http://www.rational.com/uml/resources/documentation/index.jtmpl • UML, Links: „Links on UML“; (last visited 31/7/2000) http://www.objektteknik.se/uml/umllinks.htm Page A-10 CAMIS - HCI in Medical Informatics Appendix A: Bibliography • UML, OOPSLA: „OOPSLA'98 Workshop on Formalizing UML. Why? How?“; (last visited 31/7/2000) http://www.db.informatik.uni-bremen.de/umlbib/conf/OOPSLA98UML.html • UML, Publications: „UML Publications available online“; (last visited 31/7/2000) - German page http://www.jeckle.de/uml_pub.htm • UML, Rational: „UML Resource Center, Unified Modeling Language, Standard Software Notation“; (last visited 31/7/2000) http://www.rational.com/uml/index.jtmpl • UML, Resource: „UML Resource Center“; (last visited 31/7/2000) - German/English page http://www.jeckle.de/unified.htm • UML, UMLFAQs: „Unified Modeling Language - Frequently Asked Questions“; (last visited 31/7/2000) http://microgold.com/Stage/UML_FAQ.html • UML, UMLWorld: „UML World“; (last visited 31/7/2000) http://www.umlworld.com/ • UML, Zone: „UML programming information - UML Zone“; (last visited 31/7/2000) http://www.uml-zone.com/ • Volpe, R.M.; Aquino, M.T.B.; Norato, D.Y.J. (1998): "Multimedia system based on programmed instruction in medical genetics: construction and evaluation”; In: International Journal of Medical Informatics 50 (1998), p.257 - 259. Page A-11 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 Appendix B The following paper was submitted to ED-MEDIA 2000 World Conference on Educational Multimedia, Hypermedia & Telecommunications Montréal, Quebec, Canada June 26-July 1, 2000 http://www.aace.org/conf/edmedia/default.htm B-1 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 Interactive Computer Assisted Formulation of Retrieval Requests for a Medical Information System using an Intelligent Tutoring System Dr.Andreas HOLZINGER, PhD, MSc, MPh, BEng, DipEd Andreas KAINZ, BEng Prof.Dr.Guenther GELL, PhD Institute of Medical Informatics, Statistics and Documentation (IMI) Graz University Max BRUNOLD, BEng Prof.DDr.Hermann MAURER, PhD Institute of Information Processing and Computer Supported New Media (IICM) Graz University of Technology [email protected] http://www-ang.kfunigraz.ac.at/~holzinge/its Abstract: A medical information system at Graz University contains three millions of diagnostic reports, which form the basis of patient care and of scientific work. Complex retrieval systems are prepared in a time consuming dialogue between clinical researchers and IS-experts. In this paper we describe the development and questions of evaluation of an intranet Web-based query/answer system with reference to aspects of human-computer interaction. The system formulates a well structured and, ideally, machine interpretable retrieval request in interaction with the user (i. e. medical professionals, bio-statistical researchers, ...) and stores it in an existing requestmanagement-application. The user learns, incidentally, how to use the hospital information system for his needs. For optimal interpretation of the gathered information exact formulation of the questions is essential. An intelligent guidance during the dialogue is obligatory since we cannot assume any technical skill on the part of the medical users. In the near future this service will be extended to the countrywide hospital information system. By using this system, the quality of the retrieval and therefore the quality of scientific research and medical studies is raised. Less iterations mean a lower system-workload. Last but not least, we expect to lower the response time without increasing the need of human resources. ÒWhen we write programs that "learn", it turns out that we do and they don't.Ó (Alan J. Perlis, Yale University) 1. Introduction The information systems at the departments of radiology and pathology at the 2.300 bed University Hospital in Graz support activities in patient care and serve as a basis for scientific research, not only for radiology and pathology but also for all other clinical departments which refer to these systems in connection with their own patient data. Since the data are partly in standardized form (codes for examination types, organizational entities) and partly in natural language, scientific retrievals require complex strategies to yield optimal results. As will be shown below, the scope of the retrieval request is defined in an interactive discussion between a clinical researcher and an IS-expert. This procedure will be replaced as far as possible by the proposed system. The system will primarily be used by medical doctors or assistants. To improve the quality of data preparation it is necessary to provide precisely formulated questions. Since the typical user does not have detailed technical knowledge, intelligent guidance is required during the dialogue. The user starts the dialogue with the System by stating his question in medical terminology for administrative and future purpose only. During the subsequent dialog, unconsciously he will adopt the dialogueÕs behavior in formulating further questions. Succeeding dialogues must always be based on information already ascertained, thus avoiding Ôsilly questionsÕ. Following the indicated evaluation of criteria and features, only useful selections of datareports should be offered. In this project the main emphasis is on Ôthe dialogueÕ. The dialogue will help the user understand and benefit from the functional possibilities of the information system. Furthermore it will help them to accept limitations and guide them to provide structured information. The high level of the systemÕs operating B-2 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 comfort aims at persuading the user not to make complicated and time consuming telephone discussions or use written inquiries to collect required information. This system provides a remarkable potential of savings in administrative expenditures by means of good integration into existing administration facilities and adding to the quality of data evaluation. The system itself has to adapt to the userÕs formulation of a question not only per session but also in the long term, thus adapting to the importance and priority of knowledge objects in general. 2. Background The Information-System used for research and patient care was originally developed by the Institute of Medical Informatics, Statistics and Documentation (IMI) at Graz University for use in Radiology, Pathology, Neurosurgery and Pediatrics, and has been steadily refined ever since the early seventies. The IS Data Base contains approximately three million (!) medical documents, which have been gathered since 1971. Patient information, technical parameters and performance data are saved in a thoroughly structured form, anamnese, examination descriptions and diagnoses are available in free-text. Besides hundreds of simple routine retrievals for patient care, there are, on average, about one or two highly complex retrieval requests per day for scientific purposes, which requires the knowledge of an IS expert. Quite often the huge possibilities and potentialities of filtering, structuring and representing are not familiar or even known to the medical researcher. High competence by the IS expert in medical and technological fields is needed to assess the real scope of the information required by the clinical researcher for his work. The formulation of the retrieval needs are elaborated in a personal discussion between the clinician and the IS expert, a time consuming process, requiring patience and perseverance. Due to the personnel shortage and the increasing demands based on increasing standards in quality management, output documentation, health reports, etc. we consider an automation of this process is necessary to enable continued functioning in the future. The following excerpt of a conversation between an IS-expert and a client shows that several areas of knowledge are necessary to lead an intelligent dialogue: Client: I would like to have all reports of the angiography with interventional cases from 1998 up to the present. IS-Expert: You mean all types of examinations concerning the angiography ? Client: Yes, because the examinations are all entered with different coding abbreviations. IS-Expert: That is clear to me. How can I identify interventions ? What does the examination report say? Client: ... well, the criteria of the contexts are ... (speaks slowly and pause for a moment) ... A.carotis, A.vertebralis, A.basilaris, embolisation, neuroembolisation, stent, baloon dilatation, PTA, ... IS-Expert: ... hmm, that appears to be a lot to me ... if I ... for instance only look for A.carotis or A.vertebralis ... then I will find a vast amount of data-sets ... should these criteria really all combined by ÔORÕ ? Client: ... no, no ... I only mean neuroembolisation OR embolisation etc. with A.carotis OR A.vertebralis, ... IS-Expert: ... ah, I see, ... well that is O.K., ... I am looking for interventions in the examination reports such as embolistion, neuroembolisation, stent, balloon dilatation and PTA and within the diagnosis for A.carotis OR A. vertebralis, OR A. basilaris Client: yes exactly ... IS-Expert: ... would you like to read all the documents of the interventions ... or are you primarily interested in the patience convalescence ... Client: No, we are looking for eventual complications which might have occured later ... IS-Expert: Ah, yes ... It would be extremely difficult and exhaustive to put the whole special medical knowledge into the system. For instance the fact, that a balloon dilatation is already an intervention, on the other hand A. basilaris is an organ, where the intervention actually has been made. Also the knowledge about the structure of the IS (types of examinations are divided into coding abbreviations, these depict the radiological technology, but not an interventional operation) and meta-knowledge would be extremely difficult to put into the system. With the strategy mentioned above, one can find the initial intervention, but to find more about complications requires other strategies. These problems are solved by using a combinatorial approach. Every fact, which can be appear as a filter, a classification item or as representation feature in the resulting request, is represented as an object. One method, implemented in this objects enables the dialogue with the user (e. g. a question about an examination type within a meaningful subset represented as HTML Structure). The reactions which alter the factual knowledge basis of a B-3 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 particular session and that modifies the persistent user depended state of learning are important methods which are also implemented in these objects. By extending a good Meta-Data-Strategy with actions that represent semantic rules in medical context, we implement a small, dedicated part of global behavior. These actions are 'triggering questions' and 'generating answer-like facts'. 3. The system assembled as an Intelligent Tutoring System 3.1. What is an ITS ? Intelligent Tutoring Systems (ITS) are remarkable with regard to their methods and the fundamental theories used. Their origin comes from the field of Computer Assisted Learning. Generally the ÒIntelligenceÓ in ITS is traced back to Carbonell in 1970. Carbonells prototyp SCHOLAR, which was actually an interactive program for computeraided instruction based on semantic networks as the representation of knowledge, was primarily designed for learning geography. He implemented a socratic dialogue in an artificial tutor. ITS generally provides a high level of guidance and control interactive processes in great detail. Possible navigation decisions by the users are controlled by the system. There is no clear border between adaptive systems and those generally called ITS (cf. Sleeman & Brown (1982)). Recently, ideas from both intelligent tutoring systems and from hypermedia have been brought together. This has lead to interactive and adaptive hypermedia, which we use in our system. This synthesis responds to the specific strengths and weaknesses of both approaches. A domain model representing all facts of the field to be learnt usually forms the background for a model of the learner's knowledge and knowledge acquisition. 3.2 The problematic of intelligence Constant misuse and misinterpretation of the term ÒIntelligenceÓ and in particular ÒArtificial IntelligenceÓ has made it increasingly undesirable to label systems with this designation. It is generally accepted to refer to an ÒIntelligent Tutoring SystemÓ if the system is able to a) build a more or less sophisticated model of cognitive processes, b) adapt these processes consecutively and c) is based on these fundamentals to control an question-answer-interaction. The basics of Intelligent Tutoring Systems are most suitable for our special purpose. 3.3 Interface and Interaction Initially, an ITS should be able to analyze the current process of knowledge acquisition. Based on this information the ITS should be able to build instructions for the user. An ITS is generally considered to be ÒintelligentÓ if it is able to react to the process of communication in a flexible and adaptive manner. Kearsley (1987) distinguishes basically between five different types of interfaces for IT-Systems: 1) socratic dialogue, 2) coaching, 3) debugging, 4) microworlds, 5) explainable expert-systems. In our system we use the principles of the Òsocratic dialogueÓ: The system questions the user and, on the basis of the questions and answers, guides the user through a controlled interaction. A specific answer of the user is a starting point for the next question. The interaction happens close to a natural-language dialogue (cf. Kearsley (1993)). 4. The System, its features and its implementation 4.1. Prerequisites Concerning the implementation of this system, there were several preconditions to be taken into consideration. Firstly, the system is supposed to work in cooperation with the Meta-Data strategy of existing department information systems that currently work on proprietary databases. As mentioned the information systems are about to be replaced with a countrywide information system within the next year. That means that our solution needs to provide an interface that can be easily extended or replaced. B-4 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 Secondly, we had to keep in mind that we needed to find a way of implementing the system so that the result would provide as open an architecture as possible with regard to interfaces and interoperability with other systems and platforms. Thirdly, the system should also be capable of easy expansion, e.g. additional functionality in future at very low expense. Fourthly, in the event of migration to other hardware and/or software platforms in future, it should be easily possible to port the system without endangering the stability and/or functionality. Only minor changes or adaptations should be necessary by that time. This means that portability also had to be taken as a prerequisite. 4.2. Implementation Framework: The Java 2 Enterprise Edition We ran across Java and the Java 2 Enterprise Edition (J2EE) pretty quickly. The J2EE provides all the functionality and tools that fulfill the preconditions of the project listed above and impresses the developer with its "write once run anywhere" functionality. In addition, the Java Enterprise Components give us the advantage of minimum possible implementation time and low costs combined with a maximum outcome. Networking, multithreading, security and even database connectivity are available via standard APIs and do not have to be written again from scratch. Since the release of Java in 1996, a very large community of Java developers (Java Developer Connection, about 1 Mio. members) has evolved, who provide a wide variety of Servlets and Beans (reusable components) almost for free which can easily be integrated in any project without having to Òreinvent the wheelÓ. When considering an open system that is expected to provide as much interoperability and expandability as possible, the choice for a Multi-Tier architecture approach is obvious. Using a Multi-Tier architecture also ensures that the whole system is built to work in a distributed scalable environment, which was another prerequisite of the project. 4.3. Multi-Tier Architecture Taking into consideration a Multi-Tiered architecture relating to the general condition explained before, we expect the following framework to meet our needs. Presentation Layer The user communicates with the system through an HTML - Browser that is driven by a Thin - Client Servlet. The dialogue phases should be fast and simple. In addition to the claim that the dialogue should usually be similar to a natural language dialogue, (Spada and Opwis (1985)), the possibilities of graphical user interfaces should improve the performance of the human computer interaction. Business Layer Here we implement all application specific components and the session management using state-full Session Beans. It is necessary to convert the stateless http-communication into a persistent, re-activateable dialogue by means of the user context. So, if the user looses the dialogue with the system for what ever reason, next time he authenticates himself to the system, he has the opportunity to continue, without loss of previous dialogue. Technical Layer The association of the fact-, semantic- and knowledge objects builds the didactic components in this layer. The dependency of classes from the database layer and the over all didactic strategy builds the classes. Database Layer Here we find the object representation of the Meta-Data in the Data-Dictionaries and their semantic meanings, as well as the user specific model, his habits, behavior, last session status and previous accesses. Also the knowledge model is represented as a class of this layer. With respect to the manageability of all growing information components, all permanent data will be stored on database servers. Flexibility is acquired by means of using only JDBC-interfaces to the servers. B-5 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 5. Research A hospital information system provider looks ahead, hoping to gain experience in covering the complexity of huge information archives under retrieval aspects. For the cognitive scientist, the greatest advantage of that approach will consist of the feedback, that will be provided by the quality improvement for retrieval requests. During our talk at ED-MEDIA 2000 we will present some answers to questions asked in the following paragraphs. 5.1. Aspects of Informatics 5.1.1 Meta Data Dictionary (for details see http://www-ang.kfunigraz.ac.at/~holzinge/its/mdd) The main goals during design of the Meta Data Dictionary were simplicity and extendibility, but focusing on an intelligent way of storing knowledge (actual legacy database and future SAP R/3). How can the IS-Meta-Knowledge be stored and accessed in a intelligent way to get an optimum out? What has to be prepared to be able to change the database engine itself whenever the MDD has to be moved to another platform (what about XML)? 5.1.2 Distributed System Design (for details see http://www-ang.kfunigraz.ac.at/~holzinge/its/dsd) Thinking about a distributed application framework, it is obvious that one has to be prepared for different platforms and will result in a multi-tier architecture. The main questions in this context are: How can the system be kept portable for future platforms (JAVA Enterprise Edition)? What will happen when one component in the network cannot be reached and will not deliver an answer? What can be done to ensure good performance of the system so that the user will be satisfied? 5.1.3 Intelligent Engine (for details see http://www-ang.kfunigraz.ac.at/~holzinge/its/ite) How should the engine decide in case of equal weighted questions (aspects of fuzzy logic)? How can the user profile be integrated as a decision criteria (adaptive behavior)? 5.2. Aspects of Human-Computer-Interaction The knowledge representation, as a framework of objects that cover facts, semantic information and parts of common knowledge is especially important, as are the methods used to keep the usersÕ interest, motivation and attention on the actions to keep the dialogue process alive. As an experimental design we have chosen a pretest/post-test control-group design, assisted by qualitative analysis via interviews. The experimental sample to be examined includes 24 people: 12 experts (including MD's) and 12 novices (students of medicine). The research questions are divided into Dialogue, Usability and Learning. 5.2.1 Questions concerning the evaluation of the System (Dialogue) How do users (experts versus novices) handle the machine-dialogue, in contrast to the human-dialogue provided by an IS-expert ? How extensively do the users proceed within the dialogue ? At which time do they quit the dialogue ? Why do the users break off the dialogue ? How often do we get useless or irrelevant information ? 5.2.2 Questions concerning the evaluation of the Graphical User Interface (Usability) How does the GUI influence the user behavior ? What is the difference in handling between experts and novices ? What screen contents and hints are useful for novices and experts ? 5.2.3 Questions concerning the evaluation of the Intelligent Behaviour (Learning) How big is the learning achievement by using this system ? How does incidental learning (cf. Holzinger & Maurer 1999) increase the efforts of the users ? How do motivation, attention and arousal directly influence the necessary actions to keep the dialogue process alive ? B-6 CAMIS - HCI in Medical Informatics Appendix B: Paper ED-Media 2000 6. Practical Aspects Eventually, when the IS is extended to the countrywide hospital information system, it will no longer be possible to include the whole system information in one human to human consultation call. The findings and experiences of this project will lead to a suitable knowledge representation, which provides an interactive dialogue suitable for a more complex system. Finally the quality of requests for scientific medical research can be increased by reducing the response-time and lowering the system work load through minimizing iteration cycles. 7. References Anderson, J. R. (1991). The place of cognitive architectures in a rational analysis. In: K. VanLehn (Ed.), Architectures for intelligence, Hillsdale (NJ): Erlbaum, 1 - 24. Carlile, S.; Barnet, S.; Sefton, A.; Uther, J. (1998). Medical problem based learning supported by intranet technology: a natural student centred approach. In: International Journal of Medical Informatics, 50, 225 - 233. Chan, T. W. (1994). Curriculum tree: a knowledge-based architecture for intelligent tutoring systems. In: Artificial Intelligence in Education, 140 - 147. Chignell, M. H.; Hancock, P. A. (1988). Intelligent Interface DesignÓ; In: Helander, M., Handbook of Human-Computer Interaction. Amsterdam, New York; Oxford; Tokyo: North Holland, 969 - 995. Chisnall, A. C.; John, R. I.; Bennett, S. C. (1995). Knowledge Elicitation Techniques for Grounded Theory. In: Research and Development in Expert Systems XII, Proceedings of Expert Systems '95, SGES Publications: Oxford. Chowdhury, G. G (1999). Introduction to modern information retrieval. London: Library Association Publications. Collins, A.; Brown, J. S. (1988). The computer as a tool for learning through reflection. In: Mandl, H.; Lesgold, A. (Eds.), Learning issues for intelligent tutoring systems, New York: Springer, 1 - 18. Gell, G.; Oser, W; Schwarz, G. (1976). Experiences with the AURA Free Text System. In: Radiology, 119, 105 - 109. Gosling, J.; Arnold K. (1998). The Java Programming Language (Java Series). Reading (MA): Addison Wesley. Hirschheim, R.; Klein, H. (1989). Four paradigms of information system development. In: Communications of the ACM, 32, 1199 - 1216. Holzinger, A.; Maurer H. (1999). Incidental learning, motivation and the Tamagotchi Effect: VR-Friends, chances for new ways of learning with computers. In: Computer Assisted Learning (CAL) 99, London: Elsevier, 70. Hunter, J. (1998). Java Servlet Programming. Cambridge (MA): OÕ Reilly. Kearsley, G. P., Ed. (1987). Artificial Intelligence and Instruction. Reading (MA): Addison-Wesley. Kearsley, G. P.(1993). Intelligent Agents and Instructional Systems: Implications of a New Paradigm. In: Journal of Artificial lntelligence in Education, 4, 4, 1993, 295 - 304. Mandl, H.; Lesgold, A., Eds. (1988). Learning issues for intelligent tutoring systems. Berlin; Heidelberg: Springer. Mark, M. A.; Greer, J. E. (1993). Evaluation Methodologies for Intelligent Tutoring Systems. In: Journal of Artificial Intelligence in Education, Vol. 4, 129 - 153. Newell, A; Simon, H. A. (1972). Human Problem Solving. Englewood Cliffs (NJ): Prentice-Hall. Nkambou, R; Gauthier, G. (1996). Use of WWW Resources by an Intelligent Tutoring System. In: Proceedings of ED-MEDIA 96, Boston (MA), June 17 - 22, 121 - 126. Ntuen, C. A.; Hanspal, K. (1999). Intelligent Objects in Human-Computer Interaction. In: 8th HCI International Conference on Human-Computer Interaction, August 22 - 26; Vol. I; Ergonomics and User-Interfaces, Munich, Germany, 1262 - 1267. Preece, J.; Keller, L. (1990). Human-Computer Interaction: Selected Readings. Englewood Cliffs (NJ): Prentice Hall. Puppe, F.; Puppe, B.; Reinhardt B.; Schewe S.; Buscher, H.P. (1998). Evaluation medizinischer Diagnostik-Expertensysteme zur Wissensvermittlung. In: Informatik, Biometrie und Epidemiologie in Medizin und Biologie, 29 (1), 48 - 59. Salter, W. J. (1988). Human Factors in Knowledge Acquisition. In: HELANDER, M., Handbook of Human-Computer Interaction, Amsterdam; New York; Oxford; Tokyo: North Holland, 957 - 968. Schewe, S.; Quak, T.; Reinhardt, T;. Puppe, F (1996). Evaluation of a knowledge based tutorial program in rheumatology. 3rd Conference on Intelligent Tutoring Systems (ITS 96), Montreal, Springer, 531 - 539. Seitz, A.; Martens, A; Bernauer, J.; Scheuerer, C.; Thomsen, J. (1999). An Architecture for Intelligent Support of Authoring and Tutoring in Multimedia Learning Environments. In: Proceedings of ED-MEDIA 99, Seattle (WA), 852 - 857. Self, J., Ed. (1988). Artificial Intelligence and Human Learning: Intelligent CAI. London: Chapman and Hall. Sleeman, D.; Brown, J. S. (1982). Intelligent Tutoring Systems. London: Academic Press. Sleeman, D.; Ward, R. D. (1988). Intelligent Tutoring Systems in Training and Education: Prospects & Problems. In: Research & Development in Expert Systems, V, (Kelly, B.; Rector, A. (Eds.)) C.U.P.: Cambridge, 331 - 343. Sutcliffe, A. G. (1999). Developing HCI Design Principles for Information Retrieval Applications. 8th HCI Conference on Human-Computer Interaction, Vol. II; Communication, Cooperation and Application Design; Munich, Germany 90 - 96. Reinhardt, T; Schewe, S. (1995). A Shell for Intelligent Tutoring Systems. Artificial Intelligence in Education, WA(DC), 83 - 90. Volpe, R. M.; Aquino, M. T. B.; Norato, D.Y.J. (1998). Multimedia system based on programmed instruction in medical genetics: construction and evaluation. In: International Journal of Medical Informatics 50 (1998), p.257 - 259. B-7 CAMIS - HCI in Medical Informatics Appendix C: Index A C ACM • 59 ACT • 77 activity • 6 activity diagram • 8, 26, 29, 30 admin servlet • 81, 83, 91 AI • 76, 77, 78, 80 ALTER • 69 Anderson, John • 77, 78 Andrews, Keith • 15 ANSI • 68 Apache • 20, 38 API • 5, 10, 19, 21, 34, 35, 36, 37, 38, 40, 41, 42, 44, 47, 49, 50, 51, 52 AppBrowser • 12 applet • 11, 34, 38, 41, 51 application design • 85 application framework • 31, 85, 86, 90, 99 application server • 38, 45, 47, 50 artificial intelligence • 77 ASP • 34, 38 assignment interface • 96 association • 6 Atkinson, Malcolm • 64 attributes • 59, 65, 67 CAI • 76, 80 CAMIS • 1, 5, 9, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 31, 33, 35, 36, 41, 42, 48, 56, 59, 62, 72, 73, 74, 75, 76, 78, 81, 83, 85, 86, 87, 88, 89, 92, 96, 99, 101, 102, 103, 104 CAMIS prototype • 101 Carbonell • 76 CASE • 8 Chen • 65 Chipman, S. F. • 78 CGI • 38, 39, 40 class diagram • 7 class skeleton • 7 class state diagram • 7 client • 5, 12, 14, 19, 20, 25, 32, 33, 34, 38, 39, 45, 46, 47, 52, 53, 84 client tier • 86 cloning a dialogue • 92 Cloudscape • 35 Coad, Peter • 9, 10 Codd, E. F. • 59, 68 CodeInsight • 12 coginitive process • 80 collaboration • 6 collaboration diagram • 7 component diagram • 8, 85, 86 component interface • 88 components • 44, 45, 53 computer assisted learning • 76 concurrency • 64 connection pooling • 50 container • 33, 35, 44, 45, 47, 48, 83 container provider • 45 container-managed • 56 control language • 69 ConverterApp • 55 cookie • 40, 41, 42 CORBA • 8, 9, 11, 12, 33, 37, 45 Corbett, A. T. • 77 CREATE • 69 create a new dialogue • 92 costs • 102 B backend tier • 59, 72 BDK • 44 bean • 44, 46, 53 bean container • 83 beanmanaged • 48 behaviourism • 80 BLOB • 63 Booch, Grady • 6, 7, 9 Borland • 11, 12 Brown, J. S. • 76 browser • 5, 17, 22, 25, 44 business logic • 18, 23, 31, 32, 33, 76, 83, 84, 86, 87 business function • 32 business tier • 76 C-1 CAMIS - HCI in Medical Informatics Appendix C: Index D E daemon process • 38 data control language • 70 data defintion language • 69 data manipulation language • 69 data modeling • 7 data object • 63 data source object • 50, 52 database access • 48, 50 database connectivity • 12, 14, 21, 33, 38 database keys • 60 database integration • 49 database model • 59, 72 database system • 59 database view • 60 DBMS • 23, 24, 36, 50, 51, 52, 53, 56, 59, 63, 68 DB2 • 13, 51, 68 DDIC • 72, 73, 74, 75 De Kerckhove, D. • 80 deadlock • 14 decision branch • 29 DELETE • 70 deployment • 45, 46, 53, 55, 56 deployment descriptor • 53, 55, 56 deployment diagram • 8 deploytool • 55 design • 6, 9, 14, 18, 22, 32, 85 diagram • 6 dialogue • 1, 25, 26, 72, 81, 86, 92, 104, 105 dialogue, cloning • 92 dialogue creation • 92 dialogue database • 82, 86 dialogue history • 87 dialogue, resume • 92 dialogue servlet • 81, 82, 83, 86, 89 dialogue, socratic • 79 dialogue title • 93 dialogue types • 92 distributed application • 5 distributed computing • 18, 19 distributed transaction • 50 Donald, M. • 80 draft • 6 DROP • 69 dynamic interface • 23 EAR • 54, 55 EER • 65 efficiency • 16 EIS • 32 EIS-Tier • 32 EJB • 10, 11, 12, 21, 22, 33, 34, 35, 44, 45, 46, 48, 53, 54, 56, 72, 81, 83, 86, 90 encapsulation • 64 enterprise • 12, 18, 19, 31, 32, 33, 40, 41, 44, 50 enterprise bean • 45, 53, 83, 86 enterprise bean wizard • 55 entity • 59, 65, 67 entity bean • 47, 52, 56, 58, 60, 81, 83 entity relationship model • 65, 66, 72 Epstein, K. • 79 ER-Diagram • 66, 67 ERM • 65, 73, 74, 75 evaluation • 101, 103, 104 extend relationship • 28 F fact • 4, 73 fact object • 72, 82 feasibility study • 102 first-tier • 32 Flanagan, David • 41, 43, 45, 46 Fowler, Martin • 8 foreign key • 61, 75 fork • 29 form • 41, 82, 86 frontend • 92 FTP • 22 future perspectives • 99 G generalization • 28 GET • 41, 86 get fact • 86, 88, 91 get question • 88, 91 GIF • 53 C-2 CAMIS - HCI in Medical Informatics Appendix C: Index interface • 6, 14, 15, 16, 18, 22, 23, 45, 79, 83, 86, 87, 93, 95, 96 internet browser • 14 instance • 64 IS • 4, 32 ISO • 68 IS-database • 2 IS-expert • 1, 2, 3, 15, 17 IT • 18, 19 ITS • 22, 23, 25, 26, 72, 76, 77, 78, 79, 80, 81, 82, 83, 85, 86, 87, 88, 90, 92, 93, 94, 95, 96, 99 GRANT • 71 Greenspun, Philip • 68 GUI • 8, 9, 34, 104, 105 H Haberfellner, Reinhard • 100 HCI • 86, 99 Hillegeist, E. • 79 Holzinger, Andreas • 18, 76, 99, 101, 104, 105 home interface • 45, 46, 48, 53 HTML • 5, 22, 23, 35, 40, 41, 53, 74, 81, 82, 83, 86, 105 HTML form • 86 HTML template • 81, 82, 86, 89 HTTP • 34, 36 http server • 22, 81, 86 http session • 42 Hubmer, Heinz • 102 Hughes, Jon • 61, 62, 63, 64 hypermedia • 76 J J2EE • 9, 11, 13, 18, 19, 20, 31, 32, 33, 35, 36, 37, 41, 44, 48, 53, 54, 57, 81, 86, 99, 101 J2RE • 34 J2SDK • 34 J2SDKEE • 56 J2SE • 33, 34 Jacobson, Ivar • 6, 9 JAR • 54 Java • 5, 6, 9, 10, 11, 12, 19, 20, 21, 22, 23, 31, 33, 34, 38, 39, 44, 47, 49, 50, 52, 63, 81 Java Bean • 44 Java Entity Bean • 39 Java Script • 38, 74, 82, 89, 95 Java Web Server • 20 JavaBean • 11, 12, 21 JavaServer Pages • 21 JBuilder • 11, 12, 13, 63 JDBC • 5, 6, 11, 12, 13, 19, 24, 33, 35, 36, 37, 41, 48, 49, 50, 51, 52, 63, 91 JDBC architecture • 50 JDI • 12 JDK • 12, 33 JMS • 34 JNDI • 36, 41, 45, 46, 47, 50, 52, 55, 56, 58 join • 29 JSP • 11, 12, 34, 35, 36, 53 JTA • 36, 47 JVM • 38 JWS • 40 I IBM • 8, 19, 59, 68 IDL • 9 IFS • 6 IIS • 38 IMI • 2,6, 99, 101 implementation • 85, 100 implementation diagram • 8 implementation plan • 99 include relationship • 27 independence, of location • 64 independence, of structure • 64 independence, of value • 64 inference engine • 87, 88, 89 Informix • 13, 20, 35, 51 inheritance • 63, 64 INSERT • 70 intelligence • 77 intelligent tutoring system • 76, 80, 81, 86, 87 interaction • 6, 8, 14, 18, 79 Interbase • 13 C-3 CAMIS - HCI in Medical Informatics Appendix C: Index MRI • 90 MSIE • 17 MSIIS • 5 multithreading • 21 multi-tier • 11, 19, 20, 21, 31, 32, 35, 37, 83, 86 K KAGES • 5, 23, 73, 74, 75, 81, 83, 90, 91, 96, 97, 99, 101, 105 Kainz, Andreas • 101 Kappel, Gerti • 6, 9, 26, 29 Kearsley, G. P. • 79 KFU • 15, 16 knowledge broker • 87, 88, 89 knowledge object • 87, 89 knowledge repository • 90 knowledge representation • 79 N Netscape • 17, 20, 38, 42 network • 20, 40, 44, 51, 52, 64 new fact • 87 Newell, Allen • 76 Nielsen, Jacob • 15 normal form • 61 normal form, first • 61 normalization • 61 L learnability • 16 lerning • 105 lifecycle • 7, 39 LISPITS • 77 login servlet • 81 Loidl, Stefan • 7 Lubling, Oz • 20 O object • 4, 6, 7 object diagram • 7 object-oriented database model • 63, 64 object-oriented design • 6, 7, 14 object-oriented modeling • 29 object-oriented programming • 19 object-relational database • 60 object request broker • 32 ODBC • 5, 6, 24, 33, 36, 49, 50, 51, 91 ODBMS • 63 ODMG • 64 OLE • 9 OMG • 8, 64 OMT • 6, 29 OODBMS • 63 Oracle • 9, 13, 20, 23, 36, 51, 64, 68 ORB • 45 ORDBMS • 63 M Maurer, Hermann • 105 McCarthy, Jon • 76 MDD • 73, 83, 85, 90, 91, 94 medical information system • 14 memorability • 16 message • 7 meta-data • 4, 17 meta-data dictionary • 22, 72, 73, 74, 86, 89, 90 meta-knowledge • 4 meta-modeling • 6 Microsoft • 19, 20, 23, 34, 35, 38, 45, 90 Microsoft IIS • 20 microworld • 79 middle-tier • 12, 19, 31, 32, 3, 83 middleware • 32, 41, 51 milestone • 100, 101 Minsky, Marvin • 76 modeling • 7, 8, 9 C-4 CAMIS - HCI in Medical Informatics Appendix C: Index P S package • 6 persistent • 1, 38, 42, 47, 48 persistence • 39, 44, 45, 47, 48, 64 phases • 99 POST • 41, 86 Postel, Johnathan • 18 portable application • 5 primary key • 53, 60, 62, 72, 73, 74 project costs • 102 project design • 6, 100 project implementation • 100 project phases • 99 project plan • 99, 100, 101, 103 project timeline • 103 prototype • 101, 103 Sayles, Johnathan • 69 SCHOLAR • 76 SDK • 34 SELECT • 70 SEQUEL • 68 serializeable objects • 63 server • 5, 10, 12, 14, 19, 23, 25, 34, 39, 48, 53, 86 servlet • 11, 12, 21, 23, 33, 34, 35, 38, 39, 40, 41, 42, 43, 45, 81, 83, 84, 86, 87 servlet lifecycle • 39 servlet wizard • 12 session • 1, 25, 42, 81 session bean • 42, 47, 83, 84, 87 session context • 81, 82 session database • 42 session table • 73 session tracking • 40, 41 sequence • 6, 7 sequence diagram • 7, 10 set question • 86 Shannon, Bill • 36 Siegel, David • 16 Sleeman, D. • 76 socratic dialogue • 79 spiral model • 102 SQL • 5, 6, 17, 20, 24, 41, 50, 53, 56, 58, 68, 69, 71, 81, 82, 83, 105 SQL/86 • 68 SQL/92 • 68 state • 6 state transition diagram • 8 stateful session bean • 83, 84, 87 static structure diagram • 7 structured query language • 68 Sun Microsystems • 9, 19, 20, 21, 31, 33, 34, 35, 40, 44, 45, 51, 57, 86 Sybase • 13, 51, 68 synchronized block • 43 R Razorfish • 20 Rational Software • 8, 9, 10 RDBMS • 68 real world module • 88, 91 redundancy • 66 references • 61 refine • 88, 101 refinement phase • 100, 103 relation • 6, 27, 59, 60, 62, 69, 75 relational database model • 59 relationship • 27, 28, 61, 65, 67, 72 relationship, 1:1 • 61, 65, 66, 67 relationship, 1:n • 61, 65, 66, 67, 75 relationship, degree • 65 relationship, n:m • 61, 65, 66 relationship, master-detail • 61, 66 remote interface • 46, 53 remote object • 44, 45, 47 resume a dialogue • 92 REVOKE • 71 RMI • 12, 44, 45 roles • 71 rollback history • 47 Rosenberg, R. • 78 Rumbaugh, James • 6, 9 C-5 CAMIS - HCI in Medical Informatics Appendix C: Index T W TCP/IP • 18, 19 thin client • 19, 32, 33, 35, 40 third normal form • 75 thread • 38, 43, 83, 84 thread safety • 42, 43 three-tier • 31 transition • 6, 29 transaction • 32, 35, 45 transaction attributes • 53 transaction management • 47 Together • 9, 10, 13, 26 TogetherSoft • 9 Touring, Alan • 76 two-tier • 31 WAR • 54 waterfall model • 102 web browser • 5, 17, 22, 25, 32, 39, 83, 86 web component • 53 web container • 35 web objects • 105 web server • 20, 38, 39, 41 Wenger, E. • 78, 79, 80 X XML • 21, 53 U Z UML • 6, 8, 9, 10, 13, 14, 25, 26, 29, 85, 86 UML Diagrams • 7, 25, 29 university hospital • 5, 90 UPDATE • 70 Urban-Lurain, Mark • 76 URL • 39, 41, 42, 48, 50, 52 usability • 104 usability engineering • 15 usage • 100 use case • 6, 105 use case diagram • 7, 14, 26, 27, 28 user centered design • 14 user database • 86, 92 user interface • 8, 93, 94, 95, 96, 97, 98, 99 ZRI • 90, 94 C-6