Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

What is a Lot in v3

...

  • String lotCode (required—if the shipment really does not have a code, and only has an expiration date, then users could paste that date into this code field)
  • Date expirationDate (optional)
  • Date manufactureDate (optional)
  • reference to a TradeItem (required) — this object gives us access to the Manufacturer name, etc, which will be helpful for display. (in V2 this was a reference to a product)
  • boolean active flag — potentially a future feature to be able to set a Lot as inactive after it has gone out of circulation; or maybe this is connected to how you archive the lot instead of a DELETE endpoint
  • UUID will get assigned to the Lot in ReferenceData, but it won't be visible to the user

...

  • Audit Log: ability to see the history of when a Lot was created, edited (when and by whom), de-activated. The would show us the life-cycle of each Lot. To our knowledge, this feature is not captured in the current Roadmap; it's just an idea.
  • CSV uploads (we have other tickets in Roadmap for CSV uploads, but uploading Lots are not yet their own ticket)
  • Potentially look into allowing allowing end users to add in lots/tradeItems. 3.1 aims to achieve lot management centrally.

Process to Configure Lot feature

Why we need lot feature?

Lot feature provides two new piece of data: lot number and expiry date. 

Lot number data allows decision makers to track orderables at the batch level and also allows warehouse managers to recall orderables if there is an issue for a specific batch orderables;

Expiry date data will not only notify storeroom managers before orderables expired (reduce wastage) but also allows the decision makers to implement the FEFO process.


How do we balance the usability and policy?

Policy requires all tradeitems must be tracked by lot. Meaning, tradeitem is only the summary of lots belong to it. No trade item has its own stock card instead only lot has its own stock card. 

Usability requires our system provide the flexibility for end users to track products at tradeitem level or the lot level or both. Meaning, a tradeitem can has its own stock card while lots under this tradeitem can have its stock card as well. It is up for end users to create stock events on which stock card. 

Since we do not have a real user yet, it is very hard to make that decision. Instead, we come up with three options which can be discussed broadly with more stakeholders. 


Option1: technical preferred - mixed policy and usability

The lot feature is always on but the system allows end users to choose either tradeitem or lot to create stock event. In other words, we provide the lot function to user but we leave the validation to end users as well. 

The UI layout will always support lot feature. To be more exact, even if a country does not use lot to track stock events, they will still see the lot number, expiry date column when they performance a physical inventory. 


Option2: TW preferred - usability focused 

System Administrator can turn on/off lot feature at central level. That configuration applies globally, which means if the feature is on then all facilities lot feature is on. 

The lot feature turn on/off configuration only determines the UI page layout. 

If the lot feature is on then the UI layout will use the lot supported design e.g. lot number column, expiry date column and expand table on adjustment page, physical inventory page and SOH summary page. 

If the lot feature is off then the UI layout will use the design does not support lot e.g. no lot number, expiry date column nor the expand table structure. Moreover, System administrator cannot add new lot or storeroom manager view lot from client side. 

As for the validation, we will leave it to the end users to confirm. Meaning, we will not check the balance between the trade item stock card’s SOH and the SOH summary of all lots belong to that trade item.


Option3: Donor preferred (maybe) - policy focused

The default setting of lot feature is off but System Administrator can turn it on. However, if the lot feature is on, system administrator can not turn if off. 

When the lot feature is on then system administrator must input all lots and ensure the trade item SOH quantity are correctly break down to lot level. For example, there is a trade item A and its SOH is 100 when lot feature is off. Later when system administrator turn on the lot feature then he inputs lot1, lot2, lot3 under trade item A. End user cannot make new stock events unless they break the quantity of trade item A into these three lots correctly. Meaning, the SOH summary of lot1, lot2, lot3 must equal to 100 (the SOH of tradeitem A). After the trade item A is break down to lot level then the stock card of trade item A will be deactivated and end users are only allowed to create new stock events of lot1,lot2,lot3 stock cards. 

 

Open Questions

  1. Josh, are there any other GS1 fields or naming changes needed?

  2. If a TradeItem has no Lots, then has StockCards with inventory and adjustments with no Lots, then later on the TradeItem has lots, how does that impact the Stock service?

    1. Proposed solution A: For any TradeItem, allow the simultaneous existence of stock cards that have Lots along with stock cards that do not have Lots. We simply need our software to be flexible since Lots might get introduced into the supply chain at different times or in different locations, even after some stock cards and physical inventories exist in the software.

    2. Proposed solution B: For any TradeItem, it has a configuration to specify whether it is managed using Lots or not. To change a TradeItem to begin using Lots, that configuration change would modify the Orderables and Stock Cards in order to begin tracking stock in Lots. The pre-existing stock balances might be transferred to a "dummy lot".

  3. If a TradeItem has Lots and Stock service has inventories and adjustments associated with it, and then the TradeItem stops using Lots (or stops tracking Lots) and the system needs to transition to tracking the TradeItem without Lots data, how do users do that in Stock Management 3.1?

    1. Proposed solution A: (same as A above).

    2. Proposed Solution B: (similar to B above—an administrator would change the configuration and that would move all of the current quantities from Lots back into a stock card for the overall TradeItem with no Lot information).

  4. Inactive Flag on Lots: For future functionality (likely not for 3.1 release), we may need to discuss the Inactive flag and any business or process rules around who sets that flag, when, and why. EG, in a scenario where a TradeItem has Lots and Stock service has inventories and adjustments associated with it, and then the Administrator marks all those Lots as inactive (because they have expired or because they are out of circulation), if the Administrator does not enter any new Lots information for the new lots in circulation, and users of Stock Management are conducting inventories and adjustments with those new Lots that are not yet in the system, how does the system handle that?

    1. Proposed Solution A: Do not have an inactive flag in Stock for 3.1 release.

    2. Proposed Solution B: Do not allow administrators to mark Lots as inactive if there is any stock SOH quantity at any facility for a given Lot.

  5. Does Stock Management need an "adjustment" reason to move stock from one lot to another, in cases where it was inaccurately reported? Or in cases where it was previously inventoried with no Lot information but now we want to start tracking it by Lots?

    1. Proposed solution: For now we assume users might need to do this manually (pick some existing adjustment reason to reduce Lot A by 100 and increase Lot B by 100; or reduce count without a Lot by 100 and increase count in Lot C by 100). System administrators might choose to add a Reason to their system that is more descriptive for this case.


(This wiki page was originally created in response to ticket

Jira Legacy
serverJIRA (openlmis.atlassian.net)
serverId448ba138-230b-3f91-a83e-16e7db1deed1
keyOLMIS-2108
).