scene_pipelines.ingestion.scene.subject
Register a Subject (everyday pipeline write).
subject_meta_payload
Non-key Subject fields.
register_subject
register_subject(subject_code: str, subject_kind: DjKey[SubjectKind] | str, *, lab: DjKey[Lab], deployment: DjRow[Deployment] | None = None, if_exists: DuplicatePolicy = VERIFY) -> DjKey[Subject]
Register a subject by its lab code; mint subject_id when new.
The subject is looked up by (lab, subject_code). A new code gets a
freshly minted subject_id; an existing code is handled by if_exists
against the stored subject. Runs atomically; joins the caller's
transaction when one is open.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
subject_code
|
str
|
Pseudonymous code, unique within |
required |
subject_kind
|
DjKey[SubjectKind] | str
|
Existing |
required |
lab
|
DjKey[Lab]
|
Existing lab primary key, e.g. |
required |
deployment
|
DjRow[Deployment] | None
|
Optional deployment row. If omitted, built from
|
None
|
if_exists
|
DuplicatePolicy
|
Policy when |
VERIFY
|
Returns:
| Type | Description |
|---|---|
DjKey[Subject]
|
Subject primary key |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
subject_key
Find a subject by its lab code.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
subject_code
|
str
|
Lab code, e.g. |
required |
lab
|
DjKey[Lab] | None
|
Lab primary key, e.g. |
None
|
Returns:
| Type | Description |
|---|---|
DjKey[Subject]
|
Subject primary key, e.g. for |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the code is invalid or not registered in |