<?xml version="1.0" encoding="UTF-8"?>

<Requirements xmlns="http://hl7.org/fhir">
  <id value="fromNarrative"/>
  <language value="en"/>
  <text>
    <status value="generated"/><div xmlns="http://www.w3.org/1999/xhtml"><p class="res-header-id"><b>Generated Narrative: Requirements fromNarrative</b></p><a name="fromNarrative"> </a><a name="hcfromNarrative"> </a><p>These requirements apply to the following actors: </p><ul><li><a href="ActorDefinition-src.html">FHIR Source System</a></li><li><a href="ActorDefinition-tgt.html">OMOP Target Instance</a></li><li><a href="ActorDefinition-xfm.html">Transformation Engine</a></li><li><a href="ActorDefinition-trm.html">Terminology Server</a></li><li><a href="ActorDefinition-imp.html">ETL Implementer</a></li></ul><table class="grid"><tr><td><b><a name="f2o-001"> </a></b>f2o-001</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> produce output conforming to the OMOP Common Data Model version 5.4, and a Target OMOP Instance <strong>SHALL</strong> conform to the OMOP CDM v5.4 schema.</p>
</div></td></tr><tr><td><b><a name="f2o-002"> </a></b>f2o-002</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> declare the FHIR version or versions of the source data that the transformation is configured to consume.</p>
</div></td></tr><tr><td><b><a name="f2o-003"> </a></b>f2o-003</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine and Implementer <strong>SHOULD</strong> publish a machine-readable manifest declaring which input FHIR profiles the transformation supports and which OMOP tables it populates from them. This manifest makes machine-consumable, and connects, the input-profile declaration described for accepted FHIR profiles and the table-population disclosure described for the Target OMOP Instance. The format of the manifest is not defined in this version of the guide; publishing a manifest in an engine-specific format is nonetheless encouraged as a signal of capability and as preparation for a future version that defines a common format.</p>
</div></td></tr><tr><td><b><a name="f2o-004"> </a></b>f2o-004</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a>, <a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-MAY">MAY</a></td><td><div><p>An Implementer <strong>SHALL</strong> declare which use cases the transformation supports. The declared set <strong>MAY</strong> include any of the use cases described on this page, other use cases not described here, or a stated combination, so that the scope of a given FHIR-to-OMOP transformation is stated explicitly rather than inferred.</p>
</div></td></tr><tr><td><b><a name="f2o-010"> </a></b>f2o-010</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> declare which input FHIR profiles the transformation accepts. The declared set could be any FHIR profiles the transformation is built to consume, whether the International Patient Access and US Core profiles this guide curated its maps against, other published profiles, or base FHIR resources conforming to no profile beyond the resource definitions.</p>
</div></td></tr><tr><td><b><a name="f2o-011"> </a></b>f2o-011</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> rely only on the elements guaranteed by what it has declared it accepts, whether a profile or a base resource definition, and <strong>SHALL</strong> NOT assume the presence of an element that a conformant source is permitted to omit. This is a constraint on assumptions about optional content, not an obligation to handle content beyond the transformation's declared scope.</p>
</div></td></tr><tr><td><b><a name="f2o-012"> </a></b>f2o-012</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> validate incoming resources against the profiles the transformation declares it accepts, and <strong>SHOULD</strong> handle a validation failure by a documented disposition, rejecting or quarantining the resource rather than admitting it unvalidated. The disposition of failed input <strong>SHOULD</strong> be recorded so that the volume and reasons for failure are visible to operators and to consumers of the target.</p>
</div></td></tr><tr><td><b><a name="f2o-013"> </a></b>f2o-013</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> support ingestion of both singleton resources and Bundles, since both forms are produced by conformant FHIR servers under ordinary retrieval patterns and a transformation restricted to one form cannot consume the other without an intermediary. Where a Bundle is the source unit, its Bundle.type <strong>SHALL</strong> be one of document, collection, or message.</p>
</div></td></tr><tr><td><b><a name="f2o-014"> </a></b>f2o-014</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-MAY">MAY</a></td><td><div><p>A Transformation Engine <strong>MAY</strong> support ingestion of Bulk Data NDJSON exports; this is not required, because Bulk Data Access is itself an optional capability for FHIR servers and not all data holders expose it, but implementers building population-scale OMOP instances ought to expect to encounter it.</p>
</div></td></tr><tr><td><b><a name="f2o-020"> </a></b>f2o-020</td><td>SHALL NOT</td><td><div><p>A Transformation Engine <strong>SHALL</strong> NOT store FHIR business identifier values (<code>Resource.identifier</code>) in OMOP <code>_source_value</code> fields, and a Target OMOP Instance <strong>SHALL</strong> NOT contain business identifier values in those fields.</p>
</div></td></tr><tr><td><b><a name="f2o-021"> </a></b>f2o-021</td><td>SHALL NOT</td><td><div><p>A Transformation Engine <strong>SHALL</strong> NOT derive OMOP integer primary keys from FHIR business identifiers (<code>Resource.identifier</code>). Where primary keys are derived from FHIR source data rather than generated independently, the FHIR logical identifier (<code>Resource.id</code> combined with the resource type) is the appropriate source.</p>
</div></td></tr><tr><td><b><a name="f2o-022"> </a></b>f2o-022</td><td>SHALL NOT</td><td><div><p>A Target OMOP Instance <strong>SHALL</strong> NOT contain patient identifiable information, including names, addresses, medical record numbers, and contact details, in any field.</p>
</div></td></tr><tr><td><b><a name="f2o-023"> </a></b>f2o-023</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>An Implementer <strong>SHOULD</strong> maintain an external mapping table linking OMOP-generated identifiers to the originating FHIR logical identifier (<code>[ResourceType]/[Resource.id]</code>) where traceability from OMOP records back to source resources is required.</p>
</div></td></tr><tr><td><b><a name="f2o-024"> </a></b>f2o-024</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where an external mapping table is maintained, it <strong>SHALL</strong> reside outside the OMOP schema and <strong>SHALL</strong> be governed by access controls distinct from those governing the OMOP instance itself.</p>
</div></td></tr><tr><td><b><a name="f2o-025"> </a></b>f2o-025</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> document a privacy and regulatory assessment for each identifier system encountered in the source data, identifying the framework applied, whether HIPAA Safe Harbor, Expert Determination, GDPR, or an equivalent, and the determination reached.</p>
</div></td></tr><tr><td><b><a name="f2o-026"> </a></b>f2o-026</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> document, for each identifier system encountered, which handling strategy was applied, whether surrogate key mapping, external storage, or exclusion, and record that determination in the ETL documentation.</p>
</div></td></tr><tr><td><b><a name="f2o-030"> </a></b>f2o-030</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> resolve concept assignments against the OHDSI Standardized Vocabularies, verifying concept existence, Standard concept status, and domain assignment for each source code it maps.</p>
</div></td></tr><tr><td><b><a name="f2o-031"> </a></b>f2o-031</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> populate OMOP <code>*_concept_id</code> fields only with Standard concepts, and <strong>SHALL</strong> record a non-Standard source concept in the companion <code>*_source_concept_id</code> field rather than in the <code>*_concept_id</code> field.</p>
</div></td></tr><tr><td><b><a name="f2o-032"> </a></b>f2o-032</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a source code has no Standard OMOP concept and no custom concept is created for it, a Transformation Engine <strong>SHALL</strong> populate the corresponding <code>*_concept_id</code> field with 0.</p>
</div></td></tr><tr><td><b><a name="f2o-033"> </a></b>f2o-033</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> preserve the original source code verbatim in the companion <code>*_source_value</code> field.</p>
</div></td></tr><tr><td><b><a name="f2o-034"> </a></b>f2o-034</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where multiple codes are present for a single clinical idea, a Transformation Engine <strong>SHALL</strong> apply the Code Prioritization Framework described on this page, and an Implementer <strong>SHALL</strong> document any departure from it.</p>
</div></td></tr><tr><td><b><a name="f2o-035"> </a></b>f2o-035</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a FHIR coding array carries explicit primary or preferred designations, a Transformation Engine <strong>SHALL</strong> honor them as tiebreakers within the prioritization hierarchy.</p>
</div></td></tr><tr><td><b><a name="f2o-036"> </a></b>f2o-036</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a coding array carries both a parent concept and a more specific child concept from the same code system, a Transformation Engine <strong>SHALL</strong> select the more specific concept.</p>
</div></td></tr><tr><td><b><a name="f2o-037"> </a></b>f2o-037</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> assign the OMOP domain from the <code>domain_id</code> of the resolved concept rather than from the FHIR resource type, and a Target OMOP Instance <strong>SHALL</strong> store each clinical record in the domain table its concept's <code>domain_id</code> indicates.</p>
</div></td></tr><tr><td><b><a name="f2o-038"> </a></b>f2o-038</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a>, <a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> resolve concepts through the <code>ConceptMap/$translate</code> and <code>CodeSystem/$lookup</code> operations of a FHIR terminology server rather than through a crosswalk hard-coded into the transformation. Where a static crosswalk is used instead, an Implementer <strong>SHALL</strong> record its provenance and the vocabulary release from which it was derived.</p>
</div></td></tr><tr><td><b><a name="f2o-039"> </a></b>f2o-039</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Custom concepts added to a local OMOP instance <strong>SHALL</strong> use <code>concept_id</code> values at or above 2,000,000,000.</p>
</div></td></tr><tr><td><b><a name="f2o-040"> </a></b>f2o-040</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> record the OHDSI Vocabulary release used to resolve concepts for each ETL run, as part of the run metadata.</p>
</div></td></tr><tr><td><b><a name="f2o-050"> </a></b>f2o-050</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> populate every OMOP <code>*_type_concept_id</code> field with a Standard concept from the Type Concept domain, and a Target OMOP Instance <strong>SHALL</strong> NOT contain a clinical record with an unpopulated or non-Standard type concept.</p>
</div></td></tr><tr><td><b><a name="f2o-051"> </a></b>f2o-051</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> derive the type concept from the FHIR resource type together with the category and context elements the resource carries, rather than from the resource type alone.</p>
</div></td></tr><tr><td><b><a name="f2o-052"> </a></b>f2o-052</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where the source does not carry sufficient context to identify a specific type concept, a Transformation Engine <strong>SHALL</strong> select the most general applicable Type Concept rather than assigning a specific one by inference.</p>
</div></td></tr><tr><td><b><a name="f2o-053"> </a></b>f2o-053</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a source record is patient-reported, a Transformation Engine <strong>SHALL</strong> assign a type concept distinguishing it from clinician-recorded data, and a Target OMOP Instance <strong>SHALL</strong> preserve that distinction.</p>
</div></td></tr><tr><td><b><a name="f2o-060"> </a></b>f2o-060</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> evaluate status and intent elements and <strong>SHALL</strong> NOT transform resources describing events that were not realized, including those cancelled, proposed, planned, not done, stopped, or entered in error, into OMOP clinical event tables.</p>
</div></td></tr><tr><td><b><a name="f2o-061"> </a></b>f2o-061</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine and Implementer <strong>SHALL</strong> apply consistent filter rules across all incremental loads into a given OMOP instance, and <strong>SHALL</strong> record any change to those rules, with its effective date, in the ETL documentation.</p>
</div></td></tr><tr><td><b><a name="f2o-062"> </a></b>f2o-062</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> emit a run-level report of resources excluded by filter, recording counts by resource type and exclusion reason.</p>
</div></td></tr><tr><td><b><a name="f2o-063"> </a></b>f2o-063</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> evaluate FHIR modifier elements and <strong>SHALL</strong> NOT silently transform a resource whose modifier elements alter its clinical interpretation, nor silently emit a concept_id of zero when a terminology lookup fails without recording the failure.</p>
</div></td></tr><tr><td><b><a name="f2o-070"> </a></b>f2o-070</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> populate the required OMOP <code>*_date</code> field for every clinical event record it writes, and a Target OMOP Instance <strong>SHALL</strong> NOT contain a clinical event record with an unpopulated required date field. This applies to the date fields the CDM marks as required; end-date fields that the CDM permits to be NULL are not within its scope.</p>
</div></td></tr><tr><td><b><a name="f2o-071"> </a></b>f2o-071</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a required date is derived by imputation from a partial or absent source value, a Transformation Engine <strong>SHALL</strong> record the imputation by means of an appropriate type concept, and an Implementer <strong>SHALL</strong> document the imputation rules applied and their effective scope in the ETL documentation.</p>
</div></td></tr><tr><td><b><a name="f2o-072"> </a></b>f2o-072</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a FHIR source value carries a time zone offset and the corresponding OMOP <code>*_datetime</code> field is populated, a Transformation Engine <strong>SHALL</strong> convert the value to a single time zone applied consistently across the instance, and an Implementer <strong>SHALL</strong> state that time zone in the ETL documentation. The OMOP CDM provides no standard field for a time zone offset, so this guide does not require the original offset to be preserved.</p>
</div></td></tr><tr><td><b><a name="f2o-073"> </a></b>f2o-073</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> populate the optional OMOP <code>*_datetime</code> fields where the FHIR source provides sub-day precision, rather than discarding that precision by populating only the required date field.</p>
</div></td></tr><tr><td><b><a name="f2o-080"> </a></b>f2o-080</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> document the points at which the transformation loses information because FHIR granularity exceeds what the OMOP CDM can represent, and <strong>SHALL</strong> make that documentation available to consumers of the resulting OMOP data.</p>
</div></td></tr><tr><td><b><a name="f2o-081"> </a></b>f2o-081</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>Where a FHIR element carries clinically meaningful content that has no representable target in the OMOP domain tables, a Transformation Engine <strong>SHOULD</strong> emit the residual content to the observation or note domain with a type concept identifying its origin, rather than discarding it silently.</p>
</div></td></tr><tr><td><b><a name="f2o-082"> </a></b>f2o-082</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> produce and maintain ETL documentation recording mapping decisions, prioritization choices, pre-processing and manual interventions performed, and the known limitations of the transformation.</p>
</div></td></tr><tr><td><b><a name="f2o-090"> </a></b>f2o-090</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Target OMOP Instance <strong>SHALL</strong> conform to the logical model this guide defines for each OMOP table it populates.</p>
</div></td></tr><tr><td><b><a name="f2o-091"> </a></b>f2o-091</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-MAY">MAY</a></td><td><div><p>A Transformation Engine <strong>MAY</strong> execute the StructureMaps published by this guide, or <strong>MAY</strong> implement equivalent transformation logic in another technology.</p>
</div></td></tr><tr><td><b><a name="f2o-092"> </a></b>f2o-092</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a transformation departs from the logic expressed by a published StructureMap, an Implementer <strong>SHALL</strong> record the departure and its rationale in the ETL documentation.</p>
</div></td></tr><tr><td><b><a name="f2o-093"> </a></b>f2o-093</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> resolve code-to-concept translation against the OHDSI Standardized Vocabularies. Where a fixed set of mappings prepared in advance is used instead of resolving against the vocabularies at transformation time, an Implementer <strong>SHALL</strong> identify that set and the vocabulary release from which it was derived.</p>
</div></td></tr><tr><td><b><a name="f2o-100"> </a></b>f2o-100</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>An Implementer <strong>SHOULD</strong> maintain a traceability path from each clinical record in the Target OMOP Instance back to the FHIR resource that produced it.</p>
</div></td></tr><tr><td><b><a name="f2o-102"> </a></b>f2o-102</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> record, for each ETL run, the OMOP CDM version targeted, the OHDSI Vocabulary release used, the version of this Implementation Guide followed, the version of the transformation software, and the time of execution.</p>
</div></td></tr><tr><td><b><a name="f2o-103"> </a></b>f2o-103</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> support idempotent re-processing of a given source snapshot, such that re-running a load does not duplicate clinical event records in the target.</p>
</div></td></tr><tr><td><b><a name="f2o-110"> </a></b>f2o-110</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>Where a Transformation Engine resolves concepts through a FHIR terminology server, it <strong>SHALL</strong> do so through the standard <code>ConceptMap/$translate</code> and <code>CodeSystem/$lookup</code> operations rather than through server-specific interfaces, so that a transformation is not bound to a particular server implementation.</p>
</div></td></tr><tr><td><b><a name="f2o-111"> </a></b>f2o-111</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a>, <a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>A Transformation Engine <strong>SHOULD</strong> cache terminology server responses, and where it does so <strong>SHALL</strong> bind the cache invalidation policy to the OHDSI Vocabulary version, such that entries computed under one vocabulary version are not read under another.</p>
</div></td></tr><tr><td><b><a name="f2o-112"> </a></b>f2o-112</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Terminology Server claiming conformance to this guide <strong>SHALL</strong> expose the OHDSI Standardized Vocabularies as FHIR CodeSystem and ConceptMap resources, and <strong>SHALL</strong> report the vocabulary release it is serving in the <code>version</code> element of its responses.</p>
</div></td></tr><tr><td><b><a name="f2o-120"> </a></b>f2o-120</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Transformation Engine <strong>SHALL</strong> pass the reference test suite published by this guide for the transformations it claims to support. The suite is versioned independently of this guide, and a conformance claim identifies the suite version against which it was established.</p>
</div></td></tr><tr><td><b><a name="f2o-121"> </a></b>f2o-121</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHOULD">SHOULD</a></td><td><div><p>An Implementer <strong>SHOULD</strong> publish the results of the reference test suite, identifying the version of this Implementation Guide and the OHDSI Vocabulary release under which the run was performed.</p>
</div></td></tr><tr><td><b><a name="f2o-122"> </a></b>f2o-122</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>A Target OMOP Instance <strong>SHALL</strong> disclose which OMOP tables it populates fully, which it populates partially, and which it leaves unpopulated.</p>
</div></td></tr><tr><td><b><a name="f2o-132"> </a></b>f2o-132</td><td><a href="http://hl7.org/fhir/R5/codesystem-conformance-expectation.html#conformance-expectation-SHALL">SHALL</a></td><td><div><p>An Implementer <strong>SHALL</strong> document the legal instrument governing access to the source FHIR data, whether a business associate agreement, an IRB approval or waiver, a data use agreement, or an equivalent, together with any constraint it places on identifier retention, linkage, or re-identification.</p>
</div></td></tr></table></div>
  </text>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-wg">
    <valueCode value="brr"/>
  </extension>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
    <valueInteger value="4">
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
    </valueInteger>
  </extension>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
    <valueCode value="trial-use">
      <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-conformance-derivedFrom">
        <valueCanonical value="http://hl7.org/fhir/uv/omop/ImplementationGuide/hl7.fhir.uv.omop"/>
      </extension>
    </valueCode>
  </extension>
  <url value="http://hl7.org/fhir/uv/omop/Requirements/fromNarrative"/>
  <identifier>
    <system value="urn:ietf:rfc:3986"/>
    <value value="urn:oid:2.16.840.1.113883.4.642.40.77.36.1"/>
  </identifier>
  <version value="2.0.0-ballot"/>
  <name value="FromNarrative"/>
  <title value="Narrative Conformance Statements"/>
  <status value="active"/>
  <experimental value="false"/>
  <date value="2026-07-28T18:18:05-06:00"/>
  <publisher value="HL7 International / Biomedical Research and Regulation"/>
  <contact>
    <name value="HL7 International / Biomedical Research and Regulation"/>
    <telecom>
      <system value="url"/>
      <value value="http://www.hl7.org/Special/committees/rcrim"/>
    </telecom>
  </contact>
  <description value="Conformance statements found throughout the narrative of the IG consolidated into this computable resource for traceability purposes"/>
  <jurisdiction>
    <coding>
      <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/>
      <code value="001"/>
      <display value="World"/>
    </coding>
  </jurisdiction>
  <actor value="http://hl7.org/fhir/uv/omop/ActorDefinition/src">
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-actorkey">
      <valueId value="src"/>
    </extension>
  </actor>
  <actor value="http://hl7.org/fhir/uv/omop/ActorDefinition/tgt">
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-actorkey">
      <valueId value="tgt"/>
    </extension>
  </actor>
  <actor value="http://hl7.org/fhir/uv/omop/ActorDefinition/xfm">
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-actorkey">
      <valueId value="xfm"/>
    </extension>
  </actor>
  <actor value="http://hl7.org/fhir/uv/omop/ActorDefinition/trm">
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-actorkey">
      <valueId value="trm"/>
    </extension>
  </actor>
  <actor value="http://hl7.org/fhir/uv/omop/ActorDefinition/imp">
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-actorkey">
      <valueId value="imp"/>
    </extension>
  </actor>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="scope"/>
          <display value="scope"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-001"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** produce output conforming to the OMOP Common Data Model version 5.4, and a Target OMOP Instance **SHALL** conform to the OMOP CDM v5.4 schema."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="scope"/>
          <display value="scope"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-002"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** declare the FHIR version or versions of the source data that the transformation is configured to consume."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="scope"/>
          <display value="scope"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-003"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine and Implementer **SHOULD** publish a machine-readable manifest declaring which input FHIR profiles the transformation supports and which OMOP tables it populates from them. This manifest makes machine-consumable, and connects, the input-profile declaration described for accepted FHIR profiles and the table-population disclosure described for the Target OMOP Instance. The format of the manifest is not defined in this version of the guide; publishing a manifest in an engine-specific format is nonetheless encouraged as a signal of capability and as preparation for a future version that defines a common format."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="scope"/>
          <display value="scope"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-004"/>
    <conformance value="SHALL"/>
    <conformance value="MAY"/>
    <requirement value="An Implementer **SHALL** declare which use cases the transformation supports. The declared set **MAY** include any of the use cases described on this page, other use cases not described here, or a stated combination, so that the scope of a given FHIR-to-OMOP transformation is stated explicitly rather than inferred."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="src"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-010"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** declare which input FHIR profiles the transformation accepts. The declared set could be any FHIR profiles the transformation is built to consume, whether the International Patient Access and US Core profiles this guide curated its maps against, other published profiles, or base FHIR resources conforming to no profile beyond the resource definitions."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <key value="f2o-011"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** rely only on the elements guaranteed by what it has declared it accepts, whether a profile or a base resource definition, and **SHALL** NOT assume the presence of an element that a conformant source is permitted to omit. This is a constraint on assumptions about optional content, not an obligation to handle content beyond the transformation's declared scope."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-012"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** validate incoming resources against the profiles the transformation declares it accepts, and **SHOULD** handle a validation failure by a documented disposition, rejecting or quarantining the resource rather than admitting it unvalidated. The disposition of failed input **SHOULD** be recorded so that the volume and reasons for failure are visible to operators and to consumers of the target."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <key value="f2o-013"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** support ingestion of both singleton resources and Bundles, since both forms are produced by conformant FHIR servers under ordinary retrieval patterns and a transformation restricted to one form cannot consume the other without an intermediary. Where a Bundle is the source unit, its Bundle.type **SHALL** be one of document, collection, or message."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="src"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <key value="f2o-014"/>
    <conformance value="MAY"/>
    <requirement value="A Transformation Engine **MAY** support ingestion of Bulk Data NDJSON exports; this is not required, because Bulk Data Access is itself an optional capability for FHIR servers and not all data holders expose it, but implementers building population-scale OMOP instances ought to expect to encounter it."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-020"/>
    <requirement value="A Transformation Engine **SHALL** NOT store FHIR business identifier values (`Resource.identifier`) in OMOP `_source_value` fields, and a Target OMOP Instance **SHALL** NOT contain business identifier values in those fields."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-021"/>
    <requirement value="A Transformation Engine **SHALL** NOT derive OMOP integer primary keys from FHIR business identifiers (`Resource.identifier`). Where primary keys are derived from FHIR source data rather than generated independently, the FHIR logical identifier (`Resource.id` combined with the resource type) is the appropriate source."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-022"/>
    <requirement value="A Target OMOP Instance **SHALL** NOT contain patient identifiable information, including names, addresses, medical record numbers, and contact details, in any field."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-023"/>
    <conformance value="SHOULD"/>
    <requirement value="An Implementer **SHOULD** maintain an external mapping table linking OMOP-generated identifiers to the originating FHIR logical identifier (`[ResourceType]/[Resource.id]`) where traceability from OMOP records back to source resources is required."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-024"/>
    <conformance value="SHALL"/>
    <requirement value="Where an external mapping table is maintained, it **SHALL** reside outside the OMOP schema and **SHALL** be governed by access controls distinct from those governing the OMOP instance itself."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-025"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** document a privacy and regulatory assessment for each identifier system encountered in the source data, identifying the framework applied, whether HIPAA Safe Harbor, Expert Determination, GDPR, or an equivalent, and the determination reached."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-026"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** document, for each identifier system encountered, which handling strategy was applied, whether surrogate key mapping, external storage, or exclusion, and record that determination in the ETL documentation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-030"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** resolve concept assignments against the OHDSI Standardized Vocabularies, verifying concept existence, Standard concept status, and domain assignment for each source code it maps."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-031"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** populate OMOP `*_concept_id` fields only with Standard concepts, and **SHALL** record a non-Standard source concept in the companion `*_source_concept_id` field rather than in the `*_concept_id` field."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-032"/>
    <conformance value="SHALL"/>
    <requirement value="Where a source code has no Standard OMOP concept and no custom concept is created for it, a Transformation Engine **SHALL** populate the corresponding `*_concept_id` field with 0."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-033"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** preserve the original source code verbatim in the companion `*_source_value` field."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-034"/>
    <conformance value="SHALL"/>
    <requirement value="Where multiple codes are present for a single clinical idea, a Transformation Engine **SHALL** apply the Code Prioritization Framework described on this page, and an Implementer **SHALL** document any departure from it."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-035"/>
    <conformance value="SHALL"/>
    <requirement value="Where a FHIR coding array carries explicit primary or preferred designations, a Transformation Engine **SHALL** honor them as tiebreakers within the prioritization hierarchy."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-036"/>
    <conformance value="SHALL"/>
    <requirement value="Where a coding array carries both a parent concept and a more specific child concept from the same code system, a Transformation Engine **SHALL** select the more specific concept."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-037"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** assign the OMOP domain from the `domain_id` of the resolved concept rather than from the FHIR resource type, and a Target OMOP Instance **SHALL** store each clinical record in the domain table its concept's `domain_id` indicates."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-038"/>
    <conformance value="SHALL"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** resolve concepts through the `ConceptMap/$translate` and `CodeSystem/$lookup` operations of a FHIR terminology server rather than through a crosswalk hard-coded into the transformation. Where a static crosswalk is used instead, an Implementer **SHALL** record its provenance and the vocabulary release from which it was derived."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-039"/>
    <conformance value="SHALL"/>
    <requirement value="Custom concepts added to a local OMOP instance **SHALL** use `concept_id` values at or above 2,000,000,000."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="codes"/>
          <display value="codes"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-040"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** record the OHDSI Vocabulary release used to resolve concepts for each ETL run, as part of the run metadata."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="concept"/>
          <display value="concept"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-050"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** populate every OMOP `*_type_concept_id` field with a Standard concept from the Type Concept domain, and a Target OMOP Instance **SHALL** NOT contain a clinical record with an unpopulated or non-Standard type concept."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="concept"/>
          <display value="concept"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-051"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** derive the type concept from the FHIR resource type together with the category and context elements the resource carries, rather than from the resource type alone."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="concept"/>
          <display value="concept"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-052"/>
    <conformance value="SHALL"/>
    <requirement value="Where the source does not carry sufficient context to identify a specific type concept, a Transformation Engine **SHALL** select the most general applicable Type Concept rather than assigning a specific one by inference."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="concept"/>
          <display value="concept"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-053"/>
    <conformance value="SHALL"/>
    <requirement value="Where a source record is patient-reported, a Transformation Engine **SHALL** assign a type concept distinguishing it from clinician-recorded data, and a Target OMOP Instance **SHALL** preserve that distinction."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="status"/>
          <display value="status"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-060"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** evaluate status and intent elements and **SHALL** NOT transform resources describing events that were not realized, including those cancelled, proposed, planned, not done, stopped, or entered in error, into OMOP clinical event tables."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="status"/>
          <display value="status"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-061"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine and Implementer **SHALL** apply consistent filter rules across all incremental loads into a given OMOP instance, and **SHALL** record any change to those rules, with its effective date, in the ETL documentation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="status"/>
          <display value="status"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-062"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** emit a run-level report of resources excluded by filter, recording counts by resource type and exclusion reason."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="status"/>
          <display value="status"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-063"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** evaluate FHIR modifier elements and **SHALL** NOT silently transform a resource whose modifier elements alter its clinical interpretation, nor silently emit a concept_id of zero when a terminology lookup fails without recording the failure."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementshallnot">
      <valueBoolean value="true"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="temporal"/>
          <display value="temporal"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-070"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** populate the required OMOP `*_date` field for every clinical event record it writes, and a Target OMOP Instance **SHALL** NOT contain a clinical event record with an unpopulated required date field. This applies to the date fields the CDM marks as required; end-date fields that the CDM permits to be NULL are not within its scope."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="temporal"/>
          <display value="temporal"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-071"/>
    <conformance value="SHALL"/>
    <requirement value="Where a required date is derived by imputation from a partial or absent source value, a Transformation Engine **SHALL** record the imputation by means of an appropriate type concept, and an Implementer **SHALL** document the imputation rules applied and their effective scope in the ETL documentation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="temporal"/>
          <display value="temporal"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-072"/>
    <conformance value="SHALL"/>
    <requirement value="Where a FHIR source value carries a time zone offset and the corresponding OMOP `*_datetime` field is populated, a Transformation Engine **SHALL** convert the value to a single time zone applied consistently across the instance, and an Implementer **SHALL** state that time zone in the ETL documentation. The OMOP CDM provides no standard field for a time zone offset, so this guide does not require the original offset to be preserved."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="temporal"/>
          <display value="temporal"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-073"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** populate the optional OMOP `*_datetime` fields where the FHIR source provides sub-day precision, rather than discarding that precision by populating only the required date field."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="dataloss"/>
          <display value="dataloss"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-080"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** document the points at which the transformation loses information because FHIR granularity exceeds what the OMOP CDM can represent, and **SHALL** make that documentation available to consumers of the resulting OMOP data."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="dataloss"/>
          <display value="dataloss"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-081"/>
    <conformance value="SHOULD"/>
    <requirement value="Where a FHIR element carries clinically meaningful content that has no representable target in the OMOP domain tables, a Transformation Engine **SHOULD** emit the residual content to the observation or note domain with a type concept identifying its origin, rather than discarding it silently."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="dataloss"/>
          <display value="dataloss"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-082"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** produce and maintain ETL documentation recording mapping decisions, prioritization choices, pre-processing and manual interventions performed, and the known limitations of the transformation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="models"/>
          <display value="models"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-090"/>
    <conformance value="SHALL"/>
    <requirement value="A Target OMOP Instance **SHALL** conform to the logical model this guide defines for each OMOP table it populates."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="models"/>
          <display value="models"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-091"/>
    <conformance value="MAY"/>
    <requirement value="A Transformation Engine **MAY** execute the StructureMaps published by this guide, or **MAY** implement equivalent transformation logic in another technology."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="models"/>
          <display value="models"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-092"/>
    <conformance value="SHALL"/>
    <requirement value="Where a transformation departs from the logic expressed by a published StructureMap, an Implementer **SHALL** record the departure and its rationale in the ETL documentation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="models"/>
          <display value="models"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-093"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** resolve code-to-concept translation against the OHDSI Standardized Vocabularies. Where a fixed set of mappings prepared in advance is used instead of resolving against the vocabularies at transformation time, an Implementer **SHALL** identify that set and the vocabulary release from which it was derived."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="traceability"/>
          <display value="traceability"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-100"/>
    <conformance value="SHOULD"/>
    <requirement value="An Implementer **SHOULD** maintain a traceability path from each clinical record in the Target OMOP Instance back to the FHIR resource that produced it."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="traceability"/>
          <display value="traceability"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <key value="f2o-102"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** record, for each ETL run, the OMOP CDM version targeted, the OHDSI Vocabulary release used, the version of this Implementation Guide followed, the version of the transformation software, and the time of execution."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="data"/>
          <display value="data"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="status"/>
          <display value="status"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <key value="f2o-103"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** support idempotent re-processing of a given source snapshot, such that re-running a load does not duplicate clinical event records in the target."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="terminology"/>
          <display value="terminology"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <key value="f2o-110"/>
    <conformance value="SHALL"/>
    <requirement value="Where a Transformation Engine resolves concepts through a FHIR terminology server, it **SHALL** do so through the standard `ConceptMap/$translate` and `CodeSystem/$lookup` operations rather than through server-specific interfaces, so that a transformation is not bound to a particular server implementation."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="terminology"/>
          <display value="terminology"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <key value="f2o-111"/>
    <conformance value="SHALL"/>
    <conformance value="SHOULD"/>
    <requirement value="A Transformation Engine **SHOULD** cache terminology server responses, and where it does so **SHALL** bind the cache invalidation policy to the OHDSI Vocabulary version, such that entries computed under one vocabulary version are not read under another."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="trm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="terminology"/>
          <display value="terminology"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-112"/>
    <conformance value="SHALL"/>
    <requirement value="A Terminology Server claiming conformance to this guide **SHALL** expose the OHDSI Standardized Vocabularies as FHIR CodeSystem and ConceptMap resources, and **SHALL** report the vocabulary release it is serving in the `version` element of its responses."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="testing"/>
          <display value="testing"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-120"/>
    <conformance value="SHALL"/>
    <requirement value="A Transformation Engine **SHALL** pass the reference test suite published by this guide for the transformations it claims to support. The suite is versioned independently of this guide, and a conformance claim identifies the suite version against which it was established."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="testing"/>
          <display value="testing"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-121"/>
    <conformance value="SHOULD"/>
    <requirement value="An Implementer **SHOULD** publish the results of the reference test suite, identifying the version of this Implementation Guide and the OHDSI Vocabulary release under which the run was performed."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="xfm"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="tgt"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="testing"/>
          <display value="testing"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-122"/>
    <conformance value="SHALL"/>
    <requirement value="A Target OMOP Instance **SHALL** disclose which OMOP tables it populates fully, which it populates partially, and which it leaves unpopulated."/>
  </statement>
  <statement>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementactor">
      <valueId value="imp"/>
    </extension>
    <extension url="http://hl7.org/fhir/tools/StructureDefinition/requirements-statementcategory">
      <valueCodeableConcept>
        <coding>
          <system value="http://hl7.org/fhir/uv/omop/CodeSystem/FHIRToOMOPRequirementCodes"/>
          <code value="identifier"/>
          <display value="identifier"/>
        </coding>
      </valueCodeableConcept>
    </extension>
    <key value="f2o-132"/>
    <conformance value="SHALL"/>
    <requirement value="An Implementer **SHALL** document the legal instrument governing access to the source FHIR data, whether a business associate agreement, an IRB approval or waiver, a data use agreement, or an equivalent, together with any constraint it places on identifier retention, linkage, or re-identification."/>
  </statement>
</Requirements>