profiles / StructureDefinition
OMOP-Convertible Patient → person
FHIR Patient that can be converted to OMOP `person`. Requires birthDate (used for year/month/day_of_birth), gender (mapped to gender_concept_id), and at least one identifier (used as person_source_value). The discriminator is birthDate presence — Patient has no `code` element, so no domain ValueSet binding applies.
| Path | Card | Type | Binding / Fixed | Comment |
|---|---|---|---|---|
| Patient.identifier | 1..* MS | At least one identifier is required; used as person.person_source_value (best of SSN > MR > first). | ||
| Patient.gender | 1..* MS | fhir/administrative-gender required | ||
| Patient.birthDate | 1..1 MS | Required — drives person.year_of_birth (and month/day/birth_datetime when components are present). This is the routing discriminator for Patient → person. | ||
| Patient.address | MS | Optional. When present, drives the Patient → location edge and person.location_id. | ||
| Patient.generalPractitioner | MS | Optional. First Practitioner reference becomes person.provider_id. | ||
| Patient.managingOrganization | MS | Optional. Becomes person.care_site_id. |
Raw JSON
{
"resourceType": "StructureDefinition",
"id": "omop-patient-person",
"url": "https://fhir2omop.health-samurai.io/StructureDefinition/omop-patient-person",
"version": "0.1.0",
"name": "OmopPatientPerson",
"title": "OMOP-Convertible Patient → person",
"status": "draft",
"experimental": true,
"description": "FHIR Patient that can be converted to OMOP `person`. Requires birthDate (used for year/month/day_of_birth), gender (mapped to gender_concept_id), and at least one identifier (used as person_source_value). The discriminator is birthDate presence — Patient has no `code` element, so no domain ValueSet binding applies.",
"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": "person"
},
{
"url": "https://fhir2omop.health-samurai.io/StructureDefinition/omop-edge",
"valueString": "Patient__person"
}
],
"differential": {
"element": [
{
"id": "Patient.identifier",
"path": "Patient.identifier",
"min": 1,
"mustSupport": true,
"comment": "At least one identifier is required; used as person.person_source_value (best of SSN > MR > first)."
},
{
"id": "Patient.gender",
"path": "Patient.gender",
"min": 1,
"mustSupport": true,
"binding": {
"strength": "required",
"valueSet": "http://hl7.org/fhir/ValueSet/administrative-gender",
"description": "male | female | other | unknown. Mapped to gender_concept_id (8507/8532/8521/8551)."
}
},
{
"id": "Patient.birthDate",
"path": "Patient.birthDate",
"min": 1,
"max": "1",
"mustSupport": true,
"comment": "Required — drives person.year_of_birth (and month/day/birth_datetime when components are present). This is the routing discriminator for Patient → person."
},
{
"id": "Patient.address",
"path": "Patient.address",
"mustSupport": true,
"comment": "Optional. When present, drives the Patient → location edge and person.location_id."
},
{
"id": "Patient.generalPractitioner",
"path": "Patient.generalPractitioner",
"mustSupport": true,
"comment": "Optional. First Practitioner reference becomes person.provider_id."
},
{
"id": "Patient.managingOrganization",
"path": "Patient.managingOrganization",
"mustSupport": true,
"comment": "Optional. Becomes person.care_site_id."
}
]
},
"targetTable": "person",
"edgeKey": "Patient__person"
}