Modern Python client for the QGenda REST API
Project description
qgendapy
Modern Python client for the QGenda REST API.
Documentation: GitHub Pages Docs
Thank you to JP Jorissen for laying the foundation for this library.
Features
- Full API coverage -- 159 methods across 23 resource groups
- Sync + Async --
QGendaClientandAsyncQGendaClientwith identical APIs - Resource-namespaced --
client.schedule.list(),client.staff.get(key),client.credentialing.workflows() - Typed models -- Dataclass responses with automatic PascalCase-to-snake_case mapping
- OData builder --
OData().select("Name").filter("IsActive eq true") - 3-tier config -- Explicit args > environment variables > INI file
- Drop-in compat -- Migration module for legacy
python-qgendausers
Installation
pip install qgendapy
Quick Start
from qgendapy import QGendaClient, OData
client = QGendaClient(
email="you@hospital.org",
password="your-password",
company_key="your-company-key",
)
# Get this week's schedule
schedule = client.schedule.list(start_date="2024-01-15", end_date="2024-01-21")
for entry in schedule:
print(f"{entry.staff_f_name} {entry.staff_l_name}: {entry.task_name}")
# OData filtering
odata = OData().select("FirstName", "LastName").filter("IsActive eq true")
staff = client.staff.list(odata=odata)
Configuration
# Environment variables
export QGENDA_EMAIL="you@hospital.org"
export QGENDA_PASSWORD="your-password"
export QGENDA_COMPANY_KEY="your-company-key"
# Then just:
client = QGendaClient()
Legacy QGENDA_CONF_FILE INI format is also supported.
Async
from qgendapy import AsyncQGendaClient
async with AsyncQGendaClient() as client:
schedule = await client.schedule.list(start_date="2024-01-15")
Migrating from python-qgenda
# Change one import:
# from qgenda.api.client import QGendaClient
from qgendapy.compat import QGendaClient
# Everything else works the same
client = QGendaClient(username="...", password="...", company_key="...")
client.authenticate()
resp = client.get_schedule(start_date="2024-01-15")
data = resp.json()
See docs/migration.md for the full migration guide.
Resources
| Resource | Attribute | Methods |
|---|---|---|
| Schedule | client.schedule |
list, audit_log, open_shifts, rotations |
| Staff | client.staff |
list, get, create, update, tags, skillsets, profiles, pay_modifiers, ... |
| Task | client.task |
list, create, update, locations, tags, shifts |
| Facility | client.facility |
list, get, create, update, delete, staff, tags, tasks, ... |
| Time Event | client.time_event |
list, create, update, delete |
| Daily Case | client.daily_case |
list, create, update, delete |
| Request | client.request |
list, approved |
| Request Limit | client.request_limit |
CRUD + staff_quotas, task_shifts |
| Daily Ops | client.daily |
configurations, rooms, patient_encounters, capacity |
| Credentialing | client.credentialing |
contacts, locations, providers, privileges, records, workflows, ... |
| Notification | client.notification |
CRUD + contacts |
| User | client.user |
list, get, non_scheduled |
| + 11 more | pay, tags, profiles, company, organization, ... |
Acknowledgments
Inspired by python-qgenda by JP Jorissen.
License
MIT
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
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 qgendapy-0.2.1.tar.gz.
File metadata
- Download URL: qgendapy-0.2.1.tar.gz
- Upload date:
- Size: 78.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdde389fb0e90e57ecfd0c47a179106771a0fa3802262448e908b6b52a2a2de2
|
|
| MD5 |
8c20c53e1cafef647ef77171eecbcde9
|
|
| BLAKE2b-256 |
a440704145e741e4f9e56a738b99c919a4ab11a591a3a1fc8627a9b900c83b02
|
Provenance
The following attestation bundles were made for qgendapy-0.2.1.tar.gz:
Publisher:
publish.yml on lancereinsmith/qgendapy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qgendapy-0.2.1.tar.gz -
Subject digest:
fdde389fb0e90e57ecfd0c47a179106771a0fa3802262448e908b6b52a2a2de2 - Sigstore transparency entry: 1606692849
- Sigstore integration time:
-
Permalink:
lancereinsmith/qgendapy@a8d4c2b2f935f366f82af0941356f98128d645d9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/lancereinsmith
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8d4c2b2f935f366f82af0941356f98128d645d9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file qgendapy-0.2.1-py3-none-any.whl.
File metadata
- Download URL: qgendapy-0.2.1-py3-none-any.whl
- Upload date:
- Size: 40.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2de7fd7f6d7dbc99e6a5bb540348a8e5eaf2b9e2e8893bf4b56864515523e891
|
|
| MD5 |
0de67fee2ef904ecb5e3da2e96560a93
|
|
| BLAKE2b-256 |
c659b3eef0549d43f507c67616497da774d7a8bbc34270dc72ee6743f252c393
|
Provenance
The following attestation bundles were made for qgendapy-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on lancereinsmith/qgendapy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qgendapy-0.2.1-py3-none-any.whl -
Subject digest:
2de7fd7f6d7dbc99e6a5bb540348a8e5eaf2b9e2e8893bf4b56864515523e891 - Sigstore transparency entry: 1606692982
- Sigstore integration time:
-
Permalink:
lancereinsmith/qgendapy@a8d4c2b2f935f366f82af0941356f98128d645d9 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/lancereinsmith
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a8d4c2b2f935f366f82af0941356f98128d645d9 -
Trigger Event:
release
-
Statement type: