Principles of Biomedical Informatics, Second Edition

by Ira J. Kalet PhD

One of the great challenges of biomedical informatics is to discover and/or invent ways to express biomedical data and knowledge in computable form, and to thus be able to automate the analysis and interpretation of a wide range of biomedical data, as well as facilitate access to biomedical data and knowledge. Biomedical informatics textbooks typically present a survey of such ideas and applications, but do not discuss how these ideas and applications are actually realized in computer software. Bioinformatics books typically have either narrowly focused on sequence analysis algorithms and other statistical applications, or on how to use a wide variety of existing software tools. Some of the bioinformatics books on closer inspection are really about the underlying biology with little or no reference to computerized data or knowledge modeling except as a (usually mysterious) means to arrive at biological results, reported as text and/or diagrams, rather than in computable form. Others, both biological and medical focus on sifting through the arcane and problematic syntaxes of various data sources, and the trials and tribulations of extracting useful data from natural language text.

The main goal of this book is to provide an exposition of important fundamental ideas and methods in biomedical informatics, using actual working code that can be read and understood. The object of the code is not only to provide software tools, but for the code to play the same formal role that equations and formulas play in theoretical physics. That is, the programs precisely embody biological, medical, or public health ideas and theories. The application of these programs to specific problem instances and data is analogous to the solution of the equations of physics for specific practical problems, such as the design of airplane wings. Thus an effective way to explain biomedical informatics ideas is by showing how to write programs that implement them. Conversely, a way to achieve a deep and clear understanding of the foundations of biomedical informatics is to learn how such programs work and to be able to adapt, modify, and extend them as well as use them.

The first edition was intended to be a monograph that marked a level of maturity of the field. Recognizing that this edition needs to be more usable as a textbook, exercises are provided at the end of each chapter. Some of these simply make explicit the places in the body of the text where you find "...it left as an exercise for the reader." Others come from over 10 years of experience teaching this material in various courses in the university of Washington Biomedical and Health Informatics program. Students over the years have ranged from undergraduates to graduate students to postdoctoral fellows and faculty interested in learning about biomedical informatics. The level of these exercises varies greatly, as does the technical, biological, and medical knowledge required.

Lisp is the main programing language in this edition, as in the first. It is by far the best for achieving the goals of the book, to present biomedical informatics as a systematic set of formal ideas and methods that are naturally expressed as computations on well-defined representations. In Chapter 1, the basic ideas of symbolic computing are introduced gradually as needed. The Appendix has been expanded to include more tutorial material as well as references to aid the reader who is not so familiar with Lisp.

All the code that appears in this book is available at the author's web site at the University of Washington, http://faculty.washington.edu/ikalet/. The complete source code for the original DICOM server and client system on which the development in Section 4.3.3 is based, is also available there, as well as the complete source code for the author's Prism radiation therapy planning system.

This book and is available from Amazon and other fine booksellers.