profiles / StructureDefinition

OMOP-Convertible Patient → person

Patient person edge mapspec

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"
}