GODS2 Developer's Note

1. Introduction
GODS2 has a workspace concept that allows the physicians to work on multiple medical images at the same time. The main application is GODSMain and any AnnoForm instance is a MDIChild of the main application. Apart from what each package does, we also think it'll be important to note that how GODS2 can use a SQL database other than Access and that how a medical image can do more than being binary data, such as reporting the mark direction relative to a specific point on the medial image.

Please also note that the only thing tie this application to medical images is the mandatory MRN (medical record number) for each image annotation. Therefore this application can be used to annotate any image if the form for inputting MRN is not invoked before annotating images.

2. Packages
There are 5 packages in GODS2 right now.

- DBHandler
This package handles all the communication with the database for GODS main application. Specifically, GODS2 uses class GODSDBManager to talk to database adapters in the package.

- MarkConfig
This package contains all the codes for mark configuration. The code here uses classes in DBHandler to communicate with database. This is a separate package because it can possibly be ported to a web application, together with the classes in MarkData and MarkGUI packages. Using the .NET framework should require very little code change.

- MarkData
This package contains all the data structures that represent mark category, mark set, mark group, and each individual mark itself.

- MarkGUI
This package contains the GUI components to represent a mark group and a mark.

- ScreenCapture
This package contains the implementation of the screen capture functions.

3. How to implement a new database
Although GODS2 only support Access database, it can be easily adapted to communicate with any other SQL database. In package DBHandler, there are two interfaces:
- IGodsDBWrapper: The interface that defines the API required for annotation-wise functionalities.
- IGodsDBMarkSetWrapper: The interface that defines the API required for functionalities regarding mark configuration.

Class GODSAccessDBWrapper is an Access adapter that implements both interfaces. To add an adapter for MSSQL for example, simply use an adapter that implements both interfaces and change the adapter instance in class GODSDBManager.

4. How to add a new intelligent image
All the image classes extends from DiagnosticImage. Right now there is only one intelligent image BreastSketchImage which can detect the region of the medical image. To add a new image that can do so, simply extend from DiagnosticImage. Right now any other images that are not a breast sketch image are treated as AnyImage.