workspace "RDC Landscape" "RDC Landscape with focus on Platform"{ /* Load the Architectural Decision Records of the project. These can be one or multiple files (each decision should have an independent record). File naming convention -title_word_1-title_word_n.md (number should be 0001 .. 0100 .. 0954 ..). NOTE: file format is Markdown */ !adrs adrs /* Load the documentation associated with the project / solution. Basically the documentation_sad should contain all the chapters, in order, that composes the full SAD with reference to the diagrams as well. File naming convention -title_word_1-title_word_n.md (number should be 0001 .. 0100 .. 0954 ..). NOTE: file format is AsciiDoc */ !docs documentation_sad model { /* Here we describe a few typical 'external' actors for the solution / system. These are persons and they can be useful for the solution or not, depending on the purpose (service used by other solutions / apps / backends) Other types of users can be defined, these are the typical ones only */ Pwd = person "PwD" "Patient with diabetes is the end user of the solution / system; is always considered an 'external' user" { tags "RocheExtPerson" } hcp = person "HCP" "The health care professional is the medical practitioner treating the patient; is always considered an 'external' user" { tags "RocheExtPerson" } /* 3rd party companies that have partnered with Roche to extend their offering and benefit from our expertise */ partner = softwareSystem "Partner" "3rd party companies that have partnered with Roche to extend their offering and benefit from our expertise" { tags "RocheMob" "RocheExtSoftwareSystem" } hcc = element "HCC" "Health Care Center" { tags "RocheHCC" } enterprise "Roche Diabetes Care" { /* Here we describe a few typical 'internal' actors for the solution / system. These are persons and they can be useful for the solution or not, depending on the purpose (service used by other solutions / apps / backends) Other types of users can be defined, these are the typical ones only */ dss = person "DSS" "Digital support service user is a special Roche internal user that has access to production environment and can perform various maintenance and corrective tasks" com_inv = person "Complaint Investigator" "Analyze and solve customer complaints" dops = person "DevOps" "The DevOps user is an internal Roche user responsible for the operation and maintenance of the infrastructure" /* Here are described some generic software systems in the Roche ecosystem These are not exhaustive, just a few general ones used by all the solutions The solution specifics and it's dependencies have to be added below The systems below as well as the solution specific ones must follow the naming conventions of the Roche Architectural Standard as defined here https://confluence.rochedc.accentureanalytics.com/pages/viewpage.action?pageId=148046784 */ logs = softwareSystem "Infra.LogManagement" "The Roche Observability tool used by all components" comp_inv_app = softwareSystem "Complaint Management" "Software for managing and resolving complaints" group "Platform" { apiGW = softwareSystem "ApiManager" "The Roche ecosystem API Gateway used to NAT all the traffic to / from each solution and service" { tags "RocheGateway" } ciam = softwareSystem "CIAMCM" "Customer Identity and Access Management and Consent Management is the central storage for identity and consents of each user" rdac = softwareSystem "RDAC" "Roche Diabetes Account Center" fhir_stack = softwareSystem "Diagnostics&Medication" "Transactional are to store diagnostics and medication data" hcds = softwareSystem "Health Care data Service" "Store clinical data from Diagnostics and Medication domain" di_cis = softwareSystem "Common Ingestion Service" "System to ingest data from any source into Platform and RDCP" legacy_mys_ingestion = softwareSystem "mySugr data ingestion" "Legacy system to ingest data from mySugr to RDC" di_inter = softwareSystem "Interoperability" "Software system to allow exchange of data with Health Care Centers" app_sett = softwareSystem "Application Settings" "Store, retrieve and share settings for mobile apps" ble = softwareSystem "Confidence BLE" "Retrieve optimized set of parameters for BLE connection" cs_cis = softwareSystem "Complaint Investigation" "Search and aggregate data from multiple domains and return it to caller" phd_iam = softwareSystem "PHD IAM" "3rd party applications authorization service" push_notif = softwareSystem "Push notification" "Send push notifications to registered devices" radar = softwareSystem "RADAR" "Roche Analytics for Reporting and product usage KPIs" bda = softwareSystem "BDA" "Big Data and Analytics" } group "RDCP" { rdcpPortal = softwareSystem "HCPPortal" "Web portal for Health Care Professionals" { tags "RocheWeb" } rdcpPatient = softwareSystem "Patient Portal" "Web portal for Patients" { tags "RocheWeb" } rdcpBE = softwareSystem "RDCP" "Backend and services of RDCP" } gluco = softwareSystem "Glucolitycs" "SmartLife Glucolitycs" { glucoBE = container "Glucolitycs.Backend" "Services to collect, integrate data and prediction computation" } mySugr = softwareSystem "mySugr" "Offers patient simplified diabetes management" { myBE = container "mySugr.Backend" { } } } /* A subset of the applications are the mobile apps These are outside of the Roche ecosystem when in use but are build by Roche */ group "Mobile Apps" { confidence = element "Confidence" "Confidence Mobile Application"{ tags "RocheMob" } myFE = element "mySugr.Frontend" { tags "RocheMob" } glucoFE = element "Glucolitycs.MobileApp" "Client mobile application (iOS & Android)" { tags "RocheMob" } } /* Roche manufactures devices that interact with the software systems and are an integral part of the systems */ group "Devices" { cgm = element "CGM Patch" "Roche CGM Path" mp = element "MicroPump" "Accu-Chek Solo Micro Pump" } # relationships between external actors and systems ## PwDs pwd -> confidence "Use app" pwd -> glucoFE "Use app" pwd -> myFE "Use app" pwd -> partner "Use app" pwd -> rdcpPatient "Access portal" ## HCPs hcp -> rdcpPortal "Use portal" # relationship between SW systems, actors and devices confidence -> cgm "Manage" partner -> mp "Pair with" pwd -> cgm "Use device" pwd -> mp "Use device" # relationships between internal actors and software systems com_inv -> comp_inv_app "Use application" # mobiles apps relationships confidence -> apiGW "Access Platform Services" "API call" glucoFE -> apiGW "Access backend" "API call" myFE -> apiGW "Access backend" "API call" # relationships between software systems rdcpPortal -> apiGW "Access services" "API call" rdcpPatient -> apiGW "Access services" "API call" apiGW -> rdcpBE "Access APIs" "API NAT" apiGW -> myBE "Access backend" "API NAT" apiGW -> glucoBE "Access backend" "API NAT" glucoBE -> push_notif "Send push msg" "API/JSON" myBE -> push_notif "Send push msg" "API/JSON" push_notif -> glucoFE "Send notification" push_notif -> myFE "Send notification" ## confidence apiGW -> app_sett "Store/Get data" "API/JSON" apiGW -> fhir_stack "Store/Get data" "API/FHIRLite" ble -> apiGW "Send params" "API/JSON" ## partner partner -> phd_iam "Authorize pairing" "CSR + JSON" ##rdcp rdcpBE -> di_cis "Send data" ## mySugr myBE -> legacy_mys_ingestion "Send data" "File" legacy_mys_ingestion -> fhir_stack "Ingest data" legacy_mys_ingestion -> bda "Conditional Ingestion" di_cis -> fhir_stack "Ingest data" fhir_stack -> hcds "Store data" fhir_stack -> rdcpBE "Notify new data" glucoBE -> fhir_stack "Get data" "API/FHIR" glucoBE -> app_sett "Get data" "API/JSON" comp_inv_app -> cs_cis "Get aggregated data" "API/JSON" cs_cis -> fhir_stack "Retrieve data" "API/JSON" cs_cis -> app_sett "Retrieve data" "API/JSON" ## interoperability fhir_stack -> di_inter "Notify & Send new data" "API/FHIR" di_inter -> hcc "Send new data" "API + File" ## analytical layer fhir_stack -> bda "File" fhir_stack -> radar "Kinesis" "File" app_sett -> bda "File" ciam -> bda "File" } 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 "RocheLandscape" { include * } branding { logo documentation_sad/images/static/logo_roche.png } styles { element "RocheGateway" { shape RoundedBox width 3900 background grey } element "CGM Patch" { shape Circle color #0038a8 } element "MicroPump" { shape RoundedBox color #c2b280 } element "RocheHCC" { shape Ellipse background #8fbc8f stroke #ff0000 } element "RocheWeb" { shape WebBrowser } element "Group" { color #c0c0c0 stroke #c0c0c0 strokeWidth 10 } element "Group:Platform" { color #008000 stroke #008000 strokeWidth 10 } } theme https://structurizr.moebiusol.eu/workspace/1/theme } }