profiles / StructureDefinition
OMOP-Convertible Patient → observation_period
Patient that contributes an `observation_period` row. The window itself is **derived from event data** — earliest/latest event_date across all OMOP clinical tables for the person — not from any single Patient field. So this profile is intentionally lax: any conformant Patient produces a row at ETL time. The implementer can also opt to emit a single fixed-window placeholder (e.g. registration date → today) per person; that's an ETL choice, not a profile constraint.
| Path | Card | Type | Binding / Fixed | Comment |
|---|---|---|---|---|
| Patient.id | 1..* | Required to derive person_id (FK observation_period.person_id). | ||
| Patient.active | MS | Inactive patients may still have historical observation_period rows; not a hard gate. |
Raw JSON
{
"resourceType": "StructureDefinition",
"id": "omop-patient-observation-period",
"url": "https://fhir2omop.health-samurai.io/StructureDefinition/omop-patient-observation-period",
"version": "0.1.0",
"name": "OmopPatientObservationPeriod",
"title": "OMOP-Convertible Patient → observation_period",
"status": "draft",
"experimental": true,
"description": "Patient that contributes an `observation_period` row. The window itself is **derived from event data** — earliest/latest event_date across all OMOP clinical tables for the person — not from any single Patient field. So this profile is intentionally lax: any conformant Patient produces a row at ETL time. The implementer can also opt to emit a single fixed-window placeholder (e.g. registration date → today) per person; that's an ETL choice, not a profile constraint.",
"fhirVersion": "4.0.1",
"kind": "resource",
"abstract": false,
"type": "Patient",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Patient",
"derivation": "constraint",
"extension": [
{
"url": "https://fhir2omop.health-samurai.io/StructureDefinition/omop-target-table",
"valueString": "observation_period"
},
{
"url": "https://fhir2omop.health-samurai.io/StructureDefinition/omop-edge",
"valueString": "Patient__observation_period"
}
],
"differential": {
"element": [
{
"id": "Patient.id",
"path": "Patient.id",
"min": 1,
"comment": "Required to derive person_id (FK observation_period.person_id)."
},
{
"id": "Patient.active",
"path": "Patient.active",
"mustSupport": true,
"comment": "Inactive patients may still have historical observation_period rows; not a hard gate."
}
]
},
"targetTable": "observation_period",
"edgeKey": "Patient__observation_period"
}