Concept Proposal Module Requirements

Outdated

The project described here has not had any usable work done on it, largely because the use cases described are too complex.

We are going to try a simpler approach to building a Concept Proposal module, that can be successfully completed, and we can then iterate on further.

See Concept Proposal Client and Server.

Functional Requirements

Actor Goal List

Actor

Goals

Priority

Actor

Goals

Priority

Data Manager (Eldoret)

  • Propose new clinical content (forms + concepts)

  • Edit and re-propose rejected clinical content

  • Propose changes to existing approved content

  • Be notified of proposed clinical content lifecycle changes (ie. submitted by me). For example,

    • Under consideration

    • Rejected

    • In production

    • Approved - waiting for publishing to prod

    • Needs editing (with comments attached)

    • etc

  • View all proposed clinical content

  • Send proposed clinical content to Indianapolis OpenMRS Dev instance

 

Data Manager (Indianapolis)

  • Propose new clinical content (forms + concepts)

  • Edit and re-propose rejected clinical content

  • Propose changes to existing approved content

  • Be notified of proposed clinical content lifecycle changes (ie. submitted by me). For example,

    • Under consideration

    • Rejected

    • In production

    • Approved - waiting for publishing to prod

    • Needs editing (with comments attached)

    • etc

  • View all proposed clinical content

  • Send proposed clinical content to Indianapolis OpenMRS Dev instance

  • Prevent content updates on Eldoret OpenMRS Dev instance during a certain timeframe

  • View all proposed content by:

    • Not viewed by me yet (new)

    • Under review (waiting for an Indianapolis Data Manager to take some action)

    • Approved - waiting for publishing

    • In production

    • Retired

    • Rejected

    • Awaiting re-submission

  • Change the lifecyle status of clinical content:

    • Approve content

    • Reject

    • Comment on proposed content

    • Request that the submitter updated and re-propose some content

  • Push content updates back to Eldoret OpenMRS Dev Instance

  • Push content approvals to Eldoret OpenMRS Prod Instance

  • Receive email/message notifications of all new proposed content and lifecycle status changes.


1
7
2
9






3
4
11
8







5




6
12
10

Use Cases ( Need review and Updating)

UC 01 Create Full Concept Proposal

UC 02 Create Concept Proposal during data entry

UC 03 View all Concept Proposals

UC 04 Receive Concept Proposal Notifications

UC 05 Take Action on Concept Proposals

UC 06 Edit and Re-submit Concept Proposal

Concept Proposal State Workflow

States

New
  • Not really a state; only exists in the browser before submitting a proposed concept

  • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

  • Actions:

    • save

      • sends to "In Progress"

      • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

    • submit

      • bypasses "In Progress" and sends directly to "In Review"

      • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

In Progress
  • Allows concept proposers to edit the proposal before submission

  • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

  • Actions:

    • publish

      • bypasses "In Review" and sends directly to "Published"

      • Privileges: Review Concept Proposals, Manage Concept Proposals

    • submit

      • sends to "In Review" 

      • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

    • delete

      • sends to "Deleted" (removes from database)

      • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

In Review
  • Allows concept proposal reviewers to edit and approve or deny the proposal

  • Privileges: Review Concept Proposals, Manage Concept Proposals

  • Actions:

    • publish

      • sends to "Published"

      • Privileges: Review Concept Proposals, Manage Concept Proposals

    • deny

      • sends back to "In Progress"

      • Privileges: Review Concept Proposals, Manage Concept Proposals

    • delete

      • sends to "Deleted" (removes from database)

      • Privileges: Add Concept Proposals, Review Concept Proposals, Manage Concept Proposals

Published
  • Concept is officially published (protected) in the Concept Dictionary

  • Privileges: Manage Concept Proposals

  • Actions:

    • revert

      • moves back to "In Progress"

      • Privileges: Manage Concept Proposals

    • retire

      • sends to "Retired"

      • Privileges: Manage Concept Proposals

    • delete

      • sends to "Deleted" (removes from database)

      • Privileges: Manage Concept Proposals

Retired
  • Concept was published and has been retired; same as retired flag in OpenMRS

  • Privileges: Manage Concept Proposals

  • Actions:

    • unretire

      • sends back to "Published"

      • Privileges: Manage Concept Proposals

    • delete

      • sends to "Deleted" (removes from database)

      • Privileges: Manage Concept Proposals

Deleted
  • Not really a state; content is completely removed from the database

Non-Functional Requirements

Deployment Architecture

Assumptions

  1. Assumed that the same module will be deployed to all 3 instances of OpenMRS

Issues

  1. Concepts should not be modified. Editing and modifying a concept changes the context in which previous clinical data was captured. A concept that needs updating should be published as a new version with a reference to a retired previous version.

  2. Synchronizing concepts based on ID versus GUID. If this is done based on a simple auto-increment integer primary key then there will be collisions.