Reference

Definitions and Quotes

Collection of interesting definitions and quotes.

What is Clinical Informatics: Columbia University definition

Definition
Clinical Informatics is the scientific study of the effective use of information in patient care, clinical research and medical education.
Goals
The ultimate goals of clinical informatics are to streamline the processes of patient care, to provide clinicians with accurate data in a timely manner, improve the quality of care, and to reduce costs.
Users
Users of clinical information systems include physicians, nurses, dentists, technicians, therapists and social workers, as well as patients and consumers.

(Source: Columbia University)

What is a "System": Bellinger's definition

System: a definition
A system is an entity which maintains its existence through the mutual interaction of its parts.

A system exists and operates in time and space.

The concept of Emergence: a definition

From the mutual interaction of the parts of a system there arises characteristics which can not be found as characteristic of any of the individual parts.

(Source: Gene Bellinger, in Mental Model Musings)

What is an "Expert": Heisenberg's definition

An expert is someone who knows some of the worst mistakes that can be made in his subject, and how to avoid them.

(Source: Werner Heisenberg, in Physics and Beyond)

What is eHealth: The World Health Organization (WHO) definition

e-Health is the combined use of electronic communication and information technology in the health sector.

(Source: World Health Organization [WHO])

Health Security and Privacy

Issues related to Security and Privacy in Healthcare

Healthcare Information Systems (HIS): What works

Compilation of the things that our members feel that may increase the probabilities of success of a given Clinical IT or Hospital Information System project.

So, please feel free to comment or add your own ideas about the subject.

Software: How To Install

Howto's, Manuals and Documents about Software Installation, Setup and Configuration

How To Install DJBdns in Ubuntu Linux

DJBdns are a set of applications that retrieve and publish Domain Name System (DNS) information.

Home: http://cr.yp.to/djbdns.html

The following procedure describes How To install the DJBdns software package in Ubuntu Linux (8.04 LTS) to act as a DNS Cache

1. Prepare to install

1. sudo aptitude install build-essential
2. test -d /tmp/downloads && sudo rm -fr /tmp/downloads
3. mkdir -p -m 1755 /tmp/downloads && cd /tmp/downloads

2. Install daemontools

1. cd /tmp/downloads
2. wget -c http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
3. tar -xvzf daemontools-0.76.tar.gz
4. sed -i -e '/^extern int errno\;/ c\#include <errno.h>\' admin/daemontools-0.76/src/error.h
5. sudo touch /etc/inittab # /etc/inittab isn't used in Ubuntu anymore, but the daemontools install script still needs it
6. create an upstart file (http://upstart.ubuntu.com/) inside /etc/event.d/:

sudo bash -c "cat > /etc/event.d/svscan <<-EOA
# svscan - daemontools
# This service starts daemontools from the point the system is
# started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot
EOA" ;

7. cd admin/daemontools-0.76
8. sudo package/install
9. sudo rm -rf /command/*
10. sudo cp -av /tmp/downloads/admin/daemontools/command/* /command/
11. sudo initctl start svscan # upstart svscan (/sbin/start = /sbin/initctl).

3. Install ucspi-tcp

1. cd /tmp/downloads
2. wget -c http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
3. tar -xvzf ucspi-tcp-0.88.tar.gz
4. cd ucspi-tcp-0.88
5. sed -i -e '/^extern int errno\;/ c\#include <errno.h>\' error.h
6. make
7. sudo make setup check

4. Install DJBdns

1. cd /tmp/downloads
2. wget -c http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
3. tar -xvzf djbdns-1.05.tar.gz
4. cd djbdns-1.05
5. echo gcc -O2 -include /usr/include/errno.h > conf-cc
6. make
7. sudo make setup check

Check if it is working:

  • dnsq a www.google.com 192.203.230.10 # Check that computer can talk to DNS servers at the Internet
  • env DNSCACHEIP=208.67.222.222 dnsqr a www.google.com # Check that your computer can talk to an upstream DNS cache

5. Configure DJBdns

1. sudo groupadd djbdns
2. sudo useradd -d /dev/null -s /bin/false -g djbdns dnslog
3. sudo useradd -d /dev/null -s /bin/false -g djbdns dnscache
4. -
5. sudo mkdir /var/lib/svscan
6. sudo dnscache-conf dnscache dnslog /var/lib/svscan/dnscache

  • if you intend to serve other computers use: sudo dnscache-conf dnscache dnslog /var/lib/svscan/dnscache <host-IP> # <host-IP> is the IP on which dnscache should listen

7. sudo ln -sf /var/lib/svscan/dnscache /service
8. sleep 5 && sudo svstat /service/dnscache # check if it is working
9. upgrade root servers:

  • dnsip `dnsqr ns . | sed -e '/answer/!d' -e 's/\(.*\)NS \(.*\)/\2/'` | sort | sudo tee /var/lib/svscan/dnscache/root/servers/@
  • [ alternative: dnsip `dnsqr ns . | grep answer | cut -d " " -f 5` | sort | sudo tee /var/lib/svscan/dnscache/root/servers/@ ]

10. control: restart and stop djbdns

  • sudo svc -t /service/dnscache # Restart Service
  • sudo svc -d /service/dnscache # Stop Service

If your computer is running a DHCP client to obtain a dynamically assigned IP address, configure the DHCP client to use dnscache (listening at 127.0.0.1):

  • sudo sed -i -e '/^\#prepend domain-name-servers 127\.0\.0\.1/ c\prepend domain-name-servers 127\.0\.0\.1\;' /etc/dhcp3/dhclient.conf

11. sudo dhclient # if your network uses a dhcp client
12. sudo /etc/init.d/networking restart # if it has a fixed IP (or, you may need to reboot)

6. Test DJBdns

To check the new nameservers address:

  • cat /etc/resolv.conf

To check if dnscache is working:

  • in a terminal: tail -f /service/dnscache/log/main/current
  • in another terminal: dig google.com

7. Reference

a) Documentation and Man pages are available from: http://smarden.org/pape/djb/ , to install them: wget -c http://smarden.org/pape/Debian/dists/woody/unofficial/binary-i386/djbdns-doc_1.05-4_all.deb && sudo dpkg -i djbdns-doc_1.05-4_all.deb
b) Also see: http://www.linuxjournal.com/article/10112
c) To see how to adjust the cache size see: http://cr.yp.to/djbdns/cachesize.html
d) Perfect DjbDNS Setup On Ubuntu Server 8.04 (amd64) Hardy <http://www.howtoforge.com/perfect-djbdns-setup-on-ubuntu8.04-amd64>
e) Install Djbdns on Ubuntu Server: <http://www.rasyid.net/2008/07/08/install-djbdns-on-ubuntu-server/>
f) For an Debian/Ubuntu way to install djbdns, i.e. using "sudo apt-get install daemontools djbdns qmail cvm" see: http://smarden.org/pape/Debian/djbdns.html

How To Install LTSP in Ubuntu Linux

LTSP (Linux Terminal Server Project) is a software package that adds thin-client support to Linux servers.

Home: http://www.ltsp.org/

The following procedure describes How To install the LTSP software package in Ubuntu Linux (8.04 LTS).

1. Fresh Install Using the Ubuntu alternate CD

See: https://help.ubuntu.com/community/UbuntuLTSP/LTSPQuickInstall

1. Make sure that your server has 2 network cards installed and working under Ubuntu;
2. Insert the Ubuntu alternate CD and (re)boot fom this CD;
3. Once you boot up the CD, hit F4. The "Modes" menu will pop up. Select "Install an LTSP Server". Move on with the install.

Once the installer is done and has rebooted into your new system you will be able to boot your first Thin Client right away.

2. Install over an existent Ubuntu Desktop

1. Make sure that your server has 2 network cards installed and working;
2. Configure one card to have the static IP 192.168.0.1. Make sure that it is up and running. It will serve the thin client's boot image;
3. Configure the other card to be in a range different from 192.168.0.x. Make sure that it is able to connect to the Internet;
4. sudo apt-get install ltsp-server-standalone
5. sudo ltsp-build-client --arch i386
6. Check if the LTSP network paramaters fit your organization needs:

  • sudo gedit /etc/ltsp/dhcpd.conf # do check the domain-name
  • sudo invoke-rc.d dhcp3-server restart # if you made changes, restart the DHCP server

7. If needed Install User Security and Policy editors:

  • sudo apt-get install pessulus sabayon
  • Check: System->Administration->Lockdown Editor # This is the Pessulus application
  • Check: System->Administration->User Profile Editorr # This is the Sabayon application
  • Check: System->Administration->Authorizations

Note: if you need to use another IP instead of the 192.168.0.1 stated above, you must edit the IP ranges inside the file /etc/ltsp/dhcpd.conf to match the new IP and then restart the dhcp server.

3. Update the LTSP clients

  • sudo cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/
  • sudo chroot /opt/ltsp/i386
    • mount -t proc proc /proc
    • apt-get update && apt-get upgrade
    • update-initramfs -k all -c # make the initramfs pick up the new scripts
    • umount /proc
    • CTRL-D to exit chroot
  • sudo ltsp-update-kernels # if the kernels have been upgraded
  • sudo ltsp-update-sshkeys # If network IP numbering changed after you have done the initial setup
  • sudo ltsp-update-image --arch i386

4. Problems
4.1. Booting 32 bit clients from a LTSP AMD64 server

See: LTSP AMD64 and 32 bit clients: <http://ubuntuforums.org/showthread.php?t=213043>

  • sudo rm -rf /opt/ltsp /var/lib/tftpboot/ltsp/amd64
  • sudo sed -e '/^2000/s/amd64/i386/g' /etc/inetd.conf # make sure port 2000 serves an i386.img
  • sudo ltsp-build-client --arch i386
  • sudo ltsp-update-kernels # if the kernels have been upgraded
  • sudo ltsp-update-sshkeys # If network IP numbering changed after you have done the initial setup
  • sudo ltsp-update-image --arch i386

4.2. Workstation isn't authorized to connect to server

If you get error "This workstation isn't authorized to connect to server" on client, please run:

  • sudo ltsp-update-sshkeys && sudo ltsp-update-image --arch i386

See explanation on: https://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/144296

5. Use a CDROM, a pen drive or whatever drive on the thin client

To use the CDROM, a pen drive or whatever drive on the thin client you must:

1. sudo apt-get install ltspfs (Not needed anymore: it is now part of the ltsp-server-standalone package)

2. add the users you want to have access to those drives to the fuse group:

  • sudo usermod -G fuse -a $USER

3. reboot the thin client and you should now be able to use the thin client's local drives.

6. Customize LTSP clients

ATENTION: The config file: /opt/ltsp/i386/etc/lts.conf is deprecated, use the following instead:

  • sudo gedit /var/lib/tftpboot/ltsp/i386/lts.conf

7. Install x11vnc on Ltsp Clients

See: https://wiki.edubuntu.org/InstallX11VncOnLtspClients

  • Install:
    • sudo cp /etc/apt/sources.list /opt/ltsp/i386/etc/apt/sources.list
    • sudo chroot /opt/ltsp/i386
    • apt-get update
    • apt-get install x11vnc
  • Setting x11vnc to run on the thin clients:
    • (...)

8. Reference

How To Install OpenEMR in Ubuntu Linux

OpenEMR is a free medical practice management, electronic medical records, prescription writing, and medical billing application.

Home: http://www.oemr.org/

The following procedure describes How To install the OpenEMR software package in Ubuntu Linux (8.04 LTS)

1. Install a LAMP server

To install a LAMP server (Linux, Apache, MySQL, PHP) in Ubuntu Linux simply do:

  • sudo tasksel install lamp-server
  • sudo /etc/init.d/apache2 restart

If you get an error like: apache2: Could not determine the server's fully qualified domain name, use localhost (127.0.0.1) for ServerName and restart Apache:

  • echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
  • sudo /etc/init.d/apache2 restart

To test the LAMP installation:

  • echo -e "<b>Hello! LAMP is working!</b>" | sudo tee /var/www/index.html # Create a html test message
  • echo -e "<?php\nphpinfo();\n?>" | sudo tee /var/www/phpinfo.php # Create a php test message

2. Download and Prepare OpenEMR

The simplest way to install OpenEMR in Ubuntu seems to be:

  • test -d /home/openemr && sudo rm -fr /home/openemr
  • sudo mkdir -m 0775 -p /home/openemr
  • cd /home/openemr
  • cvs -z3 -d:pserver:anonymous@openemr.cvs.sourceforge.net:/cvsroot/openemr co -P openemr
  • sudo bash -c 'find /home/openemr/ -type f | xargs chmod 0770' # Set File perms to ug+rwx
  • sudo bash -c 'find /home/openemr/ -type d | xargs chmod 0775' # Set Dir. perms to ug+rwx and o+rx
  • test -d /home/openemr/interface/main/calendar/modules/PostCalendar/pntemplates/compiled || sudo mkdir -p -m 0775 /home/openemr/interface/main/calendar/modules/PostCalendar/pntemplates/compiled
  • test -d /home/openemr/interface/main/calendar/modules/PostCalendar/pntemplates/cache || sudo mkdir -p -m 0775 /home/openemr/interface/main/calendar/modules/PostCalendar/pntemplates/cache
  • sudo chown -R www-data.www-data /home/openemr # Let the Apache web server own the files
  • sudo ln -s /home/openemr /var/www/ # check if it points to openemr: ls -la /var/www/
  • sudo gedit /var/www/openemr/interface/globals.php # edit to make sure that:
    • $webserver_root = "/var/www/openemr";
    • $web_root = "/openemr";
  • sudo gedit /etc/php5/apache2/php.ini # edit to make sure that:
    • upload_tmp_dir = /tmp ; choose other dir if "/tmp" does not suit your system
    • magic_quotes_gpc = Off ; this one must be Off
    • file_uploads = On
    • upload_max_filesize = 2M ; change if you need more
    • memory_limit = 32M ; change ONLY IF NEEDED

3. Install OpenEMR

To install OpenEMR point your browser to: http://localhost/openemr/setup.php and follow instructions from there.

  • When you arrive at: "Please restore secure permissions on the 'library/sqlconf.php' file now.", open a terminal and run:
    • sudo chmod 400 /home/openemr/library/sqlconf.php

4. Start OpenEMR

To start OpenEMR point your browser to: http://localhost/openemr/

  • Default login data:
    • login: admin
    • password: pass

5. Notes

How to setup mailman, using nginx, thttpd cgi server, and ubuntu linux

This procedure describes how to setup the Mailman Mailing List Manager, using the Nginx web server, thttpd cgi server, and Ubuntu Linux Server Edition.

The software versions used were:

   mailman 2.1.13 <http://www.gnu.org/software/mailman/>,

   nginx 0.8.53 <http://nginx.org/en/>,

   thttpd 2.25b-11 <http://www.acme.com/software/thttpd/>,

   ubuntu 10.10 <http://www.ubuntu.com/server>

This setup assumes that Mailman will be served from http://mail.example.com/mailman and that mail.example.com IP is 127.0.1.1

 

1. install & configure the thttpd cgi server

sudo apt-get install thttpd

# change /etc/default/thttpd to have:

   ENABLED=yes

# change /etc/thttpd/thttpd.conf to have:

   port=8000

   dir=/usr/lib/cgi-bin

   nochroot

   user=www-data

   cgipat=/**

   throttles=/etc/thttpd/throttle.conf

   host=127.0.1.1

   logfile=/var/log/thttpd.log

sudo /etc/init.d/thttpd restart # restart using new settings

 

2. install & configure mailman

sudo apt-get install mailman

sudo touch /usr/lib/cgi-bin/mailman/favicon.ico # fake a favicon

# create the mailman admin mailing list

sudo newlist -l en -q mailman postmaster@example.com SOMEPWD

# must choose an MTA, even if it is MTA=None

sudo sed -i 's/.*\(MTA=None.*\)/\1/' /etc/mailman/mm_cfg.py

# anonymize mailman footer and set proper permissions

sudo sed -i '/return t$/s/t$/""/' /usr/lib/mailman/Mailman/htmlformat.py

sudo chown www-data /var/lib/mailman/archives/private

sudo chmod o-x /var/lib/mailman/archives/private

(cd /var/lib/mailman;sudo chown list:list */)

sudo /usr/sbin/check_perms -f

sudo /etc/init.d/mailman start # start mailman

 

3. install & configure nginx

sudo dpkg -i nginx_0.8.53-0ubuntu1_i386.deb

# create a file /etc/nginx/sites-available/mailman

server {

   listen 80;

   server_name mail.example.com;

   access_log /var/log/nginx/mailman.access.log;

   error_log /var/log/nginx/mailman.error.log;

   root /usr/lib/cgi-bin/mailman;

   rewrite ^/$ $scheme://$host/mailman/ permanent;

   location = /mailman/ {

      proxy_pass http://127.0.1.1:8000/mailman/listinfo;

      proxy_set_header Host $host;

   }

   location /mailman/ {

      proxy_pass http://127.0.1.1:8000/mailman/;

      proxy_set_header Host $host;

   }

   location = /cgi-bin/mailman/ {

      proxy_pass http://127.0.1.1:8000/mailman/listinfo;

      proxy_set_header Host $host;

   }

   location /cgi-bin/mailman/ {

      proxy_pass http://127.0.1.1:8000/mailman/;

      proxy_set_header Host $host;

   }

  location /images/mailman {

      alias /var/lib/mailman/icons;

   }

   location /pipermail {

      alias /var/lib/mailman/archives/public;

      autoindex on;

   }

sudo ln -svf /etc/nginx/sites-available/mailman /etc/nginx/sites-enabled/

sudo /usr/sbin/nginx -s reload

 

4. run mailman from:

http://mail.example.com/mailman

Software: Our Prefered

This is the archive of software packages known by the e-HealthExpert.org members.

All entries should at least include:

  1. Software name and version,
  2. An abstract of what it does,
  3. The type of license under which it is released,
  4. The software homepage address,
  5. A rating value from 1 to 5 [1 (lousy), 2 (mediocre), 3 (average), 4 (good), 5 (very good)],
  6. Submission author's name.

This new area of e-HealthExpert.org site is also meant to be a repository of the most relevant software that appears at our [sw-hw] mailing list.

The [sw-hw] mailing list is an open forum in which any member can freely review, evaluate and talk about any subject related to systems architecture, software, hardware and, more in general the usage of IT technology to support all the activities of a Healthcare Organization. List guidelines and subscription application forms are available from: [sw-hw] mailing list usage guidelines.

Standards, Protocols, Policies and Tables

Collection of norms, specifications and various data tables of general interest to the development, management or control of Health IT Systems (HIS).

eHealth, Health IT or HIS Project Risk Assessment

Richard Heeks from the University of Manchester (UK), has an article on how to evaluate a eHealth, Heath IT or HIS project risk. The assessment (success and failure) factors are described. A hospital worked example is given.
The full article is available at: eHealth Project Risk Assessment

Another interesting work from the same author is How can I make my e-health project more likely to succeed and/or less likely to fail?

There is also a downloadable .pdf named: Why health care information systems succeed or fail