// Include common libraries /* AWS Technologies vocabulary */ !const LIBRARY_VERSION 2.0 // Systems !const AWS "AWS" !const AWS.Description "Amazon Web Services" !const AWS.Chime "Amazon Chime" !const AWS.Chime.Description "Communications service that lets you meet, chat, and place business calls inside and outside your organization, all using a single application." !const AWS.IAM "AWS IAM" !const AWS.IAM.Description "Identity and Access Management" !const AWS.STS "AWS STS" !const AWS.STS.Description "Security Token Service" !const AWS.SES "AWS SES" !const AWS.SES.Description "Simple Email Service" !const AWS.AppConfig "AWS AppConfig" !const AWS.AppConfig.Description "Simplifies the administration of applications at scale by deploying configuration changes from a central location." !const AWS.SNS "AWS Simple Notification Service" !const AWS.SNS.Description "Provides message delivery from publishers to subscribers, also used for push notifications & SMS." !const AWS.EventBridgeScheduler "AWS EventBridge Scheduler" !const AWS.EventBridgeScheduler.Description "Scheduler for events." // AWS Technologies !const AWS_SQS "AWS Simple Queue Service" !const AWS_REDIS "AWS ElastiCache for Redis" !const AWS_SM "AWS SecretsManager" !const AWS_LAMBDA "AWS Lambda" !const AWS_RDS "AWS RDS" !const AWS_DYNAMODB "AWS DynamoDB" !const AWS_S3 "AWS S3" !const AWS_SF "AWS StepFunction" !const AWS_SF_NODE "AWS StepFunction Node" !const AWS_SNS "AWS Simple Notificaction Service" !const AWS_GLUE "AWS Glue" !const AWS_API_GATEWAY "AWS API Gateway" /* Common vocabulary constants */ !const RDCS "RocheDiabetes Care Solutions" !const PROFSOL "Professional Solutions" !const PLATFORM "Platform" !const PERSONAL "Personal Solutions" !const INFRASTRUCTURE "Infrastructure" !const DEVICES "Devices" /* Technologies vocabulary */ // Common technologies !const TLS "TLS" !const JDBC "JDBC" !const JSP "JSP" !const NODE "NodeJS" !const SPRING_MVC "Spring MVC" !const SPRING_BOOT "Spring Boot" !const MSSQL_EE "SQL Server Enterprise Edition" !const POSTGRESQL "PostgreSQL" !const COUCHBASE "Couchbase" !const COUCHBASE_LITE "Couchbase Lite" !const DOTNET ".NET" !const MFC "MFC" !const SWIFT "Swift" !const QT "Qt" !const CPP "C++" !const PYTHON "Python" // Formats !const ACSPIX "ACSPIX" !const JSON "JSON" !const EIF "EIF" !const ROCHE_JSON "RocheJSON" !const HTML "HTML" !const PDF "PDF" !const CSV "CSV" // Communication channels !const HTTPS "HTTPS" !const JSON_HTTPS "JSON/HTTPS" !const ACSPIX_HTTPS "ACSPIX/HTTPS" !const FHIR_HTTPS "FHIR/HTTPS" !const ROCHE_JSON_HTTPS "RocheJSON/HTTPS" !const CDF_HTTPS "CDF/HTTPS" !const EIF_HTTPS "EIF/HTTPS" !const BINARY_HTTPS "BINARY/HTTPS" !const WS "WebSocket" !const PDF_HTTPS "PDF/HTTPS" // Languages !const JS "JavaScript" !const TS "TypeScript" !const REACT "React" !const JAVA "Java" !const MONO "Mono" !const SCALA "Scala" /* Persons constants */ !const ADMIN "Admin" !const ADMIN.Description "Roche administrator, that manages onboardings and centers; is always considered an 'internal' user" !const HCP "HCP" !const HCP.Description "The health care professional is the medical practitioner treating the patient; is always considered an 'external' user" !const HCP.Master "HCP Master" !const HCP.Master.Description "The healthcare professional (Master - Owner of Healthcare Center); is always considered an 'external' user" !const PWD "PwD" !const PWD.Description "Person with diabetes is the end user of the solution / system; is always considered an 'external' user" !const DSS "DSS" !const DSS.Description "Digital support service user is a special Roche internal user that has access to production environment and can perform various maintenance and corrective tasks" !const DEVOPS "DevOps" !const DEVOPS.Description "The DevOps user is an internal Roche user responsible for the operation and maintenance of the infrastructure" !const ComplaintInvestigator "Complaint Investigator" !const ComplaintInvestigator.Description "Internal Roche support team member responsible for investigating customer complaints" /* Infrastructure systems constants */ !const GitLab.OnPremise "GitLab On-Premise" !const GitLab.OnPremise.Description "GitLab on-premise instance" !const StaticAppsS3 "Static Apps (AWS.S3 Bucket)" !const StaticAppsS3.Description "Container for static apps and web apps resources" !const FeatureFlagService.OnPremise "Feature Flag Service On-Premise" !const FeatureFlagService.OnPremise.Description "GO Feature Flag Service on-premise instance for serving FFs" !const LogManagement "LogManagement" !const LogManagement.Description "The RDC Observability tool used by all components" /* Personal ART vocabulary system constants */ !const Personal.mySugr "Personal.mySugr" !const Personal.mySugr.Description "Application for managing and tracking diabetes in patients" !const Personal.mySugr.Backend "Personal.mySugr.Backend" !const Personal.mySugr.Backend.Description "mySugr backend application to support mobile application" !const Personal.Glucolytics "Personal.Predict" !const Personal.Glucolytics.Description "(Accu-Chek SmartGuide Predict) Application that provides algorithmic predictions about future glucose levels based on collected medical data of patient" !const Personal.Glucolytics.Backend "Personal.Predict.Backend" !const Personal.Glucolytics.Backend.Description "Backend representing a collection of services for generating predictions of glycemic events for the user by loading a previously generated model or by implementing a mathematical calculation." !const Personal.SmartGuide "Personal.SmartGuide" !const Personal.SmartGuide.Description "(aka Confidence) Mobile application for connecting with CGM device for data readout and tracking" /* Plaform ART vocabulary system constants */ !const Platform.ApiManager "Platform.ApiManager" !const Platform.ApiManager.Description "The Roche ecosystem API Gateway used to NAT all the traffic to / from each solution and service" !const Platform.ApiGateway "Platform.ApiGateway" !const Platform.ApiGateway.Description "The Roche ecosystem API Gateway used to NAT all the traffic to / from each solution and service" !const Platform.CIAMCM "Platform.CIAMCM" !const Platform.CIAMCM.Description "Customer Identity and Access Management and Consent Management is the central storage for identity and consents of each user" !const Platform.CIAMCM.Gigya "Platform.CIAMCM.Gigya" !const Platform.CIAMCM.Gigya.Description "CIAMCM's Gigya instance for user identity management" !const Platform.DiagnosticsAndMedications "Platform.DiagnosticsAndMedications (FHIRStack)" !const Platform.DiagnosticsAndMedications.Description "Allows storage and retrieval of diagnostics and medications data of the patients." !const Platform.DataIntegrations "Platform.DataIngetrations" !const Platform.DataIntegrations.Description "Data integrations layer" !const Platform.PHDIAM "Platform.PHDIAM" !const Platform.PHDIAM.Description "Certficate authorization and access management." !const Platform.RDAC "Platform.RocheDiabetes AccountCenter (aka Accu-Chek Account Center)" !const Platform.RDAC.Description "(aka Accu-Chek Account Center) App for Patient registrations in RDC" !const Platform.ApplicationSettings "Platform.ApplicationSettings" !const Platform.ApplicationSettings.Description "Store, retrieve and share settings for mobile apps" !const Platform.BLE "Platform.ConfidenceBLE" !const Platform.BLE.Description "Retrieve optimized set of parameters for BLE connection" !const Platform.ComplaintInvestigation "Platform.ComplaintInvestigation" !const Platform.ComplaintInvestigation.Description "Search and aggregate data from multiple domains and return it to caller" !const Platform.PushNotification "Platform.PushNotification" !const Platform.PushNotification.Description "Send push notifications to registered devices" !const Platform.RADAR "Platform.RADAR" !const Platform.RADAR.Description "Roche Analytics for Reporting and product usage KPIs" !const Platform.BDA "Platform.BDA" !const Platform.BDA.Description "Big Data and Analytics" /* Professional solution (Professional ART) vocabulary system constants */ // RDCP !const RDCP "RocheDiabetes Care Platform (RDCP) | Accu-Chek Care (ACC)" !const RDCP.HCP.Portal "RDCP.HCPPortal" !const RDCP.HCP.Portal.Description "Allows Healthcare Professional accessing their patients and their medical data." !const RDCP.HCP.SelfReg "RDCP.HCPSelf-Registration" !const RDCP.HCP.SelfReg.Description "Allows owners of HCC's to register their Healthcare Center to start managing their healthcare center and patients in RDCP." //!const RDCP.BackofficePortal "RDCP.BackofficePortal" //!const RDCP.BackofficePortal.Description "Allows Roche Admins onboarding processes for new healthcare centers and management of existing ones." !const RDCP.UniversalDTC "RDCP.UniversalDTC" !const RDCP.UniversalDTC.Description "Allows readout and upload of medical data from blood glucose devices, insulin pumps and CGMs into RDCP." !const RDCP.Patient.Portal "RDCP.PatientPortal" !const RDCP.Patient.Portal.Description "(Available only for RDCP) Allows patients to visualize their medical data, personal information and access home delivery." !const RDCP.Core "RDCP.Core" !const RDCP.Core.Description "Collection of core Backend Services to support RDCP (including monolithic app)." !const RDCP.Permissions "RDCP.Permissions" !const RDCP.Permissions.Description "Allows validation of permissions, modules and access to specific resources within RDCP." !const RDCP.Notifications "RDCP.Notifications" !const RDCP.Notifications.Description "Allows management of Notifications." !const RDCP.StripsManagement "RDCP.StripsManagement" !const RDCP.StripsManagement.Description "Allows strips management (stock, delivery)." !const RDCP.Patterns.And.Indicators "RDCP.PatternsAndIndicators" !const RDCP.Patterns.And.Indicators.Description "Allows enrichment patient's status based on predefined set of patterns." !const RDCP.UserManagement.And.Records "RDCP.UserManagementAndRecords" !const RDCP.UserManagement.And.Records.Description "Allows centralized access and management of RDCP users." !const RDCP.Diagnostics.And.Medications "RDCP.DiagnosticsAndMedications" !const RDCP.Diagnostics.And.Medications.Description "Diagnostics and Medications." // DEPREACTED for Koala release //!const RDCP.UniversalDTC.Services "RDCP.UniversalDTC.Services" //!const RDCP.UniversalDTC.Services.Description "Allows additional support of various functionalities of uDTC (whitelisting of devices and their versions that are supported by RDCP)." !const RDCP.Organizations "RDCP.Organizations" !const RDCP.Organizations.Description "Provides APIs for management of organizations" !const RDCP.Analytics "RDCP.Analytics" !const RDCP.Analytics.Description "Allow recollection of metrics for analytics" !const RDCP.Devices "RDCP.Devices" !const RDCP.Devices.Description "Management of devices." !const RDCP.Reporting "RDCP.Reporting" !const RDCP.Reporting.Description "Reporting services." !const RDCP.ConfigurationManagement "RDCP.ConfigurationManagement" !const RDCP.ConfigurationManagement.Description "Management of configurations" // VisitModule (Part of RDCP) !const VisitManagement.And.Communication "RDCP.VisitManagementAndCommunication" !const VisitManagement.And.Communication.Description "Allows managements of patients visits to the HCP's, recording of notes and communication between PwD's and HCP's." // (Legacy) SmartPixSoftware (DEPRECATED) !const SPSW "SmartPixSoftware (SPSW)" !const SPSW.Desktop "SPSW.DesktopClient" !const SPSW.Desktop.Description "Legacy Desktop Application for HCP's Management of the patients" // SmartPix2Cloud (DEPRECATED) !const SP2C "SmartPix2Cloud (SP2C)" !const SP2C.Description "Allows patient (and their data) migration from legacy SPSW solution and RDCP" !const SP2C.Desktop "SP2C.Desktop" !const SP2C.Desktop.Description "Desktop application that provides one-way data sync between SPSW and RDCP" !const SP2C.Backend "SP2C.Backend" !const SP2C.Backend.Description "Backend components of Smart Pix to Cloud" // Devices !const Devices.CGMPatch "CGM.Patch" !const Devices.CGMPatch.Description "Roche CGM Sensor Patch (part of Accu-Chek SmartGuide CGM)" !const Devices.MicroPump "MicroPump" !const Devices.MicroPump.Description "Accu-Chek Solo Micro Insulin Pump" !const Personal.glucoseInsights "mySugr Glucose Insights" !const Personal.glucoseInsights.Description "Display and read-out of CGM sensor. Visualize and analyze diabetes data" workspace "CGM Landscape" "Roche CGM Digital solutions landscape" { // Make identifiers hierarchical (e.g. rdcp.systemA.componentB) !identifiers hierarchical // Make relationships to be propagated to higher levels from component views (and lower) !impliedRelationships true model { properties { "structurizr.groupSeparator" "/" } // external actors pwd = person "${PWD}" "${PWD.Description}" "ExternalActor" //external systems group "Bundle Apps" { cfd = softwareSystem "${Personal.SmartGuide}" "${Personal.SmartGuide.Description}" { tags "Mobile Application" "ios_android" } predict = softwareSystem "${Personal.Glucolytics}" "${Personal.Glucolytics.Description}" { tags "Mobile Application" "ios_android" } } mysugr = softwareSystem "${Personal.mySugr}" "${Personal.mySugr.Description} with Glucose Insights module activated" { tags "Mobile Application" "ios_android" } /* Devices */ group "Devices" { cgm1 = element "CGM Sensor" "Roche CGM Sensor" { tags "CGM Patch" properties { "ART" "CGM ART" } perspectives { Security "CGM Patch is worn by the PwD" } } } group "${RDCS}" { //internal actors dss = person "${DSS}" "${DSS.Description}" "RocheActor" { tags "platform" } devops = person "${DEVOPS}" "${DEVOPS.Description}" "RocheActor"{ tags "platform" } complaintInvestigator = person "${ComplaintInvestigator}" "${ComplaintInvestigator.Description}" "RocheActor"{ tags "platform" } group "DC Platform" { fhir = softwareSystem "${Platform.DiagnosticsAndMedications}" "${Platform.DiagnosticsAndMedications.Description}" { tags "External System" "platform" } auth = softwareSystem "Authentication and Authorization" "A collection ofservices for Login, Authentication and Authorization" { tags "External System" "platform" } settings = softwareSystem "Settings" "A collection of services and solutions to manage user & device settings" { tags "External System" "platform" } analytics = softwareSystem "Analytics systems" "Collection of software systems for Analytical purposes, business and scientific (KPIs, Complaint handling, Algo development, etc.)" { tags "External System" "platform" } } group "${PERSONAL}" { predictBE = softwareSystem "${Personal.Glucolytics.Backend}" "${Personal.Glucolytics.Backend.Description}" { tags "" } mysugrBE = softwareSystem "${Personal.mySugr.Backend}" "${Personal.mySugr.Backend.Description}" { tags "personal" } } } /* Relationships between elements */ # relationships between external actors and systems pwd -> mysugr "Uses" "View" pwd -> cgm1 "Wears" "Body Patch" pwd -> cfd "Uses" "View" pwd -> predict "Uses" "View" # relationships between apps and devices mysugr -> cgm1 "Pairs with" "Bluetooth" cfd -> cgm1 "Pairs with" "Bluetooth" # relationships between apps and cloud / backend software systems mysugr -> auth "Login, authenticate and exchange demographics with" "WEB/HTTPS and JSON/HTTPS" mysugr -> mysugrBE "Send/Receive data to/from" "JSON/HTTPS" cfd -> auth "Login, authenticate and exchange demographics with" "WEB/HTTPS and JSON/HTTPS" cfd -> fhir "Send/Receive data to/from" "FHIR_light-JSON/HTTPS" predict -> auth "Login, authenticate and exchange demographics with" "WEB/HTTPS and JSON/HTTPS" predict -> predictBE "Display predictions from" "FHIR_light-JSON/HTTPS" ## from the BE to other sw systems mysugrBE -> fhir "Send data to" "Kinesis Data Stream" { tags "kinesis" } mysugrBE -> predictBE "Create profile in / Get Predictions & report from" "JSON/HTTP" fhir -> predictBE "Stream new data to" "Kinesis Data Stream" { tags "kinesis" } ## from BE to analytics fhir -> analytics "" "Kinesis Firehose" { tags "kinesis" } predictBE -> analytics "" "Kinesis Firehose" { tags "kinesis" } } views { /* The system landscape view is an optional view that depicts a zoom out from the context and represents the RDC landscape (ecosystem); It's normally used in cross ART representations or system representations involving multiple solutions that interact with solutions outside of their context */ systemLandscape "CGMLandscape" "CGM digital solutions high-level landscape" { include * } # styling // Themes: https://docs.structurizr.com/ui/diagrams/themes // (!) Update from localhost to url on-premise when deploying to Tools (PROD) // https://structurizr.tools.rdcplatform.com/static/roche-theme.json themes roche-theme.json https://static.structurizr.com/themes/amazon-web-services-2023.01.31/theme.json // https://static.structurizr.com/themes/amazon-web-services-2023.01.31/theme.json // https://static.structurizr.com/themes/amazon-web-services-2020.04.30/theme.json // AWS vizualizer: https://structurizr.com/help/theme?url=https://static.structurizr.com/themes/amazon-web-services-2023.01.31/theme.json // AWS vizualizer: https://structurizr.com/help/theme?url=https://static.structurizr.com/themes/amazon-web-services-2020.04.30/theme.json // another version: https://static.structurizr.com/themes/amazon-web-services-2023.01.31/theme.json branding { logo ../src/docs/images/logo_roche.png } styles { element "Group" { background #d3d3d3 color #4C4C4C stroke #4C4C4C strokeWidth 10 icon src/docs/images/logo_roche.png } element "CGM Patch" { shape Circle color #0038a8 } element "ios_android" { icon resources/imgs/ios_android.jpg } element "sqs" { shape Cylinder icon resources/imgs/aws_sqs.png } element "sns" { shape Pipe icon resources/imgs/aws_sns.png } element "kinesis_stream" { shape Pipe icon resources/imgs/aws_kinesis_stream.png } element "lambda" { shape RoundedBox icon resources/imgs/aws_lambda.png } /* Mainly for containers - but not limited to */ element "kotlin_swift" { shape Component icon resources/imgs/kotlin_swift.png } element "realm" { shape Cylinder icon resources/imgs/and_realm.jpg background white color green stroke green } element "room" { shape Cylinder icon resources/imgs/room_db.png background white color green stroke green } element "mobile_sec_pref" { shape Cylinder icon resources/imgs/secure_preferences.png background white color red stroke green } element "mobile_pref" { shape Cylinder icon resources/imgs/preferences.png background white color grey stroke green } element "mobile_file" { shape Folder icon resources/imgs/file_storage.png background white color green stroke green } element "platform" { background white color grey stroke grey } element "personal" { background #e0ffff color green stroke green } /* Relationship styling */ relationship "Relationship" { style solid routing Orthogonal position 60 } relationship "sns" { color blue } relationship "sqs" { color red } relationship "tcp" { color green } relationship "kinesis" { color #8a2be2 } relationship "analytics" { style dashed } relationship "push" { style dashed color green } } } }