@memoarchitect/ontology 0.10.9 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +1 -1
  2. package/examples/gpca-pump/memo.identity.yaml +12 -6
  3. package/examples/gpca-pump/model/catalog/gpca_context.sysml +7 -4
  4. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +100 -100
  5. package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
  6. package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
  7. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +5 -2
  8. package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
  9. package/examples/nested-architecture-dsm/model/catalog/project.sysml +1 -0
  10. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +3 -0
  11. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -3
  12. package/examples/ui-screen-regions/memo.identity.yaml +205 -0
  13. package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
  14. package/extensions/aadl/memo.package.yaml +1 -1
  15. package/extensions/cloud/memo.package.yaml +1 -1
  16. package/extensions/container/memo.package.yaml +1 -1
  17. package/extensions/messaging/memo.package.yaml +1 -1
  18. package/extensions/ros/memo.package.yaml +1 -1
  19. package/methodologies/default/memo.package.yaml +1 -1
  20. package/methodologies/gpca/memo.package.yaml +1 -1
  21. package/ontology/memo.package.yaml +1 -1
  22. package/package.json +1 -1
  23. package/profile/memo.package.yaml +1 -1
  24. package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -2
  25. package/src/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
  26. package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
  27. package/src/artifacts/templates/dhf/system/syrs.md +6 -6
  28. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +5 -1
  29. package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
  30. package/src/assurance/requirements/memo_requirements.sysml +20 -16
  31. package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
  32. package/src/assurance/safety_risk/memo_risk.sysml +39 -16
  33. package/src/assurance/verification_validation/memo_assurance.sysml +18 -0
  34. package/src/rules/closure/closure_rules.sysml +36 -2
  35. package/src/rules/crosslayer/cross_layer_rules.sysml +1 -1
  36. package/src/rules/ontology/ontology_invariants.sysml +13 -2
@@ -399,7 +399,7 @@ package memo_examples_gpca_pump_gpca_requirements {
399
399
 
400
400
  // ═════ CriSys system requirements — §4.1.1 GPCA System ══════
401
401
  requirement reqCs01 : Requirement {
402
- attribute :>> requirementKind = RequirementKind::system;
402
+ attribute :>> requirementType = RequirementTypeKind::system;
403
403
  @MemoIdentity { :>> providedId = "REQ-CS-01"; } attribute :>> name = "SingleActiveMode";
404
404
  attribute :>> statement = "The system shall always be in only one of the following modes: OFF (default mode), IDLE, PAUSED, BASAL, SQUARE BOLUS or PATIENT BOLUS.";
405
405
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -410,7 +410,7 @@ package memo_examples_gpca_pump_gpca_requirements {
410
410
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 1)"; }
411
411
  }
412
412
  requirement reqCs02 : Requirement {
413
- attribute :>> requirementKind = RequirementKind::system;
413
+ attribute :>> requirementType = RequirementTypeKind::system;
414
414
  @MemoIdentity { :>> providedId = "REQ-CS-02"; } attribute :>> name = "ModeChangeDurationWithoutFlowChange";
415
415
  attribute :>> statement = "If there are mode transitions without change in flow rates between the two modes, the system shall transition within Max_Mode_Change_Duration_const.";
416
416
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -421,7 +421,7 @@ package memo_examples_gpca_pump_gpca_requirements {
421
421
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 2)"; }
422
422
  }
423
423
  requirement reqCs03 : Requirement {
424
- attribute :>> requirementKind = RequirementKind::system;
424
+ attribute :>> requirementType = RequirementTypeKind::system;
425
425
  @MemoIdentity { :>> providedId = "REQ-CS-03"; } attribute :>> name = "ModeChangeFlowRamp";
426
426
  attribute :>> statement = "If there are mode transitions with change in flow rates between the two modes, the system shall change from the current mode flow rate to the new mode flow rate at a rate not more than Max_Rateof_Flow_Change_const or within Max_Mode_Change_Duration_const, whichever achieves the new desired flow rate the quickest.";
427
427
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -432,7 +432,7 @@ package memo_examples_gpca_pump_gpca_requirements {
432
432
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.1 (REQ 3)"; }
433
433
  }
434
434
  requirement reqCs04 : Requirement {
435
- attribute :>> requirementKind = RequirementKind::system;
435
+ attribute :>> requirementType = RequirementTypeKind::system;
436
436
  @MemoIdentity { :>> providedId = "REQ-CS-04"; } attribute :>> name = "OffToIdleOnSystemStart";
437
437
  attribute :>> statement = "The system shall transition from OFF mode to ON > IDLE mode when System_start_prog is commanded. At this transition, the variables in App. A.4 shall be set to their default values.";
438
438
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -443,7 +443,7 @@ package memo_examples_gpca_pump_gpca_requirements {
443
443
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.1.2 (REQ 4)"; }
444
444
  }
445
445
  requirement reqCs05 : Requirement {
446
- attribute :>> requirementKind = RequirementKind::system;
446
+ attribute :>> requirementType = RequirementTypeKind::system;
447
447
  @MemoIdentity { :>> providedId = "REQ-CS-05"; } attribute :>> name = "OnToOffOnSystemStop";
448
448
  attribute :>> statement = "While in ON mode, when System_stop_prog is commanded, the system shall stop infusion, cancel all notifications and transition to OFF mode.";
449
449
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -456,7 +456,7 @@ package memo_examples_gpca_pump_gpca_requirements {
456
456
 
457
457
  // ── §4.1.2 OFF mode ─────────────────────────────────────────
458
458
  requirement reqCs06 : Requirement {
459
- attribute :>> requirementKind = RequirementKind::system;
459
+ attribute :>> requirementType = RequirementTypeKind::system;
460
460
  @MemoIdentity { :>> providedId = "REQ-CS-06"; } attribute :>> name = "OffModeNoDelivery";
461
461
  attribute :>> statement = "While in OFF mode, the system shall not deliver any drug.";
462
462
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -469,7 +469,7 @@ package memo_examples_gpca_pump_gpca_requirements {
469
469
 
470
470
  // ── §4.1.3 ON mode ──────────────────────────────────────────
471
471
  requirement reqCs07 : Requirement {
472
- attribute :>> requirementKind = RequirementKind::system;
472
+ attribute :>> requirementType = RequirementTypeKind::system;
473
473
  @MemoIdentity { :>> providedId = "REQ-CS-07"; } attribute :>> name = "InfusionRequiresSavedPrescription";
474
474
  attribute :>> statement = "While in ON mode, the system shall allow initiation of infusion only when a saved prescription is available.";
475
475
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -480,7 +480,7 @@ package memo_examples_gpca_pump_gpca_requirements {
480
480
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 7)"; }
481
481
  }
482
482
  requirement reqCs08 : Requirement {
483
- attribute :>> requirementKind = RequirementKind::system;
483
+ attribute :>> requirementType = RequirementTypeKind::system;
484
484
  @MemoIdentity { :>> providedId = "REQ-CS-08"; } attribute :>> name = "AllowDataConfigurationInOn";
485
485
  attribute :>> statement = "While in ON mode, the system shall allow configuring (DataConfig_prog) new or saved prescription data and reservoir initial volume, as described in the Data Configuration Requirements (§4.2).";
486
486
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -491,7 +491,7 @@ package memo_examples_gpca_pump_gpca_requirements {
491
491
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 8)"; }
492
492
  }
493
493
  requirement reqCs09 : Requirement {
494
- attribute :>> requirementKind = RequirementKind::system;
494
+ attribute :>> requirementType = RequirementTypeKind::system;
495
495
  @MemoIdentity { :>> providedId = "REQ-CS-09"; } attribute :>> name = "PrescriptionDisplayAndConfirm";
496
496
  attribute :>> statement = "While in ON mode, if Infusion_initiate_prog, the system shall display the saved prescription values and allow the clinician to confirm the prescription with another Infusion_initiate_prog.";
497
497
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -502,7 +502,7 @@ package memo_examples_gpca_pump_gpca_requirements {
502
502
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 9)"; }
503
503
  }
504
504
  requirement reqCs10 : Requirement {
505
- attribute :>> requirementKind = RequirementKind::system;
505
+ attribute :>> requirementType = RequirementTypeKind::system;
506
506
  @MemoIdentity { :>> providedId = "REQ-CS-10"; } attribute :>> name = "AllowNotificationsInOn";
507
507
  attribute :>> statement = "While in ON mode, the system shall allow visual and audio notification as described in §4.3.";
508
508
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -513,7 +513,7 @@ package memo_examples_gpca_pump_gpca_requirements {
513
513
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 10)"; }
514
514
  }
515
515
  requirement reqCs11 : Requirement {
516
- attribute :>> requirementKind = RequirementKind::system;
516
+ attribute :>> requirementType = RequirementTypeKind::system;
517
517
  @MemoIdentity { :>> providedId = "REQ-CS-11"; } attribute :>> name = "AllowLoggingInOn";
518
518
  attribute :>> statement = "While in ON mode, the system shall allow logging as described in §4.4.";
519
519
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -524,7 +524,7 @@ package memo_examples_gpca_pump_gpca_requirements {
524
524
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.1 (REQ 11)"; }
525
525
  }
526
526
  requirement reqCs12 : Requirement {
527
- attribute :>> requirementKind = RequirementKind::system;
527
+ attribute :>> requirementType = RequirementTypeKind::system;
528
528
  @MemoIdentity { :>> providedId = "REQ-CS-12"; } attribute :>> name = "ConfirmedInitiateStartsBasal";
529
529
  attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = FALSE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0 and shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
530
530
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -535,7 +535,7 @@ package memo_examples_gpca_pump_gpca_requirements {
535
535
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.3.2 (REQ 12)"; }
536
536
  }
537
537
  requirement reqCs13 : Requirement {
538
- attribute :>> requirementKind = RequirementKind::system;
538
+ attribute :>> requirementType = RequirementTypeKind::system;
539
539
  @MemoIdentity { :>> providedId = "REQ-CS-13"; } attribute :>> name = "ConfirmedInitiateWhileInhibitedPauses";
540
540
  attribute :>> statement = "While in ON mode, when the second Infusion_initiate_prog is commanded as per REQ 9 and Inhibited_Infusion_macro = TRUE, the system shall reset Actual_Infusion_Duration_macro = 0 and Actual_Volume_Infused_macro = 0, shall transition to ON > THERAPY > PAUSED mode and perform actions as described in REQ 59 for 'Infusion Inhibited'.";
541
541
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -548,7 +548,7 @@ package memo_examples_gpca_pump_gpca_requirements {
548
548
 
549
549
  // ── §4.1.4 ON > IDLE mode ───────────────────────────────────
550
550
  requirement reqCs14 : Requirement {
551
- attribute :>> requirementKind = RequirementKind::system;
551
+ attribute :>> requirementType = RequirementTypeKind::system;
552
552
  @MemoIdentity { :>> providedId = "REQ-CS-14"; } attribute :>> name = "IdleModeNoDelivery";
553
553
  attribute :>> statement = "While in IDLE mode, the system shall not deliver any drug.";
554
554
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -559,7 +559,7 @@ package memo_examples_gpca_pump_gpca_requirements {
559
559
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.4.1 (REQ 14)"; }
560
560
  }
561
561
  requirement reqCs15 : Requirement {
562
- attribute :>> requirementKind = RequirementKind::system;
562
+ attribute :>> requirementType = RequirementTypeKind::system;
563
563
  @MemoIdentity { :>> providedId = "REQ-CS-15"; } attribute :>> name = "IdleTimeNotification";
564
564
  attribute :>> statement = "While in IDLE mode for more than Max_IDLE_Duration_const, the system shall take actions as defined in REQ 59 for 'IDLE Time'.";
565
565
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -572,7 +572,7 @@ package memo_examples_gpca_pump_gpca_requirements {
572
572
 
573
573
  // ── §4.1.5 ON > THERAPY mode ────────────────────────────────
574
574
  requirement reqCs16 : Requirement {
575
- attribute :>> requirementKind = RequirementKind::system;
575
+ attribute :>> requirementType = RequirementTypeKind::system;
576
576
  @MemoIdentity { :>> providedId = "REQ-CS-16"; } attribute :>> name = "TherapyDeliveryWithinTolerance";
577
577
  attribute :>> statement = "While in THERAPY mode, the system shall deliver the drug as per the respective sub-mode's programmed flow rate, FlowRate_Mode_macro, within a tolerance of Tolerance_Max_const.";
578
578
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -583,7 +583,7 @@ package memo_examples_gpca_pump_gpca_requirements {
583
583
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 16)"; }
584
584
  }
585
585
  requirement reqCs17 : Requirement {
586
- attribute :>> requirementKind = RequirementKind::system;
586
+ attribute :>> requirementType = RequirementTypeKind::system;
587
587
  @MemoIdentity { :>> providedId = "REQ-CS-17"; } attribute :>> name = "UnderInfusionFlowRateNotification";
588
588
  attribute :>> statement = "While in THERAPY mode, the system shall take actions as defined in REQ 59 for 'Under Infusion FlowRate' if the output flow rate falls below the mode flow rate beyond the tolerance windows.";
589
589
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -594,7 +594,7 @@ package memo_examples_gpca_pump_gpca_requirements {
594
594
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 17)"; }
595
595
  }
596
596
  requirement reqCs18 : Requirement {
597
- attribute :>> requirementKind = RequirementKind::system;
597
+ attribute :>> requirementType = RequirementTypeKind::system;
598
598
  @MemoIdentity { :>> providedId = "REQ-CS-18"; } attribute :>> name = "LowReservoirNotification";
599
599
  attribute :>> statement = "While in THERAPY mode, when the current volume of drug in the reservoir is less than Low_Reservoir_const, the system shall perform the actions defined in REQ 59 for 'Low Reservoir'.";
600
600
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -605,7 +605,7 @@ package memo_examples_gpca_pump_gpca_requirements {
605
605
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.1 (REQ 18)"; }
606
606
  }
607
607
  requirement reqCs19 : Requirement {
608
- attribute :>> requirementKind = RequirementKind::system;
608
+ attribute :>> requirementType = RequirementTypeKind::system;
609
609
  @MemoIdentity { :>> providedId = "REQ-CS-19"; } attribute :>> name = "OverInfusionFlowRatePause";
610
610
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions described in REQ 59 for 'Over Infusion FlowRate' if the output flow rate exceeds the mode flow rate beyond the tolerance windows.";
611
611
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -616,7 +616,7 @@ package memo_examples_gpca_pump_gpca_requirements {
616
616
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 19)"; }
617
617
  }
618
618
  requirement reqCs20 : Requirement {
619
- attribute :>> requirementKind = RequirementKind::system;
619
+ attribute :>> requirementType = RequirementTypeKind::system;
620
620
  @MemoIdentity { :>> providedId = "REQ-CS-20"; } attribute :>> name = "OverInfusionVtbiPause";
621
621
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and take the actions described in REQ 59 for 'Over Infusion VTBI' if the actual volume infused exceeds the drug-database maximum VTBI.";
622
622
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -627,7 +627,7 @@ package memo_examples_gpca_pump_gpca_requirements {
627
627
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 20)"; }
628
628
  }
629
629
  requirement reqCs21 : Requirement {
630
- attribute :>> requirementKind = RequirementKind::system;
630
+ attribute :>> requirementType = RequirementTypeKind::system;
631
631
  @MemoIdentity { :>> providedId = "REQ-CS-21"; } attribute :>> name = "AirEmbolismPause";
632
632
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform the actions defined in REQ 59 for 'Air embolism' if an air bubble of a volume larger than Single_AirBubble_Volume_const flows through the hose, or the sum of volume of all air bubbles flowing through the hose exceeds Cumulative_AirBubble_Volume_const for the same time interval defined for Cumulative_AirBubble_Volume_const.";
633
633
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -638,7 +638,7 @@ package memo_examples_gpca_pump_gpca_requirements {
638
638
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 21)"; }
639
639
  }
640
640
  requirement reqCs22 : Requirement {
641
- attribute :>> requirementKind = RequirementKind::system;
641
+ attribute :>> requirementType = RequirementTypeKind::system;
642
642
  @MemoIdentity { :>> providedId = "REQ-CS-22"; } attribute :>> name = "ReverseDeliveryPause";
643
643
  attribute :>> statement = "While in THERAPY mode, the system shall transition to PAUSED mode and perform actions defined in REQ 59 for 'Reverse Delivery' if there is continuous reverse delivery for more than Rev_Delivery_Continuous_Duration_const, or the cumulative time of all reverse delivery episodes exceeds Rev_Delivery_Cumulative_Duration_const.";
644
644
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -649,7 +649,7 @@ package memo_examples_gpca_pump_gpca_requirements {
649
649
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.5.2 (REQ 22)"; }
650
650
  }
651
651
  requirement reqCs23 : Requirement {
652
- attribute :>> requirementKind = RequirementKind::system;
652
+ attribute :>> requirementType = RequirementTypeKind::system;
653
653
  @MemoIdentity { :>> providedId = "REQ-CS-23"; } attribute :>> name = "EmptyReservoirPause";
654
654
  attribute :>> statement = "While in THERAPY mode and if the volume of drug in the reservoir is less than Empty_Reservoir_const, the system shall transition to PAUSED mode and perform actions as listed in REQ 59 for 'Empty Reservoir'.";
655
655
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -662,7 +662,7 @@ package memo_examples_gpca_pump_gpca_requirements {
662
662
 
663
663
  // ── §4.1.6 ON > THERAPY > ACTIVE mode ───────────────────────
664
664
  requirement reqCs24 : Requirement {
665
- attribute :>> requirementKind = RequirementKind::system;
665
+ attribute :>> requirementType = RequirementTypeKind::system;
666
666
  @MemoIdentity { :>> providedId = "REQ-CS-24"; } attribute :>> name = "SquareBolusAutoSchedule";
667
667
  attribute :>> statement = "While in ACTIVE mode, the system shall schedule to start a SQUARE BOLUS every Interval_sbolus_prog and end after Duration_sbolus_prog during the Duration_total_prog.";
668
668
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -673,7 +673,7 @@ package memo_examples_gpca_pump_gpca_requirements {
673
673
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 24)"; }
674
674
  }
675
675
  requirement reqCs25 : Requirement {
676
- attribute :>> requirementKind = RequirementKind::system;
676
+ attribute :>> requirementType = RequirementTypeKind::system;
677
677
  @MemoIdentity { :>> providedId = "REQ-CS-25"; } attribute :>> name = "IgnorePatientBolusRequestConditions";
678
678
  attribute :>> statement = "While in ACTIVE mode, when BolusRequest_prog, the system shall ignore the patient bolus request (BolusRequest_prog = FALSE) if: (1) Inhibited_Infusion_macro = TRUE, OR (2) Inhibited_PatientBolus_macro = TRUE, OR (3) the interval between the most recent PATIENT BOLUS mode end time and the current BolusRequest_prog time violates LockOutPeriod_pbolus_prog, OR (4) the total number of delivered patient boluses for the current prescription violates the programmed maximum number of patient boluses, OR (5) the system is currently in PATIENT BOLUS mode.";
679
679
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -684,7 +684,7 @@ package memo_examples_gpca_pump_gpca_requirements {
684
684
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 25)"; }
685
685
  }
686
686
  requirement reqCs26 : Requirement {
687
- attribute :>> requirementKind = RequirementKind::system;
687
+ attribute :>> requirementType = RequirementTypeKind::system;
688
688
  @MemoIdentity { :>> providedId = "REQ-CS-26"; } attribute :>> name = "FrequentBolusRequestsNotification";
689
689
  attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Frequent Bolus Requests' if the condition described in REQ 25.3 or REQ 25.5 occurs.";
690
690
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -695,7 +695,7 @@ package memo_examples_gpca_pump_gpca_requirements {
695
695
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 26)"; }
696
696
  }
697
697
  requirement reqCs27 : Requirement {
698
- attribute :>> requirementKind = RequirementKind::system;
698
+ attribute :>> requirementType = RequirementTypeKind::system;
699
699
  @MemoIdentity { :>> providedId = "REQ-CS-27"; } attribute :>> name = "BolusExceededNotification";
700
700
  attribute :>> statement = "While in ACTIVE mode, the system shall perform the actions described in REQ 59 for 'Bolus Exceeded' if the condition described in REQ 25.4 occurs.";
701
701
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -706,7 +706,7 @@ package memo_examples_gpca_pump_gpca_requirements {
706
706
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.1 (REQ 27)"; }
707
707
  }
708
708
  requirement reqCs28 : Requirement {
709
- attribute :>> requirementKind = RequirementKind::system;
709
+ attribute :>> requirementType = RequirementTypeKind::system;
710
710
  @MemoIdentity { :>> providedId = "REQ-CS-28"; } attribute :>> name = "InfusionCompleteToIdle";
711
711
  attribute :>> statement = "While in ACTIVE mode, the system shall transition to IDLE and perform actions described in REQ 59 for 'Infusion Complete' if the actual duration of infusion is greater than or equal to the programmed prescription total duration, or the total volume infused is greater than or equal to the programmed prescription maximum VTBI.";
712
712
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -717,7 +717,7 @@ package memo_examples_gpca_pump_gpca_requirements {
717
717
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 28)"; }
718
718
  }
719
719
  requirement reqCs29 : Requirement {
720
- attribute :>> requirementKind = RequirementKind::system;
720
+ attribute :>> requirementType = RequirementTypeKind::system;
721
721
  @MemoIdentity { :>> providedId = "REQ-CS-29"; } attribute :>> name = "ManualInhibitToPaused";
722
722
  attribute :>> statement = "While in ACTIVE mode, when Infusion_inhibit_prog, the system shall transition to PAUSED mode and perform actions described in REQ 59 for 'Infusion Manually Inhibited'.";
723
723
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -728,7 +728,7 @@ package memo_examples_gpca_pump_gpca_requirements {
728
728
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 29)"; }
729
729
  }
730
730
  requirement reqCs30 : Requirement {
731
- attribute :>> requirementKind = RequirementKind::system;
731
+ attribute :>> requirementType = RequirementTypeKind::system;
732
732
  @MemoIdentity { :>> providedId = "REQ-CS-30"; } attribute :>> name = "AllInhibitedToPaused";
733
733
  attribute :>> statement = "While in ACTIVE mode, when Inhibited_Infusion_macro = TRUE, Inhibited_Bolus_macro = TRUE and Inhibited_PatientBolus_macro = TRUE, the system shall transition to PAUSED mode.";
734
734
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -739,7 +739,7 @@ package memo_examples_gpca_pump_gpca_requirements {
739
739
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 30)"; }
740
740
  }
741
741
  requirement reqCs31 : Requirement {
742
- attribute :>> requirementKind = RequirementKind::system;
742
+ attribute :>> requirementType = RequirementTypeKind::system;
743
743
  @MemoIdentity { :>> providedId = "REQ-CS-31"; } attribute :>> name = "BasalToSquareBolus";
744
744
  attribute :>> statement = "While in BASAL mode, when SQUARE BOLUS is initiated as described in REQ 24, the system shall transition to SQUARE BOLUS mode if (1) Inhibited_Bolus_macro = FALSE, AND (2) Inhibited_Infusion_macro = FALSE, AND (3) either there is no BolusRequest_prog, or there is a BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
745
745
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -750,7 +750,7 @@ package memo_examples_gpca_pump_gpca_requirements {
750
750
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 31)"; }
751
751
  }
752
752
  requirement reqCs32 : Requirement {
753
- attribute :>> requirementKind = RequirementKind::system;
753
+ attribute :>> requirementType = RequirementTypeKind::system;
754
754
  @MemoIdentity { :>> providedId = "REQ-CS-32"; } attribute :>> name = "BasalToPatientBolus";
755
755
  attribute :>> statement = "While in BASAL mode, the system shall transition to PATIENT BOLUS mode when BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
756
756
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -761,7 +761,7 @@ package memo_examples_gpca_pump_gpca_requirements {
761
761
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 32)"; }
762
762
  }
763
763
  requirement reqCs33 : Requirement {
764
- attribute :>> requirementKind = RequirementKind::system;
764
+ attribute :>> requirementType = RequirementTypeKind::system;
765
765
  @MemoIdentity { :>> providedId = "REQ-CS-33"; } attribute :>> name = "SquareBolusToPatientBolus";
766
766
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PATIENT BOLUS mode if BolusRequest_prog and none of the conditions listed in REQ 25 are true.";
767
767
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -772,7 +772,7 @@ package memo_examples_gpca_pump_gpca_requirements {
772
772
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 33)"; }
773
773
  }
774
774
  requirement reqCs34 : Requirement {
775
- attribute :>> requirementKind = RequirementKind::system;
775
+ attribute :>> requirementType = RequirementTypeKind::system;
776
776
  @MemoIdentity { :>> providedId = "REQ-CS-34"; } attribute :>> name = "SquareBolusToBasal";
777
777
  attribute :>> statement = "While in SQUARE BOLUS mode, if Inhibited_Bolus_macro = TRUE or the SQUARE BOLUS is scheduled to end (as described in REQ 24), the system shall transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) there is no BolusRequest_prog, or BolusRequest_prog and at least one of the conditions listed in REQ 25 is true.";
778
778
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -783,7 +783,7 @@ package memo_examples_gpca_pump_gpca_requirements {
783
783
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 34)"; }
784
784
  }
785
785
  requirement reqCs35 : Requirement {
786
- attribute :>> requirementKind = RequirementKind::system;
786
+ attribute :>> requirementType = RequirementTypeKind::system;
787
787
  @MemoIdentity { :>> providedId = "REQ-CS-35"; } attribute :>> name = "PatientBolusToBasal";
788
788
  attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to BASAL mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) no SQUARE BOLUS is scheduled to be in progress at the time of transition, OR (3) a SQUARE BOLUS is scheduled to be in progress at the time of transition and Inhibited_Bolus_macro = TRUE.";
789
789
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -794,7 +794,7 @@ package memo_examples_gpca_pump_gpca_requirements {
794
794
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 35)"; }
795
795
  }
796
796
  requirement reqCs36 : Requirement {
797
- attribute :>> requirementKind = RequirementKind::system;
797
+ attribute :>> requirementType = RequirementTypeKind::system;
798
798
  @MemoIdentity { :>> providedId = "REQ-CS-36"; } attribute :>> name = "PatientBolusToSquareBolus";
799
799
  attribute :>> statement = "While in PATIENT BOLUS mode, when Inhibited_PatientBolus_macro = TRUE or the total duration in the current PATIENT BOLUS mode is greater than or equal to Duration_pbolus_prog, the system shall stop the PATIENT BOLUS delivery and transition to SQUARE BOLUS mode if (1) Inhibited_Infusion_macro = FALSE, AND (2) a SQUARE BOLUS is scheduled to be in progress at the time of transition, AND (3) Inhibited_Bolus_macro = FALSE.";
800
800
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -805,7 +805,7 @@ package memo_examples_gpca_pump_gpca_requirements {
805
805
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 36)"; }
806
806
  }
807
807
  requirement reqCs37 : Requirement {
808
- attribute :>> requirementKind = RequirementKind::system;
808
+ attribute :>> requirementType = RequirementTypeKind::system;
809
809
  @MemoIdentity { :>> providedId = "REQ-CS-37"; } attribute :>> name = "BasalToPauseOnInhibit";
810
810
  attribute :>> statement = "While in BASAL mode, if Inhibited_Infusion_macro = TRUE, the system shall transition to PAUSE mode.";
811
811
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -816,7 +816,7 @@ package memo_examples_gpca_pump_gpca_requirements {
816
816
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 37)"; }
817
817
  }
818
818
  requirement reqCs38 : Requirement {
819
- attribute :>> requirementKind = RequirementKind::system;
819
+ attribute :>> requirementType = RequirementTypeKind::system;
820
820
  @MemoIdentity { :>> providedId = "REQ-CS-38"; } attribute :>> name = "PatientBolusToPauseOnInhibit";
821
821
  attribute :>> statement = "While in PATIENT BOLUS mode, the system shall transition to PAUSE mode if Inhibited_PatientBolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
822
822
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -827,7 +827,7 @@ package memo_examples_gpca_pump_gpca_requirements {
827
827
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.6.2 (REQ 38)"; }
828
828
  }
829
829
  requirement reqCs39 : Requirement {
830
- attribute :>> requirementKind = RequirementKind::system;
830
+ attribute :>> requirementType = RequirementTypeKind::system;
831
831
  @MemoIdentity { :>> providedId = "REQ-CS-39"; } attribute :>> name = "SquareBolusToPauseOnInhibit";
832
832
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall transition to PAUSE mode if Inhibited_Bolus_macro = TRUE and Inhibited_Infusion_macro = TRUE.";
833
833
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -840,7 +840,7 @@ package memo_examples_gpca_pump_gpca_requirements {
840
840
 
841
841
  // ── §4.1.7–4.1.9 BASAL / SQUARE BOLUS / PATIENT BOLUS ───────
842
842
  requirement reqCs40 : Requirement {
843
- attribute :>> requirementKind = RequirementKind::system;
843
+ attribute :>> requirementType = RequirementTypeKind::system;
844
844
  @MemoIdentity { :>> providedId = "REQ-CS-40"; } attribute :>> name = "BasalDeliveryRate";
845
845
  attribute :>> statement = "While in BASAL mode, the system shall deliver the drug at a flow rate FlowRate_basal_prog with a variation up to Tolerance_Max_const.";
846
846
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -851,7 +851,7 @@ package memo_examples_gpca_pump_gpca_requirements {
851
851
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.7.1 (REQ 40)"; }
852
852
  }
853
853
  requirement reqCs41 : Requirement {
854
- attribute :>> requirementKind = RequirementKind::system;
854
+ attribute :>> requirementType = RequirementTypeKind::system;
855
855
  @MemoIdentity { :>> providedId = "REQ-CS-41"; } attribute :>> name = "SquareBolusDeliveryRate";
856
856
  attribute :>> statement = "While in SQUARE BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_sbolus_prog with a variation up to Tolerance_Max_const.";
857
857
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -862,7 +862,7 @@ package memo_examples_gpca_pump_gpca_requirements {
862
862
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.8.1 (REQ 41)"; }
863
863
  }
864
864
  requirement reqCs42 : Requirement {
865
- attribute :>> requirementKind = RequirementKind::system;
865
+ attribute :>> requirementType = RequirementTypeKind::system;
866
866
  @MemoIdentity { :>> providedId = "REQ-CS-42"; } attribute :>> name = "PatientBolusDeliveryRate";
867
867
  attribute :>> statement = "While in PATIENT BOLUS mode, the system shall deliver the drug at a flow rate FlowRate_pbolus_prog with a variation up to Tolerance_Max_const.";
868
868
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -875,7 +875,7 @@ package memo_examples_gpca_pump_gpca_requirements {
875
875
 
876
876
  // ── §4.1.10 ON > THERAPY > PAUSED mode ──────────────────────
877
877
  requirement reqCs43 : Requirement {
878
- attribute :>> requirementKind = RequirementKind::system;
878
+ attribute :>> requirementType = RequirementTypeKind::system;
879
879
  @MemoIdentity { :>> providedId = "REQ-CS-43"; } attribute :>> name = "PausedKvoDelivery";
880
880
  attribute :>> statement = "While in PAUSED mode, the system shall allow drug infusion at a flow rate FlowRate_kvo_hd with a variation up to Tolerance_Max_const, to keep the vein open when infusion is paused.";
881
881
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -886,7 +886,7 @@ package memo_examples_gpca_pump_gpca_requirements {
886
886
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 43)"; }
887
887
  }
888
888
  requirement reqCs44 : Requirement {
889
- attribute :>> requirementKind = RequirementKind::system;
889
+ attribute :>> requirementType = RequirementTypeKind::system;
890
890
  @MemoIdentity { :>> providedId = "REQ-CS-44"; } attribute :>> name = "PausedTimeNotification";
891
891
  attribute :>> statement = "While in PAUSED mode for more than Max_PAUSED_Duration_const, the system shall perform actions as described in REQ 59 for 'PAUSED Time'.";
892
892
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -897,7 +897,7 @@ package memo_examples_gpca_pump_gpca_requirements {
897
897
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 44)"; }
898
898
  }
899
899
  requirement reqCs45 : Requirement {
900
- attribute :>> requirementKind = RequirementKind::system;
900
+ attribute :>> requirementType = RequirementTypeKind::system;
901
901
  @MemoIdentity { :>> providedId = "REQ-CS-45"; } attribute :>> name = "PausedInitiateWhileInhibitedNoTransition";
902
902
  attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = TRUE, the system shall not perform any transition.";
903
903
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -908,7 +908,7 @@ package memo_examples_gpca_pump_gpca_requirements {
908
908
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.1 (REQ 45)"; }
909
909
  }
910
910
  requirement reqCs46 : Requirement {
911
- attribute :>> requirementKind = RequirementKind::system;
911
+ attribute :>> requirementType = RequirementTypeKind::system;
912
912
  @MemoIdentity { :>> providedId = "REQ-CS-46"; } attribute :>> name = "PausedResumeToBasal";
913
913
  attribute :>> statement = "While in PAUSED mode, when Infusion_initiate_prog and Inhibited_Infusion_macro = FALSE, the system shall transition to ON > THERAPY > ACTIVE > BASAL mode.";
914
914
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -919,7 +919,7 @@ package memo_examples_gpca_pump_gpca_requirements {
919
919
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1.10.2 (REQ 46)"; }
920
920
  }
921
921
  requirement reqCs47 : Requirement {
922
- attribute :>> requirementKind = RequirementKind::system;
922
+ attribute :>> requirementType = RequirementTypeKind::system;
923
923
  @MemoIdentity { :>> providedId = "REQ-CS-47"; } attribute :>> name = "PausedInhibitToIdle";
924
924
  attribute :>> statement = "While in PAUSED mode, when Infusion_inhibit_prog, the system shall transition to ON > IDLE mode and perform actions as described in REQ 59 for 'Infusion Stopped Manually'.";
925
925
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -932,7 +932,7 @@ package memo_examples_gpca_pump_gpca_requirements {
932
932
 
933
933
  // ═════ §4.2 Data Configuration Requirements ═════════════════
934
934
  requirement reqCs48 : Requirement {
935
- attribute :>> requirementKind = RequirementKind::system;
935
+ attribute :>> requirementType = RequirementTypeKind::system;
936
936
  @MemoIdentity { :>> providedId = "REQ-CS-48"; } attribute :>> name = "DisplaySavedPrescriptionOnConfig";
937
937
  attribute :>> statement = "When in ON mode, if DataConfig_prog as described in REQ 8, the system shall display the saved prescription and reservoir initial volume values or their default values (if there are no saved prescription and reservoir initial volume values) in the order listed in §3.1.1 and §3.1.3.";
938
938
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -943,7 +943,7 @@ package memo_examples_gpca_pump_gpca_requirements {
943
943
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 48)"; }
944
944
  }
945
945
  requirement reqCs49 : Requirement {
946
- attribute :>> requirementKind = RequirementKind::system;
946
+ attribute :>> requirementType = RequirementTypeKind::system;
947
947
  @MemoIdentity { :>> providedId = "REQ-CS-49"; } attribute :>> name = "EditValuesOneAtATime";
948
948
  attribute :>> statement = "When the prescription and reservoir initial volume data are displayed as described in REQ 48, the system shall allow editing the values one at a time in the order they are displayed.";
949
949
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -954,7 +954,7 @@ package memo_examples_gpca_pump_gpca_requirements {
954
954
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 49)"; }
955
955
  }
956
956
  requirement reqCs50 : Requirement {
957
- attribute :>> requirementKind = RequirementKind::system;
957
+ attribute :>> requirementType = RequirementTypeKind::system;
958
958
  @MemoIdentity { :>> providedId = "REQ-CS-50"; } attribute :>> name = "AllowInitiateWithNewValues";
959
959
  attribute :>> statement = "When the values are modified as described in REQ 49, the system shall allow infusion initiation with the new set of values (Infusion_initiate_prog).";
960
960
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -965,7 +965,7 @@ package memo_examples_gpca_pump_gpca_requirements {
965
965
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 50)"; }
966
966
  }
967
967
  requirement reqCs51 : Requirement {
968
- attribute :>> requirementKind = RequirementKind::system;
968
+ attribute :>> requirementType = RequirementTypeKind::system;
969
969
  @MemoIdentity { :>> providedId = "REQ-CS-51"; } attribute :>> name = "ValidateValuesOnInitiate";
970
970
  attribute :>> statement = "When Infusion_initiate_prog as described in REQ 50, the system shall validate if all the values are consistent with the conditions specified in their respective Type Condition fields in §3.1.1 and §3.1.3.";
971
971
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -976,7 +976,7 @@ package memo_examples_gpca_pump_gpca_requirements {
976
976
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 51)"; }
977
977
  }
978
978
  requirement reqCs52 : Requirement {
979
- attribute :>> requirementKind = RequirementKind::system;
979
+ attribute :>> requirementType = RequirementTypeKind::system;
980
980
  @MemoIdentity { :>> providedId = "REQ-CS-52"; } attribute :>> name = "DrugDatabaseNotReachable";
981
981
  attribute :>> statement = "When the system is validating data as described in REQ 51, if the system is unable to access the drug database safe values, the system shall not save the values and perform actions as described in REQ 59 for 'Drug database not reachable'.";
982
982
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -987,7 +987,7 @@ package memo_examples_gpca_pump_gpca_requirements {
987
987
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 52)"; }
988
988
  }
989
989
  requirement reqCs53 : Requirement {
990
- attribute :>> requirementKind = RequirementKind::system;
990
+ attribute :>> requirementType = RequirementTypeKind::system;
991
991
  @MemoIdentity { :>> providedId = "REQ-CS-53"; } attribute :>> name = "DrugSafeValueNotPresent";
992
992
  attribute :>> statement = "When the system is validating data as described in REQ 51, if any of the drug database safe values listed in §3.5 is not present, the system shall not perform the validation with respect to that missing field, perform actions as described in REQ 59 for 'Drug safe value not present' and continue validation.";
993
993
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -998,7 +998,7 @@ package memo_examples_gpca_pump_gpca_requirements {
998
998
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 53)"; }
999
999
  }
1000
1000
  requirement reqCs54 : Requirement {
1001
- attribute :>> requirementKind = RequirementKind::system;
1001
+ attribute :>> requirementType = RequirementTypeKind::system;
1002
1002
  @MemoIdentity { :>> providedId = "REQ-CS-54"; } attribute :>> name = "SaveValidatedPrescription";
1003
1003
  attribute :>> statement = "If there are no notifications from REQ 51 and REQ 52, the system shall save the prescription values, clear all the notifications previously generated by REQ 51, REQ 52 and REQ 53 if any, and allow initiate infusion with the new values as described in REQ 9.";
1004
1004
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1009,7 +1009,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1009
1009
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 54)"; }
1010
1010
  }
1011
1011
  requirement reqCs55 : Requirement {
1012
- attribute :>> requirementKind = RequirementKind::system;
1012
+ attribute :>> requirementType = RequirementTypeKind::system;
1013
1013
  @MemoIdentity { :>> providedId = "REQ-CS-55"; } attribute :>> name = "RejectInvalidPrescription";
1014
1014
  attribute :>> statement = "If REQ 51 or REQ 52 had generated a notification, the system shall not save the prescription values, allow the clinician to edit the values of the fields as described in REQ 49 and then repeat steps from REQ 50 until all validations are passed as described in REQ 54.";
1015
1015
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1020,7 +1020,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1020
1020
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 55)"; }
1021
1021
  }
1022
1022
  requirement reqCs56 : Requirement {
1023
- attribute :>> requirementKind = RequirementKind::system;
1023
+ attribute :>> requirementType = RequirementTypeKind::system;
1024
1024
  @MemoIdentity { :>> providedId = "REQ-CS-56"; } attribute :>> name = "RemainInModeDuringConfig";
1025
1025
  attribute :>> statement = "While data configuration is in progress, the system shall remain in its current mode with the currently active prescription values, until infusion is initiated with the new prescription values as described in REQ 54.";
1026
1026
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1031,7 +1031,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1031
1031
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 56)"; }
1032
1032
  }
1033
1033
  requirement reqCs57 : Requirement {
1034
- attribute :>> requirementKind = RequirementKind::system;
1034
+ attribute :>> requirementType = RequirementTypeKind::system;
1035
1035
  @MemoIdentity { :>> providedId = "REQ-CS-57"; } attribute :>> name = "ConfigWarningNotification";
1036
1036
  attribute :>> statement = "When the clinician has attempted to configure the data for more than Config_Warning_Duration_const continuously, the system shall perform actions as described in REQ 59 for 'Config Time'.";
1037
1037
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1042,7 +1042,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1042
1042
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.2 (REQ 57)"; }
1043
1043
  }
1044
1044
  requirement reqCs58 : Requirement {
1045
- attribute :>> requirementKind = RequirementKind::system;
1045
+ attribute :>> requirementType = RequirementTypeKind::system;
1046
1046
  @MemoIdentity { :>> providedId = "REQ-CS-58"; } attribute :>> name = "MaxConfigDurationClears";
1047
1047
  attribute :>> statement = "When the clinician has attempted to configure the data for more than Max_Config_Duration_const continuously, the system shall clear all unsaved prescription values and shall perform actions as described in REQ 59 for 'Unsaved Configuration Cleared'.";
1048
1048
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1055,7 +1055,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1055
1055
 
1056
1056
  // ═════ §4.3 Notification Requirements ═══════════════════════
1057
1057
  requirement reqCs59 : Requirement {
1058
- attribute :>> requirementKind = RequirementKind::system;
1058
+ attribute :>> requirementType = RequirementTypeKind::system;
1059
1059
  @MemoIdentity { :>> providedId = "REQ-CS-59"; } attribute :>> name = "NotificationActionTable";
1060
1060
  attribute :>> statement = "The system shall perform all the actions listed in the notification action table for the respective notification. The table defines, for each of the 20 notifications, its priority (High/Med/Low) and the actions Visual, Audio, Inhibit Infusion, Inhibit Square Bolus, Inhibit Patient Bolus, and Stop Bolus. Notification requirements have higher precedence over all other requirements in the system.";
1061
1061
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1066,7 +1066,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1066
1066
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 59)"; }
1067
1067
  }
1068
1068
  requirement reqCs60 : Requirement {
1069
- attribute :>> requirementKind = RequirementKind::system;
1069
+ attribute :>> requirementType = RequirementTypeKind::system;
1070
1070
  @MemoIdentity { :>> providedId = "REQ-CS-60"; } attribute :>> name = "HighestPriorityActionsFirst";
1071
1071
  attribute :>> statement = "When more than one notification having different priorities occurs at the same time, the system shall take actions listed for the highest priority notification.";
1072
1072
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1077,7 +1077,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1077
1077
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 60)"; }
1078
1078
  }
1079
1079
  requirement reqCs61 : Requirement {
1080
- attribute :>> requirementKind = RequirementKind::system;
1080
+ attribute :>> requirementType = RequirementTypeKind::system;
1081
1081
  @MemoIdentity { :>> providedId = "REQ-CS-61"; } attribute :>> name = "MostRestrictiveSamePriority";
1082
1082
  attribute :>> statement = "When more than one notification having same priorities and different set of actions occurs at the same time, the system shall take actions listed for the most restrictive notification.";
1083
1083
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1088,7 +1088,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1088
1088
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 61)"; }
1089
1089
  }
1090
1090
  requirement reqCs62 : Requirement {
1091
- attribute :>> requirementKind = RequirementKind::system;
1091
+ attribute :>> requirementType = RequirementTypeKind::system;
1092
1092
  @MemoIdentity { :>> providedId = "REQ-CS-62"; } attribute :>> name = "MostRestrictiveTieBreak";
1093
1093
  attribute :>> statement = "When more than one notification having same priorities and same set of actions occurs at the same time, the system will take actions for the notification that has the most restrictive actions as listed in REQ 59.";
1094
1094
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1099,7 +1099,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1099
1099
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 62)"; }
1100
1100
  }
1101
1101
  requirement reqCs63 : Requirement {
1102
- attribute :>> requirementKind = RequirementKind::system;
1102
+ attribute :>> requirementType = RequirementTypeKind::system;
1103
1103
  @MemoIdentity { :>> providedId = "REQ-CS-63"; } attribute :>> name = "EscalateToMoreRestrictive";
1104
1104
  attribute :>> statement = "While a low priority or less restrictive notification is in effect and a higher priority or more restrictive same-priority notification occurs, the system shall take actions for the high priority or more restrictive notification as listed in REQ 59.";
1105
1105
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1110,7 +1110,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1110
1110
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 63)"; }
1111
1111
  }
1112
1112
  requirement reqCs64 : Requirement {
1113
- attribute :>> requirementKind = RequirementKind::system;
1113
+ attribute :>> requirementType = RequirementTypeKind::system;
1114
1114
  @MemoIdentity { :>> providedId = "REQ-CS-64"; } attribute :>> name = "LowPriorityListedOnly";
1115
1115
  attribute :>> statement = "While a high priority notification is in effect and a low priority notification occurs, the system shall only add the notification to the active notification list and shall not take any other actions for the low priority notification.";
1116
1116
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1121,7 +1121,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1121
1121
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 64)"; }
1122
1122
  }
1123
1123
  requirement reqCs65 : Requirement {
1124
- attribute :>> requirementKind = RequirementKind::system;
1124
+ attribute :>> requirementType = RequirementTypeKind::system;
1125
1125
  @MemoIdentity { :>> providedId = "REQ-CS-65"; } attribute :>> name = "CancelNotificationsOneAtATime";
1126
1126
  attribute :>> statement = "The system shall allow the clinician to cancel the active notifications, starting from the first in the list, one at a time (Notification_cancel_prog).";
1127
1127
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1132,7 +1132,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1132
1132
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 65)"; }
1133
1133
  }
1134
1134
  requirement reqCs66 : Requirement {
1135
- attribute :>> requirementKind = RequirementKind::system;
1135
+ attribute :>> requirementType = RequirementTypeKind::system;
1136
1136
  @MemoIdentity { :>> providedId = "REQ-CS-66"; } attribute :>> name = "CancelClearsRestrictions";
1137
1137
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall cancel and clear the restrictions for that notification: Inhibited_Infusion_macro = FALSE, Inhibited_Bolus_macro = FALSE, Inhibited_PatientBolus_macro = FALSE, and cancel and clear the corresponding audio notification.";
1138
1138
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1143,7 +1143,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1143
1143
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3 (REQ 66)"; }
1144
1144
  }
1145
1145
  requirement reqCs67 : Requirement {
1146
- attribute :>> requirementKind = RequirementKind::system;
1146
+ attribute :>> requirementType = RequirementTypeKind::system;
1147
1147
  @MemoIdentity { :>> providedId = "REQ-CS-67"; } attribute :>> name = "NextNotificationAfterCancel";
1148
1148
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system takes actions for the next active notification in order of priority and descending order of occurrence.";
1149
1149
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1156,7 +1156,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1156
1156
 
1157
1157
  // ── §4.3.1 Visual notification ──────────────────────────────
1158
1158
  requirement reqCs68 : Requirement {
1159
- attribute :>> requirementKind = RequirementKind::system;
1159
+ attribute :>> requirementType = RequirementTypeKind::system;
1160
1160
  @MemoIdentity { :>> providedId = "REQ-CS-68"; } attribute :>> name = "DisplayActiveNotificationsOrdered";
1161
1161
  attribute :>> statement = "The system shall display all active notifications in order of priority and descending order of occurrence (Notification_Visual_output).";
1162
1162
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1167,7 +1167,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1167
1167
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 68)"; }
1168
1168
  }
1169
1169
  requirement reqCs69 : Requirement {
1170
- attribute :>> requirementKind = RequirementKind::system;
1170
+ attribute :>> requirementType = RequirementTypeKind::system;
1171
1171
  @MemoIdentity { :>> providedId = "REQ-CS-69"; } attribute :>> name = "DisplayNotificationNameAndTime";
1172
1172
  attribute :>> statement = "The system shall display the name of all the active notifications and the time of the occurrence.";
1173
1173
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1178,7 +1178,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1178
1178
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 69)"; }
1179
1179
  }
1180
1180
  requirement reqCs70 : Requirement {
1181
- attribute :>> requirementKind = RequirementKind::system;
1181
+ attribute :>> requirementType = RequirementTypeKind::system;
1182
1182
  @MemoIdentity { :>> providedId = "REQ-CS-70"; } attribute :>> name = "DisplaySimultaneousNotifications";
1183
1183
  attribute :>> statement = "When more than one notification occurs at the same time, the system shall display all the notifications as per REQ 68.";
1184
1184
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1189,7 +1189,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1189
1189
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.1 (REQ 70)"; }
1190
1190
  }
1191
1191
  requirement reqCs71 : Requirement {
1192
- attribute :>> requirementKind = RequirementKind::system;
1192
+ attribute :>> requirementType = RequirementTypeKind::system;
1193
1193
  @MemoIdentity { :>> providedId = "REQ-CS-71"; } attribute :>> name = "RemoveCancelledNotificationFromList";
1194
1194
  attribute :>> statement = "When Notification_cancel_prog for a notification, the system shall remove the notification from the list and shall display the list of remaining notifications.";
1195
1195
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1202,7 +1202,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1202
1202
 
1203
1203
  // ── §4.3.2 Audio notification ───────────────────────────────
1204
1204
  requirement reqCs72 : Requirement {
1205
- attribute :>> requirementKind = RequirementKind::system;
1205
+ attribute :>> requirementType = RequirementTypeKind::system;
1206
1206
  @MemoIdentity { :>> providedId = "REQ-CS-72"; } attribute :>> name = "AudibleSoundPerNotification";
1207
1207
  attribute :>> statement = "When each notification occurs that requires an audio alarm as listed in REQ 59, the system shall produce a single audible sound of Audio_level_const, unless the audio is disabled or silenced.";
1208
1208
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1213,7 +1213,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1213
1213
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 72)"; }
1214
1214
  }
1215
1215
  requirement reqCs73 : Requirement {
1216
- attribute :>> requirementKind = RequirementKind::system;
1216
+ attribute :>> requirementType = RequirementTypeKind::system;
1217
1217
  @MemoIdentity { :>> providedId = "REQ-CS-73"; } attribute :>> name = "AudioDisableSilenceEnable";
1218
1218
  attribute :>> statement = "The system shall allow the clinician to disable audible alarm, silence the alarm temporarily and enable a disabled or silenced alarm.";
1219
1219
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1224,7 +1224,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1224
1224
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 73)"; }
1225
1225
  }
1226
1226
  requirement reqCs74 : Requirement {
1227
- attribute :>> requirementKind = RequirementKind::system;
1227
+ attribute :>> requirementType = RequirementTypeKind::system;
1228
1228
  @MemoIdentity { :>> providedId = "REQ-CS-74"; } attribute :>> name = "NoAudioWhileDisabled";
1229
1229
  attribute :>> statement = "If Disable_audio_prog = 'PERM' or 'TEMP', the system shall not produce audible alarm until it is enabled (Disable_audio_prog = FALSE).";
1230
1230
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1235,7 +1235,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1235
1235
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 74)"; }
1236
1236
  }
1237
1237
  requirement reqCs75 : Requirement {
1238
- attribute :>> requirementKind = RequirementKind::system;
1238
+ attribute :>> requirementType = RequirementTypeKind::system;
1239
1239
  @MemoIdentity { :>> providedId = "REQ-CS-75"; } attribute :>> name = "TempSilenceAutoReenable";
1240
1240
  attribute :>> statement = "If Disable_audio_prog = 'TEMP', the system shall automatically enable it (Disable_audio_prog = FALSE) after Audio_Enable_Duration_const minutes.";
1241
1241
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1246,7 +1246,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1246
1246
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.3.2 (REQ 75)"; }
1247
1247
  }
1248
1248
  requirement reqCs76 : Requirement {
1249
- attribute :>> requirementKind = RequirementKind::system;
1249
+ attribute :>> requirementType = RequirementTypeKind::system;
1250
1250
  @MemoIdentity { :>> providedId = "REQ-CS-76"; } attribute :>> name = "ReannunciateLongActiveNotifications";
1251
1251
  attribute :>> statement = "For every notification with audio alarm that is active for more than Audio_Enable_Duration_const minutes, the system shall produce audible sound as described in REQ 72.";
1252
1252
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1259,7 +1259,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1259
1259
 
1260
1260
  // ═════ §4.4 Log Requirements ════════════════════════════════
1261
1261
  requirement reqCs77 : Requirement {
1262
- attribute :>> requirementKind = RequirementKind::system;
1262
+ attribute :>> requirementType = RequirementTypeKind::system;
1263
1263
  @MemoIdentity { :>> providedId = "REQ-CS-77"; } attribute :>> name = "LogWhileOn";
1264
1264
  attribute :>> statement = "The system shall log all the operational and error data when the system is in ON mode.";
1265
1265
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1270,7 +1270,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1270
1270
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 77)"; }
1271
1271
  }
1272
1272
  requirement reqCs78 : Requirement {
1273
- attribute :>> requirementKind = RequirementKind::system;
1273
+ attribute :>> requirementType = RequirementTypeKind::system;
1274
1274
  @MemoIdentity { :>> providedId = "REQ-CS-78"; } attribute :>> name = "OperationalLogContent";
1275
1275
  attribute :>> statement = "While in ON mode, every Log_Interval_const minutes or when a mode transition occurs, the system shall record the following information in an 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) Patient ID, (4) prescription information, (5) current mode of the system, (6) current flow rate of the system.";
1276
1276
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1281,7 +1281,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1281
1281
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 78)"; }
1282
1282
  }
1283
1283
  requirement reqCs79 : Requirement {
1284
- attribute :>> requirementKind = RequirementKind::system;
1284
+ attribute :>> requirementType = RequirementTypeKind::system;
1285
1285
  @MemoIdentity { :>> providedId = "REQ-CS-79"; } attribute :>> name = "InfusionCompleteLogContent";
1286
1286
  attribute :>> statement = "When infusion is completed as per REQ 28, the system shall record the following information in addition to the information listed in REQ 78 in the 'Operational log': (1) total volume infused for that prescription, (2) total duration of infusion for that prescription (total duration in ACTIVE mode).";
1287
1287
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1292,7 +1292,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1292
1292
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 79)"; }
1293
1293
  }
1294
1294
  requirement reqCs80 : Requirement {
1295
- attribute :>> requirementKind = RequirementKind::system;
1295
+ attribute :>> requirementType = RequirementTypeKind::system;
1296
1296
  @MemoIdentity { :>> providedId = "REQ-CS-80"; } attribute :>> name = "ErrorLogContent";
1297
1297
  attribute :>> statement = "When any notification condition listed in REQ 59 occurs, the system shall record the following information in an error log: (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) notification description, (4) current mode of the system, (5) remaining drug volume.";
1298
1298
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1303,7 +1303,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1303
1303
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.4 (REQ 80)"; }
1304
1304
  }
1305
1305
  requirement reqCs81 : Requirement {
1306
- attribute :>> requirementKind = RequirementKind::system;
1306
+ attribute :>> requirementType = RequirementTypeKind::system;
1307
1307
  @MemoIdentity { :>> providedId = "REQ-CS-81"; } attribute :>> name = "NotificationCancelLogContent";
1308
1308
  attribute :>> statement = "When a notification is cancelled as described in REQ 66, the system shall record the following information in the 'Operational log': (1) date in dd/MM/yy format, (2) time in HH:MM:SS GMT, (3) description of the notification cancelled.";
1309
1309
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1316,7 +1316,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1316
1316
 
1317
1317
  // ═════ §4.5 Security Requirements ═══════════════════════════
1318
1318
  requirement reqCs82 : Requirement {
1319
- attribute :>> requirementKind = RequirementKind::system;
1319
+ attribute :>> requirementType = RequirementTypeKind::system;
1320
1320
  @MemoIdentity { :>> providedId = "REQ-CS-82"; } attribute :>> name = "AuthorizedCliniciansOnly";
1321
1321
  attribute :>> statement = "The system shall allow only authorized clinicians to configure the system.";
1322
1322
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1329,7 +1329,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1329
1329
 
1330
1330
  // ═════ Ch.5 Non-Behavioral Requirements ═════════════════════
1331
1331
  requirement reqCs83 : Requirement {
1332
- attribute :>> requirementKind = RequirementKind::system;
1332
+ attribute :>> requirementType = RequirementTypeKind::system;
1333
1333
  @MemoIdentity { :>> providedId = "REQ-CS-83"; } attribute :>> name = "DropResistance";
1334
1334
  attribute :>> statement = "The system shall be unbreakable if it is dropped on a laminate floor from y m of height with no additional force than gravity.";
1335
1335
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1340,7 +1340,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1340
1340
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 83)"; }
1341
1341
  }
1342
1342
  requirement reqCs84 : Requirement {
1343
- attribute :>> requirementKind = RequirementKind::system;
1343
+ attribute :>> requirementType = RequirementTypeKind::system;
1344
1344
  @MemoIdentity { :>> providedId = "REQ-CS-84"; } attribute :>> name = "WaterResistance";
1345
1345
  attribute :>> statement = "The system shall be waterproof to non-acidic liquid of less than x ml on any side of the pump for a maximum of 2 hours.";
1346
1346
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1351,7 +1351,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1351
1351
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 84)"; }
1352
1352
  }
1353
1353
  requirement reqCs85 : Requirement {
1354
- attribute :>> requirementKind = RequirementKind::system;
1354
+ attribute :>> requirementType = RequirementTypeKind::system;
1355
1355
  @MemoIdentity { :>> providedId = "REQ-CS-85"; } attribute :>> name = "LogRetention";
1356
1356
  attribute :>> statement = "The system shall persist the most recent 30 days of error log data and 15 days of operational log data.";
1357
1357
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1362,7 +1362,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1362
1362
  @MemoIdentity { :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §5.1 (REQ 85)"; }
1363
1363
  }
1364
1364
  requirement reqCs86 : Requirement {
1365
- attribute :>> requirementKind = RequirementKind::system;
1365
+ attribute :>> requirementType = RequirementTypeKind::system;
1366
1366
  @MemoIdentity { :>> providedId = "REQ-CS-86"; } attribute :>> name = "PrescriptionRetention";
1367
1367
  attribute :>> statement = "The system shall persist the last saved prescription data for 15 days.";
1368
1368
  attribute :>> sourceKind = RequirementSourceKind::sourceDocument;
@@ -1379,7 +1379,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1379
1379
  // and hardware requirements. sourceKind = extension segregates
1380
1380
  // them from the REQ-CS family.
1381
1381
  requirement reqDrugLibraryLimits : Requirement {
1382
- attribute :>> requirementKind = RequirementKind::system;
1382
+ attribute :>> requirementType = RequirementTypeKind::system;
1383
1383
  @MemoIdentity { :>> providedId = "REQ-X-01"; } attribute :>> name = "PrescriptionWithinDrugLibraryLimits";
1384
1384
  attribute :>> statement = "When a prescription parameter is entered, the system shall reject values outside drug-library hard limits and shall require explicit confirmation for values outside soft limits.";
1385
1385
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1398,7 +1398,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1398
1398
  attribute :>> systemResponse = "reject hard-limit violations and require confirmation of soft-limit violations";
1399
1399
  }
1400
1400
  requirement reqPost : Requirement {
1401
- attribute :>> requirementKind = RequirementKind::system;
1401
+ attribute :>> requirementType = RequirementTypeKind::system;
1402
1402
  @MemoIdentity { :>> providedId = "REQ-X-02"; } attribute :>> name = "PowerOnSelfTest";
1403
1403
  attribute :>> statement = "On power-up, the system shall complete a self test of CPU, memory, watchdog, and safety sensors before permitting therapy, and shall remain locked out of therapy if any check fails.";
1404
1404
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1417,7 +1417,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1417
1417
  attribute :>> systemResponse = "complete POST before permitting therapy";
1418
1418
  }
1419
1419
  requirement reqPowerLossRetention : Requirement {
1420
- attribute :>> requirementKind = RequirementKind::system;
1420
+ attribute :>> requirementType = RequirementTypeKind::system;
1421
1421
  @MemoIdentity { :>> providedId = "REQ-X-03"; } attribute :>> name = "PrescriptionRetainedAcrossPowerLoss";
1422
1422
  attribute :>> statement = "If all power is lost, the system shall retain the confirmed prescription and event log, and on power restoration shall resume therapy only after clinician confirmation.";
1423
1423
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1436,7 +1436,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1436
1436
  attribute :>> systemResponse = "retain prescription and log; resume only after confirmation";
1437
1437
  }
1438
1438
  requirement reqOcclusion : Requirement {
1439
- attribute :>> requirementKind = RequirementKind::software;
1439
+ attribute :>> requirementType = RequirementTypeKind::software;
1440
1440
  @MemoIdentity { :>> providedId = "REQ-X-04"; } attribute :>> name = "OcclusionDetectionAndAlarm";
1441
1441
  attribute :>> statement = "When downstream line pressure exceeds the occlusion threshold, the system shall pause infusion and raise a High-priority notification.";
1442
1442
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1451,7 +1451,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1451
1451
  @MemoIdentity { :>> sourceReference = "MEMO extension — occlusion sensing is not specified by the CriSys source (under-infusion flow rate, REQ-CS-17, is the source-level effect)"; }
1452
1452
  }
1453
1453
  requirement reqDoorOpen : Requirement {
1454
- attribute :>> requirementKind = RequirementKind::software;
1454
+ attribute :>> requirementType = RequirementTypeKind::software;
1455
1455
  @MemoIdentity { :>> providedId = "REQ-X-05"; } attribute :>> name = "DoorOpenPreventsDelivery";
1456
1456
  attribute :>> statement = "While the reservoir door is open or unlatched, the system shall not deliver drug and shall raise a Medium-priority notification if therapy was active.";
1457
1457
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1471,7 +1471,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1471
1471
  attribute :>> systemResponse = "inhibit delivery and notify if therapy was active";
1472
1472
  }
1473
1473
  requirement reqMaxHourlyDose : Requirement {
1474
- attribute :>> requirementKind = RequirementKind::software;
1474
+ attribute :>> requirementType = RequirementTypeKind::software;
1475
1475
  @MemoIdentity { :>> providedId = "REQ-X-06"; } attribute :>> name = "MaximumHourlyDoseEnforcement";
1476
1476
  attribute :>> statement = "The system shall not deliver more than the prescribed maximum drug volume in any sliding one-hour window, counting basal, patient bolus, and square bolus contributions.";
1477
1477
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1486,7 +1486,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1486
1486
  @MemoIdentity { :>> sourceReference = "MEMO extension — sliding-window hourly limit is not specified by the CriSys source"; }
1487
1487
  }
1488
1488
  requirement reqEventLogging : Requirement {
1489
- attribute :>> requirementKind = RequirementKind::software;
1489
+ attribute :>> requirementType = RequirementTypeKind::software;
1490
1490
  @MemoIdentity { :>> providedId = "REQ-X-07"; } attribute :>> name = "TamperEvidentTherapyLog";
1491
1491
  attribute :>> statement = "The system shall record therapy events in a timestamped, tamper-evident event log such that any modification of recorded entries is detectable.";
1492
1492
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1501,7 +1501,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1501
1501
  @MemoIdentity { :>> sourceReference = "MEMO extension — tamper evidence is not specified by the CriSys source (log content: REQ-CS-77..81)"; }
1502
1502
  }
1503
1503
  requirement reqWatchdogSafeState : Requirement {
1504
- attribute :>> requirementKind = RequirementKind::software;
1504
+ attribute :>> requirementType = RequirementTypeKind::software;
1505
1505
  @MemoIdentity { :>> providedId = "REQ-X-08"; } attribute :>> name = "WatchdogForcesSafeState";
1506
1506
  attribute :>> statement = "If the software fails to service the hardware watchdog within its timeout, the system shall force pump output to zero flow and raise a continuous audible alarm.";
1507
1507
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1521,7 +1521,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1521
1521
  attribute :>> systemResponse = "force zero flow and continuous alarm";
1522
1522
  }
1523
1523
  requirement reqStuckButton : Requirement {
1524
- attribute :>> requirementKind = RequirementKind::software;
1524
+ attribute :>> requirementType = RequirementTypeKind::software;
1525
1525
  @MemoIdentity { :>> providedId = "REQ-X-09"; } attribute :>> name = "StuckBolusButtonDetection";
1526
1526
  attribute :>> statement = "If the patient bolus button remains asserted for more than 60 seconds, the system shall treat the input as failed, ignore it, and raise a Medium-priority notification.";
1527
1527
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1536,7 +1536,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1536
1536
  @MemoIdentity { :>> sourceReference = "MEMO extension — stuck-input detection is not specified by the CriSys source"; }
1537
1537
  }
1538
1538
  requirement reqFlowCrossCheck : Requirement {
1539
- attribute :>> requirementKind = RequirementKind::software;
1539
+ attribute :>> requirementType = RequirementTypeKind::software;
1540
1540
  @MemoIdentity { :>> providedId = "REQ-X-10"; } attribute :>> name = "CommandedVsMeasuredFlowCrossCheck";
1541
1541
  attribute :>> statement = "The system shall compare measured delivered flow against commanded flow using an independent flow sensor, and shall raise a High-priority notification and pause infusion when the deviation exceeds Tolerance_Min_const for more than Max_Duration_OverInfusion_const.";
1542
1542
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1551,7 +1551,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1551
1551
  @MemoIdentity { :>> sourceReference = "MEMO extension — independent cross-check channel beyond CriSys REQ-CS-17/19 tolerance monitoring; thresholds reuse App. A.4 constants"; }
1552
1552
  }
1553
1553
  requirement reqPumpAccuracy : Requirement {
1554
- attribute :>> requirementKind = RequirementKind::hardware;
1554
+ attribute :>> requirementType = RequirementTypeKind::hardware;
1555
1555
  @MemoIdentity { :>> providedId = "REQ-X-11"; } attribute :>> name = "DeliveryAccuracy";
1556
1556
  attribute :>> statement = "The pump mechanism shall deliver programmed volumes with an accuracy of plus or minus Tolerance_Min_const (5 percent) over the full rate range, so that the system-level flow tolerances of REQ-CS-16 are achievable.";
1557
1557
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1566,7 +1566,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1566
1566
  attribute :>> electricalSafetyRelevant = false;
1567
1567
  }
1568
1568
  requirement reqAlarmLoudness : Requirement {
1569
- attribute :>> requirementKind = RequirementKind::hardware;
1569
+ attribute :>> requirementType = RequirementTypeKind::hardware;
1570
1570
  @MemoIdentity { :>> providedId = "REQ-X-12"; } attribute :>> name = "AlarmSoundPressureLevel";
1571
1571
  attribute :>> statement = "The audible annunciator shall produce notification tones at the sound level defined by Audio_level_const (50 db for 2 seconds per interface spec I 8), distinguishable by priority.";
1572
1572
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1581,7 +1581,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1581
1581
  attribute :>> electricalSafetyRelevant = false;
1582
1582
  }
1583
1583
  requirement reqBatteryBackup : Requirement {
1584
- attribute :>> requirementKind = RequirementKind::hardware;
1584
+ attribute :>> requirementType = RequirementTypeKind::hardware;
1585
1585
  @MemoIdentity { :>> providedId = "REQ-X-13"; } attribute :>> name = "BatteryBackupDuration";
1586
1586
  attribute :>> statement = "The battery shall sustain nominal therapy and alarm annunciation for at least 4 hours after loss of mains power.";
1587
1587
  attribute :>> sourceKind = RequirementSourceKind::extension;
@@ -1596,7 +1596,7 @@ package memo_examples_gpca_pump_gpca_requirements {
1596
1596
  attribute :>> electricalSafetyRelevant = true;
1597
1597
  }
1598
1598
  requirement reqFreeFlowPrevention : Requirement {
1599
- attribute :>> requirementKind = RequirementKind::hardware;
1599
+ attribute :>> requirementType = RequirementTypeKind::hardware;
1600
1600
  @MemoIdentity { :>> providedId = "REQ-X-14"; } attribute :>> name = "MechanicalFreeFlowPrevention";
1601
1601
  attribute :>> statement = "The fluid path shall include a mechanical anti-free-flow valve that blocks gravity flow whenever the administration set is disengaged from the pumping mechanism.";
1602
1602
  attribute :>> sourceKind = RequirementSourceKind::extension;