| Project: VascuBase Pro (v7) Client: Consensus Medical Systems, Inc. Role: Senior .NET Developer Product Type: WPF Desktop Application (Back end) & Silverlight Web Based Application (Front end)
Framework: .NET Framework 4.0
IDE: Visual Studio 2010
Programming Languages: XAML markup language (UI), C# (Business Logic) Database Backend: MS SQL Server 2008 Other Technologies: Microsoft Unity (IoC Container); Fluent NHibernate/LINQ (Object Relational Mapping/Data Access); NUnit (Unit Testing Framework); Subversion (Source Control); Cruise Control (Automated build management)
Software Design Pattern: MVVM (Model-View-ViewModel)
Description: Key VascuBase Pro components responsible for configuring the structure and behavior of tree-based patient data entry interface through creation of templates (Template Editor Back End) and resulting web-based UI which consumes templates and renders UI structure and behavior accordingly for hospital staff (Template Editor Front End).
Key Features Implemented:
Patient Data Template Editor (WPF Backend):
- Rich tree based UI allowing administrators to interactively add, edit, and delete template groups, templates, and tree nodes in each template.
- Sophisticated drag and drop capabilities including the ability to select multiple nodes and drag and drop them to different locations within a tree and potentially change parental relationships all in a single operation; Also includes ability to drag and drop nodes on to a notes area outside the tree and add configured text snippets associated with dragged nodes.
- Ability to fully customize each tree node's appearance (font, caption, style, color, etc); Front end application exposed to end users displays a tree list control where the first column (corresponding to tree node labels) uses these settings to render how each corresponding node is displayed.
- Ability to define an associated editable control (e.g. text box, drop down list, hierarchical drop down list, grid view, etc) for each tree node; Front end application creates a tree list control where the second column contains the editable control associated with each tree node. On the front end, data in the second column initially appear as labels but turn into the appropriate editable control when a cell is clicked on. Grid based nodes on front end appear immediately underneath tree nodes and stretch across however many columns there are in tree list view.
- In case of grid based tree nodes, each grid row can have multiple columns and each grid cell has an associated editable control of its own - there is no limit to the number of rows and each row can potentially have a nested hierarchy of tree nodes under it.
- Ability to define SQL code snippets for each tree node to achieve custom functional behavior on front end application; Code snippets can reference variable ids associated with other tree nodes and, when triggered (say when a value of a referenced node changes), can cause custom validation logic to execute, auto calculate values of other nodes, show/hide other nodes and/or their children, etc. Functionality changes on front-end application can be achieved by simply modifying these code snippets without any code changes to underlying application.
- Performance optimized, "load on demand" data loading for tree based drop down lists; Only first generation of nodes loaded by default while subsequent generations loaded only when a node is selected - Methodology achieved significant performance boost and allowed for smooth user experience as some lists were large and potentially hundreds of levels deep.
- Ability to configure "dynamic" drop down lists associated with tree nodes where bound data source may come from the results an ad hoc SQL query and not just saved data in the database.
Patient Data Editor (Silverlight Frontend):
- Rich tree list based interface accessible by hospital staff where tree structure is created based on template associated with a selected patient encounter or study.
- Tree list structure created based on configured template as explained above; This includes the appearance of tree node labels, the types, values, and constraints of associated editable controls (e.g. values bound to drop down lists, hierarchy of drop down list values in tree based lists, minimum/maximum selectable date/time values in date/time picker controls, grid structure and nested tree hierarchy under each row in case of grid based nodes, etc).
- Auto expanding and auto advancing capability as user is traversing through a tree to expedite data entry and allow for a smooth user experience; As soon as a user finishes editing a control (either by hitting enter or say selecting a value in case of drop down lists or date pickers) control shifts to next editable cell and the newly focused cell automatically opens up for editing. Folder/category nodes are intelligently skipped over and expanded automatically so focus can shift to the next editable control. In case of grid based nodes, focus automatically shifts to the next cell (or the first cell of the next row if at the end of the current row).
- Performance optimized, "load on demand" data loading for drop down and tree based drop down lists; Drop down lists and tree based drop down lists not populated until associated cells are clicked on for the first time for editing (tree based drop down lists load only the first generation of nodes at the time while subsequent levels are loaded only when a node is selected); Methodology significant as calls to the server across WCF RIA services are costly from a performance standpoint and attempting to retrieve too much data at once can significantly degrade performance.
- Intelligent "chain" execution of tree node expressions so that when a tree node's value changes only the expressions of nodes directly or indirectly impacted by the change are evaluated and UI is updated accordingly; This is also necessary to minimize the number of calls to the server and allow for a fast, responsive user experience.
|
|