BRD: Inventory Module

Attached is the Inventory Module Business Requirements Document.

Inventory Module BRD v1.2 PDF

Project Overview

Precipitated by the needs of Hamilton Public Health to track medications and medical supplies, Oscar EMR is undertaking the development of an inventory tracking system that will allow the tracking of orders, receiving, items/products and transfers within the clinic and multi-program level.

The inventory module will interact with the dispensing capabilities of the prescription module and the invoicing functions of the billing module. There are two main workflow ideas associated with entering and tracking inventory in Oscar, firstly the actual inventory repository, comprised on the tables and functions to record the number, types and changes to inventory items. In the Hamilton Public Health Oscar system, with multiple Programs and Oscar instances there will be a Central Repository that will store all of the inventory information for products and items, updated by clinic staff when items are ordered from suppliers, received, entered (item attributes), changes to items are made, items are dispensed, shipped or returned, or when items are disposed. This Central Repository can act as a simpler inventory tracking system for single clinic installations, with little use for the concepts and functions to receive orders and “ship” inventory to other locations.

The other major functional aspect of the inventory module will be the order entering process. This will entail users entering orders they expect to receive from suppliers, at the product level, and also the ability to accept and fill orders for multi-program installations. The way a user would enter an expected order from a supplier would be the same workflow Program staff would use to place actual orders to the Central Repository site in a multi-program installation.

 

On either end of the system, another copy (installation) of the system could fit, this is how Central Repository inventory tracking would work and interact with other Program’s inventory tracking though receiving orders. Orders to outside suppliers would be placed and entered into the system, and orders would be accepted on the other side of the system, to fulfill needs of related clinics/programs.

 

Glossary

The following terms will be used throughout this document and should be understood by readers to avoid confusion of concepts, ideas and terms when dealing with specifically defined terms and their impact and use within the Oscar inventory module.

Active: The attribute denoting the availability of an item, i.e. that it can be transferred, shipped, received or dispensed. An active item always has the status “available”.

Central Repository: The main log of inventory information that orders and receives products and items from an outside supplier, but may also ship/distribute inventory items to other Oscar instances (programs) acting as the  principal inventory manager.

Dispense: distributing or administering items for use by patients.

Equipment: Re-usable (non-consumable) set of tools, devices, kit, etc., assembled for a specific purpose.

 Inactive: The attribute denoting the unavailability of an item, i.e. that it cannot be transferred, shipped, received or dispensed.

Item: Specific, individual pieces of a product (i.e. a particular 12-pack of extra strength Aspirin, 300 mg tablets).

Location: the physical attribute of where the item is located/being stored. This can be as specific as general as the clinic name or as specific as a room, cupboard and bin #.

Product: Term describing a common type of object (i.e. a 12-pack of extra strength Aspirin, 300 mg tablets).

Program:  A separate, defined instance of Oscar delineated by location, healthcare purpose or institutional division that operates separately from other Oscar instances, but is linked via CAISI program management. Program is also an attribute for each inventory item, assigning the program that the item will be available for use by (Central Repository to ship, or at a specific clinic, specified by program selected). The default program for a one Oscar instance inventory system is the clinic housing the Oscar instance. The default program for a Central Repository that interacts with other Oscar inventories is “null”. The attributes of Program and State define specific item (a particular box of a particular product) availability for dispensing/use in a multi-instance system.

Order: A request from the inventory tracking staff person to a supplier for specific products.

State: The attribute of a specific inventory item being either active or inactive. An item has both a state and a status.

Status: The attribute of an item reflecting details regarding its inactive state. An item has both a state and a status. An item in the state “Active” always has the status “available”.

Transit: A status in which an item (or group of items) is not currently available for use, order or dispensing because it is currently being shipped from one inventory system to another (supplier to central receiver or from central receiver to specific program/clinic).

Transfer: The act of changing the location of an inventory item; this could be represented by a shipping change/event from one Oscar instance to another, or a simple location change in a one clinic system.

Tracking: Recording and keeping history of any and all changes in the attributes of any inventory items.

Assumptions

Based on user feedback, notes and meeting discussions, as well as general understanding of how an inventory module should function, some assumptions must be made regarding the use and workflows associated with recording and tracking inventory.

Kits

It is assumed that products that are packaged in ‘kit’ form (multiple pieces for use together at one time) which items are specified as kits (e.g. pap smear kits) will be ordered/tracked/used/dispensed/disposed of as a kit, and never separated into individual components for use or tracking purposes.

Workflows

The following workflows represent the basic flow of product/order information and inventory items as they would normally move from supplier to central repository to program level inventory tracking. Beyond the basic flow of goods through the inventory system, there are also workflows showing how changes to inventory items are evoked in the system and the typical flow of status changes and active/inactive state adjustments throughout the lifecycle of an item in the inventory system.

Inventory Module

*missing workflow* see PDF

Changes in Status and Active/Inactive States

The majority of changes to data within the inventory system will be both a change in quantity of an item (as orders are filled and shipped) and changes in the status of inventory items. As described in the glossary, there are two main states an item can have attributing availability: active or inactive. Within the state of inactive, there are multiple statuses that would indicate to users why the item is currently inactive. These statuses will be customizable, because depending on the specified clinic/Oscar instance, there may be multiple unique reasons an item may by inactive/unavailable for use/distribution. A state of “Active” will always indicate an item is available.

A state of inactive means the system will never count the item as available for distribution for reporting, tracking or dispensing purposes. Reports could be run on inactive items (by category) for tracking purposes.

The following lists examples of statuses for Inactive items:

Inactive

Comments

dispensed

a final state of inactive

used

a final state of inactive

returned

a final state of inactive

expired

could then be changed to “returned” or “disposed”, remains inactive

damaged

could then be changed to “returned”, remains inactive

recalled

could then be changed to “returned”, remains inactive

in transit

will become active again when it is received by another inventory system

missing

could become active again if found

reserved

will become active again when it is received by another inventory system

disposed

a final state of inactive

While these are only examples of a change in the state/status of an item there are many workflows that would lead to these status outcomes, below are examples of flow that demonstrate each list status.

*missing workflows* See PDF                                                             

The examples above demonstrate the most basic workflows that would result in a status change for each suggested status listed. Because a single inventory item can become active/inactive multiple times in its movement through the inventory system, capturing all the combinations of status changes could result in almost unlimited permutations with the equation:

 In this case n represents the number of possible statuses an item could have, and r represented the number of times a status could change for an inventory item.

 n = 8                     since technically no item can ever be dispense, used, returned and disposed; it can only ever be one of those statues. Those 4 statuses represent 1 option. The statuses: expired, damaged, recalled, in transit, missing, reserved and available are all other options of statuses, which could be applied in combination, or multiple times. This totals 8 options.

r≈∞                       would be uncountable, since there is no limit on how many times a status can change, while there are limits to which statuses can be applied in sequence, there is still near limitless possibilities to the number of statuses.

The following table shows inactive state statuses that cannot logically occur for the same individual inventory item:

 

dispensed

used

returned

expired

damaged

recalled

in transit

missing

reserved

disposed

dispensed

 

x

x

x

x

x

 

 

 

x

used

x

 

x

x

x

x

 

 

 

x

returned

x

x

 

 

 

 

 

 

 

x

expired

x

x

 

 

 

 

 

 

 

 

damaged

x

x

 

 

 

 

 

 

 

 

recalled

x

x

 

 

 

 

 

 

 

 

in transit

 

 

 

 

 

 

 

 

 

 

missing

 

 

 

 

 

 

 

 

 

 

reserved

 

 

 

 

 

 

 

 

 

 

disposed

x

x

x

 

 

 

 

 

 

 

  • The statuses: dispensed, used, returned and disposed represent end-point statuses, in that once that status is selected for an item, no other status changes should occur.
  •  The statuses: available, missing and in transit could occur multiple times for an item, in sequence or in between other status selections.
  • The statuses: expired, recalled or damaged indicate an item will never be active again, but should result in at least one other status change to returned; but could also become in transit before being returned
  • The status reserved will always result in additional status changes

Ordering and Shipping

Aside from tracking the location, status and types of inventory items, the inventory module also needs the ability to create, track, receive and process orders within the system. There are two halves to the ordering system: 1) requesting and receiving items from an outside supplier and 2) receiving, processing and sending orders to other inventory systems.

The inventory module needs the ability to do both as part of the overall workflow for creating a multi-site, Central Repository-to-Clinic system (as pictured in layouts shown in the Project Overview section). This means, an installation of Oscar, set up as a Central Repository site would need to both create orders in the system that it would create/receive from outside suppliers, as well as receive orders from clinic sites that it suppliers inventory to. An Oscar site that received inventory from a Central Repository site would only need to create orders to request items (the same method a CR site uses to create/receive orders from outside suppliers). A functionality that would be needed to create the CR functionality is the ability to receive, accept and fill orders requesting inventory from clinics the CR provided.

Creating and Receiving Orders

 

*missing workflow* See PDF.

This flow demonstrates the creation of an order in the system and the resulting workflow when those goods are physically received by the site that requested those goods. This could be 1) an order from any clinic to an outside supplier, or 2) an order from a clinic to a Central Repository clinic site.

To actually create an order, the order maker (in either type of inventory module Oscar site) would follow the below process:

*missing workflow* See PDF

Processing and Fulfilling Orders

*missing workflow* See PDF

This flow reflects the basic process a Central Repository site would follow when receiving a request for inventory from an associated clinic it provides stock to. The order (request) is received and then reviewed, upon approval (or partial approval) the order is filled or partially filled (dependent upon available inventory levels). If the order is completed fulfilled the process is considered complete, if it is partially fulfilled the order will remain active until it can be completed.

The following workflow process shows additional detail in the order processes phase:

*missing workflow* See PDF.

Requirements

The following tables represent the functional requirements for tracking inventory, ordering, shipping and receiving inventory items, and reporting on information housed in the inventory module of Oscar 14.

Inventory Item Specifics

BR#

Requirements Statement

Comments

II 1.0

Inventory Items should have the following attribute fields:

  • Inventory Name
  • Inventory Description
  • DIN
  • Date of Procurement
  • Lot #
  • Expiry Date
  • Cost
  • Price
  • Barcode
  • Program (clinic)
  • Location (physical storage place)
  • Status
  • State (Active/Inactive)

Quantity of inventory items will be tracked as a Product attribute (see below)

II 1.1

The attributes: Inventory Name, Inventory Description, Date of Procurement, Lot #, Expiry Date, Cost, Price can be set and updated for groups of inventory items (all items in the same lot, for example)

 

II 2.0

The Barcode, Program, Location, Status and State attributes will be assigned and updated per individual inventory item (for 10 boxes of a specific medication, each of the 10 could have a different status, program, location, etc.)

Statuses will be customizable based on clinic set-up preferences

II 2.1

State will automatically update according to the Status setting of an item (either active = available, or inactive = all other statuses)

 

II 3.0

For multi-program sites, the Central Repository Program setting will be default “=null”, therefore assigning inventory items to no program

 

II 3.1

For items assigned to different, related programs/sites, the Program attribute will determine and track the program location within the Central Repository

E.g. An inventory item with status “available” and program “Dundas” is not available in the Central Repository, but is available for use at the Dundas clinic

II 4.0

A history of all changes to quality, status, state, location and program will ensure tracking of the whole lifecycle of an individual inventory item and groups of items

 

Inventory Product Specifics

BR#

Requirements Statement

Comments

IP 1.0

Inventory Products should have the following attribute fields:

  • Product Name
  • Product Description
  • Manufacturer/Supplier
  • Product Status (discontinued, etc.)
  • Minimum Stock Level
  • Estimated Re-Order Time
  • Quantity in Inventory
  • Unit of Measure (i.e. each, per box, etc.)
  • Quantity of Measure (i.e. pills per box)
  • Dosage (i.e. 100 mg tablets)
  • Category

 

IP 2.0

Orders will be placed for specific products, inventory will be tracked on an inventory item basis, with a relational link to the product information

 

IP 2.1

When the quantity of individual items changes, the Product Inventory amount “Quantity in Inventory” attribute is updated to reflect the change

E.g. 10 boxes of 100 mg tablets of a specific medication is changed to 5 boxes

IP 3.0

Categories will be custom, but pre-set lists of the types of products being tracked in the Inventory Module; for example:

  • Medications
  • Medical Supplies
  • Forms, Cards and Pre-Printed Labels
  • Office Supplies
  • Janitorial Supplies

 

IP 4.0

System maintains list of all desired (including past, possibly inactive) products with above listed product details.  This list would be maintained by users, adding, adjusting status etc.  of products ordered/used by the specific clinic

Product list would be used to generate orders

 

Inventory Tracking Requirements

BR#

Requirements Statement

Acceptance Criteria

Comments

IT1.0

Ability to link with additional Oscar inventory modules to accept orders and ship inventory items to outside sites/programs, and record appropriate item amount decreases and status changes based on in/out item changes

Transfers from one site will increase or decrease inventory amounts  and statuses recorded in system according to physical inventory location and state of use

 

IT 2.0

Ability to enter information (attributes)about inventory items, record changes to items and keep a viewable history of all changes

Attributes added to system are stored for each unique inventory item, status changes, based on physical changes in location or use of item are tracked and saved by system; history of all changes available for review

 

IT 3.0

Ability to track increases and decreases of item amounts based on incoming orders and outgoing use/dispensing/transfers

The amount on record in system of inventory items increases or decreases based on user indicated in-put/out-put of medications or supplies

Inventory transfer increase/decrease would only apply to multi-site systems

IT 3.1

Items dispensed/used via recording information in prescription and dispensing module in Oscar, updated inventory item attributes and amounts in inventory module

The amount on record in system of inventory items decreases based on user indicated dispensing/use of medications or supplies

 

IT 3.2

Increases of inventory recorded when:

  • Inventory items received from supplier
  • Units that are transferred from one location to another
  • Reconciliation
  • Missing items found/confirmed

As items are added to system, the appropriate inventory item amount is increased; during reconciliation, item amounts can be manually updated

Inventory transfer increase/decrease would only apply to multi-site systems

IT 3.3

Declination of inventory recorded when:

  • Units of medication dispensed to client in the dispensing areas of Prescriptions
  • Supply items are used
  • Units that are expired, returned, damaged
  • Units that are transferred from one location to another
  • Reconciliation

As items are removed from system, the appropriate inventory item amount is decreased; during reconciliation, item amount can be manually updated

Inventory transfer increase/decrease would only apply to multi-site systems

IT 3.4

Ability to manually adjust inventory item information at any time (incorrect lot #, reconciled missing items, etc.)

Manual changes to item attributes can be adjusted by users

 

IT 4.0

System will generate and send messages to appropriate users (based on role) indicating when stock levels of specific items are below specified threshold for the specific product type

In-box message indicating the specific product type threshold and currently available amount is sent to appropriate user(s) when threshold amount is reached

In a multi-program instance messages would be sent to both program and central repository inventory managers

IT 4.1

System will generate and send messages to appropriate users (based on role) when inventory items are nearing stated expiry date (based on item attribute)

In-box message indicating the specific item and attributed expiry date is sent to appropriate user(s) when expiry date matches current date (or date threshold, e.g.: expiry date + 30 days)

In a multi-program instance messages would be sent to both program and central repository inventory managers

IT 5.0

Ability to record barcode number information into inventory tracking table, associated with specific inventory item

String field with barcode number saved for each item in table

 

IT 5.1

Ability to create and print barcode labels for inventory items

Unique barcode number and scan-able code is generated by system and printed onto labels

 

IT 5.2

Ability to update inventory item information/attributes via barcode scanning

System will increase or decrease inventory item amount and change status when unique item barcode is scanned

 

IT 6.0

Ability to link specific inventory items to specific appointments in Oscar

Appointment booking interface will allow user to select a piece of inventory from the tracking system to assign it to the specified appointment

E.g. Equipment tracked in inventory system can be linked (reserved) to an appointment/ meeting time that need to use that equipment at that time

IT 6.1

Non-consumable inventory items (equipment) cannot be linked to appointments occurring at the same time for more than the number of pieces of inventory recorded in the system

More appointments cannot be linked to equipment item than available equipment items at one time

 

IT 6.2

Consumable inventory items (disposable items) cannot be linked to more appointments within a specified time frame than the threshold amount recorded in the Product attribute

More appointments cannot be linked to  consumable items than the minimum number items required as the threshold stock level for that product type

 

Ordering Inventory Products and Items Requirements

BR#

Requirements Statement

Acceptance Criteria

Comments

OP 1.0

Ability to create an order, save incomplete orders, edit incomplete orders (add more items) and mark completed orders as “complete” in system

Orders can be created, edited multiple times and marked complete

 

OP 1.1

Ability to send orders electronically from one Oscar instance to another, related instance

Completed orders can be submitted electronically from one Oscar site to another, related site

 

OP 1.2

Ability to flag/designate a completed order as “submitted” even if it is not sent electronically to another site

Completed order can be given “sent” status by a user without actually submitting order electronically

This would be used for orders to outside suppliers that would not be sent electronically from Oscar, but submitted physically by an order administrator in the method the supplier accepts (through supplier website, etc.)

OP 2.0

Orders are created and edits by selecting product information from the systems product list of clinic specified products, in the inventory module system

Users will all products to an order by selecting a product from a pre-existing list and entering the number. specifics of requested item

 

OP 2.1

Ability to create a new order from an existing, completed order

When viewing an existing, completed order, available function can convert that order into a new order (copying all requested items)

This would automate “re-ordering” when common items are frequently ordered repeatedly

OP 3.0

System will generate and send messages to appropriate users (based on role) when incoming order is received (CR system) or an outgoing order is accepted/rejected (clinic level sending to CR)

In-box message indicating the order status is sent to appropriate user

 

OP 4.0

Ability to accept a received order as is, reject an order as is, or edit an order (amount requested of any items or types of products requested), save the changes and then accept the order

Incoming order can be accepted, rejected or edited in system;  edited orders can then be accepted with edited amounts/products saved as the accepted order

 

OP 5.0

Ability to partially fulfill a received order, marking the shipped items clearly on the order, with the unavailable items left “active” and the order left “active” until all requested items are shipped

Order processing screen allows user to enter the amount of items to be shipped that does not match the number requested/accepted in order; product qualities that do not match accepted orders remain active until the total number shipped (even at different times) matches the total number requested

 

OP 5.1

Ability to print a filled or partially filled order with quality requested and quantity shipped specified to use a packing slip

Printing an accepted order prints all product details, included requested amount and shipped amount

 

User Interface Requirements

Interface Need

Functionality Need

Comments

Track Inventory (Inventory List)

edit, update individual items/products, batch updating groups of items (expiry date, lot #, etc.

List items grouped in product types, expandable to view individual inventory item details

Creating Orders

edit, review saved (incomplete) orders

Creating new orders and view completed/submitted orders could be done in the same interface with different “modes”, edit vs. view

View Orders

view completed/submitted orders, receive items (transfer order information into inventory tracking list

Order List

view list of all incoming, incomplete, partial orders

This list would display both incoming and outgoing orders, organized by type (in/out). Could be tabbed for dividing type of order

Incoming Orders

view, edit, accept, reject incoming orders (CR set-up)

Reviewing orders and filling orders could be done on the same screen with different “modes”, view vs. edit mode

 

- Creating outgoing orders and reviewing incoming orders could be very similar screens, presented in a tabbed view (incoming vs. outgoing)

Filling Orders

confirm the amount of each inventory item that will be sent to an outside inventory module site, confirm completion of entire order request, view partially filled orders

Roles/Permissions Requirements

BR#

Requirements Statement

Acceptance Criteria

Comments

RP 1.0

Ability to set roles for clinic staff that allows access to the entire the inventory module

Specific Oscar users could be assigned a role type that would dictate which aspects of the inventory module they can access

 

RP 1.2

Roles of “orderer”, “tracker”, “manager”, would indicate staff access to create and send orders, update and edit inventory tracking information and/or access all aspects of the inventory module as a manager

Role of orderer, tracker and manager would determine which aspects of the inventory module a user could have read/write permissions for.

 

RP 1.3

Role specific to a Central Repository set-up would allow the acceptance and editing of incoming orders, and the ability to fulfill orders via editing the order filling page qualities

In a CR system, additional roles would allow specific users to also view and edit incoming orders, and fill order by editing the order filling screen

 

RP 2.0

Ability to set permissions for clinic staff that allows access to specific tasks in the inventory module

Specific Oscar users could have specific tasks available to them (viewing outgoing orders, viewing inventory information) on a read-only basis based on specific permission settings, without needed in to be assigned a role.

All nurses could be given viewing access to the inventory information without having to have all nurses set as “trackers” in the system

RP 3.0

System manager roles will have access to reporting

Reporting permission is assigned to “manager” role

 

Invoicing Requirements

BR#

Requirements Statement

Acceptance Criteria

Comments

IR 1.0

Link from inventory module to billing module to access product information and pricing information for billing purposes

When creating patient invoice, user can select products and appropriate price will populate on bill

 

IR 2.0

Link from billing to dispensing module to access correct dispensed amount for product being billed

When creating a patient invoice, user can access dispensed amount from dispensing module

 

IR 3.0

When creating invoice for item, appropriate quantity of item and calculated price appear on invoice automatically

When product is selected and quantity is entered (or populated from dispensing module), the total cost to patient calculates correctly

 

IR 4.0

Invoiced can be marked as paid in the billing module

Invoices correctly marked as paid/unpaid when appropriate

 

IR 5.0

Invoices would display the following item information:

 - unit sale price

- total sale price

- amount client paid (including different payment types)

- amount still owing if not paid in full

- ability to  apply future payments to the invoice until the amount is paid in full

- create a unique invoice # (next available for that clinic location so that we can have a chronological sequence for each site)

 

 

Reporting Requirements

BR#

Requirements Statement

Acceptance Criteria

Comments

RR 1.0

Ability to create reports on inventory and order information

Reports can be generated from inventory and order table information

 

RR 2.0

Reporting by date, location (in CR set-up), product categories and types available

Reports can be customized based on specified field options

 

RR 2.1

Reports can be run to return a summary or detailed report

Detail of report selection available

 

RR 3.0

Template reports provided include:

- Sales Report (monthly or ad hoc; one location or all)

- Inventory Movement Report (transfers, new inventory, usage, expired, damaged, returned; ad hoc; one location or all)

- Inventory Status Report (ad hoc, current inventory of all items at one, or all, locations and the minimum required)

Template reports available in “out of the box” system

 

RR 3.1

Fields to be reportable:

- Inventory name

- Dates of Procurement and amounts

- Dates of Transfers and amounts

- Sale price

- Purchase price

- Lot #’s

- Expiry Dates

- Stock Levels at all or individual clinic locations and CR

- Minimum Stock Levels

- Sales Information:

- date

- client Chart #’s

- items sold

- quantities of each item sold

- payment types/amounts

- invoice #

- amounts owing on invoices

- name of dispenser for

- staff name who received payment towards invoice

- Dispensing information:

- location of dispensed product

- item dispensed

- staff name who dispensed item

- date of dispensing

- lot # and expiry date

- quantity of dispensed item

- Ordering information:

- order #

- product name

- product price

- supplier information

- location ordering information

- date order received

- status of order

- date order filled

- partially filled product information

- quantity of products ordered