BRD: Inventory Module
Attached is the Inventory Module Business Requirements Document.
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:
| 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:
|
|
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:
|
|
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:
| 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:
| 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 |
|
|