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/EnableContinuousFlowsshall be enabled. - The attribute
MedDevAllowAutoPartialMergeof 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
MedDevAllowAutoPartialMergeof a step isfalse, nothing will happen. - If the
MedDevAllowAutoPartialMergeattribute of a step is set totrue, 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
MedDevAllowAutoPartialMergeattribute of a step is set totrue, 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
MedDevAllowAutoPartialMergeattribute of a step is set totrue, 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.