You are here: Home
How Sites4Doctors works
This page tells the same story as the general web development and hosting page, but with much more detail about how the package works and is managed. I have tried to avoid being overly technical, and have separated out the really techy bits onto a separate page. I have to admit that it includes a bit of bragging, because I am very proud of this package!
Sites4Doctors was designed as a specialist package for GPs under the Sites4Professionals brand - launched on the 1 July 2004 with a powerful Site Management System and a host of features designed specifically for the GP market.
The structure was based on a content-management system (CMS) that had been developed in Southern Derbyshire NHS before my arrival. I suspect that it had in fact been cobbled together from bits of several other systems which my colleagues-to-be had found via Google! It worked reasonably well for intranets (websites running on local servers and accessible only to authorised users) but in three years it could never be made to work over the Internet. It did, however, give me some excellent ideas. It ran entirely on Microsoft products: Windows web-servers, Active Server Pages (ASP), the VBscript web-scripting language and the SQL Server database system. So did everything I developed in my 3 years or so in the job, except in the early days when the database was Microsoft Access!
What this experience taught me was that active or dynamic websites, where scripts (programs running on the web-server) built pages intelligently from content stored in databases, rather than static ones in which the pages are simply text files, were the way to achieve flexibility and interactivity.
But, with all the many site-outages that afflicted us, it also convinced me that under no circumstances would I ever again host a site on a Windows server, using ASP, VBscript and SQL Server - or any of their possible successors.
As far as I can recall, when I first found 1&1 Internet in 2001 they didn’t even offer Windows hosting, so I had no choice but to see my websites run under the Linux operating system - something for which I am profoundly grateful! They have offered both Linux and Windows servers for some years now, and I have no doubt that their Windows system is much more stable and reliable than what I used at the NHS, but I could never be tempted to change.
The Linux operating system is the ’open-source’ version of the mighty Unix, which drives virtually the whole Internet and is used in various disguises on most commercial mainframe computer systems. (Ironically, when I was there the NHS did use Unix - but only for a nationwide network that handled the payment of GPs, and it probably still does. Obviouslt they could afford for their websites to fail repeatedly but not for the doctors to go on strike!) Open source software is free to use and is under constant development by a world-wide community of enthusiastic programmers. Anyone can submit new functions or revised versions of existing ones for inclusion, or even write new versions of the system and its applications for their own use.
To date, Linux hasn’t seemed to offer a viable alternative to Windows for what I do on my PCs, but I have recently been looking at various implementations. Ubuntu is leading the race at the moment: it has a desktop designed to be friendly to Windows users and is every bit as pretty as that of Vista; it runs a great deal faster; and, in common with all Linux releases, it has an open source office package (OpenOffice.org) that does everything I currently do in Microsoft Office apart from email and calendar - plus a heck of a lot of other promising looking stuff! I was hoping it wouldn’t be long before I could abandon Windows altogether, but in January 2010 I bottled out and bought Windows 7, as you’ll see if you have a look at Adventures with Ubuntu - a Linux odyssey.
With open source software you only pay for any technical support you need, and so far I’ve managed quite well with just the excellent online documentation.
For the real technies, ’open source’ refers to the fact that the source code of the system is freely available. This is the code as written (the relatively legible and understandable stuff), before it is compiled into the run-time code that actually does the work. It is written in the C programming language, the world standard for most serious professional software, which means that any programmer can modify the source and compile their own systems.
My sites are delivered by the Apache web-server software. Virtually every page seen by anyone visiting the sites is built dynamically on request by scripts written in the amazing PHP web-scripting language using data delivered by the superb MySQL relational database management system (RDMS). Apache, PHP and MySQL are also all open-source, and I make no apologies for the extravagant adjectives I just used to describe them. These packages don’t have to be pretty because they are never seen, but they work tirelessly away in the background to deliver fast, precise and, above all, stable and reliable results.
The basic mechanics
An ordinary static website consists simply of a collection of text documents. There are basically two kinds of text in each document: the actual content we want site users to see; and the Hypertext Mark-up Language (HTML) tags that control how it looks and how the site functions. If a portion of the text in the file simply looks like this...
...it will simply appear as you see it here. However, if we add a few tags, like this...
...it will look like this:
The ’<b>’ tag switches the bold style on and ’</b>’ switches it off. ’<i>’ tag switches the italic style on and ’</i>’ switches it off. ’<u>’ switches underlining on and ’</u>’ switches it off. Simple!
In our static site, the HTML text with the tags above is exactly what is stored on the web server (the computer that delivers the site over the Internet) and is exactly what is sent over the Internet to the user’s computer. Static sites can usually be identified by the addresses of their pages, which end with the suffixes ’.html’ or ’.htm’, as in ’index.html’ or ’index.htm’.
In a dynamic site, identified by suffixes like ’.asp’, ’.aspx’, ’.php’ and ’.php4’, the same HTML text is still sent to the user, but it is generated by a program - or script - that runs on the web server. In the PHP scripting language used for Sites4Doctors, the actual line of code that generates the HTML text might look like this:
The instruction (or statement) ’echo’ is the equivalent of ’print’ in the old BASIC programming language found on microcomputers like the Sinclair ZX81 and my beloved BBC Computer (those really were the days - trust me!). It says to the server ’Send the text in quotation marks that follows this instruction to the user’. The text in quotes is what is sent. The semicolon tells the server where this particular statement ends - and its accidental omission can create havoc!
There would be absolutely no point in creating a site using scripts that simply echoed a set of pre-written bits of text to site users. However, a Sites4Doctors site is a dynamic one, built around a large database. This consists of many tables, each controlling a different aspect of the site or its content. The HTML text content and all sorts of other parameters are first read from the database into variables - labelled containers that hold data that can be changed. These can then be subjected to all sorts of processing, allowing decisions to be made and changed effected, before the resulting content is sent out by the ’echo’ statement. PHP variables are identified by a ’$’ prefix, so the PHP statement above might look like this:
’$HTMLcontent’ is the name of the variable into which the page text taken from the database - and possibly heavily processed - is stored.
With the Sites4Doctors Site Management System (SMS), site editors in the client organisations can edit the text of pages and change all the other parameters that control how it is delivered.
The SMS itself is simply a large collection of web forms - the kind of thing you fill in when ordering a purchase from a website - each of which sends the content of its various boxes to a script called a form handler. If you are creating a folder or a page, the handler inserts new database records containing the content entered on the form into one or more database tables. If you are editing a folder or a page, the form’s own script will have read the existing content from the database tables into the boxes so that they can be altered by the editor, and when the form is submitted the handler changes (updates) the existing record in the database.
And that, in a nutshell, is how the Sites4Doctors sites work and how editors use the SMS to control them.
A glimpse inside
Feel free to skip this section - unless you’re at least a bit of a programmer it will probably baffle you, and you don’t need it to make sense of the rest of this page!
PHP uses the same basic syntax as the universally-used ’C’ programming language. Legend has it that C was developed on Unix systems, and that the Unix operating system was written in C. Chicken-and-egg? Not really: they were developed in parallel, bits being added to one when they were needed by the other. (What the standard work on C, Kernighan & Ritchie’s The C Programming Language, actually says is: ’C was originally designed for and implemented on the UNIX operating system on the DEC PDP-11, by Dennis Ritchie. The operating system, the C compiler, and essentially all UNIX application programs...are written in C.’)
If you have ever programmed in Sinclair, Commodore PET, BBC or Acorn Archimedes BASIC (as I did in all four), you could probably have a stab at Microsoft’s VBscript, which is a subset of its Visual BASIC programming language (I never quite figured out what is visual about it!). And you might find PHP scripting pretty incomprehensible. But it is actually far more structured. Click to see a bit of which I’m especially proud, used to build the ’You are in:...’ links under the photo-montage on every Sites4Doctors page.
If you have ever used a database, you will understand the logic of a query, though you may only have built one using a ’wizard’. Using PHP to issue a query, written in Structured Query Language (SQL), directly to a MySQL database, and to deal with what comes back, is illustrated on the same page.
How it’s written
Many web developers - including, I am sure, all the Sites4Doctors’ competitors whose work I?ve seen - never see anything as ’dirty’ as even HTML - let alone PHP or SQL. They use complex and expensive web-authoring packages such as Adobe’s DreamWeaver. These are intended to enable specialists in other fields such as graphic design to build websites without needing to understand how they work, let alone having the programming skills to build one from the ground up. They work in the kind of software environment they’re used to - similar to packages like PhotoShop, and with equally powerful graphics tools. The problems arise when they need to track down bugs or add features their software doesn?t handle.
Of course, if you’re spending several hundred pounds on software you expect value for your money, and if you buy a package like DreamWeaver you will get lots of pre-designed page templates which Adobe et al have paid highly-professional graphic artists to create. These are very beautiful, but they have been designed by someone with no idea what you, the user, want your site to do. If you are promoting a pop band or running an online perfume shop you’ll probably find a variety of highly appropriate templates in DreamWeaver’s library.
Which means, of course, that you don’t need either programming ability or design skills.
But a GP practice website needs to deliver important information easily and accessibly to important people - the patients. It’s not a marketing tool but an information delivery system. And designing a site like that (in the real sense of ’design’: 90% engineering and 10% styling) requires real knowledge and understanding of primary care, hard-won skills in the organisation and presentation of information and the ability to engineer a system to deliver that information.
So I don’t use an authoring package. I never have, because I like to have total control of the technology. If I don’t know how to do something, I go to the online documentation for HTML, PHP or MySQL and find out (or unashamedly buy in a licensed package such as the Editize web-page editor and the Zoom site search engine used in Sites4Doctors). All my programming is done in a fairly simple text editor.
When I started web development in 1995, I used Microsoft Word as a crude WYSIWYG editor that could keep several pages open at once for testing links. Often, though, I used NotePad, the simple text editor you can find the the Windows Accessories folder. That?s all you really need, but it’s handy to have an editor that helps you a bit. After trying a number of freely downloadable ones, including one with the improbable name of Arachnophilia (Web...web...spider...geddit?), I finally settled for EditPad. Once I was sure it did everything I needed, I bought a licence for EditPad Pro. To be honest, I don’t use many of this package’s more advanced features, but I do like its line-numbering (unlike BASIC, PHP doesn’t actually use line numbers, but try finding an error, reported by the system with a line number, without them!), auto-indenting and syntax highlighting, which make it much easier to see where you might have gone wrong. Here is a fragment of my personal address-book script in an EditPad Pro window (statements in black, text in blue and variables in purple):
File Transfer Protocol - and a good word for Microsoft
...and you won’t hear many of those from me! I find the easiest way to get files onto my web server is, believe it or not, using Internet Explorer. If you type ’ftp://’ followed by a domain name into the address bar, it will display a list of the directories on the server (though it should ask you for login details first). If you then click the ’Page’ dropdown you’ll find an option to display the FTP site in Windows Explorer, which means it appears and behaves (nearly) like a folder on your own PC or network. You can drag-and-drop or copy-and-paste files in both directions, just as you would on your local system. Lots easier for site editing than a dedicated FTP client. (Ubuntu Linux goes a step further: you select ?Connect to?, type in the domain name and you get the same access as you have to your local hard drive.)
A bit of history
Several East Midlands Local Medical Committees - but most notably Nottinghamshire LMC - provided invaluable input on GPs’ needs, as did a number of local practices with which I had worked in my previous incarnation, particularly Charnwood Surgery in Derby, which bravely trialled the package in its earliest versions. From then on, feedback from a steadily growing list of clients generated a constant stream of technical problems to be solved and new ideas to be implemented. Now (November 2009, 5½ years after the system first went live) technical problems are few and far between, but the new ideas keep on coming. Reliability has been incredible, thanks to the software and 1&1 Internet’s superb hosting service.
The shell of the SMS was written entirely by me, but it seemed sensible to buy in two complex components: the Editize WYSIWYG web-page editor (a Java application that sits in a web-form text box) and the Zoom site search engine. It was a discussion with two LMC colleagues that sent me off to look for a search engine that could ’see inside’ many different types of document: PDFs were seen as essential, but Word and PowerPoint were also needed. It was Google that found ZoomSearch for me. Each package was bought with a single licence fee from some very clever specialist programmers - a bunch of Americans called SitePoint, now based in Australia (probably for the surfing!), and a company called WrenSoft, also coincidentally located in Australia.
Less coincidentally, it was one of the founders of SitePoint, Kevin Yank (no kidding!), who wrote Build Your Own Database Driven Web Site Using PHP & MySQL, an early online pirate version of which taught me everything I needed to start building Sites4Doctors.
The package: setting up a site
Right! Here endeth the techy self-indulgence. Now for the nitty-gritty...
The idea was to allow practices to develop and maintain their own sites with the minimum of intervention from me.
Anyone interested can set up a site in minutes by completing a short and simple web form. When this is submitted, the web server creates a directory (’folder’ to you Windows victims) and two subdirectories and copies a complete set of site files into them. It adds new records to the SMS database, where it also creates new tables to contain the folder, page and image data for the new site. At the end of setup, a confirming page is displayed and a confirming email is sent to the person doing the setup. This includes a temporary URL (web address) for the client’s new site , a link to the Site Management System and the necessary login ID and password to allow site-editing to begin. It copies this email to me and also sends me another one containing all the information submitted on the setup form. All this takes just a few seconds.
At this point, I log in to 1&1 Internet’s control panel and register the first available domain name from the client’s list of preferences. This takes no more than a couple of minutes.
An hour or so later I start regular checks to see if the resulting web-address has been activated. This usually happens within about four hours, at which point I send a welcoming email manually, which allows a bit of the personal touch. This includes a link to the permanent site address. I also log in to 1&1’s ’MySQL Admin’ pages, which provide a superb web-based environment for managing all aspects of databases. Using a simple editing form, I tell the database which of the client’s suggested domain names has been registered and that the site’s address is active. This takes just another couple of minutes.
I then go to the SMS’s ’Package administration’ page, which will now show a link with which I can invoice for for set-up and three months’ support and hosting. Just one click sends a plain-text invoice to the address given on the setup form and copies it to me. This contains a link to display a printable invoice as a web page.’
Clicking the link displays a neat web version of the email invoice for printing and filing. I routinely print one out for my own files.
Then I sit back and wait for phone-calls or emails for support. In most cases I wait quite a long time, because the SMS really is very easy to use and has plenty of online help.
The site’s home page will already have been populated with the initial text given on the setup form. All core data about the practice, its premises and its people are entered on three more simple forms. This can be displayed automatically on pre-formatted web pages, ensuring that the information the patients really need to know is available quickly and clearly. The design of this part of the system was informed by my three years managing all the data on the area’s GP and dental practices, opticians and pharmacies for the NHS’s national website, and most clients choose to use it, though they can disable any parts of it and present the information on their own web pages if they wish.
So a practice site can be set up, and all key patient information published, in an hour or two, depending on the size of the practice. How much IT expertise does it take? If you can create and save a Word document, and shop on Amazon, you have more than enough knowhow.
The terms of the package are that invoices are due for settlement within 30 days, at the end of which an email reminder will be sent with a further 1-day grace period. If the invoice is still not settled, the site will simply be shut down - though it can be reinstated at any time in the following six months simply by settling the invoice. This means that anyone can set a site up and experiment with it for over six weeks before paying a penny. At the end of that time, if they’re not convinced, they can simply walk away. You can’t say fairer than that!
Practices and other organisations which do settle the first invoice (and so far they all have, even if one or two have later moved to different providers for something prettier but much less useful) are entitled to a half-day visit during the first three months. This provides an opportunity to give site editors a comprehensive tour and explanation of the Site Management System, with answers to any specific queries that may have arisen. It is also a chance to discuss any changes they may require to the style of the site (which can normally be implemented very easily by editing the style sheet that controls the look of each site). I then take any photographs which the client wants for the site, or for any other uses, with my precious Canon 6.1-megapixel SLR camera. These are emailed to the client within 24 hours, and in most cases the default photo-montage in the page header is replaced with one showing pictures of the client’s premises and/or scenes from the local neighbourhood. The visit also allows both sides to ’put faces to names’, making later phone and email contact more personal. Thanks to my long experience of training teachers to use IT in the classroom, the visit is usually a pretty low-stress experience for new clients.
Sites for other organisations
I wasted quite a lot of time and effort on a parallel system for other organisations offering professional services, but eventually decided to invite all potential clients to set up a GP site and then discuss with me their specific requirements, which I would implement on a site-by-site basis.
Developing the site
Once the basic site has been created, a clients can do as much or as little as they wish.
The SMS allows them to create a structure of virtual folders and sub-folders, each of which generates a button on the site’s button-bar. The tree structure, which is basically the same as the Windows file structure, can be developed to any level of complexity.
Within each folder, they can create web pages or publish documents uploaded from their local computers. They can also upload images to be added to their web pages. Any page can be made the home page for the folder in which it sits (the one users see when they click the folder’s button) just by clicking a link. Pages and documents can also be deleted via a link or moved into different folders using a drop-down menu.
Organisations other than GP practices which publish large numbers of documents - Newcastle and North Tyneside Local Medical Committee's site was a fairly extreme example) can build huge libraries very easily, because if they don’t create a home page for a folder the system will make one automatically, ’on the fly’, whenever the folder’s button is clicked. This is headed by the title of the folder and displays an up-to-date list of links to all the pages and documents in the folder (sorted by date, oldest or newest first, or alphabetically) - and users can even attach introductory text to be displayed above the links.
Pages are created and edited using the excellent Editize, a Java application which puts a WYSIWYG (What You See Is What You Get) editor into a text box on a standard web form (Java is another programming language that looks very like C and PHP). This offers a deliberately limited range of style options to discourage users from messing around with too many fonts, sizes and colours (my experience is that the more desktop-publishing features you offer untrained users, the bigger the mess they will make!). The button-bar offers a dropdown menu of styles - heading, subheading and paragraph; left, centre and right alignment; indent and outdent; bulleted and numbered lists; bold, italic, underlined and ’highlighted’ text (normally just coloured red); cut, copy, paste, undo and redo; and insert/edit web links, images and tables. The last three display dialogue boxes, and there are ’advanced’ options for images and tables. Undo, redo, cut, copy, paste and select-all are offered on a right-button pop-up menu, and many of the Word keyboard shortcuts work in the same ways. Here is a view of part of the page editing form with the Editize window showing part of the page you are reading now:
Like the whole of this site and www.sites4doctors.co.uk, the page you are reading was composed in real time on the page editing form. It could have been done in Word and pasted in, but I find the SMS very easy to use.
Images are uploaded quite simply from a form: a ’browse’ button allows users to locate and select images on their local computers or networks, and to assign informative text labels before uploading (there is a database table for each site’s images). This text will be displayed when a site-user’s mouse pointer is over the image. They are then inserted into web pages by clicking the image button in Editize and selecting from a list of descriptions (or filenames if no descriptions have been entered). This is best done by leaving a blank paragraph and placing the cursor in it before selecting the image. For this site, I have adopted the standard of centring all images (as you see in the examples on this page), but the advanced option allows users to ecperiment with resizing their pictures and aligning them in different ways in relation to the text.
Images are simply uploaded into the library for the whole site, but documents are uploaded into specific folders and are, in effect, pages. On the uploading form, a sensible title can be assigned to a document, but if this is not done the title displayed in any link will simply be the document filename. This can be edited afterwards if necessary.
Special features for GPs
The key feature is, of course, the system outlined earlier, which allows all the basic information about the practice to be entered into the database using simple forms. Once stored, the information is published automatically on standard pages. Unless a practice has chosen to switch off the standard buttons and create folders with the same names, you will see how the information is organised by the system. If a practice has only one surgery, you will go straight to the full details, but if there are more than one you will see an intermediate page showing all of them with links to full details of each. A street-map link is created automatically from the premises’ postcode.
The Local Medical Committees’ input on GPs’ needs was invaluable, as was that of some very helpful practices, particularly Charnwood Surgery. Since 2004, feedback from a steadily growing list of clients has guided a thorough debugging of the system and suggested many additional features, most of which can be switched on or off simply by clicking a button on a form.
A very popular feature, available from the start, is online ordering of repeat prescriptions. The patient completes a short form, using the information on the tear-off counterfoil from his or her previous prescription, and submits it. An acknowledgment page appears, allowing all the information submitted to be checked, and if the patient has given an email address a confirming message is sent (without any personal information - no email system is 100% hacker-proof). Recently, the providers of clinical IT systems have started offering online prescription requests and appointment-booking. Extra buttons linking to the Access EMIS and SystmOnline websites allow patients to log in to the site corresponding to their practice’s clinical system; these can be switched on or off by the site editor.
Sites can include an online implementation of the GPAQ Patient Satisfaction Survery and a Comments and Suggestions box where patients can comment on the practice’s site or its services.
The most recent additions are buttons for two useful pages of links: one linking all the pages on the site, arranged alphabetically by title, and the other the 50 most recently added or updated pages on the site. Like so many features, these can be switched on or off as required.
But the site facilities and technicalities are only half the story. What practices are really paying for is a very high level of customer care. They have both landline and mobile numbers, and the mobile is switched on 24 hours a day, 365 days a year. Email is monitored on a BlackBerry handheld which is switched on from 8am to 10pm every day and kept within arm’s length. And, if a client uses the support and suggestions form in the Site Management System, the message is emailed and a text-message alert is sent to the mobile.
All queries are dealt with as quickly as is humanly possible, the record so far being an on-call GP working on his site who used the form at 1:15am. He had an email response from the BlackBerry before 1:30am. On another occasion, a new client had set up a site but could not log in to the system. He called the mobile, which I answered at the checkout in a French hypermarket. It turned out that he had an apostrophe in his Irish surname, which the current version of the system could not handle. The system was modified within an hour.
More about package administration
As I’ve already mentioned, an email invoice for setup, hosting and support (with a link to print a ’pretty’ version) are sent automatically from the package administration page, which prompts me to trigger this by displaying a link - one click does the job.
At the end of the first three months hosting and support, the admin page displays another link, this time to send the first annual hosting and support invoice - again, just a click is needed. Twelve months later, the link reappears...and so on.
So all I have to do is to look at the package administration page regularly (my Outlook calendar reminds me every Monday morning) and click any new links.
As the invoice information is stored on the database, it was only a small step to include a link to a page listing (and totalling) the invoices issued in the current trading year. Print this and clip it to a stack of the years invoice copies and I have a happy accountant. But the other thing she needs is details of business expenses, so I added a table to the database for purchases and a form to enter each item as the invoice or receipt become available. The details of each purchase are entered into the form, complete with its category (capital, running costs, motor, telephone, mobile phone etc) and can then be seen on another page that lists and totals them in their separate categories. The record numbers of the entries are written on the paper receipts, which are then filed in order (those irritating little till tickets being PrittStuck to scrap sheets of A4 paper). Bingo! An even happier accountant.
Each year I just make a copy of each of these pages and use ’search-and-replace’ to change the years in the various SQL queries - ’2010’ to ’2011’ and ’2009’ to ’2010’ (that order, of course - think about it!). Then I put a link to each page on the package administration page and I am, as they say, in business!
There are other links on the admin page.
One displays a list of all the Sites4Doctors sites with contact details - that’s the one driven by the advanced example of an SQL query on the techy page. I keep a printout of this stuck to my cupboard, but looking online ensures that I know if a site’s main contact person has been changed by the client.
Another links to a form which I use to send out email updates to all site editors and administrators - I just type a subject and a message in two boxes and submit the form: the script loops around the identities and uses PHP’s email function to send out the message, showing each on a confirmation page when it has finished. Of course, the updates are all stored in the database, and there’s a link on the Site Management System home page that allows clients to see all the updates that have ever been sent out on a single page, sorted into newest-first order.
And there’s also a link to check when all the client sites’ were last indexed by the Zoom search engine - a list of sites with the date and time of the latest indexing scan. The Zoom indexer allows me to schedule site indexing as a Windows task. This happens at 10-minute intervals between 10am and midday through the week - spread out so it doesn’t interrupt other work too much - ensuring that every site’s search indexes are up-to-date. On Monday afternoons, Outlook prompts me to look in the Windows task scheduler and check that all the tasks have happened successfully when they should; this allows me to re-run any indexing scans that either didn’t happen when they should (maybe because the PC wasn’t turned on) or generated an error.
As you gain experience of using a database to drive websites and using a web front-end to manage databases, the ideas just keep coming. I’ve kept a personal address book as a Microsoft Access database for donkey’s years. Recently it occurred to me to export the data and, using 1&1’s MySQL administration system, import it into a new table in the SMS database. Then it was the work of about ten minutes to write a script that displays all the names, addresses and phone numbers neatly on screen. This is accessed by a link on the SMS home page which, like the link to the package administration page, only I see because only I am logged in as the package administrator.
I’m sure the ideas will keep coming to give my ageing brain periodic work-outs.
Personal site for Paul Marsden: frustrated writer; experimental cook and all-round foodie; amateur wine-importer; former copywriter and press-officer; former teacher, teacher-trainer, educational software developer and documenter; still a professional web-developer but mostly retired.
This site was transferred in June 2005 to the Sites4Doctors Site Management System, and has been developed and maintained there ever since.