Open Source Software Specification
The word shall will indicate items that are required in the final product.
The word should will indicate items that, while not required, are especially important and justification must be made if they are omitted from the final product.
The word may will indicate optional items in the final product.
This product will be known as USBUS (USB UltraSound). It shall be written in a language that fully supports the .NET object libraries. It should use the Interson USB Probe SDK for control of the USB probe hardware and it may use the SDK for producing the image (scan converting).
- be a graphical user interface,
- display live ultrasound images in a window that
- shall be resizable,
- shall allow scrolling (i.e. moving the image side-to-side and up/down in the window),
- should be undockable (i.e. the window can be moved to a new location on the screen),
- may be cloned so that multiple image windows could exist (overlapping and such) - If this is done, at least one shall be able to display live image data when the probe is scanning,
- allow zooming of the image in the window,
- allow restoring a zoomed image back to an unzoomed state,
- allow saving of individual image data (backscatter data) to a file,
- allow saving of a complete cine to a file,
- allow arbitrary cine sizes (based on available memory),
- have image processing controls that
- shall allow for image contrast/intensity changes,
- shall allow for image filtering changes
- may allow for other gray-scale image processing,
- may allow for pseudo-color image processing,
- shall allow for gain correction with at least two control points (i.e. a line),
- shall be adjustable via the GUI
- allow entry of basic patient data (name, birthday, sex, date, physician/nurse name, etc.)
- allow for control of probe parameters during live imaging that shall include
- probe scan rate (frames per second),
- probe sample frequency (depth mode),
- probe pulse frequency,
- probe pulser power,
- probe unidirectional/bidirectional imaging control,
- allow for controlling features of the scan converter that shall include
- turning interpolation on/off,
- turning image averaging on/off,
- allow for multiple probes to be attached and a selection made, on the fly, for live imaging,
- use the probe button (if available) to start/stop live imaging
- allow printing of an image window (with all its contents) on a standard system printer and
- shall print any available patient data on this printout,
- shall print the current time/date,
- allow image window contents to be copied into the system clipboard for pasting into other applications that may allow pasting of bitmaps.
- have measurement capabilities that
- shall allow measuring distance on an image,
- shall allow at least two measurements to be taken,
- may allow calculations to be done with the measurements (addition, subtraction, distance between, etc.),
- may allow other measurement types:
- area of a circle or rectangle,
- have hot-keys for all of the commonly used functions (to obviate the need for using a mouse once a live scan has begun),
- save a JPEG or other image type of the currently displayed image (with all processing and annotations) when a backscatter file is saved,
- use modern, docking, window controls,
- allow annotations to the image - these annotations shall include drawing arbitrary text, rectangles, circles and freehand lines and they should allow editing of those annotations once placed
- allow for a complete database system to be used for storing patient data and records
- support both A-mode and B-mode imaging,
- allow for custom settings to be created and managed which includes the saving of
- the current image processing controls and settings,
- other data that may be entered at start up (such as the examiner's name),
- incorporate a help system that may be context sensitive.
- allow the user to define what the probe button function will do (defaults to start/stop).