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.PreBusinessObjects.Material.Terminate.PostBusinessObjects.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.PreMaterialManagement.MaterialManagementOrchestration.ComplexTrackOutMaterials.PostMaterialManagement.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.PostBusinessObjects.MaterialCollection.TrackIn.PostBusinessObjects.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.
- Feature
-
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.
Label Verification and Reconciliation#
MedDevRecordPrintHistory#
Record History of Printing Printable Documents
-
Action Groups:
BusinessObjects.PrintableDocument.Print.PostBusinessObjects.MaterialCollection.PrintMaterialLabel.PostPrintManagement.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.
- 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).
- If the material is in "Queued" or "Dispatched > UnDispatch":
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.
- Search for a material from the same lot within the current step.
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.PreMaterialManagement.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).
- Re-evaluations already occur during:
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