System Requirement Specification
Introduction
This document describes the system requirements for SPORIFY and outlines the general architecture of the System.
System Overview
SPORIFY is a purpose built solution to match and manage SPOR controlled vocabularies. Our system provides users with a simplified and centralised method to control the data they require for IDMP from the EMA SPOR master data services. Our intuitive user interface helps to manage company terms and match them with externally hosted controlled vocabularies for the following data domains: SPOR (Referentials, Organisations) and (G-SRS, EUTCT) Substances. SPORIFY matches, maintains, synchronises and integrates SPOR data with local terms, saving users up to 75% of time and effort on the initial matching and automatically maintaining the data as SPOR updates into the future with automated updates and alerts. Our out of the box, follow favourites and notification service alerts users to relevant data changes for data they are interested in. No need to manually monitor changing terms, we let you know when something you are interested in changes.
System Architecture
The SPORIFY service acts as a data broker between your internal source system data and externally managed regulatory data such as EMA SPOR and G-SRS. Your source terminologies are imported to SPORIFY where they are automatically or manually matched to the relevant target system data. SPORIFY monitors data changes on target systems and notifies you of changes relevant to you. All matched data is available for export via Excel or API.
Technology
SPORIFY is a cloud hosted SaaS solution hosed in AWS. The service is based Microsoft .Net technology and on angular web technology which requires a modern web browser to run efficiently. We recommend that browsers are kept up to date and we support the latest version of the following:
Browser | Supported Version |
---|---|
Chrome | latest |
Firefox | latest |
Edge | latest |
Internet Explorer | latest |
The system has been tested successfully in Internet Explorer 11.70. However, it is not recommended to run the system in older versions of Internet Explorer due to possible compatibility issues with the angular framework technology used by the system.
Interfaces and services
The SPORIFY background synchronisation service uses the following interfaces and services.
EMA SPOR API (https://spor.ema.europa.eu/ )
G-SRS Substance API (https://gsrs.ncats.nih.gov/ )
EUTCT Substance Lists (http://eutct.ema.europa.eu/ )
XEVMPD Substance List (https://www.ema.europa.eu/documents/other/eudravigilance-extended-medicinal-product-dictionary-xevmpd-substances_en.xlsx)
Sync Schedule
SPORIFY runs a nightly sync to pull data from the above services and APIs, this sync runs at 4am GMT and its duration is dependent on the number of records to update however on average the sync will take approximately 2 hours to complete.
3rd Party Software Components
The SPORIFY Software is using the following original components, in their public known version at the time the version of SPORIFY was released:
Component | Description | Link | License |
---|---|---|---|
Hangfire | Recurring background jobs | ||
ASP.NET Boilerplate | Web Application Framework | ||
AutoMapper | Map objects from one type to another | ||
Swashbuckle | API documentation | ||
Newtonsoft.Json | JSON framework | ||
EntityFramework | Object relational mapper | ||
log4net | Log to various targets | ||
Google.Apis | .NET libraries for Google Cloud APIs | ||
AsyncEx | Helper library for async/await code in .NET | ||
WebGrease | Optimize Javascript, CSS and image files | ||
StackExchange.Redis | Redis client | ||
reCAPTCHA library for .NET | |||
Antlr | Language tool for creating interpreters | ||
CsvHelper | Parse and generate CSV files | ||
IPAddressRange | Library for handling IPv4 and IPv6 addresses | ||
Quartz | Job Scheduler | ||
Castle Project | object invocation framework | ||
Angular | web application framework | ||
jQuery | Javascript framework | ||
SignalR | Websocket framwork | ||
Bootstrap | Javascript framework | ||
jQuery slimScroll | jQuery plugin | ||
jQuery BlockUI | jQuery plugin | ||
js-cookie | browser cookies framework | ||
Uniform | jQuery plugin | ||
localForage | storage library for JavaScript | ||
morris.js | Charts for JavaScript | ||
jQuery MiniColors | jQuery plugin | ||
Apache ECharts | Charts for JavaScript | ||
Raphaƫl | Cross-browser vector graphics | ||
jQuery Sparklines | jQuery plugin | ||
jQuery Color | jQuery plugin | ||
Jcrop Image Cropping Plugin | jQuery plugin | ||
Timeago | jQuery plugin | ||
jstree | jQuery plugin | ||
jQuery Spin | jQuery plugin | ||
sweet-alert | Modal dialog for JavaScript | ||
Push | Javascript desktop notifications | ||
toastr | toastr is a JavaScript library for non-blocking notifications | ||
Moment.js | JavaScript date library | ||
Underscore.js | Library for JavaScript | ||
easy-pie-chart | jQuery plugin | ||
fontawesome-iconpicker | Plugin for Bootstrap | ||
jquery.cookieBar | jQuery plugin | ||
Select2 | jQuery plugin | ||
html2canvas | JavaScript Screenshot framework | ||
jsPDF | Library to generate PDFs in JavaScript | ||
Pagination.js | jQuery plugin | ||
jquery.autofocus.js | jQuery plugin | ||
gmaps.js | Google Map Wrapper |