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.

MedDevAutoMovementUntilMergeOnRecordLossToZero#

If a full loss is recorded against a material with associated rank, handle or prepare its termination.

  • Action Groups:

BusinessObjects.MaterialCollection.RecordLoss.Post MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Pre MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.Post MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutAndMoveMaterialsToNextStep.Pre MaterialManagement.MaterialManagementOrchestration.ComplexTrackOutAndMoveMaterialsToNextStep.Post

  • Pre Conditions:

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

Record Loss updated the material to zero primary quantity.

If action trigger is the Complex Track-Out operation, then the Action will only be executed on the Complex Track-Out (Post) orchestration method and not on Record Loss operation, to prevent Track-Out to be executed more than once in the same transaction, which would result in a runtime error.

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.
  • 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).
  • 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.
  • 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#

When material moves to the next step, its rank (and those of related materials) will be recalculated.

  • Action Groups:

BusinessObjects.MaterialCollection.MoveToNextStep.Pre BusinessObjects.MaterialCollection.MoveToNextStep.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 Middle, 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.
  • Check if there is already a Future Merge Action for Head
  • If exist, skip the Merge and wait for the Future Action to handle it
  • If not exist, 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).

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

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

eDHR Validation and Sign-off#

MedDevMaterialProtocolContextPreValidation#

Pre-validates configuration to insert or update in the MedDevMaterialProtocolContext Smart Table.

  • Action Groups:

N/A

  • Pre Conditions:

N/A

  • Action:

Checks that if the Step has MedDevIsMatProtocolStep attribute enabled, then for each Operation, the required fields are validated as follows:

  • When Operation is AssociateMaterial, one and only one of GroupingProperty or GroupingRule is set.
  • When Operation is AttachDocument, validate the Report column is not empty.

If any of these constraints is not met, a localized exception is thrown.