Python SDK for the Cascade Protocol — privacy-first health data serialization in RDF/Turtle
Project description
cascade-protocol
Python SDK for the Cascade Protocol — a privacy-first, local-first standard for serializing personal health data as RDF/Turtle.
Installation
pip install cascade-protocol
With optional extras:
pip install "cascade-protocol[pandas]" # pandas DataFrame integration
pip install "cascade-protocol[validation]" # SHACL validation via pyshacl
pip install "cascade-protocol[notebooks]" # Jupyter notebook support
pip install "cascade-protocol[all]" # Everything
Quick Start
from cascade_protocol import Medication, serialize, validate, Pod
# Create a medication record
med = Medication(
id="urn:uuid:med0-0001-aaaa-bbbb-ccccddddeeee",
medication_name="Metoprolol Succinate",
is_active=True,
dose="25mg",
data_provenance="ClinicalGenerated",
schema_version="1.3",
)
# Serialize to Turtle
turtle = serialize(med)
print(turtle)
# Validate structural integrity
result = validate(turtle)
print(result.is_valid, result.errors)
# Open a Cascade Pod and query records
pod = Pod.open("./my-pod")
meds = pod.query("medications")
# Convert to pandas DataFrame (requires pandas extra)
df = meds.to_dataframe()
print(df.head())
# Reconstruct models from DataFrame
restored = Medication.from_dataframe(df)
Serialization Output
@prefix cascade: <https://ns.cascadeprotocol.org/core/v1#> .
@prefix health: <https://ns.cascadeprotocol.org/health/v1#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<urn:uuid:med0-0001-aaaa-bbbb-ccccddddeeee> a health:MedicationRecord ;
health:medicationName "Metoprolol Succinate" ;
health:isActive true ;
cascade:dataProvenance cascade:ClinicalGenerated ;
cascade:schemaVersion "1.3" ;
health:dose "25mg" .
Supported Data Types
| Class | RDF Type | Description |
|---|---|---|
Medication |
health:MedicationRecord |
Prescription and OTC drugs |
Condition |
health:ConditionRecord |
Medical diagnoses |
Allergy |
health:AllergyRecord |
Allergies and intolerances |
LabResult |
health:LabResultRecord |
Laboratory test results |
VitalSign |
clinical:VitalSign |
Vital sign measurements |
Immunization |
health:ImmunizationRecord |
Vaccine records |
Procedure |
health:ProcedureRecord |
Clinical procedures |
FamilyHistory |
health:FamilyHistoryRecord |
Family health history |
Coverage |
coverage:InsurancePlan |
Insurance coverage |
PatientProfile |
cascade:PatientProfile |
Patient demographics |
ActivitySnapshot |
health:ActivitySnapshot |
Daily activity data |
SleepSnapshot |
health:SleepSnapshot |
Nightly sleep data |
Pod API
from cascade_protocol import Pod
pod = Pod.open("./my-pod")
# Query by data type
meds = pod.query("medications")
vitals = pod.query("vital-signs")
profile = pod.query("patient-profile")
# Iterate records
for med in meds:
print(med.medication_name, med.dose)
# DataFrame conversion
df = meds.to_dataframe()
Parsing Turtle
from cascade_protocol.deserializer import parse, parse_one
# Parse multiple records
meds = parse(turtle_string, "MedicationRecord")
# Parse a single record
med = parse_one(turtle_string, "MedicationRecord")
Namespaces
from cascade_protocol.vocabularies import NAMESPACES, CURRENT_SCHEMA_VERSION
print(NAMESPACES["cascade"]) # https://ns.cascadeprotocol.org/core/v1#
print(NAMESPACES["health"]) # https://ns.cascadeprotocol.org/health/v1#
print(CURRENT_SCHEMA_VERSION) # 1.3
Privacy & Security
- Zero network calls during normal operation
- All processing is local
- No telemetry or analytics
- Data never leaves your machine
License
Apache 2.0 — see LICENSE.
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cascade_protocol-1.0.0.tar.gz
(42.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cascade_protocol-1.0.0.tar.gz.
File metadata
- Download URL: cascade_protocol-1.0.0.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2b517524c1fb605d30d86563df7124deec11e3928ebef0952dcad6cd67b22ce
|
|
| MD5 |
837875a7b576be79cac544e85ab22572
|
|
| BLAKE2b-256 |
6b69835c24d72e52ad298646881681f4aa481b926ec0b0492189dd278dedfa82
|
File details
Details for the file cascade_protocol-1.0.0-py3-none-any.whl.
File metadata
- Download URL: cascade_protocol-1.0.0-py3-none-any.whl
- Upload date:
- Size: 54.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e01f238c8ee2ef2425e4bb0198ec8476c8ce2cc95bcb2450d5308a3a577e74f1
|
|
| MD5 |
72047c2246e9b7bcff1b668410e6f32c
|
|
| BLAKE2b-256 |
999790dd49d07ad878415f0400034d3f5eeb5f15074d57ef02adf4eb4231f614
|