Skip to content

DEEs#

Continuous Flows#

Below there are the list of DEEs that were created in the context of Continuous Flows Feature

MedDevAddMaterialRankToResolution#

Continuous Flows - Resolve Context only for First/Last Material of Lot.

Add Material's 'MedDevMaterialRank' to the context resolution values as 'MaterialRank'.

  • Action Groups:

SmartTables.SmartTables.ResolveObjectsToDataSet.Pre

  • Pre Conditions:

Override Native normal (not Line Flows) Checklist and DataCollection resolution

Material is present in DEE context - so that its possible to retrieve the 'MedDevMaterialRank' attribute

The Table is either 'MedDevMaterialChecklistContext' or 'MedDevMaterialDataCollectionContext'

  • Action:

Override Native normal(not Line Flows) Checklist and DataCollection resolution - to pass the additional MaterialRank input key

MedDevCheckMaterialRankOnTerminate#

Continuous Flows - Resolve Context only for First/Last Material of Lot.

Don't allow Head or Tail materials to be terminated except via merge and Main material cannot be terminated regardless of its current rank or operation.

  • Action Groups:

    • BusinessObjects.Material.Merge.Pre
    • BusinessObjects.Material.Terminate.Post
    • BusinessObjects.MaterialCollection.Terminate.Post
  • Pre Conditions:

Feature /MedDev/ContinuousFlows/EnableContinuousFlows shall be enabled.

  • Action:

Except in merge scenarios, if one of the Materials being terminated has MedDevMaterialRank as "Head" or "Tail", throw an error:

  • "Head/Tail Material cannot be terminated - Adjust the Head/Trail Material Rank assignments first." (localizable)

In any scenario, if /MedDev/ContinuousFlows/EnableAutoReEvaluationOfMaterialRanks is enabled and the material is the main material throw an error:

  • "Material cannot be terminated - is the original main material of the lot." (localizable)

MedDevSetFutureMergeOnPartialSplit#

When doing Complex Split and TrackOut (Partial TrackOut) a Future Merge should be created to merge back that splits Material

  • Action Groups:

    • MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Pre
    • MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
    • MaterialManagement.MaterialManagementOrchestration.TrackOutMaterials.Post
  • Pre Conditions:

N/A

  • Action:

Create Future Action for material being processed.

MedDevSetMaterialRankOnMerge#

Continuous Flows - Resolve Context only for First/Last Material of Lot

When merging, update ranks in the merged material and in the main material.

  • Action Groups:

    • BusinessObjects.Material.Merge.Post
  • Pre Conditions:

Feature /MedDev/ContinuousFlows/EnableContinuousFlows shall be enabled.

  • Action:

Set up Material attribute 'MedDevMaterialRank'

If there is a "Head" + "Tail" material(final merge) - remove MedDevMaterialRank and clean the ManufacturerLotNumber in the final target material.

If there's a "Head" but no "Tail" (lead merge) - set the MedDevMaterialRank to "Head" in the target material.

If there's a "Tail" but no "Head" (tail merge) - set the MedDevMaterialRank to "Tail" in the target material.

If there's a "Middle" but no "Head" / "Tail" (middle merge) - set the MedDevMaterialRank to "Middle" in the target material.

If there's no MedDevMaterialRank set in any Material - do nothing (i.e. normal merge behavior).

If ranks where changed, update main material attributes with the new CurrentHead and CurrentTail.

MedDevSetMaterialRankOnPartialSplit#

Continuous Flows - Resolve Context only for First/Last Material of Lot

When splitting, update the Materials attribute 'MedDevMaterialRank'.

  • Action Groups:

    • MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Pre (> to retrieve Main Material)
    • MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post
  • Pre Conditions:

Feature /MedDev/ContinuousFlows/EnableContinuousFlows shall be enabled.

If TrackOut if made with full quantity there are No splits therefore no logic to apply.

  • Action:

Set up Material attribute MedDevMaterialRank and ManufacturerLotNumber.

If the main material has no MedDevMaterialRank, set(first split) as:

  • "Tail"(configurable) on the main(that doesn't get tracked out)
  • "Head"(configurable) on the first split child

If the main material has MedDevMaterialRank = "Tail"(subsequent splits) or "Middle"

  • set it as "Middle"(configurable) for each subsequent split child

If the main material has MedDevMaterialRank = "Head"(multi - step partial trackout), set it

  • as "Middle"(configurable) on the main(that doesn't get tracked out)
  • as "Head"(configurable) on the new first split child

If ranks where changed, update main material attributes with the new CurrentHead and CurrentTail.

MedDevAutoPartialMerge#

Continuous Flows - Support Auto Partial Merge

  • Action Groups:

    • MaterialManagement.MaterialManagementOrchestration.MoveMaterialsToNextStep.Post
    • BusinessObjects.MaterialCollection.TrackIn.Post
    • BusinessObjects.MaterialCollection.TrackOut.Post
  • Pre Conditions:

    • Feature /MedDev/ContinuousFlows/EnableContinuousFlows shall be enabled.
    • The attribute MedDevAllowAutoPartialMerge of the step needs to be set to true.
    • The material must be associated with a production order.
  • Action:

    • If the production order of the material is null, nothing will happen.
    • If the attribute MedDevAllowAutoPartialMerge of a step is false, nothing will happen.
    • If the MedDevAllowAutoPartialMerge attribute of a step is set to true, and a material associated with a production order moves to the current step, it will automatically find a target material with the same system state(Queued) to merge with and update the material rank accordingly.
    • If the MedDevAllowAutoPartialMerge attribute of a step is set to true, and a material associated with a production order tracks in the current step, it will automatically find a target material with the same system state(InProcess) and the same resource to merge with and update the material rank accordingly.
    • If the MedDevAllowAutoPartialMerge attribute of a step is set to true, and a material associated with a production order tracks out the current step, it will automatically find a target material with the same system state(Processed) to merge with and update the material rank accordingly.
    • If no target material with the same system state is found in the current step, nothing will happen.

Label Verification and Reconciliation#

MedDevRecordPrintHistory#

Record History of Printing Printable Documents

  • Action Groups:

    • BusinessObjects.PrintableDocument.Print.Post
    • BusinessObjects.MaterialCollection.PrintMaterialLabel.Post
    • PrintManagement.PrintManagementOrchestration.PrintPrintableDocuments.Post
  • Pre Conditions:

N/A

  • Action:

Update Material Relation MedDevMaterialPrintableDocument with the requested print counts

MedDevAutoMovementUntilMergeOnRecordLossToZero#

Record History of Printing Printable Documents

  • Action Groups:

    • BusinessObjects.MaterialCollection.RecordLoss.Post
  • Pre Conditions:

Feature /MedDev/ContinuousFlows/EnableContinuousFlows and /MedDev/ContinuousFlows/EnableAutoReEvaluationOfMaterialRanks shall be enabled.

Post Record Loss updated the material to zero primary quantity.

Material is of rank Head, Tail, or a main material.

  • Action:

For Head or Middle (main material):

  • Merge within the current step if possible, otherwise, leave material queued ready to be merged in the current or in the next step.
    1. If the material is in "Queued" or "Dispatched > UnDispatch":
      • Search for a Queued lot material in the current step to merge with.
      • If found, perform the merge.
      • If not found, do nothing:
        • The material is already ready to be merged (another material may come later to merge with it or this material might later be updated to a Tail, in which case it will perform the search actively).
    2. If the material is in "In Process" > TrackOut or "Processed":
      • Search for a Processed lot material in the current step to merge with.
      • If found, perform the merge.
      • If not found, move the material to the next step.
        • Leave it in queued state, ready to be merged (another material may come later to merge with it or this material might later be updated to a Tail, in which case it will perform the search actively).

For Tail:

  • Actively move the material through steps until it finds another material from the same group and merges directly.
    1. Search for a material from the same lot within the current step.
      • If found, perform the merge.
      • If not found, move to the next step and repeat the search.

when performing the merge:

  • Do not terminate the source material if it is the main material.
    • If necessary, switch the direction of the merge (choose who merges into whom) to preserve the main material.

MedDevUpdateMaterialRanksOnMoveNext#

Record History of Printing Printable Documents

  • Action Groups:

    • MaterialManagement.MaterialManagementOrchestration.MoveMaterialsToNextStep.Pre
    • MaterialManagement.MaterialManagementOrchestration.MoveMaterialsToNextStep.Post
  • Pre Conditions:

Feature /MedDev/ContinuousFlows/EnableContinuousFlows and /MedDev/ContinuousFlows/EnableAutoReEvaluationOfMaterialRanks shall be enabled.

  • Action:

Re-evaluate Material Ranks within Lot Group materials by ManufacturerLotNumber, then sort and re-evaluate:

  • Prioritize Middled, then Tail and ignore Head materials.
    • Prevents Tails from merging first when a Head quantity 0 is found in the same step, leaving out the possibility of Middles being left behind.

Middle

  • Step 1: Check for a Head of the same lot in the old step:

    • Indicates the current Middle is not truly a middle.
    • Switch roles:
      • Front material becomes Head.
      • Back material becomes Middle.
    • Update the main material head attribute accordingly.
  • Step 2: If no Head in the old step, check for a Head with quantity 0 in the current step:

    • Indicates the Head intends to terminate.
    • Merge Head into Middle (lead merge).
    • Merge logic:
      • Do not terminate the source if it's the main material.
      • If necessary, switch merge target to preserve main material status.

TAIL

  • Step 1: Check for any material from the same lot in the old step:

    • Indicates the current Tail is not truly a tail.
    • Switch roles:
      • Front material becomes Middle (or Head).
      • Back material becomes Tail.
    • Update both main material head and tail attributes accordingly.
  • Step 2: If switched material is now a Tail with PrimaryQuantity == 0:

    • Trigger Tail search for a suitable merge target.
  • Step 3: Check for a Head with quantity 0 in the current step:

    • Indicates the Head intends to terminate.
    • Merge Head into Tail(unless switched to Middle already).
    • Merge logic:
      • Do not terminate the source if it's the main material.
      • If necessary, switch merge target to preserve main material status.

HEAD

  • No re-evaluation needed for Heads.
    • Re-evaluations already occur during:
      • Merges (where Head is the final material merged with the old Head).
      • Splits (where ranks are reassigned post-split).
      • MoveNext of Middles or Tail (which automatically updates the Head as needed).

MedDevPreFillDataCollectionInstance#

Fill out the DataCollection instance based on the relation MedDevMaterialPrintableDocument of the material.

  • Action Groups:

    MaterialManagement.MaterialManagementOrchestration.ComplexTrackInMaterials.Post

  • Pre Conditions:
    N/A

  • Action:

If the relation MedDevMaterialPrintableDocument of a material has some values and dispatch and track in the material,then open a DataCollection instance through post data or track out wizard,the values are being populated to the DataCollection instance from MedDevMaterialPrintableDocument the relation