Contributing¶
Open CIS is an open-source learning project. Contributions are welcome.
Getting Started¶
- Fork the repository on GitHub
- Clone your fork locally
- Follow the Getting Started guide to set up your environment
- Create a feature branch from
main
Development Workflow¶
- Make your changes
-
Run tests and linting:
-
Commit with a clear message
- Push to your fork and open a pull request
Code Standards¶
- Python: Type hints everywhere, all functions async,
httpxfor HTTP (neverrequests) - TypeScript: Strict mode, no implicit any
- Database: Prisma async-only
Project Structure¶
open-cis/
├── api/ # FastAPI backend
│ ├── src/
│ │ ├── ehrbase/ # EHRBase integration
│ │ ├── patients/ # Patient module (router, service, repository, schemas)
│ │ └── main.py # App entrypoint
│ ├── templates/ # OPT template files
│ └── tests/
├── web/ # Vue 3 frontend
│ └── src/
│ ├── pages/ # Route components
│ ├── stores/ # Pinia state
│ ├── composables/ # Composition functions
│ └── types/ # TypeScript types
├── docs/ # Documentation
│ ├── adr/ # Architecture Decision Records
│ ├── prd/ # Product Requirements Documents
│ ├── brand/ # Brand kit
│ └── site/ # This documentation site (MkDocs)
└── docker-compose.yml # Local infrastructure
Areas for Contribution¶
- oehrpy SDK: Help close the coverage gaps (composition update, versioning, new builders)
- Clinical templates: Add new openEHR templates and corresponding UI
- Documentation: Improve guides, add examples, fix typos
- Testing: Increase test coverage for API and frontend