@memoarchitect/ontology 0.4.4
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.
- package/LICENSE +19 -0
- package/README.md +70 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
- package/examples/gpca-pump/memo.config.yaml +9 -0
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
- package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
- package/examples/gpca-pump/model/samples/README.md +24 -0
- package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
- package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
- package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
- package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
- package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
- package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
- package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
- package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
- package/memo.manifest.yaml +13 -0
- package/methodologies/default/memo.package.yaml +9 -0
- package/methodologies/gpca/memo.package.yaml +9 -0
- package/ontology/memo.package.yaml +8 -0
- package/ontology/memo.rendering.yaml +47 -0
- package/package.json +65 -0
- package/profile/archetypes.yaml +36 -0
- package/profile/memo.package.yaml +9 -0
- package/profile/templates/connected-device/starter.sysml +8 -0
- package/profile/templates/infusion-pump/starter.sysml +8 -0
- package/profile/templates/monitoring-device/starter.sysml +8 -0
- package/profile/templates/samd/starter.sysml +8 -0
- package/src/architecture/analysis/memo_fmea.sysml +91 -0
- package/src/architecture/assurance/memo_assurance.sysml +29 -0
- package/src/architecture/behavior/memo_behavior.sysml +65 -0
- package/src/architecture/constraints/memo_constraints.sysml +14 -0
- package/src/architecture/context/memo_context.sysml +58 -0
- package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
- package/src/architecture/decisions/memo_decisions.sysml +12 -0
- package/src/architecture/functions/memo_functions.sysml +30 -0
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
- package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
- package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
- package/src/architecture/operational/memo_operational.sysml +51 -0
- package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
- package/src/architecture/requirements/memo_requirements.sysml +69 -0
- package/src/architecture/risk/memo_arch_risk.sysml +7 -0
- package/src/architecture/risk/memo_risk.sysml +80 -0
- package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
- package/src/architecture/system/memo_system_analysis.sysml +54 -0
- package/src/artifacts/clinical_safety_report.sysml +12 -0
- package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
- package/src/artifacts/design_change_log.sysml +12 -0
- package/src/artifacts/design_history_file_index.sysml +12 -0
- package/src/artifacts/design_input_plan.sysml +12 -0
- package/src/artifacts/design_output_plan.sysml +12 -0
- package/src/artifacts/evidence_record.sysml +12 -0
- package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
- package/src/artifacts/hazard_analysis_report.sysml +12 -0
- package/src/artifacts/labeling_specification.sysml +12 -0
- package/src/artifacts/requirements_specification.sysml +12 -0
- package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
- package/src/artifacts/risk_management_plan.sysml +12 -0
- package/src/artifacts/software_design_description.sysml +12 -0
- package/src/artifacts/software_development_plan.sysml +12 -0
- package/src/artifacts/soup_list.sysml +12 -0
- package/src/artifacts/system_architecture_description.sysml +12 -0
- package/src/artifacts/test_protocol.sysml +12 -0
- package/src/artifacts/test_report.sysml +12 -0
- package/src/artifacts/threat_model_report.sysml +12 -0
- package/src/artifacts/usability_engineering_report.sysml +12 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
- package/src/compliance/change/memo_change.sysml +17 -0
- package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
- package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
- package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
- package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
- package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
- package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
- package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
- package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
- package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
- package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
- package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
- package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
- package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
- package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
- package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
- package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
- package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
- package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
- package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
- package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
- package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
- package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
- package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
- package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
- package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
- package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
- package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
- package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
- package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
- package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
- package/src/compliance/document_views/memo_document_views.sysml +7 -0
- package/src/compliance/iso14971/risk_management_file.sysml +16 -0
- package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
- package/src/core/common/memo_common.sysml +50 -0
- package/src/core/consistency_rules/consistency_rules.sysml +41 -0
- package/src/core/dimensions/dimensions.sysml +37 -0
- package/src/core/enumerations/memo_enumerations.sysml +562 -0
- package/src/core/methodology_scope/methodology_scope.sysml +46 -0
- package/src/core/relationships/memo_relationships.sysml +230 -0
- package/src/core/semantics/semantics.sysml +20 -0
- package/src/core/stdlib/collections.sysml +6 -0
- package/src/core/stdlib/functions.sysml +6 -0
- package/src/core/stdlib/scalars.sysml +6 -0
- package/src/core/stdlib/time.sysml +6 -0
- package/src/medical_device_library.sysml +100 -0
- package/src/memo_namespaces.sysml +668 -0
- package/src/methodology/LICENSES/MIT.txt +19 -0
- package/src/methodology/memo_archetypes.sysml +93 -0
- package/src/methodology/memo_core.sysml +53 -0
- package/src/methodology/memo_gates.sysml +11 -0
- package/src/methodology/memo_patterns.sysml +12 -0
- package/src/methodology/memo_profiles.sysml +218 -0
- package/src/methodology/memo_rules.sysml +15 -0
- package/src/methodology/memo_viewpoints.sysml +5 -0
- package/src/methodology/memo_workflow.sysml +14 -0
- package/src/rules/closure/closure_rules.sysml +180 -0
- package/src/rules/coverage/coverage_rules.sysml +258 -0
- package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
- package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
- package/src/rules/quantitative/quantitative_rules.sysml +34 -0
- package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
- package/src/viewpoints/context/context_viewpoint.sysml +25 -0
- package/src/viewpoints/context/system_context_view.sysml +29 -0
- package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
- package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
- package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
- package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
- package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
- package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/use_case_view.sysml +29 -0
- package/src/viewpoints/physical/network_topology_view.sysml +29 -0
- package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
- package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
- package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
- package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
- package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
- package/src/viewpoints/software/software_architecture_view.sysml +29 -0
- package/src/viewpoints/software/software_viewpoint.sysml +25 -0
- package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
- package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
- package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
- package/template/memo.package.yaml +5 -0
- package/template/src/catalog/starter.sysml +12 -0
- package/template/src/documents/.gitkeep +1 -0
- package/template/src/views/.gitkeep +1 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
package memo_examples_gpca_pump_model_catalog_gpca_architecture {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_architecture_hardware_structure::*;
|
|
5
|
+
private import memo_architecture_software_structure::*;
|
|
6
|
+
private import memo_architecture_logical_structure::*;
|
|
7
|
+
private import memo_core_relationships::*;
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
|
|
10
|
+
// ── Logical components ──────────────────────────────────────
|
|
11
|
+
part lcTherapyControl : LogicalComponent {
|
|
12
|
+
attribute :>> id = "LC-001";
|
|
13
|
+
attribute :>> name = "TherapyControlSubsystem";
|
|
14
|
+
attribute :>> responsibility = "Owns therapy state, prescription execution, and dose limiting.";
|
|
15
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
16
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
17
|
+
}
|
|
18
|
+
part lcSafetyMonitoring : LogicalComponent {
|
|
19
|
+
attribute :>> id = "LC-002";
|
|
20
|
+
attribute :>> name = "SafetyMonitoringSubsystem";
|
|
21
|
+
attribute :>> responsibility = "Detects exceptional conditions and drives the pump to a safe state.";
|
|
22
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
23
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
24
|
+
}
|
|
25
|
+
part lcOperatorInterface : LogicalComponent {
|
|
26
|
+
attribute :>> id = "LC-003";
|
|
27
|
+
attribute :>> name = "OperatorInterfaceSubsystem";
|
|
28
|
+
attribute :>> responsibility = "Prescription entry, status display, and alarm annunciation to users.";
|
|
29
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
30
|
+
attribute :>> safetyPartition = "interference-free from therapy control";
|
|
31
|
+
}
|
|
32
|
+
part lcDrugDelivery : LogicalComponent {
|
|
33
|
+
attribute :>> id = "LC-004";
|
|
34
|
+
attribute :>> name = "DrugDeliverySubsystem";
|
|
35
|
+
attribute :>> responsibility = "Fluid path: reservoir, tubing, pump mechanism, and delivery sensors.";
|
|
36
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
37
|
+
attribute :>> safetyPartition = "safety-critical partition";
|
|
38
|
+
}
|
|
39
|
+
part lcPowerSubsystem : LogicalComponent {
|
|
40
|
+
attribute :>> id = "LC-005";
|
|
41
|
+
attribute :>> name = "PowerSubsystem";
|
|
42
|
+
attribute :>> responsibility = "Mains and battery power management with depletion warning.";
|
|
43
|
+
attribute :>> decompositionLevel = "subsystem";
|
|
44
|
+
attribute :>> safetyPartition = "supporting partition";
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ── Hardware: aggregates (UMN AADL architectural model) ─────
|
|
48
|
+
part gpcaDeviceSensors : HardwareAssembly {
|
|
49
|
+
attribute :>> id = "HW-001";
|
|
50
|
+
attribute :>> name = "GPCA_HW_Sensors";
|
|
51
|
+
attribute :>> responsibility = "Map inputs to software-visible signals.";
|
|
52
|
+
attribute :>> safetyRole = "input acquisition";
|
|
53
|
+
}
|
|
54
|
+
part gpcaActuators : HardwareAssembly {
|
|
55
|
+
attribute :>> id = "HW-002";
|
|
56
|
+
attribute :>> name = "GPCA_HW_Actuators";
|
|
57
|
+
attribute :>> responsibility = "Expose software outputs to physical outputs.";
|
|
58
|
+
attribute :>> safetyRole = "actuation and operator output";
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// ── Hardware: sensor suite ──────────────────────────────────
|
|
62
|
+
part airInLineSensor : HardwareAssembly {
|
|
63
|
+
attribute :>> id = "HW-006";
|
|
64
|
+
attribute :>> name = "AirInLineSensor";
|
|
65
|
+
attribute :>> responsibility = "Ultrasonic detection of air bubbles in the delivery tubing.";
|
|
66
|
+
attribute :>> safetyRole = "detects air embolism precursor; feeds High-priority Air embolism notification";
|
|
67
|
+
attribute :>> partNumber = "GPCA-SNS-AIR";
|
|
68
|
+
attribute :>> mtbfHours = "150000";
|
|
69
|
+
}
|
|
70
|
+
part occlusionSensor : HardwareAssembly {
|
|
71
|
+
attribute :>> id = "HW-007";
|
|
72
|
+
attribute :>> name = "OcclusionPressureSensor";
|
|
73
|
+
attribute :>> responsibility = "Measures downstream line pressure to detect occlusion.";
|
|
74
|
+
attribute :>> safetyRole = "detects blocked line (under-infusion, post-occlusion bolus)";
|
|
75
|
+
attribute :>> partNumber = "GPCA-SNS-OCC";
|
|
76
|
+
attribute :>> mtbfHours = "150000";
|
|
77
|
+
}
|
|
78
|
+
part reservoirSensor : HardwareAssembly {
|
|
79
|
+
attribute :>> id = "HW-008";
|
|
80
|
+
attribute :>> name = "ReservoirVolumeSensor";
|
|
81
|
+
attribute :>> responsibility = "Reports remaining reservoir volume and empty condition.";
|
|
82
|
+
attribute :>> safetyRole = "prevents dry pumping and undetected therapy interruption";
|
|
83
|
+
attribute :>> partNumber = "GPCA-SNS-RSV";
|
|
84
|
+
attribute :>> mtbfHours = "120000";
|
|
85
|
+
}
|
|
86
|
+
part doorSensor : HardwareAssembly {
|
|
87
|
+
attribute :>> id = "HW-009";
|
|
88
|
+
attribute :>> name = "DoorLatchSensor";
|
|
89
|
+
attribute :>> responsibility = "Detects open reservoir door / unlatched pumping chamber.";
|
|
90
|
+
attribute :>> safetyRole = "prevents free flow and tampering with the fluid path";
|
|
91
|
+
attribute :>> partNumber = "GPCA-SNS-DOR";
|
|
92
|
+
attribute :>> mtbfHours = "200000";
|
|
93
|
+
}
|
|
94
|
+
part flowSensor : HardwareAssembly {
|
|
95
|
+
attribute :>> id = "HW-010";
|
|
96
|
+
attribute :>> name = "DeliveryFlowSensor";
|
|
97
|
+
attribute :>> responsibility = "Independent measurement of delivered flow for cross-check against commanded flow.";
|
|
98
|
+
attribute :>> safetyRole = "detects over/under-infusion independent of motor control";
|
|
99
|
+
attribute :>> partNumber = "GPCA-SNS-FLW";
|
|
100
|
+
attribute :>> mtbfHours = "100000";
|
|
101
|
+
}
|
|
102
|
+
part bolusButton : HardwareAssembly {
|
|
103
|
+
attribute :>> id = "HW-011";
|
|
104
|
+
attribute :>> name = "PatientBolusButton";
|
|
105
|
+
attribute :>> responsibility = "Debounced patient pendant switch for bolus requests.";
|
|
106
|
+
attribute :>> safetyRole = "sole patient input; stuck-button detection required";
|
|
107
|
+
attribute :>> partNumber = "GPCA-INP-BOL";
|
|
108
|
+
attribute :>> mtbfHours = "80000";
|
|
109
|
+
}
|
|
110
|
+
part operatorKeypad : HardwareAssembly {
|
|
111
|
+
attribute :>> id = "HW-012";
|
|
112
|
+
attribute :>> name = "OperatorKeypad";
|
|
113
|
+
attribute :>> responsibility = "Clinician input for prescription programming and alarm handling.";
|
|
114
|
+
attribute :>> safetyRole = "prescription entry path; key-lock guarded";
|
|
115
|
+
attribute :>> partNumber = "GPCA-INP-KEY";
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── Hardware: actuator and output suite ─────────────────────
|
|
119
|
+
part pumpMotorAssembly : HardwareAssembly {
|
|
120
|
+
attribute :>> id = "HW-003";
|
|
121
|
+
attribute :>> name = "PumpMotorAssembly";
|
|
122
|
+
attribute :>> responsibility = "Peristaltic pump mechanism and stepper motor driving drug delivery.";
|
|
123
|
+
attribute :>> safetyRole = "single point of drug delivery; rotation monitored by flow sensor";
|
|
124
|
+
attribute :>> partNumber = "GPCA-ACT-PMP";
|
|
125
|
+
attribute :>> mtbfHours = "60000";
|
|
126
|
+
}
|
|
127
|
+
part antiFreeFlowValve : HardwareAssembly {
|
|
128
|
+
attribute :>> id = "HW-013";
|
|
129
|
+
attribute :>> name = "AntiFreeFlowValve";
|
|
130
|
+
attribute :>> responsibility = "Mechanical valve that blocks gravity free flow whenever the pumping chamber is disengaged.";
|
|
131
|
+
attribute :>> safetyRole = "inherent safe design against free-flow overdose";
|
|
132
|
+
attribute :>> partNumber = "GPCA-ACT-AFF";
|
|
133
|
+
}
|
|
134
|
+
part audibleAlarm : HardwareAssembly {
|
|
135
|
+
attribute :>> id = "HW-004";
|
|
136
|
+
attribute :>> name = "AudibleAlarmAnnunciator";
|
|
137
|
+
attribute :>> responsibility = "Buzzer producing multi-priority alarm tones at or above 45 dB(A) at 1 m.";
|
|
138
|
+
attribute :>> safetyRole = "primary alarm annunciation path";
|
|
139
|
+
attribute :>> partNumber = "GPCA-ACT-BZR";
|
|
140
|
+
}
|
|
141
|
+
part operatorDisplay : HardwareAssembly {
|
|
142
|
+
attribute :>> id = "HW-005";
|
|
143
|
+
attribute :>> name = "OperatorDisplay";
|
|
144
|
+
attribute :>> responsibility = "Displays mode, prescription, delivered dose, and alarm messages.";
|
|
145
|
+
attribute :>> safetyRole = "visual alarm annunciation and prescription confirmation readback";
|
|
146
|
+
attribute :>> partNumber = "GPCA-ACT-DSP";
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// ── Hardware: platform ──────────────────────────────────────
|
|
150
|
+
part controllerBoard : HardwareAssembly {
|
|
151
|
+
attribute :>> id = "HW-014";
|
|
152
|
+
attribute :>> name = "MainControllerBoard";
|
|
153
|
+
attribute :>> responsibility = "Hosts the microcontroller, memory, and hardware watchdog executing the GPCA software.";
|
|
154
|
+
attribute :>> safetyRole = "computing platform; watchdog forces safe state on CPU hang";
|
|
155
|
+
attribute :>> partNumber = "GPCA-PCB-MAIN";
|
|
156
|
+
attribute :>> mtbfHours = "250000";
|
|
157
|
+
}
|
|
158
|
+
part batteryPack : HardwareAssembly {
|
|
159
|
+
attribute :>> id = "HW-015";
|
|
160
|
+
attribute :>> name = "BatteryPack";
|
|
161
|
+
attribute :>> responsibility = "Rechargeable backup battery sustaining at least 4 hours of therapy.";
|
|
162
|
+
attribute :>> safetyRole = "keeps therapy and alarms alive during mains loss";
|
|
163
|
+
attribute :>> partNumber = "GPCA-PWR-BAT";
|
|
164
|
+
attribute :>> mtbfHours = "20000";
|
|
165
|
+
}
|
|
166
|
+
part powerSupply : HardwareAssembly {
|
|
167
|
+
attribute :>> id = "HW-016";
|
|
168
|
+
attribute :>> name = "MainsPowerSupply";
|
|
169
|
+
attribute :>> responsibility = "Medical-grade AC/DC supply with charger and mains-loss signal.";
|
|
170
|
+
attribute :>> safetyRole = "isolation per IEC 60601-1; signals switchover to battery";
|
|
171
|
+
attribute :>> partNumber = "GPCA-PWR-PSU";
|
|
172
|
+
attribute :>> protectionClass = "Class II";
|
|
173
|
+
attribute :>> ipRating = "IPX2";
|
|
174
|
+
}
|
|
175
|
+
part enclosure : HardwareAssembly {
|
|
176
|
+
attribute :>> id = "HW-017";
|
|
177
|
+
attribute :>> name = "DeviceEnclosure";
|
|
178
|
+
attribute :>> responsibility = "Impact-resistant, liquid-ingress-protected housing for the pump.";
|
|
179
|
+
attribute :>> safetyRole = "carries the drop and liquid-ingress requirements REQ-CS-83/84";
|
|
180
|
+
attribute :>> partNumber = "GPCA-MECH-ENC";
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// ── Software system and components (UMN behavioral model) ───
|
|
184
|
+
part gpcaSoftware : SoftwareSystem {
|
|
185
|
+
attribute :>> id = "SWS-001";
|
|
186
|
+
attribute :>> name = "GPCA_Software";
|
|
187
|
+
attribute :>> version = "2.0";
|
|
188
|
+
attribute :>> lifecycleState = LifecycleStateKind::development;
|
|
189
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
190
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
191
|
+
attribute :>> operatingSystem = "synchronous data-flow execution; AADL immediate port semantics (source specifies no timing)";
|
|
192
|
+
}
|
|
193
|
+
part tlm : SoftwareComponent {
|
|
194
|
+
attribute :>> id = "SW-001";
|
|
195
|
+
attribute :>> name = "Top_Level_Mode";
|
|
196
|
+
attribute :>> responsibility = "Ensure system ON/OFF behavior and startup/shutdown checks.";
|
|
197
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
198
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
199
|
+
}
|
|
200
|
+
part config : SoftwareComponent {
|
|
201
|
+
attribute :>> id = "SW-002";
|
|
202
|
+
attribute :>> name = "Config";
|
|
203
|
+
attribute :>> responsibility = "Prescription entry, drug-library limit checking, confirmation, and persistent storage.";
|
|
204
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
205
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
206
|
+
}
|
|
207
|
+
part alarm : SoftwareComponent {
|
|
208
|
+
attribute :>> id = "SW-003";
|
|
209
|
+
attribute :>> name = "Alarm";
|
|
210
|
+
attribute :>> responsibility = "Monitor and notify exceptional conditions.";
|
|
211
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
212
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
213
|
+
}
|
|
214
|
+
part logging : SoftwareComponent {
|
|
215
|
+
attribute :>> id = "SW-004";
|
|
216
|
+
attribute :>> name = "Logging";
|
|
217
|
+
attribute :>> responsibility = "Append-only event log of doses, mode changes, alarms, and configuration changes.";
|
|
218
|
+
attribute :>> safetyClass = SafetyClassKind::B;
|
|
219
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
220
|
+
}
|
|
221
|
+
part infusionMgr : SoftwareComponent {
|
|
222
|
+
attribute :>> id = "SW-005";
|
|
223
|
+
attribute :>> name = "Infusion_Manager";
|
|
224
|
+
attribute :>> responsibility = "Handle drug infusion commands and therapy parameters.";
|
|
225
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
226
|
+
attribute :>> complexity = ComplexityKind::high;
|
|
227
|
+
}
|
|
228
|
+
part systemMonitor : SoftwareComponent {
|
|
229
|
+
attribute :>> id = "SW-006";
|
|
230
|
+
attribute :>> name = "System_Monitor";
|
|
231
|
+
attribute :>> responsibility = "POST, periodic CPU/RAM/ROM checks, watchdog kicking, and battery supervision.";
|
|
232
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
233
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
234
|
+
}
|
|
235
|
+
part systemStatus : SoftwareComponent {
|
|
236
|
+
attribute :>> id = "SW-007";
|
|
237
|
+
attribute :>> name = "System_Status";
|
|
238
|
+
attribute :>> responsibility = "Maintain the shared system status vector (Reservoir_Volume, Volume_Infused, Reservoir_Empty, In_Therapy) consumed by Alarm, Config, and Infusion_Manager.";
|
|
239
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
240
|
+
attribute :>> complexity = ComplexityKind::medium;
|
|
241
|
+
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/System_Status.aadl";
|
|
242
|
+
}
|
|
243
|
+
part outputBus : SoftwareComponent {
|
|
244
|
+
attribute :>> id = "SW-008";
|
|
245
|
+
attribute :>> name = "OutputBus";
|
|
246
|
+
attribute :>> responsibility = "Aggregate all subsystem outputs into the single GPCA_SW_OUT output vector (mode, commanded flow rate, notifications, prescription echo, status).";
|
|
247
|
+
attribute :>> safetyClass = SafetyClassKind::C;
|
|
248
|
+
attribute :>> complexity = ComplexityKind::low;
|
|
249
|
+
attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/OutputBus.aadl";
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// ── Structural composition ──────────────────────────────────
|
|
253
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> airInLineSensor;
|
|
254
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> occlusionSensor;
|
|
255
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> reservoirSensor;
|
|
256
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> doorSensor;
|
|
257
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> flowSensor;
|
|
258
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> bolusButton;
|
|
259
|
+
connection : Composes connect parent ::> gpcaDeviceSensors to child ::> operatorKeypad;
|
|
260
|
+
connection : Composes connect parent ::> gpcaActuators to child ::> pumpMotorAssembly;
|
|
261
|
+
connection : Composes connect parent ::> gpcaActuators to child ::> antiFreeFlowValve;
|
|
262
|
+
connection : Composes connect parent ::> gpcaActuators to child ::> audibleAlarm;
|
|
263
|
+
connection : Composes connect parent ::> gpcaActuators to child ::> operatorDisplay;
|
|
264
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> tlm;
|
|
265
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> config;
|
|
266
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> alarm;
|
|
267
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> logging;
|
|
268
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> infusionMgr;
|
|
269
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> systemMonitor;
|
|
270
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> systemStatus;
|
|
271
|
+
connection : Composes connect parent ::> gpcaSoftware to child ::> outputBus;
|
|
272
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
package memo_examples_gpca_pump_model_catalog_gpca_behavior_actions {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
|
|
4
|
+
|
|
5
|
+
private import memo_architecture_behavior::*;
|
|
6
|
+
private import memo_core_enumerations::*;
|
|
7
|
+
|
|
8
|
+
// ═════════════════════════════════════════════════════════════
|
|
9
|
+
// GPCA infusion delivery action flow (KK-4 exemplar).
|
|
10
|
+
// The 20 ms execution-step pipeline from sensor acquisition
|
|
11
|
+
// through alarm evaluation and dose limiting to pump actuation
|
|
12
|
+
// and event logging — the behavioral realization of FC-001/
|
|
13
|
+
// FC-002 over FUNC-001..008. Item types reference the exchange
|
|
14
|
+
// item definitions in gpca_behavior_subsystems (DD-002/DD-003,
|
|
15
|
+
// CD-001/CD-002, DD-004).
|
|
16
|
+
// ═════════════════════════════════════════════════════════════
|
|
17
|
+
|
|
18
|
+
// ── Action definitions (typed steps with parameters) ────────
|
|
19
|
+
item def SensorStatusVector;
|
|
20
|
+
item def AlarmSignal;
|
|
21
|
+
item def BolusRequestSignal;
|
|
22
|
+
item def FlowCommand;
|
|
23
|
+
item def TherapyEventRecord;
|
|
24
|
+
|
|
25
|
+
action def AcquireSensorData {
|
|
26
|
+
out sensorStatus : SensorStatusVector;
|
|
27
|
+
}
|
|
28
|
+
action def EvaluateAlarmConditions {
|
|
29
|
+
in sensorStatus : SensorStatusVector;
|
|
30
|
+
out alarmSignal : AlarmSignal;
|
|
31
|
+
}
|
|
32
|
+
action def EnforceDoseLimits {
|
|
33
|
+
in bolusRequest : BolusRequestSignal;
|
|
34
|
+
out authorizedBolus : BolusRequestSignal;
|
|
35
|
+
}
|
|
36
|
+
action def ComputeFlowCommand {
|
|
37
|
+
in alarmSignal : AlarmSignal;
|
|
38
|
+
in authorizedBolus : BolusRequestSignal;
|
|
39
|
+
out flowCommand : FlowCommand;
|
|
40
|
+
}
|
|
41
|
+
action def ActuatePumpMotor {
|
|
42
|
+
in flowCommand : FlowCommand;
|
|
43
|
+
out actuation : FlowCommand;
|
|
44
|
+
}
|
|
45
|
+
action def LogTherapyEvent {
|
|
46
|
+
in actuation : FlowCommand;
|
|
47
|
+
out eventRecord : TherapyEventRecord;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ── Infusion delivery flow (composite action) ───────────────
|
|
51
|
+
action infusionDeliveryFlow {
|
|
52
|
+
action acquireSensors : AcquireSensorData;
|
|
53
|
+
action evaluateAlarms : EvaluateAlarmConditions;
|
|
54
|
+
action enforceLimits : EnforceDoseLimits;
|
|
55
|
+
action computeFlow : ComputeFlowCommand;
|
|
56
|
+
action actuateMotor : ActuatePumpMotor;
|
|
57
|
+
action logEvent : LogTherapyEvent;
|
|
58
|
+
|
|
59
|
+
flow of SensorStatusVector from acquireSensors.sensorStatus to evaluateAlarms.sensorStatus;
|
|
60
|
+
flow of AlarmSignal from evaluateAlarms.alarmSignal to computeFlow.alarmSignal;
|
|
61
|
+
flow of BolusRequestSignal from enforceLimits.authorizedBolus to computeFlow.authorizedBolus;
|
|
62
|
+
flow of FlowCommand from computeFlow.flowCommand to actuateMotor.flowCommand;
|
|
63
|
+
flow of FlowCommand from actuateMotor.actuation to logEvent.actuation;
|
|
64
|
+
|
|
65
|
+
first start then acquireSensors;
|
|
66
|
+
first acquireSensors then evaluateAlarms;
|
|
67
|
+
first evaluateAlarms then computeFlow;
|
|
68
|
+
first enforceLimits then computeFlow;
|
|
69
|
+
first computeFlow then actuateMotor;
|
|
70
|
+
first actuateMotor then logEvent;
|
|
71
|
+
first logEvent then done;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ── Swimlane allocation to the logical architecture ─────────
|
|
75
|
+
allocate infusionDeliveryFlow.acquireSensors to gpcaDeviceSensors;
|
|
76
|
+
allocate infusionDeliveryFlow.evaluateAlarms to alarm;
|
|
77
|
+
allocate infusionDeliveryFlow.enforceLimits to infusionMgr;
|
|
78
|
+
allocate infusionDeliveryFlow.computeFlow to infusionMgr;
|
|
79
|
+
allocate infusionDeliveryFlow.actuateMotor to pumpMotorAssembly;
|
|
80
|
+
allocate infusionDeliveryFlow.logEvent to logging;
|
|
81
|
+
}
|