Only this pageAll pages
Powered by GitBook
1 of 36

Care | Design Document

Loading...

Features

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Data Organization

Loading...

Loading...

Loading...

Loading...

Medical Records

Loading...

Loading...

Loading...

Loading...

Facility

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Schema

Loading...

Loading...

Security

Loading...

Loading...

Loading...

Notifications and Alerts

Loading...

Facility Dashboard

  • Number of beds

  • Number of ICU beds

  • Number of Paitens

  • Number COVID positive Patients

  • Stock (Inventory along with count)

Triage Summary Collection

Capture daily triage details from each hospital

District Dashboard

  • number of facilities

  • facility stats

  • totoal number of patients admited

  • total number of patients positive

  • Number of ICU beds free

  • show where the ICU beds are avilable

  • Number of people under observation

Facility stats

  • Number of beds

  • Number of ICU beds

  • Number of Paitens

  • Number COVID positive Patients

State Dashboard

  • Number of beds avilable

  • Number of patients admitted

  • Nubmer of COVID postive patients

  • Number of people under observation

  • Number of cases reported today

  • Number of COVID postive reported today

District wise stats

  • Number of beds avilable

  • Number of patients admitted

  • Nubmer of COVID postive patients

  • Number of people under observation

coronasafe.network

Design Document

Design Document

Coronasafe Care is a free and open-source disaster management system that is used by the National Health Mission, the Government of India, and various state governments for reimaging digital war rooms. The solution that students got an opportunity to intern with has supported 3.34*Lac patient management and 1.29* Lac ambulance shiftings and is approved by the United Nations as a

Sample Management

Generate ICMR form the user data

District

State

Patient Record

Patient Consulation details Daily Rounds for each consultation Option to tranfer a medical records from one hospital to another.

June 15, 2020

101KB
my_project_visualized.pdf
PDF
Open
Data Schema as on June 15 2020

Mar 1, 2021

8MB
my_project.png
image
Open
CARE Schema

Privacy and Data Protection (PDP)

Details to be Added

 id: AutoField
 state: ForeignKey (id)
 name: CharField 
 id: AutoField
 name: CharField 

Consultation History

 id AutoField
 facility ForeignKey (id)
 patient ForeignKey (id)
 referred_to ForeignKey (id)
 admission_date DateTimeField
 admitted BooleanField
 admitted_to IntegerField
 bed_number CharField
 category CharField
 created_date DateTimeField
 deleted BooleanField
 discharge_date DateTimeField
 examination_details TextField
 existing_medication TextField
 external_id UUIDField
 modified_date DateTimeField
 other_symptoms TextField
 prescribed_medication TextField
 suggestion CharField
 symptoms MultiSelectField
 symptoms_onset_date DateTimeField 

Beds

room_id: Room.id
icu_bed: bool

Daily Rounds

 id AutoField
 consultation ForeignKey (id)
 additional_symptoms MultiSelectField
 current_health IntegerField
 other_details TextField
 other_symptoms TextField
 patient_category CharField
 physical_examination_info TextField
 recommend_discharge BooleanField
 temperature DecimalField
 temperature_measured_at DateTimeField 

Building

Details of buildings a facility has

 id AutoField
 facility ForeignKey (id)
 created_date DateTimeField
 deleted BooleanField
 external_id UUIDField
 modified_date DateTimeField
 name CharField
 num_buildings IntegerField
 num_floors IntegerField
 num_rooms IntegerField

Room

 id AutoField
 building ForeignKey (id)
 beds_capacity IntegerField
 created_date DateTimeField
 deleted BooleanField
 external_id UUIDField
 floor IntegerField
 modified_date DateTimeField
 num CharField
 occupied_beds IntegerField
 room_type IntegerField 

Stock (Inventory along with count)

Number of cases reported today

  • Number of COVID postive reported today

  • State Wide Capacity Map
    Hotspot map with capacity overlay
    Sample Dashboard Ernakulam
    Tech Stack

    Backend API - Django Frontend - React Typescript Database - Postgres - RDS with read replica Hosting Backend - EKS with amazon ACM cert Hosting Frontend - EC2 - Nginx with Cloudflare origin cert and proxy Version control - Github Communication - Slack Ci/CD - Circle Ci

    Production

    Care is deployed in production at different states in India. The production instance for Kerala/Ernakulam is deployed at

    Frontend: care.coronasafe.network Backend API: http://careapi.coronasafe.network/

    Staging

    Frontend: care.coronasafe.in Backend API: careapi.coronasafe.in/

    Testing

    Ci/CD: https://circleci.com/gh/coronasafe

    API Documentation

    https://careapi.coronasafe.in/swagger https://careapi.coronasafe.in/redoc

    ER Diagram

    Data Visualization

    Task Manager and Issue Tracker

    Status Monitor

    New Relic APM

    Repository

    Backend: https://github.com/coronasafe/care Frontend: https://github.com/coronasafe/care_fe

    Related Applications

    • Telemedicine (WIP)

    • Ambulance and Food Delivery Network (https://logistics.coronasafe.network)

    Features

    Facility Management

    Realtime Capacity Analysis

    Patient Management

    Sample Management

    Patient Record Management

    Inventory Management

    Central Dashboard for GOV

    Central Dashbaord for all facilities

    Digital Public Good.
    Mar 1, 2021
    Sample Request Form
    Printable CMR Referal Form Generated from the system
    Patient Transfer Form

    Telemedicine

    Build telemedicine.coronasafe.network inside care

    This will allow all facilities in the care system to operate their own telemedicine unit seamlessly.

    Summary stats from telemedicine

    Requirments

    1. staff profile with limited data access should be able to log calls

    2. doctor linked to the facility should be able to see the pending calls and associated patent record

    3. The doctor should be able to add consultation

    4. The doctor should be able to schedule a reminder for follow-up.

    5. pending calls, upcoming followups and missed followups should be listed on an index page

    6. The docotor should be able to add a prescription for the patient which can be shared with the patient via SMS.

    7. The pharmacy unit of the facility should be able to mark the status of each prescription given to the patient.

    8. Doctor could be a tele-caller for multiple facilities.

    9. A facility admin should be able to assign calls to a doctor

    Changes required in Care

    After Merge

    Sample History

    Data Security

    For the network security of the application we have enforced the following standards.

    1. Web Application Firewall (WAF) Configured at Domain level to prevent access to coronasafe.network from countries like US, China, Hongkong, Pakistan , Russian Federation Etc

    2. Open Web Application Security Project (OWASP) core rule set based WAF rules implemented to provide protection against common attack categories, including Structured Query Language (SQL) Injection and Cross-Site Scripting.

    User

    The platform identifies every one as a user, Basic information that we should collect from everyone

    Roles

    Cyber Security Audit

    1. CERT Certification

    Care has been Security Audited & Assessed as per CERT-IN Guideline & OWASP Standard. The Site & Web Application is fit and safe for hosting under continuous monitoring and observation by Authorized Authorities. The Application/Site has fulfilled the criteria as per CERT-IN Security norms.

    The full certification details can be found here:

    Customised WAF rules created to prevent common attacks and Bot Access
  • Autonomous system number (ASN) based lockdown in WAF against common threat matrix.

  • Sanity Check Based Block and Rate Limiting Enabled

  • Network level Port Blocking allowing only port 80 and 443 from internet in the entire network

  • IP blacklist and lockdown based on Threat Score ( Score Greater than 8 is blocked) based on IP reputation.

  • Customised Content Security policy (CSP) Header implemented to prevent common Clickjacking and other attacks .

  • HTTP Strict Transport Security (HSTS) preloaded domain wide to enforce Hypertext Transfer Protocol Secure (HTTPS) only traffic with a Max Age of 1 year

  • Origin to domain, domain to domain, and domain to User traffic encrypted via Transport Layer Security 1.2 (tls1.2) and above

  • Content Security Policy (CSP) and Certificate Transparency CT violations monitoring done to update threat matrix

  • The Domain Name System Security Extensions (DNSSEC) enabled to prevent domain takeovers .(DNSSEC protects against forged domain name system (DNS) answers. DNSSEC protected zones are cryptographically signed to ensure the DNS records received are identical to the DNS records published by the domain owner.)

  • Speed up of page load speed by the Implementation of Brotli Compression

  • HTTP/2 and HTTP/3(Quick User Datagram Protocol Internet Connections) enabled for faster network speeds

  • Automatic Branch based Continuous integration (CI) and continuous delivery (CD) to prevent unauthorised access.

  • New pods are created before old pods with old code is terminated.

  • Database backups (Snapshots) are created daily at scheduled intervals and stored with Key Management Service (KMS) keys securely inside Cloud Infrastructure without external Access.

  • All server nodes and Volumes and database Instances are Encrypted with KMS based Cryptographic Keys.

  • Database Connectivity allowed only using internal Private Network and allowed for the backend host only.

  • Virtual Private Network(VPN) + Jump Host( Bastion Host) Based Server Maintenance (Cluster Management Shell ) to enhance security.

  • Reverse Proxying all network traffic to mask origin IP to enhance security. Apart from the above rules, additional measures could be added to enforce maximum security of data

     id AutoField
     consultation ForeignKey (id)
     patient ForeignKey (id)
     atypical_presentation TextField
     created_date DateTimeField
     date_of_result DateTimeField
     date_of_sample DateTimeField
     deleted BooleanField
     diagnosis TextField
     diff_diagnosis TextField
     doctor_name CharField
     etiology_identified TextField
     external_id UUIDField
     fast_track TextField
     has_ari BooleanField
     has_sari BooleanField
     icmr_category IntegerField
     is_atypical_presentation BooleanField
     is_unusual_course BooleanField
     modified_date DateTimeField
     result IntegerField
     sample_type IntegerField
     sample_type_other TextField
     status IntegerField 

    Admin with state level data scope

    District Admin

    User with district level data scope

    Facility Admin

    User with facility level data scope

    Doctor

    User with limited data permissions

    Patient

    User with acess to his/her personal data

    Staff

    User with limited data permissions

    User Type

    Privilege

    Super Admin

    Admin for the entire platform

    State Admin

    Medical History

    PatientRegistration

     id AutoField
     created_by ForeignKey (id)
     district ForeignKey (id)
     facility ForeignKey (id)
     local_body ForeignKey (id)
     meta_info OneToOneField (id)
     nearest_facility ForeignKey (id)
     state ForeignKey (id)
     aadhar_no CharField
     address EncryptedTextField
     age PositiveIntegerField
     blood_group CharField
     contact_with_confirmed_carrier BooleanField
     contact_with_suspected_carrier BooleanField
     countries_travelled JSONField
     countries_travelled_old TextField
     created_date DateTimeField
     date_of_birth DateField
     date_of_receipt_of_information DateTimeField
     date_of_return DateTimeField
     deleted BooleanField
     disease_status IntegerField
     estimated_contact_date DateTimeField
     external_id UUIDField
     gender IntegerField
     has_SARI BooleanField
     is_active BooleanField
     is_medical_worker BooleanField
     modified_date DateTimeField
     name EncryptedCharField
     nationality CharField
     number_of_aged_dependents IntegerField
     number_of_chronic_diseased_dependents IntegerField
     ongoing_medication TextField
     passport_no CharField
     past_travel BooleanField
     patient_search_id EncryptedIntegerField
     phone_number EncryptedCharField
     present_health TextField
     source IntegerField
     year_of_birth IntegerField 

    InventoryItem

    Common table for inventory

     id AutoField
     facility ForeignKey (id)
     item ForeignKey (id)
     created_date DateTimeField
     deleted BooleanField
     external_id UUIDField
     modified_date DateTimeField
     quantitiy IntegerField 

    minimum_stock will vary for each inventory item. It should be captured so that, we could trigger alerts

     id: AutoField
     district: ForeignKey (id)
     local_body: ForeignKey (id)
     skill: ForeignKey (id)
     state: ForeignKey (id)
     age: IntegerField
     date_joined: DateTimeField
     deleted: BooleanField
     email: EmailField
     first_name: CharField
     gender: IntegerField
     is_active: BooleanField
     is_staff: BooleanField
     is_superuser: BooleanField
     last_login: DateTimeField
     last_name: CharField
     password: CharField
     phone_number: CharField
     user_type: IntegerField
     username: CharField
     verified: BooleanField 
    2. Vulnerability Assessment Report by Lucideus

    2. Security Assessment Report by Mozilla Observatory

    Report: Link Password: hawk

    3. SSL Security Test by ImmuniWeb

    Report: Link

    LocalBody

     id AutoField
     district ForeignKey (id)
     body_type IntegerField
     localbody_code CharField
     name CharField 

    Notifications

    Key
    Code
    Content

    PATIENT_CREATED

    20

    Patient Created

    PATIENT_UPDATED

    30

    Patient Updated

    PATIENT_DELETED

    40

    Patient Deleted

    PATIENT_CONSULTATION_CREATED

    50

    Consultation Created

    PATIENT_CONSULTATION_UPDATED

    60

    Consultation Updated

    PATIENT_CONSULTATION_DELETED

    70

    Consultation Deleted

    INVESTIGATION_SESSION_CREATED

    80

    Investigation Created

    INVESTIGATION_UPDATED

    90

    Investigation Updated

    PATIENT_FILE_UPLOAD_CREATED

    100

    Patient File Uploaded

    CONSULTATION_FILE_UPLOAD_CREATED

    110

    Consultation File Uploaded

    PATIENT_CONSULTATION_UPDATE_CREATED

    120

    Daily Round Created

    PATIENT_CONSULTATION_UPDATE_UPDATED

    130

    Daily Round Updated

    PATIENT_CONSULTATION_ASSIGNMENT

    140

    Patient Doctor Assigned

    SHIFTING_UPDATED

    200

    Shifting Request Updated

    https://data.coronasafe.networkdata.coronasafe.network
    https://github.com/orgs/coronasafe/projects/4/views/1github.com

    Facility Inventory

    Join table for facilty and inventory

     id AutoField
     created_date DateTimeField
     deleted BooleanField
     description TextField
     external_id UUIDField
     minimum_stock IntegerField
     modified_date DateTimeField
     name CharField
     unit CharField 

    Patient Registration

    • Unique Patient Registration

    • Capture basic medical data

    • Capture consulation details

    • Capture daily rounds

    Tables

    Medical Records
    care/care/facility/models/notification.py at develop · ohcnetwork/careGitHub

    Facility

     id AutoField
     created_by ForeignKey (id)
     district ForeignKey (id)
     local_body ForeignKey (id)
     state ForeignKey (id)
     address TextField
     corona_testing BooleanField
     created_date DateTimeField
     deleted BooleanField
     external_id UUIDField
     facility_type IntegerField
     is_active BooleanField
     location LocationField
     modified_date DateTimeField
     name CharField
     oxygen_capacity IntegerField
     phone_number CharField
     pincode IntegerField
     verified BooleanField 
    Logo