Skip to content

Commit

Permalink
Staged Prototype (#1)
Browse files Browse the repository at this point in the history
* Add solution file

* Add Clean Arch Layers

4 project stubs (Domain, Application, Infrastructure and WebUI) WebUI.
WebUI project is a ASP.NET Core API project for React SPA backend plus
react ClientApp

* Add Tests folder with project stubs

* Add Dockerfile for ORRA SPA and .dockerignore

* Add Security Token Service (sts) Iproject template.

IdentityServer4 dotnet template with quickstart UI added.

* Add Quickstart UI in startup.cs

* Add tempkey.jwk to gitignore file

* Update for .Net 5 Framework

* Set logging level and hide bin,obj from Explorer

* Replace react app with new react TS template

* Add SwaggerUI for RESTful API documentation

* Add appsettings.[envrionment].json to gitignore

* Remove appsettings.Development.json from git

* Update Dockerfile to target net5.0 images

* Add a few draft domain objects

* Add database context and configuration of entities

* Create Seed class to seed sample data into db

* Extend IServiceCollection to abstract services

Created an extension services class to keep related services
within thier area and then inject them into the IoC container in
the main project (WebUI)

* Wire up db migration and seeding data on start

* Add an AuditableEntity base domain class

* Add logic for AuditableEntity

Added the setting of datetime against creation or
modification attributes when saved.
Added the stubs/interfaces for setting userid references.

* Add .db files to gitignore

* Add DateTimeService as Transient class to services

* Initial ef Migration to generate sql to create db

* git ignore shm and wal files for sqlite db

* Rearranged structure of react client-app,
started to mock out basic landing page.

* Fixed the WebUI namespace to ORRA.WebUI to put
it in line with the other projects.

Also added some local setting for VSCode dev enviro

* Setting up basics for Intergration Testing

* First Draft of Use Case Diagrams

* First Draft submitAssuranceRequest Activity Diag.

* First Draft of EntitiesConceptERD

* Started to add some simple entities to populate db

* Simple API endpoints for Company and Procedures

* Change from sqlite database to postgreSQL

Change to support Respawn in testing which only a few major RDBMSs

* add local setting for sqltools connection

* First successful failing test

* first passing test for list of companies
and related dept.

* Refactored to use Automapper Test passed

* Implemented validation behaviour in the api request pipeline
using the FluentValidation package

* Add Proxy To SPA Dev Server to improve dev cycle

* Fix swaggerUI OpenAPI tool

* First drafts on Higher Level Design Diagrams

* throw an NotFoundException if FindAsync returns
null

* correct formatting issue on landing page

* add some images for landing page

* install some node packages to the client app

Axios, MobX and MobX-react-lite, react-router, uuid

* name change from ORRA to ORRAS

* stub out simple layout and dashboard page

* start witting info for design spec

* Addtions to Documentation

Added Pages for User and Technical Docs
Added Study Assurance Request Feature Design Docs

* fix for migrations not running at startup

* fix to launch.json setting for name change

* rename swagger openapi ui app title

* small addtion to docs on assurancerequest feature

* change client-app to use ant design ui components

* updated home docs page and corrected md styles

* added pages for personas

* organise diagrams in docs folder

* correct naming error on landing page

* correction to readme copyright notice

* stubed out a login form and added mobx stores for
state management

* Added ResearchStudy domain entity.
connected it db context, updated schema and seeded examples

* Added Studies API controller.
Implemented a GetStudies endpoint.

* fixed a test in CreateCompanyTests

* Added API agent with Axios http client
for managing client-side http requests

* Refactor to avoid state change outside mobx store

* add CORS policy and temporary removal of https

* add basic processing of api request response
displayed examples studies on page

* add validation Exception behaviour unit tests

* changed browser tab app name and icon

* Add basic handling of api errors to client-app

* Move all CQRS classes into Features parent folder

* Add Create Company endpoint

* Updated packages to target latest .net runtime

* Add aspnet Identity and seed test user accounts

* Add AccountController

* Add Login form, token handling
and state for persisting login

* Add GetStudy API endpoint

* Add study details page prototype

* Add fixes from Roslyn analysis

* Add package for code analysis metrics

* switch db provider to sqlServer
connected to AzureDb

* removed setting of Id fields in seed
sqlserver takes care of identity fields in tables

* replace hardcoded api base url with react env vars

* applied fixes for warnings

* removal of unused sqite config

* add privateroute to most routes
redirect to root url if user is not logged in

* fix for test error component

* Change dashboard to home and tweaked UI

* Add seeding of testaccounts from json file

* add AuthorizeFilter to req. auth for API endpoints

* add addtional descriptions to study page

* add docs update to incoprate some design diagrams

* fix for line merge conflict
  • Loading branch information
D-BowdreyR authored Jun 16, 2021
1 parent 8e7312a commit a76eafc
Show file tree
Hide file tree
Showing 415 changed files with 90,802 additions and 23 deletions.
10 changes: 10 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*/bin
*/obj
.dockerignore
.env
.git
.gitignore
.vs
.vscode
**/.toolstarget
.idea
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -431,3 +431,15 @@ $RECYCLE.BIN/
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
sts/MedicalPhysicsIdentity/tempkey.jwk

# ignore appsettings configuration files
**/appsettings.[Dd]evelopment.json
**/appsettings.[Ss]taging.json
**/appsettings.[Pp]roduction.json
src/WebUI/orra.db
src/WebUI/orra.db-shm
.gitignore
src/WebUI/orra.db-wal
tests/Application.IntegrationTests/appsettings.json
src/Infrastructure/Persistence/UserAccountSeed.json
36 changes: 36 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/src/WebUI/bin/Debug/net5.0/ORRAS.WebUI.dll",
"args": [],
"cwd": "${workspaceFolder}/src/WebUI",
"stopAtEntry": false,
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
25 changes: 25 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"files.exclude": {
"**/bin": true,
"**/obj": true
},
"sqltools.connections": [
{
"previewLimit": 50,
"driver": "SQLite",
"name": "orra_sqllite",
"database": "${workspaceFolder:ORRA_SPA}/src/WebUI/orra.db"
},
{
"previewLimit": 50,
"server": "localhost",
"port": 5432,
"askForPassword": true,
"driver": "PostgreSQL",
"database": "ORRA",
"name": "ORRA",
"username": "postgres"
}
],
"dotnet-test-explorer.testProjectPath": "**/*Tests.csproj"
}
42 changes: 42 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/WebUI/WebUI.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/src/WebUI/WebUI.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"${workspaceFolder}/src/WebUI/WebUI.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}
131 changes: 131 additions & 0 deletions ORRAS.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{76FB5926-609B-414B-A335-67B9793C9469}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application", "src\Application\Application.csproj", "{DC4450EB-511B-4E47-835B-E488A423F197}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain", "src\Domain\Domain.csproj", "{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Infrastructure", "src\Infrastructure\Infrastructure.csproj", "{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebUI", "src\WebUI\WebUI.csproj", "{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2D4BF6AF-0BB3-4183-888F-D7DD11143E63}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application.IntegrationTests", "tests\Application.IntegrationTests\Application.IntegrationTests.csproj", "{8FC674CA-E504-48F5-8849-361FAE36BAA9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application.UnitTests", "tests\Application.UnitTests\Application.UnitTests.csproj", "{C385A757-2CCB-4752-A10E-E05038976F28}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Domain.UnitTests", "tests\Domain.UnitTests\Domain.UnitTests.csproj", "{DB788D78-FDC2-4490-8CF8-DD88E371239A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x64.ActiveCfg = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x64.Build.0 = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x86.ActiveCfg = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Debug|x86.Build.0 = Debug|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|Any CPU.Build.0 = Release|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|x64.ActiveCfg = Release|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|x64.Build.0 = Release|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|x86.ActiveCfg = Release|Any CPU
{DC4450EB-511B-4E47-835B-E488A423F197}.Release|x86.Build.0 = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x64.ActiveCfg = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x64.Build.0 = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x86.ActiveCfg = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Debug|x86.Build.0 = Debug|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|Any CPU.Build.0 = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x64.ActiveCfg = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x64.Build.0 = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x86.ActiveCfg = Release|Any CPU
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1}.Release|x86.Build.0 = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x64.ActiveCfg = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x64.Build.0 = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x86.ActiveCfg = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Debug|x86.Build.0 = Debug|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|Any CPU.Build.0 = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x64.ActiveCfg = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x64.Build.0 = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x86.ActiveCfg = Release|Any CPU
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4}.Release|x86.Build.0 = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x64.ActiveCfg = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x64.Build.0 = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x86.ActiveCfg = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Debug|x86.Build.0 = Debug|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|Any CPU.Build.0 = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x64.ActiveCfg = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x64.Build.0 = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x86.ActiveCfg = Release|Any CPU
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15}.Release|x86.Build.0 = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x64.ActiveCfg = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x64.Build.0 = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x86.ActiveCfg = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Debug|x86.Build.0 = Debug|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|Any CPU.Build.0 = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x64.ActiveCfg = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x64.Build.0 = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x86.ActiveCfg = Release|Any CPU
{8FC674CA-E504-48F5-8849-361FAE36BAA9}.Release|x86.Build.0 = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x64.ActiveCfg = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x64.Build.0 = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x86.ActiveCfg = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Debug|x86.Build.0 = Debug|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|Any CPU.Build.0 = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|x64.ActiveCfg = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|x64.Build.0 = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|x86.ActiveCfg = Release|Any CPU
{C385A757-2CCB-4752-A10E-E05038976F28}.Release|x86.Build.0 = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x64.ActiveCfg = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x64.Build.0 = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x86.ActiveCfg = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Debug|x86.Build.0 = Debug|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|Any CPU.Build.0 = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x64.ActiveCfg = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x64.Build.0 = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x86.ActiveCfg = Release|Any CPU
{DB788D78-FDC2-4490-8CF8-DD88E371239A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{DC4450EB-511B-4E47-835B-E488A423F197} = {76FB5926-609B-414B-A335-67B9793C9469}
{14FA4301-58F2-4BE2-9030-CAD4B3957DF1} = {76FB5926-609B-414B-A335-67B9793C9469}
{F63C67F8-53D5-4BC2-A2A0-A45DAD801AE4} = {76FB5926-609B-414B-A335-67B9793C9469}
{3332F707-8F5F-4CF9-B0AF-0DB2BA095C15} = {76FB5926-609B-414B-A335-67B9793C9469}
{8FC674CA-E504-48F5-8849-361FAE36BAA9} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63}
{C385A757-2CCB-4752-A10E-E05038976F28} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63}
{DB788D78-FDC2-4490-8CF8-DD88E371239A} = {2D4BF6AF-0BB3-4183-888F-D7DD11143E63}
EndGlobalSection
EndGlobal
15 changes: 9 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@

A software development project to re-design and build a replacement system for the current Oxford Research Radiation Assurance (ORRA) software system used for the coordination and management of clinical governance and technical assurance activities undertaken at the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures.

The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients.
It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share.
### Current ORRA System

This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product.
The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients. It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share.

![Current ORRA System](docs/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg)

## Tools being used
## Project Technical Stack

This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product.

The solution will be built with:

Expand All @@ -33,12 +36,12 @@ The solution will be built with:

- Docker for containerization of App, Databases, and STS

Concepts/Design Patterns:
### Concepts/Design Patterns:

- CQRS ( Command Query Responsibility Segregation) Pattern
- Mediator Pattern

## Git Workflow
## Project Git Workflow

This is mostly a Solo project, but the structure of this repository will follow some best practices in terms of Git Flow.
This repository is divided into three main parts/branches:
Expand Down
49 changes: 33 additions & 16 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,50 @@
# Oxford Research Radiation Assurance (ORRA) Single Page Application (SPA)
# Oxford Research Radiation Assurance Service (ORRAS)

_MSc Clinical Science (Clinical Bioinformatics Physical Sciences) Research Project_
:blue_book:_MSc Clinical Science (Clinical Bioinformatics Physical Sciences) Research Project_

This is a project to re-design and build a replacement for the current ORRA system used for the coordination and management of many clinical governance and technical assurance activities that must be undertaken across the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures.
:pencil2: **Project Author:** [_Daniel Bowdrey-Roberts_](](https://github.com/D-BowdreyR)

The current ORRA application was built on VB6 UI/Application with dependencies installed onto Windows only clients. It runs from a internally hosted file share and connects to an MS Access Database for for data persistence, that is hosted on the same file share.
:scroll: Copyright Notice: _This repository and its content is Copyright © 2021 Oxford University NHS Foundation Trust_

This re-designed system will utilise modern web frameworks and development processes to produce a scalable, supportable and extensible system.
[GitHub Licensing Terms](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository#choosing-the-right-license)

## About This Project

A software development project to re-design and build a replacement system for the current Oxford Research Radiation Assurance (ORRA) software system used for the coordination and management of clinical governance and technical assurance activities undertaken at the Oxford University Hospital NHS Foundation Trust (OUH NHS FT) for the site approval of clinical research projects that involve ionising radiation research exposures.

### Current ORRA System

The current ORRA software application is built on a Visual Basic 6 and is only compatible with Microsoft Windows clients. It runs from a internally hosted network file share and connects to an MS Access Database for data persistence, which is also hosted on the same file share.

![Current ORRA System](/technicaldocs/diagrams/Architecture/CurrentSystemPhysicalArch.svg)

## Project Technical Stack

This re-design will utilise modern backend and frontend web frameworks and employ software engineering processes to produce a scalable, supportable and extensible product.

The solution will be built with:

- SPA Backend: ASP.NET Core API
- SPA Frontend: React.js
- ORM: - Entity Framework Core
- RDMS: (yet to be decided) either:
- MySQL
- MSSQL
- Authen/Author: Custom Built Security Token Service (STS) using IdentityServer4 Framework
- Utilising OAuth and OpenID Connect Protocols
- Single Page Application (SPA) Backend: ASP.NET Core API (.Net 5)
- Single Page Application (SPA) Frontend: React.js
- Object Relational Mapper (ORM): - Entity Framework Core
- Relational Database Management System (RDMS): PostgreSQL

- Authentication /Authorization:
- utilising a OAuth 2.0 and OpenID Connect Web Security Protocols
- JWT Tokens
- with a view to using a custom Built Security Token Service (STS) using IdentityServer4 Framework

- Docker for containerization of App, Databases, and STS

Concepts/Design Patterns:
### Concepts/Design Patterns:

- CQRS ( Command Query Responsibility Segregation) Pattern
- Mediator Pattern

## Git Workflow
## Project Git Workflow

This is mostly a Solo project, but the structure of this repo will follow some best practices in terms of Git Flow. This repo is divided into three main parts/branches:
This is mostly a Solo project, but the structure of this repository will follow some best practices in terms of Git Flow.
This repository is divided into three main parts/branches:

1. Main and origin (remote)
2. Develop
Expand Down
6 changes: 5 additions & 1 deletion docs/_sidebar.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
<!-- docs/_sidebar.md -->
* [Home](/)
* [Home](/)

* [User Docs](/userdocs/)

* [Technical Docs](/technicaldocs/)
1 change: 1 addition & 0 deletions docs/technicaldocs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Technical Documentation
11 changes: 11 additions & 0 deletions docs/technicaldocs/_sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!-- docs/_sidebar.md -->
* [Home](/)

* [Technical Docs](/technicaldocs/)
* [Design](/technicaldocs/design/)
* [Features](/technicaldocs/design/features/)
* [Assurance Request](/technicaldocs/design/features/AssuranceRequest/)
* [Feature 2]()
* [Feature 3]()

* [Quality Assurance](/technicaldocs/qualityassurance/)
Loading

0 comments on commit a76eafc

Please sign in to comment.