Comprehensive GNUmed TODO list

This page lists TODO items for the GNUmed project. (One of the developers' personal scratchpads is here)

Please add items under the appropriate section. Be sure to include additional information and contextual links where possible.

If you start work on an item please leave your name and the date so people can get in touch with you. Upon completion of an item move it to the corresponding section under DONE.

Pending TODOs



ports to platforms

  • text UI ? (-devel posting by Karsten of May 18, 2004 on TurboVision port)
  • WinCE ?

source control/source code layout

  • migrate to SVN when savannah supports it
  • overview of choices
  • clean out tree
    • some things under test_area can go, for example
  • should layout match a tar.gz archive that we are happy to distribute?
  • gnumed/client/bitmaps/ -> gnumed/client/pixmaps/ as that is more LSB compliant (and use it in the client)

TODO list

Mailing lists

  • link to our CVS per Ian's posting May 31, 2004 re Mailing list

client code

debugging support

  • logging nitpick "explicitely" should be explicitly
  • email talkback client
    • via menu item
  • exception handling widget:
    • support screenshot
    • support log file editing
  • tooltip or double-click on statusbar messages
    • display stack of last 5 messages
    • support Push/Pop/Delay on statusbar

client startup

  • login dialog: allow selection of:
    • language
    • redo wxGlade-based

date/time handling

  • move from mx.DateTime to internal datetime
  • port FuzzyTimestamp? to datetime
  • consider adding db/psycopg2 adapter for
    • fuzzy timestamps
    • timestamps with sticky input timezone

  • date & time input widget
    • detect more patterns
    • some background at
    • display day of week on dates on loosing focus
    • ask user if month/year ambigous on loosing focus
    • calendar popup
    • restrict: max offset from base
    • restrict: after/before (base) only
    • restrict: (list of days of week) only
    • restrict: y2k window
    • input "tuesday march 2000" -> popup with all 4 or 5 possible tuesdays in march 2000

    • moved to Launchpad BlueprintPossible? content:
      • Disabilities that may affect communication, or cognition, or care access, or caregivers if patient is not fully competent
      • Active and/or relevant problems from EMR tree
        • flagged depending on A B C diagnostic certainty criteria per "on theory of primary care" offline thread and GnumedReportGenerator?
      • Existence of inbox items, filtered on patient
      • Existence of waitlist items, filtered on patient
      • Existence of unreviewed incoming labs, documents, communications
      • Existence of to-do items
      • Next visit date

external patient loader

  • allow programmatic source preselection (single or constraint list)

HIPAA requirements

ifap index drug database

  • stage 3
    • use selected drugs to populate local drug cache
    • populate patient medication list from selected drugs

  • stage 4
    • use for allergies
    • use for prescriptions
    • other uses

Staff Management

support for filling in random forms

  • use case:
    • insurance forms/accident forms/... which are not used regularly but on a per-occasion basis
  • approach:
    • scan form or
    • select in document tree right-click popup menu "fill in as form"
    • generate OOo document with scan as background image
    • open in OOo
    • save completed form back into archive as patient related document

database access in the middleware

  • consider SQLAlchemy
    • already uses psycopg2
      • thereby connection pooling
      • so remove that from gmPG
    • offers threaded connections
    • supports a whole load of ORM functionality
    • advanced Python-level SQL-construct support PLUS handcrafted SQL where needed
    • ORM works with existing schemata (does not insist on creating its own)
    • fits well with our philosophy of having stored procs/clever views in the DB

  • use SQLSTATE, with SQLAlchemy the following snippet might help:
From: Nick Murtagh <>
Date: August 17, 2006 8:01:19 AM EDT
Subject: Re: [Sqlalchemy-users] SQLSTATE access via SA possible/ 
needed ?

Karsten Hilbert wrote:
while evaluating whether to move to SA with our application
( I am wondering whether there is any
way to access SQLSTATE information from within the SA
framework. Some information on SQLSTATE (as applies to
PostgreSQL) is here:

I find it useful to have access this - say I want to both enforce a
unique constraint and have user-friendly error messages.

So I wrap session flush and turn the PostgreSQL error into an

 ==== ====
import sqlalchemy

class SQLUniqueConstraintViolation(Exception):

      def __init__(self, constraint):
          self.constraint = constraint

# Regexp to parse unique constraint violation error message
reUCV = re.compile('[^"]*"([^"]+)"[^"]*')

def flush(session):
     except sqlalchemy.exceptions.SQLError, e:
         if e.orig.pgcode == '23505':
              raise SQLUniqueConstraintViolation(

==== ====
import sqlalchemy
import flush

# ...
session = sqlalchemy.create_session()
# ...
except flush.SQLUniqueConstraintViolation, e:
     if e.constraint == 'some_constraint_name':
         # do something
         # do something else
     # some other exception!

business object class

  • better error handling - use sqlstate numeric error code
  • more exceptions, less explicit error checking as per Ian

  • use psycopg2 object adaption ?
  • how Horst's mini-gnumed does it: posted Aug 18, 2004

KVK handling

  • improve standard use (patient import)
    • import as KVK (Krankenkasse etc)

  • add more creative uses

XDT browser

  • import
    • section-wise
    • into currently active patient
    • into patient read from XDT file

signal dispatcher

layout manager

  • add static [save] button to top panel and make it send save_data() signal to widgets
  • cNotebookPlugin.MenuInfo() to return Help String as third argument
  • consider AUI-based approach as tested by Richard


  • drop down list on left click
  • merge with TextCtrlAutoComplete? (wxPython wiki)
  • better query levels:
    • per match strategy (phrase, word, instring)
    • per-strategy list (or rely on SQL UNION ?)
      • to join results
    • per-strategy list
      • to be used sequentially if previous query finds nothing
  • on Windows: ENTER does not select
  • on lose_focus:
    • if selection_only is true and data is None:
      • check getvalue against matches
      • if not found: veto lose_focus (but how ?)
  • on GetData?():
    • if selection_only is true and data is None:
      • check getvalue against matches
      • set if found

episode selection phrasewheel

  • somehow allow issue selection

EMR tree browser

  • rename "free-standing" to "unattributed" per discussion here

  • tree expansion history mixin with persistence

  • at top allow selection of
    • sort mode
    • structure mode
    • since/until limits
    • all/active only (that is all items vs. problem list)

  • sort modes
    • alphabetically
    • chronologically
      • normal
      • reverse
    • take into account
      • clinically relevant
      • open/closed

  • structure modes
    • state-of-health view:
      • issue 1
        • episode 1
          • encounter 1
          • encounter 2
          • ...
        • episode 2
        • ...
      • issue 2
      • ...
      • each issue lists all episodes, chronologically
      • each issue displays some statistics/summary about itself on the right hand side
      • each episode lists all encounters where it came up
      • each episode lists some statistics/summary on the right hand side
      • each episode lists the narrative chronologically on the right hand side below the summary/statistics part
    • continuity-of-care view:
      • encounter 1
        • episode 1 (of issue)
        • episode 2 (of issue)
        • ...
      • encounter 2
      • ...

  • health issue level
    • popup menu: edit health issue metadata
    • move all episodes of an issue to another one, offer deletion of old episode
    • one-level undo of episodes moving

*display more types on the right
    • vaccinations
    • allergies
    • ...
  • add drag/drop for episodes/encounters
  • top left: small part for general info (EA/FA)

  • mark revised entries

text-editor like progress note editor

  • based on STC
  • line markers: SOAP++
  • configurable line types:
    • main type: SOAP
    • subtype = clin_item_type (such as X in O == xray objective)
    • short alias for use in STC, up to 3 characters ?
    • label for selection in list
    • template for new line of this type

EMR export

  • refactor into formatters, make more generic
  • have one exporter that supports several target formats
  • use Cheetah
  • xDT exporter
  • German SCIPHOX
  • Western Canada "e-ms" standard (similar to CDA)
  • patient-centric GNUmed specific SQL script exporter

top panel

  • DOB field - notify user about patient birtdays
    • popup (config !!)
    • flash DOB for 3-4 seconds (config)
    • display DOB in red (config)

  • allergy field
    • make it a general CAVE field
    • consolidate allergy input
      • from progress note editor
    • also see relevant backend changes
    • integrate with drug db
    • show relevant info in current_medication view

  • other
    • show "relinquish control to caller" button
      • only show when slave-mode is True
      • set user_done semphore to True
      • optionally write file returning data
      • unlock patient ?

Family History

  • consolidate input
    • from menu
    • from progress note editor
  • display in top right part of progress notes browser

Past History


  • lateralisation
    • exclude from tab order
    • no built in way to do so

  • "year noted"
    • if, say, "1953" -> age_noted only "25y", not "25yXm"

  • condition field
    • link condition to codes database - but what for ?
    • link to clin.diag

  • call from progress note editor (see here)

BMI calculator

  • rework/cleanup
  • connect to backend
  • call from tools/top panel taskbar/$bmi in SOAP

active patient privacy dilemma

  • find a sane way to prevent patients waiting in the exam room to freely glance at other people's details
  • it has been argued that this is partially the job of the OS (to provide a seurable screensaver)
  • however, some OS' don't have one out of the box
  • so a lock "frame" for the GNUmed client is wanted

  • select list if multiple matches:
    • (locale-aware) sorting by last-/firstname
    • display addresses/other metadata in select list if multiple matches
    • add as new button
  • make jump to add if not found optional

patient input/modification

  • patient editor
    • add family relationship handling
    • handle multiple occupations

  • new patient wizard
    • use external patient sources
    • use fragments from fruitless patient search
    • make more generic using None or person DTO subclasses as pre-sets


gui_helpers generic message dialogs

  • force stay-on-top of client window


  • interface Compromed
  • interface FreeB?
  • interface OSCAR

document tree browser

  • popup menu entry to convert file format
    • converter user configurable

  • add total metadata window to context menu on document/object
    • a listctrl
  • implement widget to display document/object descriptions
  • double clicking episode in episode sort mode jumps to EMR tree with that episode open

  • switch to tree ctrl with several columns per item ?

document import/metadata editing

  • make entire GNUmed a file drop target and use dropped files as new documents for patient

  • on adding page from source/file run user-configurable post-processor for things like format conversions

  • in gmScanBackend
    • twain: implement GetDevices?() and let user pick

  • prompt user on uncommitted data at patient change

  • if adding to closed episode: reopen ?

  • document type editor
    • button mail -> mail local doc types to GNUmed community
    • allow merging document types

  • user-definable document source buttons:
    • left column below [Scan] and [Load] buttons
    • definable labels ('Dr. House, Diagnostic Medicine')
    • pressing a button does:
      • open defined directory or file or
      • open a defined scanner with defined parameters and
      • set any of the metadata fields with defined values (doc type, etc)


  • better contributors dialog
  • implement context sensitive help system

update handling

  • signals:
    • server: request_commit_and_cease (work)
    • client: ack_commit_and_cease
    • client: done_commit_and_cease
    • server: request_resume_after_cease

talkback client

enable user to apply predefined gnuplot script templates

to runtime-selected lab results


database schema

  • ACL:
    • grant access to treatment teams
    • hide data from unrelated treatment teams
    • support "care team" and row level ACLs (nested groups ?)
    • use security = definer/invoker on views/functions
    • use Veil to achieve the above
  • domains
    • soap_cat
    • gender
    • laterality
    • consider table "domains (domain, value)" and then check (is_in_domain(column, )) on domained columns
  • cfg
    • cfg.owner -> user
    • get_best_matching_cfg_option stored proc
    • cfg_get_user_biased(), cfg_get_machine_biased()
    • rewrite cfg_* tables based on General Bits/Varlena question-answer method
  • demographics
    • add change notification triggers and use in middleware (lnk_*)
    • rename "state" table and FKs to something like "region"
    • add field "region.type text"
    • allow for several translations of a word per language (eg Canada has French and English names for its states)
    • add country.iso_code_2
  • notification
    • make triggers deferrable or make them depend on a session variable or something or better yet make them "at commit"
  • session-temporary setting of curr_lang
  • schema revision tracking
    • use $Name: $ cvs tag keyword
    • add known hashes to gm_client_db

schema clin

  • triggers to enforce/permit only soAp items to be a diagnosis, whether or not marked is_aoe
  • clin_root_item insert/update trigger to ensure patient consistency across fk_encounter/fk_episode
  • coded_term: trigger on delete: restrict if term in clin_root_item.narrative
  • encounter_type "chart review" -> "in surgery" on write
    • - MRC/MCU-type based creation (per patient) in GUI __init__()
  • general CAVE functionality
  • use generate_series() in v_vaccinations et al

  • test results
    • trigger to verify signature is younger than result

  • add general cave table
  • add view across allergies/cave table denormalizing into CAVE view

schema blobs

  • doc_med fk_patient/fk_encounter/fk_episode consistency

  • allow attaching keywords to documents
    • EAV: keyword type - value (eg. speciality - surgery)
    • several rows of same type per document (discharge letter after multi-speciality hospital stay)
    • consider moving doc_type to this approach
    • types: document types, speciality, ...

  • documents
    • trigger to verify signature is younger than result


integrity checker

  • develop demon (like AutoVacuum) which can constantly run checks on the sanity of the data in the database
    • check for business logic constraints not fixed in the DB
    • check data validity such as for billing and generate reports
  • sanity check database settings


  • rewrite for no-more-services paradigm
  • use subprocess Python module and standard pgsql(.exe)

Everything below this line is raw material being incorporated from various previous TODO sources. It is not yet sorted into the appropriate categories. Please do so. Also feel free to still grab any of the items below for completion.



  • windows installer needs to detect python location and either patch patch files with location or add it to path
  • windows installer for server part to wrap pg_restore
  • windows installer needs to spit out reasonable defaults for postgresql pg_hba.conf
  • rpm packages



  • add release tag handling

health issue edit area popup

  • display existing health issues
  • check for duplicates on [save]

EMR journal plugin:

  • active problems: turn into proper list
  • within encounter sort by episode
  • improve episode creator message when activating "issue" node
  • consider dropping issue/episode annotation

progress note input:

  • configurable popup keywords
  • add Abrechnungsdiagnose/GNR fields when running in Germany
  • make popups non-modal (?)
  • allow renaming episode from STC header
  • improve cursor handling including STC header
  • make problem list an issue-episode shallow tree ?
  • "ICPC:" popup with "[ ] embed"
  • "ICPC?" popup showing ICPC codings for term
  • ALT-C/"$code" popup for coding w/ any coding system
  • make enter/tab/cursor up/down movement more consistent including STC header
  • pre-set RFE from waiting list
  • take a look at the field sizes, they are too large

forms layer

  • generic form GUI class for forms that don't have a dedicated widget class
  • use Cheetah for the templates and generate formats from it

new patient wizard:

  • make values pre-settable
  • allow cursor up/down instead of TAB
  • consider: | zip code: ______ town: _______ |
  • consider: | street : ______ no: _______ |
  • consider: | zip/town: ________________________ | with parsing
  • allow creation of state / make optional ?


  • rename user columns to usr as user is reserved
  • improve v_emr_journal

referrals handling

  • referral letter(AU) or form (DE)
  • LaTeX template allows us to specify either
  • locale-specific, but fixed for that locale
  • backend stores fields of all forms entered
  • 0.1: actual form printed/faxed/emailed via popen ()
  • FUTURE: spool tables on backend, listener daemons then deliver.

status: can produce letter now, some bugs remain

vaccination panel

  • records vaccinations given (including elsewhere?)
  • a vaccination schedule enrollment tree to be made reusable if possible
  • calculates list of pending vaccinations for this patient
  • uses locale-specific schedule
  • Only DE schedule at present
  • FUTURE: link to drugs DB, how?

status: works

requests handling

  • GUI written, but highly AU-specific
  • In AU: select discipline, then provider, then branch
  • then select intervention(s)
  • add clinical notes
  • LaTeX form, currently fixed, Richard's standard form
  • form populated, including reference data such as patient instructions based on selected provider and intervention(s)
  • stores form tables as above
  • FUTURE: allow selection from backend-stored list of form templates (this list might be provider/discipline specific in AU)
  • DE: form selection
  • DE: no provider selection: generic forms only!

status: not started, but reuses lots from referrals so should be quick


  • very complex to cover all cases
  • start with simple, most common cases
  • print out using LaTeX forms engine
  • 4 fields initially:
    • drug name, auto-complete from database
    • strengths, drop-down from list in database
    • frequency, free-form for now, later recognize formats
      • German: 4 integers for the 4 times during the day, separated by slashes, so 4 times a day is "1/1/1/1", one morning , 2 at night is "1/0/2/0"
      • Latin: m=mane, i=midi n=nocte, b=BD t=TDS, q=QID. So "2m" is 2 tabs mane, "1q" is 1 tab QID, "2m+2.5i" is 2 mane and 2 & a half midi
    • directions. Free comment fields, auto-translating to vernacular for standard Latin abbreviations: PP, OU, AU, etc.

  • FUTURE: remembers previous values for a particular drug

  • OPTIONAL: a "prescribing diagnosis" field which saves as a Plan row into the SOAP for the currently active encounter

  • Scripts will be lawful in Australia: name, address, Medicare number, prescriber, etc.
  • must also keep in mind having a current_medication list which is not the same as prescriptions, i.e. medication may have been prescribed ooutside gnumed, or we may advise a patient to modify their use of a supply already in their possession
  • desirable to support popups within progress note input per here

status: not started

drug information browser

  • if data is available locally
  • PBS via via XML-RPC, initially
  • AMIS (German) to follow
  • AU: wxHTML browser using index onto Australian Medicines Handbook CD until ready

status: AMIS only

progress (SOAP) notes input

  • simple SOAP structured text input fields
  • clin_note/clin_history/clin_physical rows
  • David's Simple SOAP plugin may be the best starting point
  • free-text box that lets me select text parts and press <Alt-S/O/A/P> to make them such.
  • Future: popups to support jumping into other editAreas like "phx" to insert a "new" past history item as per here, coding (considering ICPC support), measurements edit area.

status: partially done; threads include here, also here re icpc coding, and here re CPT codes

ASCII export of progress notes

  • constrainable by date, encounter, episode, health issue
  • refer to wiki page AsciiExport

path results



  • Extension of demographics schema as per R. Terry's database.
  • GUI screen already done
  • Hierarchy of organisation/branch/person
  • Occupations at different locations
  • Stores address and contact information
  • FUTURE: use alternative datastores such as LDAP, XML-RPC

status: GUI done, backend done, needs connecting


  • GUI done.
  • stores list of clinical events, reminds user when these happen

status: needs backend structure and more complete functional description


  • stores information specific to antenatal patients

status: GUI started, needs further thought

- LNMP-Rechner
patient search
- button -> search and start new client instance with patient
script to collect name<->gender correspondence

slave mode
- on close warn if attached
- get_visible_plugin()
vaccinations widget
- delete entries
- whole page notebook plugin for GNotary client
- whole page PubMed search-by-email plugin
- whole page print queue plugin with beep or popup

- on Rezept
  -> if diagnose==niere or nierenwert==pathologisch
    - zeige warnung
   - zeige dosis-rechner
   know how to get lab results
   know how to find out data on drugs
   know how to take age into account
   know how to calculate dosage
   return dosage for reuse by other modules
GnuMed system health monitor
- GUI event monitor
- passive only
- displays database health statistics
- whole-page notebook plugin for GnuMed client ?

GnuMed database integrity checker

- several scripts
- check for particular potential problems
- report problems in standard format to
  - system health monitor
  - admin
  - database

integrity check:
 - uncoded (for a coding system) diagnosis that is in use

 - spreadsheet
 - calculated values
 - calculator popup

lab tables
 - attach diagnoses ?

lab journal
 - filter per doc
 - filter for technically_abnormal only

Richard space INBOX
 - only flag for technically_abnormal

lab link
 - Standard ASTM E1394-91 (frei: Datenaustausch-Formate zwischen Laborgeräten und PC-Systemen)

 - allow linking lab results (immunity) to vaccination status

text boxes
 - flashing cursor ?

progress notes
 - add to health issue

emr tree

- in issue info include
  - #episodes
  - whether open episode or not
  - age of open episode

- in issue tree item label include tags (open episode, active/inactive issue)

- pre-open issues with open episodes and those episodes ?

- allow displaying by encounter -> problem

EMR view:

- issue -> progress notes

on auto-closing episodes: optional popup

- copy into Soap upon opening a progress note editor

referrals handling
 - accompanying referral letter
   - use wxWindows-internal styled text editing widget
     - reText ?
    - StyledTextCtrl ?
    - Scintilla ?
   - FUTURE: AbiWord IMHO for letters that need a little writing
   - DISCUSS LATER: quick-pick lists+LaTeX+text editor for "rapid-letter" referrals
 - referral form (Germany)
   - either common forms engine with prescription or hard-coded via EditArea
   - optional

hackers: Ian Haywood, RMIT
 - *very* complex to cover all cases
 - start with simple, most common cases:
 - print out using common forms engine
 - 4 fields initially:
   - drug name, auto-complete from database
   - strengths, drop-down from list in database
   - frequency, free-form for now, later recognize formats
     - German: 4 integers for the 4 times during the day, separated by slashes,
      so 4 times a day is "1/1/1/1", one morning , 2 at night is "1/0/2/0"
     - Latin: m=mane, i=midi n=nocte, b=BD t=TDS, q=QID.
      So "2m" is 2 tabs mane, "1q" is 1 tab QID, "2m+2.5i" is 2 mane and 2 & a half midi
   - directions. Free comment fields, auto-translating to vernacular for
     standard Latin abbreviations: PP, OU, AU, etc.

 - FUTURE: remembers previous values for a particular drug
   - should come automatically with XML forms proposal

 - OPTIONAL: a "prescribing diagnosis" field which saves as
   a Plan row into the SOAP for the currently active encounter

 - Scripts will be lawful in Australia: name, address, Medicare number, prescriber, etc.

drug information browser
maintainer: ? RMIT ?
hackers: Hilmar Berger
 - if data is available locally
 - PBS via via XML-RPC, initially
 - AMIS (German) to follow

OPTIONAL (post-release):

path results
hackers: Karsten Hilbert, 
 - one excellently defined area of work
 - high on list for DE/AU
 - easily assignable sub-project
 - import PIT path files, def: <URL missing>
 - see gmMeasurement.sql
 - need to add country-specific tables in sql/country.specific/*/

 - optional: AU pathology request codes: <URL>
 - future: LOINC/LDT


Have an XML-RPC server "contacts". This server spans possibly
several sources: a) The service "administration" which includes
the practice's configuration, eg. the practices contacts
database. This is the schema we control and use for
efficient/rapid selection. b) The service "reference". This
will contain reference data for those countries where "official"
contacts data is distributed on CD or by download (eg. in
Germany). We also control this schema but it is also more
closely modelled to the reference source data layout. Of
course, there would be facilities to say something like "move
all cardiologists in the SF bay area into the practice contact
database" (eg filling the local contacts from the reference
source) - this may go as far as making their *content*
identical (but not necessarily their layout). c) Access to
online, remote, official repositories (these are most likely
going to be LDAP or PKI key server type things).

Again, the server "contacts" would encapsulate this into one
API. When the user hits "widen search" it adds the reference
data sources to the match scope. Any selected contact will be
transferred from the reference source to the local contacts
repository automatically (the abovementioned scripts "move all
of ... into the local repository" will still be there for bulk


DONE list

Release 0.3

  • start using stdlib logging
  • stop using
  • stop using
  • stop using conf-file part of
  • document management:
    • allow docs to be mailed/faxed/printed via wrapper scripts
    • access external originals (permalink) via their external reference with the help of a wrapper script
    • allow reclassifying documents by type
  • date/time handling
    • parse more patterns
  • bootstrapper and scripts
    • --quiet support
    • add narrative signal to clin.clin_root_item tables
  • client/database update handling
    • database signal db_maintenance_warning triggers notice in client
  • on client startup/invoking menu item:
    • check for updates via
    • display notice to user based on options:
      • warn on bugfix upgrades - users should request their distro to provide an upgrade
      • warn on all updates - minor versions may not easily be upgradable due to distribution constraints
  • enter, view, edit, delete measurements
  • progress notes
    • much improved tree and journal display
    • asking user for save confirmation before changing patient if unsaved notes exist
    • keyword based text expansions

Release 0.2.8

  • Report Generator
    • visualize query results with gnuplot

  • improved exception handling
    • allow adding user comment to log file
    • allow displaying log file
    • allow emailing bug report

  • add Snellen Chart

  • KVK handling
    • feature libchipcard in Contributors
    • document file level interface/setup
    • on patient import
      • import address
      • import external IDs

  • more hooks and improved example hook script

  • much improved demographics handling
    • now really support multiple names/addresses/comm channels/external IDs

  • lots of GUI-accessible configuration options
    • they were always there in the backend but didn't have a frontend to them

  • improved file format handling in document management

  • database settings sanity checking at client startup

  • sanity-tune database settings at bootstrap and at each connect

Release 0.2.7

  • KOrganizer support
    • display today's appointments in GNUmed
    • start KOrganizer on demand

  • improved gm_ctl_client support
    • start GNUmed instance on demand

  • client startup
    • make database welcome message optional
    • user accessible slave mode switching

  • external patient loader
    • check AU PracSoft section for file existance

  • improved exception handling
    • custom detection of missing modules

  • OOo-based templated letter writing

Release 0.2.6

  • hooks framework
    • create hook script skeleton if missing
  • bootstrapper
    • transfer users from within the bootstrapper
    • run sanity checks for plausibility after upgrade on template/target, eg. compare number of:
      • addresses
      • patients
      • episodes
      • encounters
      • issues
      • documents
      • document pages
  • encounter handling
    • allow user to start new encounter on demand via menu item
    • fix continue?-ask-twice bug (concurrent get_emr())
  • simple data mining
  • runs on MacOSX? now
    • *.dmg package
    • support OsiriX DICOM viewer
  • config handling
    • read default workplace from system-wide config file, allow override from user files
  • patient picture handling
    • properly implement right-click popup menu on patient picture in top panel
    • implement selection of active patient picture
  • rework /usr/bin/gnumed launcher script
  • rework use of resource_dir/base_dir
  • add gm-dbo password field to enlist-patient-as-staff dialog
  • debugging improvements
    • log schema if version conflict
    • always startup with --debug log level
    • checkbox in login dialog to switch debugging on/off after startup
    • redirect console to extra frame with text ctrl upon GUI startup
    • improve sys.excepthook display:
      • textual message if CLI
      • wxPython dialog if GUI
    • link to savannah bug tracker from within client
  • backend:
    • improved backup script
    • added restore script
    • require PG 8.1
  • phrasewheel: * on TAB: autocomplete with first match

Release 0.2.5

  • database maintenance:
    • backup: gnotary support
    • backup: moving backups offsite
    • installation: PG 8.1 tablespaces support
    • installation: optionally drop existing target database on upgrade
  • config handling
    • support system-wide backend profiles
    • default wire encoding now settable per backend profile
  • clinical record
    • properly honor encounter.min_ttl and encounter.max_ttl
  • phrasewheel:
    • auto-capitalization modes
    • on lose focus validate against configurable regular expression
    • only allow configurable range of characters
    • integrate input spellchecking
    • make moving focus after list selection configurable
  • external patient loader
    • add KVK source (German medical cards)
    • link to Australian PracSoft application
      • read PATIENTS.IN file (used to connect to MDW2)
  • document scanning
    • really support multiple-pages scanning now
    • make device to use configurable
    • phrasewheel on doc comment keyed by doc type
    • honor blobs.doc_obj.filename on import/display/export
  • notification about patient birthday if in temporal vicinity
  • generalize hooks framework:
    • more hooks
    • improved docs
  • allergies handling
    • add/modify/delete manager
  • client debugging
    • allow backup of log file via menu item
    • remove --talkback handling

Release 0.2.4

  • popup consultation editor on patient change or from EMR tree
  • link to xmedcon DICOM viewer (new Recommends:)
  • dependancy on pyPgSQL entirely removed
  • link to firefox to display medical content bookmarks
  • document management:
    • import: use XSane instead of accessing SANE directly
    • import: allowing dropping of files onto GNUmed
    • tree viewer: export document to files on disk
    • details editor: fix date generated editing
  • database backup: pg_dump wrapper suitable for cron/anacron
  • main menu: shortcut for adding Foundational Issue
  • episode details editor, popup from EMR tree
  • bootstrapper
    • verify source hash on upgrade
    • verify result database hash
    • verify pg version again
    • dump database before upgrades
    • universal upgrade script (parameter driven)
  • IFAP drug DB lin stage 2: import selected drugs into patient narrative for documentation of current medication
  • emr tree browser
    • add expansion history (not yet persisted)
    • wrap narrative lines to 75 characters max
  • framework: hooks for running custom scripts
    • run script after activating patient solves: after adding patient run script

Release 0.2.3

  • XDT browser: interpreted browsing
  • ifap index drug database: stage 1: allow jump into GUI of ifap index Windows for drug profile lookup
  • progress note input:
    • no minimum input as per user request
    • update problem list after saving of unassociated progress note (== new episode)
    • problem list: display foundational issue name after episode
  • progress notes browser
    • refresh problem list when editing/adding past history items
  • patient search
    • redo select list when multiple patients found
    • support ENTER on patient
  • demographics input/editing
    • no auto-lower-casing inside words
    • fix timezone handling
    • fix unicode handling
    • fix address linking
  • configurable encounter length
  • configurable plugin-post-patient-selection
  • top panel: display nickname in patient string
  • past history edit area: handle unicode
  • database access
    • move to psycopg2 entirely
    • move to unicode entirely

Release 0.2 Librarian

  • check database version vs. client version

Release 0.1 Scrollkeeper

  • bugzilla anyone ?
    • use bug tracker on savannah

  • bitrock follow up
    • build custom packages

  • fix FAQ on
    • consolidate into Wiki

  • ASCII exporter creates multiple entries per encounter
    • cache was not properly evicted
    • after adding health issue with progress note narrative in SOAP STC the narrative does not appear in the EMR tree view until the active patient is changed and changed back again - fixed

  • new patient wizard/patient edition plugin
    • make gender a (smart ?) combo box with the list depending on firstname - Done
    • country -> (auto) states combos - Done
    • state : collect interested countries from users to add them in sql files; add default state for every country (?)
    • auto-caps on save (name, street etc) - Done
    • for DOB use date validation in new patient wizard - Done
    • zip -> (auto) street, town, state, country - Done

  • date input widget
    • add date validation - Done

  • multisash progress note editor
    • after saving progress note for predefined problem (eg selected from picklist on left) the header (name) disappears
    • add label "Episode" before episode name phrasewheel in unassociated progress note


Topic revision: 11 Feb 2011, SebastianHilbert
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark