workspace "Roche Account Deletion" "System and solutions to archive and delete patient data from transactional layer of the domains in Roche ecosystem" { /* 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.adoc (number should be 0001 .. 0100 .. 0954 ..). NOTE: file format is AsciiDoc */ !docs documentation_sad model { // the Roche ecosystem representation, with all solutions roche = enterprise "Roche Diabetes Care" { // internal users 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" dops = person "DevOps" "The DevOps user is an internal Roche user responsible for the operation and maintenance of the infrastructure" ddog = softwareSystem "Infra.Observability" "Store logs and metrics" infra_mng = softwareSystem "Infra.Management" "Cloud infrastructure management" group "Platform" { apiGW = softwareSystem "Platform.ApiManager" "The Roche ecosystem API Gateway used to NAT all the traffic to / from each solution and service" rdac = softwareSystem "Platform.RDAC" "Roche Diabetes Account Center is the portal where a patient (user) can manage her/his account" { rdac_web = container "Platform.RDAC.Web" "The web interface that will allow the user to initiate the deletion of the account including the confirmation and verification screens" { } rdac_be = container "Platform.RDAC.Backend" "The backend for the account deletion web frontend" } di_es = softwareSystem "Platform.EventStreamer" "Platform message bus" "RocheMessageBus"{ tags "RocheMessageBus" } ciamcm = softwareSystem "Platform.CIAMCM" "Customer Identity and Access Management and Consent Management is the central storage for identity and consents of each user" fhir = softwareSystem "Platform.FHIRStack" "Diagnostics and medication domain" app_settings = softwareSystem "Platform.AppSettings" "" //group "Analytical Systems" { bda = softwareSystem "Platform.BDA" "RDC Data Lake" radar = softwareSystem "Platform.RADAR" "RDC KPI data processing solution" //} legal_archive = softwareSystem "Platform.LegalArchive" "Solution to gather all the patient data and archive the needed" } group "RDCP" { ppm = softwareSystem "RDCP.PlatformPatientManagement" "The solution responsible for storing patient demographic data (incl. IDs associated with the patient)" rdcp_be = softwareSystem "RDCP.Backend" "Store patient related data" } group "Personal Applications" { glucicheck = softwareSystem "Glucicheck" "" { gluci_check_app = container "Gluci-check app" "" { tags "RocheMob" } glucicheck_be = container "Gluci-Check Backend components and services" { gluci_check_storage = component "S3 bucket for Gluci-Check" "" { tags "RocheStorage" } sts = component "STS microservices" "" { } } } glucolitycs = softwareSystem "Glucolitycs" "" { glucolitycs_app = container "Glucolytics app" { tags "RocheMob" } glucolitycs_be = container "Glucolitycs backend"{ } } } other_domains = softwareSystem "Other solutions" "Other solutions, current or future, that stores patient data (no duplications or caches)" } // The external actors and dependencies (any other system, solution, software, etc.) Pwd = person "PwD" "Patient with diabetes is the end user of the solution / system; is always considered an 'external' user" { tags "RocheExtPerson" } // relationships between people and software systems rel_pwd_rdac = PwD -> rdac_web "Use" rel_rdac_web_be = rdac_web -> rdac_be "Call API" "API/JSON" rel_rdac_be_es = rdac_be -> di_es "Send Notification Message" "Notification" dss -> rdac_be "Stop process / Retry in case of failure / Maintenance" //dops -> roche "Manage infrastructure" di_es -> legal_archive "Account deletion request" "Notification" infra_mng -> legal_archive "Archiving status" "Infrastructure Message" dops -> infra_mng "Manage infrastructure" // relationships of notification fan-out di_es -> ppm "Fan-out deletion request message" "Notification" di_es -> ciamcm "Fan-out deletion request message" "Notification" di_es -> fhir "Fan-out deletion request message" "Notification" di_es -> app_settings "Fan-out deletion request message" "Notification" di_es -> radar "Fan-out deletion request message" "Notification" di_es -> bda "Fan-out deletion request message" "Notification" di_es -> rdcp_be "Fan-out deletion request message" "Notification" di_es -> glucicheck_be "Fan-out deletion request message" "Notification" di_es -> glucolitycs_be "Fan-out deletion request message" "Notification" di_es -> other_domains "Fan-out deletion request message" "Notification" // relationships of deletion status ppm -> di_es "Deletion status message" "Notification" ciamcm -> di_es "Deletion status message" "Notification" fhir -> di_es "Deletion status message" "Notification" app_settings -> di_es "Deletion status message" "Notification" radar -> di_es "Deletion status message" "Notification" bda -> di_es "Deletion status message" "Notification" rdcp_be -> di_es "Deletion status message" "Notification" glucicheck_be -> di_es "Deletion status message" "Notification" glucolitycs_be -> di_es "Deletion status message" "Notification" other_domains -> di_es "Deletion status message" "Notification" // relationships of data archival - NOT needed /* ppm -> legal_archive "Send data" "API/JSON" ciamcm -> legal_archive "Send data" "API/JSON" fhir -> legal_archive "Send data" "API/JSON" app_settings -> legal_archive "Send data" "API/JSON" //radar -> legal_archive "Send data" "API/JSON" //bda -> legal_archive "Send data" "API/JSON" rdcp_be -> legal_archive "Send data" "API/JSON" glucicheck_be -> legal_archive "Send data" "API/JSON" glucolitycs_be -> legal_archive "Send data" "API/JSON" other_domains -> legal_archive "Send data" "API/JSON" */ rdac_be -> ddog "Send logs" dops -> ddog dss -> ddog } views { systemlandscape "Account_Deletion" { include * animation { PwD dss dops infra_mng apiGW ddog rdac di_es legal_archive ciamcm ppm fhir app_settings bda radar rdcp_be glucicheck glucolitycs other_domains } } branding { logo documentation_sad/images/static/logo_roche.png } theme https://structurizr.moebiusol.eu/workspace/1/theme } }