edc-retinopathy
Add a diabetic retinopathy screening form and REST API for integrating with a fundus camera in a clinicedc project.
A clinician creates an EyeExamRegister instance in the EDC before the exam. The camera software (fundus-camera-watchdog) resolves the subject, uploads eye images, DICOM files and reports, then checks status.
Requires django>=5.2,<6.1 and djangorestframework>=3.16.0
REST API
All endpoints use TokenAuthentication.
- GET /api/retinopathy/ping/
Health check. Returns {"status": "ok"}.
- POST /api/retinopathy/resolve/
Confirm a EyeExamRegister exists for a subject. Payload:
{"subject_identifier": "105-10-0001-2"}Returns 200 with eye_exam_register_id and uploaded list, or 404 if no session exists.
- POST /api/retinopathy/<subject_identifier>/<file_type>/
Upload a file. Multipart form with file, capture_datetime, and optional checksum (SHA-256). Valid file types:
left, right – eye images (JPEG/PNG)
left_dicom, right_dicom – DICOM files
left_report, right_report, report – reports (PDF/HTML)
Multiple files per type are accepted. Files are stored with their original filenames under <storage_dir>/images/<session_pk>/.
- GET /api/retinopathy/<subject_identifier>/status/
Session status: uploaded types, missing types, and whether the session is complete.
Models
- EyeExamRegister
Created by the clinician in the EDC. Links to RegisteredSubject and stores contra-indication screening fields, report type (combined / per-eye), and device ID.
- SessionFile
One record per uploaded file. Tracks file type, original filename, stored path, content type, size, SHA-256 checksum, and capture timestamp.
Settings
- EDC_RETINOPATHY_STORAGE_DIR
Base path for file storage. Must contain an images/ subdirectory.
- EDC_RETINOPATHY_MAX_FILE_SIZE_MB
Maximum upload size in MB (default: 10).
- EDC_RETINOPATHY_VISIT_DATETIME_FILTER
Datetime filter for Call List. If set, filters the list of subjects to those who attended AFTER the given datetime.
Metadata
Release files for edc-retinopathy 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| edc_retinopathy-1.4.0.tar.gz | 42.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| edc_retinopathy-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 121.0 kB
Release files / edc_retinopathy-1.4.0.tar.gz
| Download URL | edc_retinopathy-1.4.0.tar.gz |
|---|---|
| Size | 42.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a828fe599ee887f90c27e087b37e7e0650e0fc0cfb76d76c42adb25318c8a096
|
|
BLAKE2b-256 checksum How to use checksums |
172b0f4c63b389d563a3352230e3fadebe1a85dddf4d6f28fa31fba7e8d1db06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / edc_retinopathy-1.4.0-py3-none-any.whl
| Download URL | edc_retinopathy-1.4.0-py3-none-any.whl |
|---|---|
| Size | 78.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d0eb5bf3c88a711363584af593b6ff2998dda0577be02843f8bb61d853796812
|
|
BLAKE2b-256 checksum How to use checksums |
f5a6fd287874952351745a4f8349469f1b2860e4e90f038908285f57ed096d71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|