Return to Theoretical Simplified System using DIDO
Europe on the other hand has a single unified approach to patient data under the General Data Protection Regulation (GDPR) 2)
| What RIght? | What does it mean for Patients? |
|---|---|
| To access one’s own personal data |
|
| Right to data portability/to transfer your data from one data controller to another |
|
| Right to object to the processing of your data | Under the new regulation you can object to the
processing of your data by a controller under these
circumstances:
|
| Right to rectification or erasure of data | You can ask for the rectification of inaccurate personal data (e.g. in your medical record) and incomplete data completed |
| Right to erasure (so-called “right to be forgotten”) |
You can have your data erased. This is the so-called
“right to be forgotten”. This is especially the case if:
|
Note: The contents of a DIDO are [[dido:public:ra:xapend:xapend.a_glossary:i:immutable|immutable]], therefore, traditional ACL permissions such as Write and Delete have no meaning. However, it is possible for older content to be replaced by newer content requiring the new content to point to the previous content. It is also possible to mark content as deleted.
| Operation | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CREATE NEW | This creates a new person in the Medical DIDO. For example, a new patient is added to the Medical DIDO. The CREATE NEW command adds the new patient and returns a patient-specific couple of AsymmetricKeys (i.e., publicKey and privateKey). The public key is used to uniquely identify the patient within the medical DIDO and can be used to encrypt any information for that particular patient. The privateKey is used to decrypt the information in the Medical DIDO for that specific patient. The privateKey NEEDS TO BE KEPT PRIVATE! The ECHO command is used to place information onto the console log.
Some of the fields used to describe a patient might be The following is a proof of concept for creating a new patient in the Medical DIDO. patientKeys AsymmetricKeys = CREATE NEW { "patient" : { "name": "Lilly McSmythe", "birthdate": "11/25/1931", "gender" : "F", "maritalSatus" : "married" "address": "123 Avocado Way, San Diego, CA, USA, 92101" } }; ECHO patientKeys.publicKey; "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E" |
||||||||||||
| MANAGE ACCESS | Updates or modify the Access Control List data.
The Patient Data Object (sometimes referred to as a Smart Contract) maintains its own internal Access Control List (ACL) that contains users, medical roles and access roles (i.e., READ, WRITE, etc). In this example, we add two doctrs to the list:
For example: primaryPhysician MedicalDoctor { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D55555", "name" : "Dr. Jane Lee Gupta", "phone" : "1-619-555-1212", "email" : "[email protected]" } MANAGE ADD { patient : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D55555" "primaryPhysician" : primaryPhysician.id } } MANAGE REPLACE { patient : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "cardioVascularMd" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2DDDDD" } } MANAGE GRANT { patient : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "cardioVascularMd" : "READ, UPDATE, UPLOAD" } } MANAGE GRANT { patient : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "primaryPhysician" : "SEARCH" } } |
||||||||||||
| MARK AS DELETED | Mark a person as deleted in the Medical DIDO. For Example: DELETE { "patient" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D55555" } |
||||||||||||
| UPDATE CONTENT | Update a person's information in the Medical DIDO. For example:UPDATE { "patient" : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E",, "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D5555" "maritalStatus" : "Widowed", "maritalStatusChangeDate" : "11/25/2021" } } UPDATE { "patient" : { "id" : userKeys.publicKey, "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D5555" "DateOfDeath" : "11/25/2031" } } |
||||||||||||
| UPLOAD ANCILLARY DATA | This allows for Ancillary data to be uploaded to the Patients Medical DIDO. Ancillary data is data that is associated with the patient such as vitals, images, lab result, etc.UPLOAD { "patient" : { "id" : patientKeys.publicKey, "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D5555" "ancillaryData" : { "image": { "type": "xray", "view": "posteroanterior", "date": "5/7/2021" }, "image": { "type": "xray", "view": "Decubitus", "date": "5/7/2021" } } } } |
||||||||||||
| ERASE | Removes the Personal Identifiable Information (PII) information from the patient in the Medical DIDO allowing the patient to be forgotten in compliance with General Data Protection Regulation (GDPR) ERASE { "patient" : patientKeys.publicKey } |
The General Data Protection Regulation (GDPR), Data Protection Act 2018 and the California Consumer Privacy Act (CCPA) prohibit information from being “kept for no longer than is necessary”. How long should a medical record be kept by a medical provider? An insurance provider? Within the USA, its state-by-state, see: https://www.healthit.gov/sites/default/files/appa7-1.pdf
| State | Medical Doctors | Hospitals |
|---|---|---|
| California | California: Indefinitely, if possible. See CMA ON-CALL: The California Medical Association’s Information-On-Demand Service, available at HealthIT.gov(accessed August 14, 2008). |
Adult patients 7 years following discharge of the patient. |
| Connecticut | 7 years from the last date of treatment, or, upon the death of the patient, for 3 years. Conn. Agencies Regs. § 19a-14-42 (2008). |
10 years after the patient has been
discharged. |
| EXPIRE | The Medical Record expires after a certain amount of time, after a certain date, or when an event occursMedical DIDO. For Example:EXPIRE { "patient" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "onDate" : "20210508" } EXPIRE { "patient" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "after" : "128 hours" } EXPIRE { "patient" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "when" : "DEATH_OF_PATIENT" } |
|---|