diff --git a/assets/api/writer-generator/python/fhirpy_base_model.py b/assets/api/writer-generator/python/fhirpy_base_model.py index 24577ea4..ace66c95 100644 --- a/assets/api/writer-generator/python/fhirpy_base_model.py +++ b/assets/api/writer-generator/python/fhirpy_base_model.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Union, Optional, Iterator, Tuple, Dict +from typing import Any, Union, Optional, Iterator, Tuple, Dict from pydantic import BaseModel, Field from typing import Protocol @@ -16,14 +16,6 @@ class FhirpyBaseModel(BaseModel): via cls.resourceType for search/fetch operations. """ - if TYPE_CHECKING: - # Set at runtime per-subclass by __pydantic_init_subclass__ below. Declared here - # so static type-checkers see it: fhirpy's ResourceProtocol requires a settable - # `resourceType`, and snake_case models expose the field as `resource_type` - # (alias "resourceType"). A settable instance attr (not ClassVar) satisfies the - # protocol's mutable member; the default keeps it optional for the pydantic mypy plugin. - resourceType: str = "" - id: Optional[str] = Field(None, alias="id") @classmethod diff --git a/examples/python-r4-us-core/demo.py b/examples/python-r4-us-core/demo.py index 0079bb6a..bc390305 100644 --- a/examples/python-r4-us-core/demo.py +++ b/examples/python-r4-us-core/demo.py @@ -33,7 +33,7 @@ async def main() -> None: patient = Patient( name=[HumanName(given=["Bob"], family="Cool2")], gender="female", - birth_date="1980-01-01", + birthDate="1980-01-01", ) created_patient = await client.create(patient) print(f"Created patient: {created_patient.id}") diff --git a/examples/python-r4-us-core/fhir_types/example_folder_structures/profiles/bundle_example_typed_bundle.py b/examples/python-r4-us-core/fhir_types/example_folder_structures/profiles/bundle_example_typed_bundle.py index 190a44d9..8455acf8 100644 --- a/examples/python-r4-us-core/fhir_types/example_folder_structures/profiles/bundle_example_typed_bundle.py +++ b/examples/python-r4-us-core/fhir_types/example_folder_structures/profiles/bundle_example_typed_bundle.py @@ -52,7 +52,7 @@ def apply(cls, resource: Bundle[Patient | Organization, Resource]) -> "ExampleTy def create_resource(cls, *, type: Literal["document", "message", "transaction", "transaction-response", "batch", "batch-response", "history", "searchset", "collection"]) -> Bundle[Patient | Organization, Resource]: return build_resource( Bundle, - resource_type="Bundle", + resourceType="Bundle", type=type, meta={"profile": [cls.canonical_url]}, ) diff --git a/examples/python-r4-us-core/fhir_types/fhirpy_base_model.py b/examples/python-r4-us-core/fhir_types/fhirpy_base_model.py index 24577ea4..4c41c0bd 100644 --- a/examples/python-r4-us-core/fhir_types/fhirpy_base_model.py +++ b/examples/python-r4-us-core/fhir_types/fhirpy_base_model.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Union, Optional, Iterator, Tuple, Dict +from typing import Any, Union, Optional, Iterator, Tuple, Dict from pydantic import BaseModel, Field from typing import Protocol @@ -15,15 +15,6 @@ class FhirpyBaseModel(BaseModel): after Pydantic finishes model construction, so that fhirpy can detect it via cls.resourceType for search/fetch operations. """ - - if TYPE_CHECKING: - # Set at runtime per-subclass by __pydantic_init_subclass__ below. Declared here - # so static type-checkers see it: fhirpy's ResourceProtocol requires a settable - # `resourceType`, and snake_case models expose the field as `resource_type` - # (alias "resourceType"). A settable instance attr (not ClassVar) satisfies the - # protocol's mutable member; the default keeps it optional for the pydantic mypy plugin. - resourceType: str = "" - id: Optional[str] = Field(None, alias="id") @classmethod diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/base.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/base.py index b1bac4bb..a8d255ca 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/base.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/base.py @@ -14,44 +14,44 @@ class Element(BaseModel): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") extension: PyList[Extension] | None = Field(None, alias="extension", serialization_alias="extension") id: str | None = Field(None, alias="id", serialization_alias="id") - id_extension: Element | None = Field(None, alias="_id", serialization_alias="_id") + idExtension: Element | None = Field(None, alias="_id", serialization_alias="_id") class Address(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") city: str | None = Field(None, alias="city", serialization_alias="city") - city_extension: Element | None = Field(None, alias="_city", serialization_alias="_city") + cityExtension: Element | None = Field(None, alias="_city", serialization_alias="_city") country: str | None = Field(None, alias="country", serialization_alias="country") - country_extension: Element | None = Field(None, alias="_country", serialization_alias="_country") + countryExtension: Element | None = Field(None, alias="_country", serialization_alias="_country") district: str | None = Field(None, alias="district", serialization_alias="district") - district_extension: Element | None = Field(None, alias="_district", serialization_alias="_district") + districtExtension: Element | None = Field(None, alias="_district", serialization_alias="_district") line: PyList[str] | None = Field(None, alias="line", serialization_alias="line") - line_extension: PyList[Element | None] | None = Field(None, alias="_line", serialization_alias="_line") + lineExtension: PyList[Element | None] | None = Field(None, alias="_line", serialization_alias="_line") period: Period | None = Field(None, alias="period", serialization_alias="period") - postal_code: str | None = Field(None, alias="postalCode", serialization_alias="postalCode") - postal_code_extension: Element | None = Field(None, alias="_postalCode", serialization_alias="_postalCode") + postalCode: str | None = Field(None, alias="postalCode", serialization_alias="postalCode") + postalCodeExtension: Element | None = Field(None, alias="_postalCode", serialization_alias="_postalCode") state: str | None = Field(None, alias="state", serialization_alias="state") - state_extension: Element | None = Field(None, alias="_state", serialization_alias="_state") + stateExtension: Element | None = Field(None, alias="_state", serialization_alias="_state") text: str | None = Field(None, alias="text", serialization_alias="text") - text_extension: Element | None = Field(None, alias="_text", serialization_alias="_text") + textExtension: Element | None = Field(None, alias="_text", serialization_alias="_text") type: Literal["postal", "physical", "both"] | None = Field(None, alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") use: Literal["home", "work", "temp", "old", "billing"] | None = Field(None, alias="use", serialization_alias="use") - use_extension: Element | None = Field(None, alias="_use", serialization_alias="_use") + useExtension: Element | None = Field(None, alias="_use", serialization_alias="_use") class Quantity(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: str | None = Field(None, alias="code", serialization_alias="code") - code_extension: Element | None = Field(None, alias="_code", serialization_alias="_code") + codeExtension: Element | None = Field(None, alias="_code", serialization_alias="_code") comparator: Literal["<", "<=", ">=", ">"] | None = Field(None, alias="comparator", serialization_alias="comparator") - comparator_extension: Element | None = Field(None, alias="_comparator", serialization_alias="_comparator") + comparatorExtension: Element | None = Field(None, alias="_comparator", serialization_alias="_comparator") system: str | None = Field(None, alias="system", serialization_alias="system") - system_extension: Element | None = Field(None, alias="_system", serialization_alias="_system") + systemExtension: Element | None = Field(None, alias="_system", serialization_alias="_system") unit: str | None = Field(None, alias="unit", serialization_alias="unit") - unit_extension: Element | None = Field(None, alias="_unit", serialization_alias="_unit") + unitExtension: Element | None = Field(None, alias="_unit", serialization_alias="_unit") value: float | None = Field(None, alias="value", serialization_alias="value") - value_extension: Element | None = Field(None, alias="_value", serialization_alias="_value") + valueExtension: Element | None = Field(None, alias="_value", serialization_alias="_value") class Age(Quantity): @@ -61,65 +61,65 @@ class Age(Quantity): class Annotation(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - author_reference: Reference | None = Field(None, alias="authorReference", serialization_alias="authorReference") - author_string: str | None = Field(None, alias="authorString", serialization_alias="authorString") - author_string_extension: Element | None = Field(None, alias="_authorString", serialization_alias="_authorString") + authorReference: Reference | None = Field(None, alias="authorReference", serialization_alias="authorReference") + authorString: str | None = Field(None, alias="authorString", serialization_alias="authorString") + authorStringExtension: Element | None = Field(None, alias="_authorString", serialization_alias="_authorString") text: str = Field(alias="text", serialization_alias="text") - text_extension: Element | None = Field(None, alias="_text", serialization_alias="_text") + textExtension: Element | None = Field(None, alias="_text", serialization_alias="_text") time: str | None = Field(None, alias="time", serialization_alias="time") - time_extension: Element | None = Field(None, alias="_time", serialization_alias="_time") + timeExtension: Element | None = Field(None, alias="_time", serialization_alias="_time") class Attachment(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - content_type: str | None = Field(None, alias="contentType", serialization_alias="contentType") - content_type_extension: Element | None = Field(None, alias="_contentType", serialization_alias="_contentType") + contentType: str | None = Field(None, alias="contentType", serialization_alias="contentType") + contentTypeExtension: Element | None = Field(None, alias="_contentType", serialization_alias="_contentType") creation: str | None = Field(None, alias="creation", serialization_alias="creation") - creation_extension: Element | None = Field(None, alias="_creation", serialization_alias="_creation") + creationExtension: Element | None = Field(None, alias="_creation", serialization_alias="_creation") data: str | None = Field(None, alias="data", serialization_alias="data") - data_extension: Element | None = Field(None, alias="_data", serialization_alias="_data") + dataExtension: Element | None = Field(None, alias="_data", serialization_alias="_data") hash: str | None = Field(None, alias="hash", serialization_alias="hash") - hash_extension: Element | None = Field(None, alias="_hash", serialization_alias="_hash") + hashExtension: Element | None = Field(None, alias="_hash", serialization_alias="_hash") language: str | None = Field(None, alias="language", serialization_alias="language") - language_extension: Element | None = Field(None, alias="_language", serialization_alias="_language") + languageExtension: Element | None = Field(None, alias="_language", serialization_alias="_language") size: int | None = Field(None, alias="size", serialization_alias="size") - size_extension: Element | None = Field(None, alias="_size", serialization_alias="_size") + sizeExtension: Element | None = Field(None, alias="_size", serialization_alias="_size") title: str | None = Field(None, alias="title", serialization_alias="title") - title_extension: Element | None = Field(None, alias="_title", serialization_alias="_title") + titleExtension: Element | None = Field(None, alias="_title", serialization_alias="_title") url: str | None = Field(None, alias="url", serialization_alias="url") - url_extension: Element | None = Field(None, alias="_url", serialization_alias="_url") + urlExtension: Element | None = Field(None, alias="_url", serialization_alias="_url") class BackboneElement(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - modifier_extension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") + modifierExtension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") class CodeableConcept(Element, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") coding: PyList[Coding[T]] | None = Field(None, alias="coding", serialization_alias="coding") text: str | None = Field(None, alias="text", serialization_alias="text") - text_extension: Element | None = Field(None, alias="_text", serialization_alias="_text") + textExtension: Element | None = Field(None, alias="_text", serialization_alias="_text") class Coding(Element, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: T | None = Field(None, alias="code", serialization_alias="code") - code_extension: Element | None = Field(None, alias="_code", serialization_alias="_code") + codeExtension: Element | None = Field(None, alias="_code", serialization_alias="_code") display: str | None = Field(None, alias="display", serialization_alias="display") - display_extension: Element | None = Field(None, alias="_display", serialization_alias="_display") + displayExtension: Element | None = Field(None, alias="_display", serialization_alias="_display") system: str | None = Field(None, alias="system", serialization_alias="system") - system_extension: Element | None = Field(None, alias="_system", serialization_alias="_system") - user_selected: bool | None = Field(None, alias="userSelected", serialization_alias="userSelected") - user_selected_extension: Element | None = Field(None, alias="_userSelected", serialization_alias="_userSelected") + systemExtension: Element | None = Field(None, alias="_system", serialization_alias="_system") + userSelected: bool | None = Field(None, alias="userSelected", serialization_alias="userSelected") + userSelectedExtension: Element | None = Field(None, alias="_userSelected", serialization_alias="_userSelected") version: str | None = Field(None, alias="version", serialization_alias="version") - version_extension: Element | None = Field(None, alias="_version", serialization_alias="_version") + versionExtension: Element | None = Field(None, alias="_version", serialization_alias="_version") class ContactDetail(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") name: str | None = Field(None, alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") telecom: PyList[ContactPoint] | None = Field(None, alias="telecom", serialization_alias="telecom") @@ -127,22 +127,22 @@ class ContactPoint(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") period: Period | None = Field(None, alias="period", serialization_alias="period") rank: PositiveInt | None = Field(None, alias="rank", serialization_alias="rank") - rank_extension: Element | None = Field(None, alias="_rank", serialization_alias="_rank") + rankExtension: Element | None = Field(None, alias="_rank", serialization_alias="_rank") system: Literal["phone", "fax", "email", "pager", "url", "sms", "other"] | None = Field(None, alias="system", serialization_alias="system") - system_extension: Element | None = Field(None, alias="_system", serialization_alias="_system") + systemExtension: Element | None = Field(None, alias="_system", serialization_alias="_system") use: Literal["home", "work", "temp", "old", "mobile"] | None = Field(None, alias="use", serialization_alias="use") - use_extension: Element | None = Field(None, alias="_use", serialization_alias="_use") + useExtension: Element | None = Field(None, alias="_use", serialization_alias="_use") value: str | None = Field(None, alias="value", serialization_alias="value") - value_extension: Element | None = Field(None, alias="_value", serialization_alias="_value") + valueExtension: Element | None = Field(None, alias="_value", serialization_alias="_value") class Contributor(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") contact: PyList[ContactDetail] | None = Field(None, alias="contact", serialization_alias="contact") name: str = Field(alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") type: Literal["author", "editor", "reviewer", "endorser"] = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") class Count(Quantity): @@ -154,16 +154,16 @@ class DataRequirementCodeFilter(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: PyList[Coding] | None = Field(None, alias="code", serialization_alias="code") path: str | None = Field(None, alias="path", serialization_alias="path") - search_param: str | None = Field(None, alias="searchParam", serialization_alias="searchParam") - value_set: str | None = Field(None, alias="valueSet", serialization_alias="valueSet") + searchParam: str | None = Field(None, alias="searchParam", serialization_alias="searchParam") + valueSet: str | None = Field(None, alias="valueSet", serialization_alias="valueSet") class DataRequirementDateFilter(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") path: str | None = Field(None, alias="path", serialization_alias="path") - search_param: str | None = Field(None, alias="searchParam", serialization_alias="searchParam") - value_date_time: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") - value_duration: Duration | None = Field(None, alias="valueDuration", serialization_alias="valueDuration") - value_period: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") + searchParam: str | None = Field(None, alias="searchParam", serialization_alias="searchParam") + valueDateTime: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") + valueDuration: Duration | None = Field(None, alias="valueDuration", serialization_alias="valueDuration") + valuePeriod: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") class DataRequirementSort(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") @@ -173,19 +173,19 @@ class DataRequirementSort(Element): class DataRequirement(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - code_filter: PyList[DataRequirementCodeFilter] | None = Field(None, alias="codeFilter", serialization_alias="codeFilter") - date_filter: PyList[DataRequirementDateFilter] | None = Field(None, alias="dateFilter", serialization_alias="dateFilter") + codeFilter: PyList[DataRequirementCodeFilter] | None = Field(None, alias="codeFilter", serialization_alias="codeFilter") + dateFilter: PyList[DataRequirementDateFilter] | None = Field(None, alias="dateFilter", serialization_alias="dateFilter") limit: PositiveInt | None = Field(None, alias="limit", serialization_alias="limit") - limit_extension: Element | None = Field(None, alias="_limit", serialization_alias="_limit") - must_support: PyList[str] | None = Field(None, alias="mustSupport", serialization_alias="mustSupport") - must_support_extension: PyList[Element | None] | None = Field(None, alias="_mustSupport", serialization_alias="_mustSupport") + limitExtension: Element | None = Field(None, alias="_limit", serialization_alias="_limit") + mustSupport: PyList[str] | None = Field(None, alias="mustSupport", serialization_alias="mustSupport") + mustSupportExtension: PyList[Element | None] | None = Field(None, alias="_mustSupport", serialization_alias="_mustSupport") profile: PyList[str] | None = Field(None, alias="profile", serialization_alias="profile") - profile_extension: PyList[Element | None] | None = Field(None, alias="_profile", serialization_alias="_profile") + profileExtension: PyList[Element | None] | None = Field(None, alias="_profile", serialization_alias="_profile") sort: PyList[DataRequirementSort] | None = Field(None, alias="sort", serialization_alias="sort") - subject_codeable_concept: CodeableConcept | None = Field(None, alias="subjectCodeableConcept", serialization_alias="subjectCodeableConcept") - subject_reference: Reference | None = Field(None, alias="subjectReference", serialization_alias="subjectReference") + subjectCodeableConcept: CodeableConcept | None = Field(None, alias="subjectCodeableConcept", serialization_alias="subjectCodeableConcept") + subjectReference: Reference | None = Field(None, alias="subjectReference", serialization_alias="subjectReference") type: str = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") class Distance(Quantity): @@ -195,33 +195,33 @@ class Distance(Quantity): class DosageDoseAndRate(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - dose_quantity: Quantity | None = Field(None, alias="doseQuantity", serialization_alias="doseQuantity") - dose_range: Range | None = Field(None, alias="doseRange", serialization_alias="doseRange") - rate_quantity: Quantity | None = Field(None, alias="rateQuantity", serialization_alias="rateQuantity") - rate_range: Range | None = Field(None, alias="rateRange", serialization_alias="rateRange") - rate_ratio: Ratio | None = Field(None, alias="rateRatio", serialization_alias="rateRatio") + doseQuantity: Quantity | None = Field(None, alias="doseQuantity", serialization_alias="doseQuantity") + doseRange: Range | None = Field(None, alias="doseRange", serialization_alias="doseRange") + rateQuantity: Quantity | None = Field(None, alias="rateQuantity", serialization_alias="rateQuantity") + rateRange: Range | None = Field(None, alias="rateRange", serialization_alias="rateRange") + rateRatio: Ratio | None = Field(None, alias="rateRatio", serialization_alias="rateRatio") type: CodeableConcept | None = Field(None, alias="type", serialization_alias="type") class Dosage(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - additional_instruction: PyList[CodeableConcept] | None = Field(None, alias="additionalInstruction", serialization_alias="additionalInstruction") - as_needed_boolean: bool | None = Field(None, alias="asNeededBoolean", serialization_alias="asNeededBoolean") - as_needed_boolean_extension: Element | None = Field(None, alias="_asNeededBoolean", serialization_alias="_asNeededBoolean") - as_needed_codeable_concept: CodeableConcept | None = Field(None, alias="asNeededCodeableConcept", serialization_alias="asNeededCodeableConcept") - dose_and_rate: PyList[DosageDoseAndRate] | None = Field(None, alias="doseAndRate", serialization_alias="doseAndRate") - max_dose_per_administration: Quantity | None = Field(None, alias="maxDosePerAdministration", serialization_alias="maxDosePerAdministration") - max_dose_per_lifetime: Quantity | None = Field(None, alias="maxDosePerLifetime", serialization_alias="maxDosePerLifetime") - max_dose_per_period: Ratio | None = Field(None, alias="maxDosePerPeriod", serialization_alias="maxDosePerPeriod") + additionalInstruction: PyList[CodeableConcept] | None = Field(None, alias="additionalInstruction", serialization_alias="additionalInstruction") + asNeededBoolean: bool | None = Field(None, alias="asNeededBoolean", serialization_alias="asNeededBoolean") + asNeededBooleanExtension: Element | None = Field(None, alias="_asNeededBoolean", serialization_alias="_asNeededBoolean") + asNeededCodeableConcept: CodeableConcept | None = Field(None, alias="asNeededCodeableConcept", serialization_alias="asNeededCodeableConcept") + doseAndRate: PyList[DosageDoseAndRate] | None = Field(None, alias="doseAndRate", serialization_alias="doseAndRate") + maxDosePerAdministration: Quantity | None = Field(None, alias="maxDosePerAdministration", serialization_alias="maxDosePerAdministration") + maxDosePerLifetime: Quantity | None = Field(None, alias="maxDosePerLifetime", serialization_alias="maxDosePerLifetime") + maxDosePerPeriod: Ratio | None = Field(None, alias="maxDosePerPeriod", serialization_alias="maxDosePerPeriod") method: CodeableConcept | None = Field(None, alias="method", serialization_alias="method") - patient_instruction: str | None = Field(None, alias="patientInstruction", serialization_alias="patientInstruction") - patient_instruction_extension: Element | None = Field(None, alias="_patientInstruction", serialization_alias="_patientInstruction") + patientInstruction: str | None = Field(None, alias="patientInstruction", serialization_alias="patientInstruction") + patientInstructionExtension: Element | None = Field(None, alias="_patientInstruction", serialization_alias="_patientInstruction") route: CodeableConcept | None = Field(None, alias="route", serialization_alias="route") sequence: int | None = Field(None, alias="sequence", serialization_alias="sequence") - sequence_extension: Element | None = Field(None, alias="_sequence", serialization_alias="_sequence") + sequenceExtension: Element | None = Field(None, alias="_sequence", serialization_alias="_sequence") site: CodeableConcept | None = Field(None, alias="site", serialization_alias="site") text: str | None = Field(None, alias="text", serialization_alias="text") - text_extension: Element | None = Field(None, alias="_text", serialization_alias="_text") + textExtension: Element | None = Field(None, alias="_text", serialization_alias="_text") timing: Timing | None = Field(None, alias="timing", serialization_alias="timing") @@ -233,90 +233,90 @@ class Duration(Quantity): class Expression(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") description: str | None = Field(None, alias="description", serialization_alias="description") - description_extension: Element | None = Field(None, alias="_description", serialization_alias="_description") + descriptionExtension: Element | None = Field(None, alias="_description", serialization_alias="_description") expression: str | None = Field(None, alias="expression", serialization_alias="expression") - expression_extension: Element | None = Field(None, alias="_expression", serialization_alias="_expression") + expressionExtension: Element | None = Field(None, alias="_expression", serialization_alias="_expression") language: str = Field(alias="language", serialization_alias="language") - language_extension: Element | None = Field(None, alias="_language", serialization_alias="_language") + languageExtension: Element | None = Field(None, alias="_language", serialization_alias="_language") name: str | None = Field(None, alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") reference: str | None = Field(None, alias="reference", serialization_alias="reference") - reference_extension: Element | None = Field(None, alias="_reference", serialization_alias="_reference") + referenceExtension: Element | None = Field(None, alias="_reference", serialization_alias="_reference") class Extension(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") url: str = Field(alias="url", serialization_alias="url") - url_extension: Element | None = Field(None, alias="_url", serialization_alias="_url") - value_address: Address | None = Field(None, alias="valueAddress", serialization_alias="valueAddress") - value_age: Age | None = Field(None, alias="valueAge", serialization_alias="valueAge") - value_annotation: Annotation | None = Field(None, alias="valueAnnotation", serialization_alias="valueAnnotation") - value_attachment: Attachment | None = Field(None, alias="valueAttachment", serialization_alias="valueAttachment") - value_base64binary: str | None = Field(None, alias="valueBase64Binary", serialization_alias="valueBase64Binary") - value_base64binary_extension: Element | None = Field(None, alias="_valueBase64Binary", serialization_alias="_valueBase64Binary") - value_boolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") - value_boolean_extension: Element | None = Field(None, alias="_valueBoolean", serialization_alias="_valueBoolean") - value_canonical: str | None = Field(None, alias="valueCanonical", serialization_alias="valueCanonical") - value_canonical_extension: Element | None = Field(None, alias="_valueCanonical", serialization_alias="_valueCanonical") - value_code: str | None = Field(None, alias="valueCode", serialization_alias="valueCode") - value_code_extension: Element | None = Field(None, alias="_valueCode", serialization_alias="_valueCode") - value_codeable_concept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") - value_coding: Coding | None = Field(None, alias="valueCoding", serialization_alias="valueCoding") - value_contact_detail: ContactDetail | None = Field(None, alias="valueContactDetail", serialization_alias="valueContactDetail") - value_contact_point: ContactPoint | None = Field(None, alias="valueContactPoint", serialization_alias="valueContactPoint") - value_contributor: Contributor | None = Field(None, alias="valueContributor", serialization_alias="valueContributor") - value_count: Count | None = Field(None, alias="valueCount", serialization_alias="valueCount") - value_data_requirement: DataRequirement | None = Field(None, alias="valueDataRequirement", serialization_alias="valueDataRequirement") - value_date: str | None = Field(None, alias="valueDate", serialization_alias="valueDate") - value_date_extension: Element | None = Field(None, alias="_valueDate", serialization_alias="_valueDate") - value_date_time: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") - value_date_time_extension: Element | None = Field(None, alias="_valueDateTime", serialization_alias="_valueDateTime") - value_decimal: float | None = Field(None, alias="valueDecimal", serialization_alias="valueDecimal") - value_decimal_extension: Element | None = Field(None, alias="_valueDecimal", serialization_alias="_valueDecimal") - value_distance: Distance | None = Field(None, alias="valueDistance", serialization_alias="valueDistance") - value_dosage: Dosage | None = Field(None, alias="valueDosage", serialization_alias="valueDosage") - value_duration: Duration | None = Field(None, alias="valueDuration", serialization_alias="valueDuration") - value_expression: Expression | None = Field(None, alias="valueExpression", serialization_alias="valueExpression") - value_human_name: HumanName | None = Field(None, alias="valueHumanName", serialization_alias="valueHumanName") - value_id: str | None = Field(None, alias="valueId", serialization_alias="valueId") - value_id_extension: Element | None = Field(None, alias="_valueId", serialization_alias="_valueId") - value_identifier: Identifier | None = Field(None, alias="valueIdentifier", serialization_alias="valueIdentifier") - value_instant: str | None = Field(None, alias="valueInstant", serialization_alias="valueInstant") - value_instant_extension: Element | None = Field(None, alias="_valueInstant", serialization_alias="_valueInstant") - value_integer: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") - value_integer_extension: Element | None = Field(None, alias="_valueInteger", serialization_alias="_valueInteger") - value_markdown: str | None = Field(None, alias="valueMarkdown", serialization_alias="valueMarkdown") - value_markdown_extension: Element | None = Field(None, alias="_valueMarkdown", serialization_alias="_valueMarkdown") - value_meta: Meta | None = Field(None, alias="valueMeta", serialization_alias="valueMeta") - value_money: Money | None = Field(None, alias="valueMoney", serialization_alias="valueMoney") - value_oid: str | None = Field(None, alias="valueOid", serialization_alias="valueOid") - value_oid_extension: Element | None = Field(None, alias="_valueOid", serialization_alias="_valueOid") - value_parameter_definition: ParameterDefinition | None = Field(None, alias="valueParameterDefinition", serialization_alias="valueParameterDefinition") - value_period: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") - value_positive_int: PositiveInt | None = Field(None, alias="valuePositiveInt", serialization_alias="valuePositiveInt") - value_positive_int_extension: Element | None = Field(None, alias="_valuePositiveInt", serialization_alias="_valuePositiveInt") - value_quantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") - value_range: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") - value_ratio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") - value_reference: Reference | None = Field(None, alias="valueReference", serialization_alias="valueReference") - value_related_artifact: RelatedArtifact | None = Field(None, alias="valueRelatedArtifact", serialization_alias="valueRelatedArtifact") - value_sampled_data: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") - value_signature: Signature | None = Field(None, alias="valueSignature", serialization_alias="valueSignature") - value_string: str | None = Field(None, alias="valueString", serialization_alias="valueString") - value_string_extension: Element | None = Field(None, alias="_valueString", serialization_alias="_valueString") - value_time: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") - value_time_extension: Element | None = Field(None, alias="_valueTime", serialization_alias="_valueTime") - value_timing: Timing | None = Field(None, alias="valueTiming", serialization_alias="valueTiming") - value_trigger_definition: TriggerDefinition | None = Field(None, alias="valueTriggerDefinition", serialization_alias="valueTriggerDefinition") - value_unsigned_int: int | None = Field(None, alias="valueUnsignedInt", serialization_alias="valueUnsignedInt") - value_unsigned_int_extension: Element | None = Field(None, alias="_valueUnsignedInt", serialization_alias="_valueUnsignedInt") - value_uri: str | None = Field(None, alias="valueUri", serialization_alias="valueUri") - value_uri_extension: Element | None = Field(None, alias="_valueUri", serialization_alias="_valueUri") - value_url: str | None = Field(None, alias="valueUrl", serialization_alias="valueUrl") - value_url_extension: Element | None = Field(None, alias="_valueUrl", serialization_alias="_valueUrl") - value_usage_context: UsageContext | None = Field(None, alias="valueUsageContext", serialization_alias="valueUsageContext") - value_uuid: str | None = Field(None, alias="valueUuid", serialization_alias="valueUuid") - value_uuid_extension: Element | None = Field(None, alias="_valueUuid", serialization_alias="_valueUuid") + urlExtension: Element | None = Field(None, alias="_url", serialization_alias="_url") + valueAddress: Address | None = Field(None, alias="valueAddress", serialization_alias="valueAddress") + valueAge: Age | None = Field(None, alias="valueAge", serialization_alias="valueAge") + valueAnnotation: Annotation | None = Field(None, alias="valueAnnotation", serialization_alias="valueAnnotation") + valueAttachment: Attachment | None = Field(None, alias="valueAttachment", serialization_alias="valueAttachment") + valueBase64binary: str | None = Field(None, alias="valueBase64Binary", serialization_alias="valueBase64Binary") + valueBase64binaryExtension: Element | None = Field(None, alias="_valueBase64Binary", serialization_alias="_valueBase64Binary") + valueBoolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") + valueBooleanExtension: Element | None = Field(None, alias="_valueBoolean", serialization_alias="_valueBoolean") + valueCanonical: str | None = Field(None, alias="valueCanonical", serialization_alias="valueCanonical") + valueCanonicalExtension: Element | None = Field(None, alias="_valueCanonical", serialization_alias="_valueCanonical") + valueCode: str | None = Field(None, alias="valueCode", serialization_alias="valueCode") + valueCodeExtension: Element | None = Field(None, alias="_valueCode", serialization_alias="_valueCode") + valueCodeableConcept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") + valueCoding: Coding | None = Field(None, alias="valueCoding", serialization_alias="valueCoding") + valueContactDetail: ContactDetail | None = Field(None, alias="valueContactDetail", serialization_alias="valueContactDetail") + valueContactPoint: ContactPoint | None = Field(None, alias="valueContactPoint", serialization_alias="valueContactPoint") + valueContributor: Contributor | None = Field(None, alias="valueContributor", serialization_alias="valueContributor") + valueCount: Count | None = Field(None, alias="valueCount", serialization_alias="valueCount") + valueDataRequirement: DataRequirement | None = Field(None, alias="valueDataRequirement", serialization_alias="valueDataRequirement") + valueDate: str | None = Field(None, alias="valueDate", serialization_alias="valueDate") + valueDateExtension: Element | None = Field(None, alias="_valueDate", serialization_alias="_valueDate") + valueDateTime: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") + valueDateTimeExtension: Element | None = Field(None, alias="_valueDateTime", serialization_alias="_valueDateTime") + valueDecimal: float | None = Field(None, alias="valueDecimal", serialization_alias="valueDecimal") + valueDecimalExtension: Element | None = Field(None, alias="_valueDecimal", serialization_alias="_valueDecimal") + valueDistance: Distance | None = Field(None, alias="valueDistance", serialization_alias="valueDistance") + valueDosage: Dosage | None = Field(None, alias="valueDosage", serialization_alias="valueDosage") + valueDuration: Duration | None = Field(None, alias="valueDuration", serialization_alias="valueDuration") + valueExpression: Expression | None = Field(None, alias="valueExpression", serialization_alias="valueExpression") + valueHumanName: HumanName | None = Field(None, alias="valueHumanName", serialization_alias="valueHumanName") + valueId: str | None = Field(None, alias="valueId", serialization_alias="valueId") + valueIdExtension: Element | None = Field(None, alias="_valueId", serialization_alias="_valueId") + valueIdentifier: Identifier | None = Field(None, alias="valueIdentifier", serialization_alias="valueIdentifier") + valueInstant: str | None = Field(None, alias="valueInstant", serialization_alias="valueInstant") + valueInstantExtension: Element | None = Field(None, alias="_valueInstant", serialization_alias="_valueInstant") + valueInteger: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") + valueIntegerExtension: Element | None = Field(None, alias="_valueInteger", serialization_alias="_valueInteger") + valueMarkdown: str | None = Field(None, alias="valueMarkdown", serialization_alias="valueMarkdown") + valueMarkdownExtension: Element | None = Field(None, alias="_valueMarkdown", serialization_alias="_valueMarkdown") + valueMeta: Meta | None = Field(None, alias="valueMeta", serialization_alias="valueMeta") + valueMoney: Money | None = Field(None, alias="valueMoney", serialization_alias="valueMoney") + valueOid: str | None = Field(None, alias="valueOid", serialization_alias="valueOid") + valueOidExtension: Element | None = Field(None, alias="_valueOid", serialization_alias="_valueOid") + valueParameterDefinition: ParameterDefinition | None = Field(None, alias="valueParameterDefinition", serialization_alias="valueParameterDefinition") + valuePeriod: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") + valuePositiveInt: PositiveInt | None = Field(None, alias="valuePositiveInt", serialization_alias="valuePositiveInt") + valuePositiveIntExtension: Element | None = Field(None, alias="_valuePositiveInt", serialization_alias="_valuePositiveInt") + valueQuantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") + valueRange: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") + valueRatio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") + valueReference: Reference | None = Field(None, alias="valueReference", serialization_alias="valueReference") + valueRelatedArtifact: RelatedArtifact | None = Field(None, alias="valueRelatedArtifact", serialization_alias="valueRelatedArtifact") + valueSampledData: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") + valueSignature: Signature | None = Field(None, alias="valueSignature", serialization_alias="valueSignature") + valueString: str | None = Field(None, alias="valueString", serialization_alias="valueString") + valueStringExtension: Element | None = Field(None, alias="_valueString", serialization_alias="_valueString") + valueTime: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") + valueTimeExtension: Element | None = Field(None, alias="_valueTime", serialization_alias="_valueTime") + valueTiming: Timing | None = Field(None, alias="valueTiming", serialization_alias="valueTiming") + valueTriggerDefinition: TriggerDefinition | None = Field(None, alias="valueTriggerDefinition", serialization_alias="valueTriggerDefinition") + valueUnsignedInt: int | None = Field(None, alias="valueUnsignedInt", serialization_alias="valueUnsignedInt") + valueUnsignedIntExtension: Element | None = Field(None, alias="_valueUnsignedInt", serialization_alias="_valueUnsignedInt") + valueUri: str | None = Field(None, alias="valueUri", serialization_alias="valueUri") + valueUriExtension: Element | None = Field(None, alias="_valueUri", serialization_alias="_valueUri") + valueUrl: str | None = Field(None, alias="valueUrl", serialization_alias="valueUrl") + valueUrlExtension: Element | None = Field(None, alias="_valueUrl", serialization_alias="_valueUrl") + valueUsageContext: UsageContext | None = Field(None, alias="valueUsageContext", serialization_alias="valueUsageContext") + valueUuid: str | None = Field(None, alias="valueUuid", serialization_alias="valueUuid") + valueUuidExtension: Element | None = Field(None, alias="_valueUuid", serialization_alias="_valueUuid") def __eq__(self, other: object) -> bool: if not isinstance(other, Extension): @@ -330,18 +330,18 @@ def __hash__(self) -> int: class HumanName(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") family: str | None = Field(None, alias="family", serialization_alias="family") - family_extension: Element | None = Field(None, alias="_family", serialization_alias="_family") + familyExtension: Element | None = Field(None, alias="_family", serialization_alias="_family") given: PyList[str] | None = Field(None, alias="given", serialization_alias="given") - given_extension: PyList[Element | None] | None = Field(None, alias="_given", serialization_alias="_given") + givenExtension: PyList[Element | None] | None = Field(None, alias="_given", serialization_alias="_given") period: Period | None = Field(None, alias="period", serialization_alias="period") prefix: PyList[str] | None = Field(None, alias="prefix", serialization_alias="prefix") - prefix_extension: PyList[Element | None] | None = Field(None, alias="_prefix", serialization_alias="_prefix") + prefixExtension: PyList[Element | None] | None = Field(None, alias="_prefix", serialization_alias="_prefix") suffix: PyList[str] | None = Field(None, alias="suffix", serialization_alias="suffix") - suffix_extension: PyList[Element | None] | None = Field(None, alias="_suffix", serialization_alias="_suffix") + suffixExtension: PyList[Element | None] | None = Field(None, alias="_suffix", serialization_alias="_suffix") text: str | None = Field(None, alias="text", serialization_alias="text") - text_extension: Element | None = Field(None, alias="_text", serialization_alias="_text") + textExtension: Element | None = Field(None, alias="_text", serialization_alias="_text") use: Literal["usual", "official", "temp", "nickname", "anonymous", "old", "maiden"] | None = Field(None, alias="use", serialization_alias="use") - use_extension: Element | None = Field(None, alias="_use", serialization_alias="_use") + useExtension: Element | None = Field(None, alias="_use", serialization_alias="_use") class Identifier(Element): @@ -349,68 +349,68 @@ class Identifier(Element): assigner: Reference | None = Field(None, alias="assigner", serialization_alias="assigner") period: Period | None = Field(None, alias="period", serialization_alias="period") system: str | None = Field(None, alias="system", serialization_alias="system") - system_extension: Element | None = Field(None, alias="_system", serialization_alias="_system") + systemExtension: Element | None = Field(None, alias="_system", serialization_alias="_system") type: CodeableConcept[Literal["DL", "PPN", "BRN", "MR", "MCN", "EN", "TAX", "NIIP", "PRN", "MD", "DR", "ACSN", "UDI", "SNO", "SB", "PLAC", "FILL", "JHN"] | str] | None = Field(None, alias="type", serialization_alias="type") use: Literal["usual", "official", "temp", "secondary", "old"] | None = Field(None, alias="use", serialization_alias="use") - use_extension: Element | None = Field(None, alias="_use", serialization_alias="_use") + useExtension: Element | None = Field(None, alias="_use", serialization_alias="_use") value: str | None = Field(None, alias="value", serialization_alias="value") - value_extension: Element | None = Field(None, alias="_value", serialization_alias="_value") + valueExtension: Element | None = Field(None, alias="_value", serialization_alias="_value") class Meta(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - last_updated: str | None = Field(None, alias="lastUpdated", serialization_alias="lastUpdated") - last_updated_extension: Element | None = Field(None, alias="_lastUpdated", serialization_alias="_lastUpdated") + lastUpdated: str | None = Field(None, alias="lastUpdated", serialization_alias="lastUpdated") + lastUpdatedExtension: Element | None = Field(None, alias="_lastUpdated", serialization_alias="_lastUpdated") profile: PyList[str] | None = Field(None, alias="profile", serialization_alias="profile") - profile_extension: PyList[Element | None] | None = Field(None, alias="_profile", serialization_alias="_profile") + profileExtension: PyList[Element | None] | None = Field(None, alias="_profile", serialization_alias="_profile") security: PyList[Coding] | None = Field(None, alias="security", serialization_alias="security") source: str | None = Field(None, alias="source", serialization_alias="source") - source_extension: Element | None = Field(None, alias="_source", serialization_alias="_source") + sourceExtension: Element | None = Field(None, alias="_source", serialization_alias="_source") tag: PyList[Coding] | None = Field(None, alias="tag", serialization_alias="tag") - version_id: str | None = Field(None, alias="versionId", serialization_alias="versionId") - version_id_extension: Element | None = Field(None, alias="_versionId", serialization_alias="_versionId") + versionId: str | None = Field(None, alias="versionId", serialization_alias="versionId") + versionIdExtension: Element | None = Field(None, alias="_versionId", serialization_alias="_versionId") class Money(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") currency: str | None = Field(None, alias="currency", serialization_alias="currency") - currency_extension: Element | None = Field(None, alias="_currency", serialization_alias="_currency") + currencyExtension: Element | None = Field(None, alias="_currency", serialization_alias="_currency") value: float | None = Field(None, alias="value", serialization_alias="value") - value_extension: Element | None = Field(None, alias="_value", serialization_alias="_value") + valueExtension: Element | None = Field(None, alias="_value", serialization_alias="_value") class Narrative(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") div: str = Field(alias="div", serialization_alias="div") - div_extension: Element | None = Field(None, alias="_div", serialization_alias="_div") + divExtension: Element | None = Field(None, alias="_div", serialization_alias="_div") status: Literal["generated", "extensions", "additional", "empty"] = Field(alias="status", serialization_alias="status") - status_extension: Element | None = Field(None, alias="_status", serialization_alias="_status") + statusExtension: Element | None = Field(None, alias="_status", serialization_alias="_status") class ParameterDefinition(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") documentation: str | None = Field(None, alias="documentation", serialization_alias="documentation") - documentation_extension: Element | None = Field(None, alias="_documentation", serialization_alias="_documentation") + documentationExtension: Element | None = Field(None, alias="_documentation", serialization_alias="_documentation") max: str | None = Field(None, alias="max", serialization_alias="max") - max_extension: Element | None = Field(None, alias="_max", serialization_alias="_max") + maxExtension: Element | None = Field(None, alias="_max", serialization_alias="_max") min: int | None = Field(None, alias="min", serialization_alias="min") - min_extension: Element | None = Field(None, alias="_min", serialization_alias="_min") + minExtension: Element | None = Field(None, alias="_min", serialization_alias="_min") name: str | None = Field(None, alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") profile: str | None = Field(None, alias="profile", serialization_alias="profile") - profile_extension: Element | None = Field(None, alias="_profile", serialization_alias="_profile") + profileExtension: Element | None = Field(None, alias="_profile", serialization_alias="_profile") type: str = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") use: Literal["in", "out"] = Field(alias="use", serialization_alias="use") - use_extension: Element | None = Field(None, alias="_use", serialization_alias="_use") + useExtension: Element | None = Field(None, alias="_use", serialization_alias="_use") class Period(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") end: str | None = Field(None, alias="end", serialization_alias="end") - end_extension: Element | None = Field(None, alias="_end", serialization_alias="_end") + endExtension: Element | None = Field(None, alias="_end", serialization_alias="_end") start: str | None = Field(None, alias="start", serialization_alias="start") - start_extension: Element | None = Field(None, alias="_start", serialization_alias="_start") + startExtension: Element | None = Field(None, alias="_start", serialization_alias="_start") class Range(Element): @@ -428,81 +428,81 @@ class Ratio(Element): class Reference(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") display: str | None = Field(None, alias="display", serialization_alias="display") - display_extension: Element | None = Field(None, alias="_display", serialization_alias="_display") + displayExtension: Element | None = Field(None, alias="_display", serialization_alias="_display") identifier: Identifier | None = Field(None, alias="identifier", serialization_alias="identifier") reference: str | None = Field(None, alias="reference", serialization_alias="reference") - reference_extension: Element | None = Field(None, alias="_reference", serialization_alias="_reference") + referenceExtension: Element | None = Field(None, alias="_reference", serialization_alias="_reference") type: str | None = Field(None, alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") class RelatedArtifact(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") citation: str | None = Field(None, alias="citation", serialization_alias="citation") - citation_extension: Element | None = Field(None, alias="_citation", serialization_alias="_citation") + citationExtension: Element | None = Field(None, alias="_citation", serialization_alias="_citation") display: str | None = Field(None, alias="display", serialization_alias="display") - display_extension: Element | None = Field(None, alias="_display", serialization_alias="_display") + displayExtension: Element | None = Field(None, alias="_display", serialization_alias="_display") document: Attachment | None = Field(None, alias="document", serialization_alias="document") label: str | None = Field(None, alias="label", serialization_alias="label") - label_extension: Element | None = Field(None, alias="_label", serialization_alias="_label") + labelExtension: Element | None = Field(None, alias="_label", serialization_alias="_label") resource: str | None = Field(None, alias="resource", serialization_alias="resource") - resource_extension: Element | None = Field(None, alias="_resource", serialization_alias="_resource") + resourceExtension: Element | None = Field(None, alias="_resource", serialization_alias="_resource") type: Literal["documentation", "justification", "citation", "predecessor", "successor", "derived-from", "depends-on", "composed-of"] = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") url: str | None = Field(None, alias="url", serialization_alias="url") - url_extension: Element | None = Field(None, alias="_url", serialization_alias="_url") + urlExtension: Element | None = Field(None, alias="_url", serialization_alias="_url") class SampledData(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") data: str | None = Field(None, alias="data", serialization_alias="data") - data_extension: Element | None = Field(None, alias="_data", serialization_alias="_data") + dataExtension: Element | None = Field(None, alias="_data", serialization_alias="_data") dimensions: PositiveInt = Field(alias="dimensions", serialization_alias="dimensions") - dimensions_extension: Element | None = Field(None, alias="_dimensions", serialization_alias="_dimensions") + dimensionsExtension: Element | None = Field(None, alias="_dimensions", serialization_alias="_dimensions") factor: float | None = Field(None, alias="factor", serialization_alias="factor") - factor_extension: Element | None = Field(None, alias="_factor", serialization_alias="_factor") - lower_limit: float | None = Field(None, alias="lowerLimit", serialization_alias="lowerLimit") - lower_limit_extension: Element | None = Field(None, alias="_lowerLimit", serialization_alias="_lowerLimit") + factorExtension: Element | None = Field(None, alias="_factor", serialization_alias="_factor") + lowerLimit: float | None = Field(None, alias="lowerLimit", serialization_alias="lowerLimit") + lowerLimitExtension: Element | None = Field(None, alias="_lowerLimit", serialization_alias="_lowerLimit") origin: Quantity = Field(alias="origin", serialization_alias="origin") period: float = Field(alias="period", serialization_alias="period") - period_extension: Element | None = Field(None, alias="_period", serialization_alias="_period") - upper_limit: float | None = Field(None, alias="upperLimit", serialization_alias="upperLimit") - upper_limit_extension: Element | None = Field(None, alias="_upperLimit", serialization_alias="_upperLimit") + periodExtension: Element | None = Field(None, alias="_period", serialization_alias="_period") + upperLimit: float | None = Field(None, alias="upperLimit", serialization_alias="upperLimit") + upperLimitExtension: Element | None = Field(None, alias="_upperLimit", serialization_alias="_upperLimit") class Signature(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") data: str | None = Field(None, alias="data", serialization_alias="data") - data_extension: Element | None = Field(None, alias="_data", serialization_alias="_data") - on_behalf_of: Reference | None = Field(None, alias="onBehalfOf", serialization_alias="onBehalfOf") - sig_format: str | None = Field(None, alias="sigFormat", serialization_alias="sigFormat") - sig_format_extension: Element | None = Field(None, alias="_sigFormat", serialization_alias="_sigFormat") - target_format: str | None = Field(None, alias="targetFormat", serialization_alias="targetFormat") - target_format_extension: Element | None = Field(None, alias="_targetFormat", serialization_alias="_targetFormat") + dataExtension: Element | None = Field(None, alias="_data", serialization_alias="_data") + onBehalfOf: Reference | None = Field(None, alias="onBehalfOf", serialization_alias="onBehalfOf") + sigFormat: str | None = Field(None, alias="sigFormat", serialization_alias="sigFormat") + sigFormatExtension: Element | None = Field(None, alias="_sigFormat", serialization_alias="_sigFormat") + targetFormat: str | None = Field(None, alias="targetFormat", serialization_alias="targetFormat") + targetFormatExtension: Element | None = Field(None, alias="_targetFormat", serialization_alias="_targetFormat") type: PyList[Coding[Literal["1.2.840.10065.1.12.1.1", "1.2.840.10065.1.12.1.2", "1.2.840.10065.1.12.1.3", "1.2.840.10065.1.12.1.4", "1.2.840.10065.1.12.1.5", "1.2.840.10065.1.12.1.6", "1.2.840.10065.1.12.1.7", "1.2.840.10065.1.12.1.8", "1.2.840.10065.1.12.1.9", "1.2.840.10065.1.12.1.10", "1.2.840.10065.1.12.1.11", "1.2.840.10065.1.12.1.12", "1.2.840.10065.1.12.1.13", "1.2.840.10065.1.12.1.14", "1.2.840.10065.1.12.1.15", "1.2.840.10065.1.12.1.16", "1.2.840.10065.1.12.1.17", "1.2.840.10065.1.12.1.18"] | str]] = Field(alias="type", serialization_alias="type") when: str = Field(alias="when", serialization_alias="when") - when_extension: Element | None = Field(None, alias="_when", serialization_alias="_when") + whenExtension: Element | None = Field(None, alias="_when", serialization_alias="_when") who: Reference = Field(alias="who", serialization_alias="who") class TimingRepeat(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - bounds_duration: Duration | None = Field(None, alias="boundsDuration", serialization_alias="boundsDuration") - bounds_period: Period | None = Field(None, alias="boundsPeriod", serialization_alias="boundsPeriod") - bounds_range: Range | None = Field(None, alias="boundsRange", serialization_alias="boundsRange") + boundsDuration: Duration | None = Field(None, alias="boundsDuration", serialization_alias="boundsDuration") + boundsPeriod: Period | None = Field(None, alias="boundsPeriod", serialization_alias="boundsPeriod") + boundsRange: Range | None = Field(None, alias="boundsRange", serialization_alias="boundsRange") count: PositiveInt | None = Field(None, alias="count", serialization_alias="count") - count_max: PositiveInt | None = Field(None, alias="countMax", serialization_alias="countMax") - day_of_week: PyList[Literal["mon", "tue", "wed", "thu", "fri", "sat", "sun"]] | None = Field(None, alias="dayOfWeek", serialization_alias="dayOfWeek") + countMax: PositiveInt | None = Field(None, alias="countMax", serialization_alias="countMax") + dayOfWeek: PyList[Literal["mon", "tue", "wed", "thu", "fri", "sat", "sun"]] | None = Field(None, alias="dayOfWeek", serialization_alias="dayOfWeek") duration: float | None = Field(None, alias="duration", serialization_alias="duration") - duration_max: float | None = Field(None, alias="durationMax", serialization_alias="durationMax") - duration_unit: Literal["s", "min", "h", "d", "wk", "mo", "a"] | None = Field(None, alias="durationUnit", serialization_alias="durationUnit") + durationMax: float | None = Field(None, alias="durationMax", serialization_alias="durationMax") + durationUnit: Literal["s", "min", "h", "d", "wk", "mo", "a"] | None = Field(None, alias="durationUnit", serialization_alias="durationUnit") frequency: PositiveInt | None = Field(None, alias="frequency", serialization_alias="frequency") - frequency_max: PositiveInt | None = Field(None, alias="frequencyMax", serialization_alias="frequencyMax") + frequencyMax: PositiveInt | None = Field(None, alias="frequencyMax", serialization_alias="frequencyMax") offset: int | None = Field(None, alias="offset", serialization_alias="offset") period: float | None = Field(None, alias="period", serialization_alias="period") - period_max: float | None = Field(None, alias="periodMax", serialization_alias="periodMax") - period_unit: Literal["s", "min", "h", "d", "wk", "mo", "a"] | None = Field(None, alias="periodUnit", serialization_alias="periodUnit") - time_of_day: PyList[str] | None = Field(None, alias="timeOfDay", serialization_alias="timeOfDay") + periodMax: float | None = Field(None, alias="periodMax", serialization_alias="periodMax") + periodUnit: Literal["s", "min", "h", "d", "wk", "mo", "a"] | None = Field(None, alias="periodUnit", serialization_alias="periodUnit") + timeOfDay: PyList[str] | None = Field(None, alias="timeOfDay", serialization_alias="timeOfDay") when: PyList[Literal["MORN", "MORN.early", "MORN.late", "NOON", "AFT", "AFT.early", "AFT.late", "EVE", "EVE.early", "EVE.late", "NIGHT", "PHS", "HS", "WAKE", "C", "CM", "CD", "CV", "AC", "ACM", "ACD", "ACV", "PC", "PCM", "PCD", "PCV"]] | None = Field(None, alias="when", serialization_alias="when") @@ -510,7 +510,7 @@ class Timing(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: CodeableConcept[Literal["BID", "TID", "QID", "AM", "PM", "QD", "QOD", "Q1H", "Q2H", "Q3H", "Q4H", "Q6H", "Q8H", "BED", "WK", "MO"] | str] | None = Field(None, alias="code", serialization_alias="code") event: PyList[str] | None = Field(None, alias="event", serialization_alias="event") - event_extension: PyList[Element | None] | None = Field(None, alias="_event", serialization_alias="_event") + eventExtension: PyList[Element | None] | None = Field(None, alias="_event", serialization_alias="_event") repeat: TimingRepeat | None = Field(None, alias="repeat", serialization_alias="repeat") @@ -519,23 +519,23 @@ class TriggerDefinition(Element): condition: Expression | None = Field(None, alias="condition", serialization_alias="condition") data: PyList[DataRequirement] | None = Field(None, alias="data", serialization_alias="data") name: str | None = Field(None, alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") - timing_date: str | None = Field(None, alias="timingDate", serialization_alias="timingDate") - timing_date_extension: Element | None = Field(None, alias="_timingDate", serialization_alias="_timingDate") - timing_date_time: str | None = Field(None, alias="timingDateTime", serialization_alias="timingDateTime") - timing_date_time_extension: Element | None = Field(None, alias="_timingDateTime", serialization_alias="_timingDateTime") - timing_reference: Reference | None = Field(None, alias="timingReference", serialization_alias="timingReference") - timing_timing: Timing | None = Field(None, alias="timingTiming", serialization_alias="timingTiming") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") + timingDate: str | None = Field(None, alias="timingDate", serialization_alias="timingDate") + timingDateExtension: Element | None = Field(None, alias="_timingDate", serialization_alias="_timingDate") + timingDateTime: str | None = Field(None, alias="timingDateTime", serialization_alias="timingDateTime") + timingDateTimeExtension: Element | None = Field(None, alias="_timingDateTime", serialization_alias="_timingDateTime") + timingReference: Reference | None = Field(None, alias="timingReference", serialization_alias="timingReference") + timingTiming: Timing | None = Field(None, alias="timingTiming", serialization_alias="timingTiming") type: Literal["named-event", "periodic", "data-changed", "data-added", "data-modified", "data-removed", "data-accessed", "data-access-ended"] = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") class UsageContext(Element): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: Coding[Literal["gender", "age", "focus", "user", "workflow", "task", "venue", "species", "program"] | str] = Field(alias="code", serialization_alias="code") - value_codeable_concept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") - value_quantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") - value_range: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") - value_reference: Reference | None = Field(None, alias="valueReference", serialization_alias="valueReference") + valueCodeableConcept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") + valueQuantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") + valueRange: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") + valueReference: Reference | None = Field(None, alias="valueReference", serialization_alias="valueReference") diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/bundle.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/bundle.py index edd88998..fcf8207f 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/bundle.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/bundle.py @@ -20,7 +20,7 @@ class BundleEntry(BackboneElement, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - full_url: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") + fullUrl: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") link: PyList[BundleLink] | None = Field(None, alias="link", serialization_alias="link") request: BundleEntryRequest | None = Field(None, alias="request", serialization_alias="request") resource: T1 | None = Field(None, alias="resource", serialization_alias="resource") @@ -36,17 +36,17 @@ def _preprocess_resources(cls, data: Any) -> Any: class BundleEntryRequest(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - if_match: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") - if_modified_since: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") - if_none_exist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") - if_none_match: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") + ifMatch: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") + ifModifiedSince: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") + ifNoneExist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") + ifNoneMatch: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") method: Literal["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"] = Field(alias="method", serialization_alias="method") url: str = Field(alias="url", serialization_alias="url") class BundleEntryResponse(BackboneElement, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") etag: str | None = Field(None, alias="etag", serialization_alias="etag") - last_modified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") + lastModified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") location: str | None = Field(None, alias="location", serialization_alias="location") outcome: T | None = Field(None, alias="outcome", serialization_alias="outcome") status: str = Field(alias="status", serialization_alias="status") @@ -71,7 +71,7 @@ class BundleLink(BackboneElement): class Bundle(Resource, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Bundle'] = Field( + resourceType: Literal['Bundle'] = Field( default='Bundle', alias='resourceType', serialization_alias='resourceType', @@ -82,14 +82,14 @@ class Bundle(Resource, Generic[T1, T2]): link: PyList[BundleLink] | None = Field(None, alias="link", serialization_alias="link") signature: Signature | None = Field(None, alias="signature", serialization_alias="signature") timestamp: str | None = Field(None, alias="timestamp", serialization_alias="timestamp") - timestamp_extension: Element | None = Field(None, alias="_timestamp", serialization_alias="_timestamp") + timestampExtension: Element | None = Field(None, alias="_timestamp", serialization_alias="_timestamp") total: int | None = Field(None, alias="total", serialization_alias="total") - total_extension: Element | None = Field(None, alias="_total", serialization_alias="_total") + totalExtension: Element | None = Field(None, alias="_total", serialization_alias="_total") type: Literal["document", "message", "transaction", "transaction-response", "batch", "batch-response", "history", "searchset", "collection"] = Field(alias="type", serialization_alias="type") - type_extension: Element | None = Field(None, alias="_type", serialization_alias="_type") + typeExtension: Element | None = Field(None, alias="_type", serialization_alias="_type") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/domain_resource.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/domain_resource.py index f6d993f6..4dc0e5f9 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/domain_resource.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/domain_resource.py @@ -17,7 +17,7 @@ class DomainResource(Resource, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: str = Field( + resourceType: str = Field( default='DomainResource', alias='resourceType', serialization_alias='resourceType', @@ -25,11 +25,11 @@ class DomainResource(Resource, Generic[T]): ) contained: PyList[T] | None = Field(None, alias="contained", serialization_alias="contained") extension: PyList[Extension] | None = Field(None, alias="extension", serialization_alias="extension") - modifier_extension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") + modifierExtension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") text: Narrative | None = Field(None, alias="text", serialization_alias="text") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/observation.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/observation.py index 31eb5d11..65eb1697 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/observation.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/observation.py @@ -19,25 +19,25 @@ class ObservationComponent(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") code: CodeableConcept = Field(alias="code", serialization_alias="code") - data_absent_reason: CodeableConcept[Literal["unknown", "asked-unknown", "temp-unknown", "not-asked", "asked-declined", "masked", "not-applicable", "unsupported", "as-text", "error", "not-a-number", "negative-infinity", "positive-infinity", "not-performed", "not-permitted"] | str] | None = Field(None, alias="dataAbsentReason", serialization_alias="dataAbsentReason") + dataAbsentReason: CodeableConcept[Literal["unknown", "asked-unknown", "temp-unknown", "not-asked", "asked-declined", "masked", "not-applicable", "unsupported", "as-text", "error", "not-a-number", "negative-infinity", "positive-infinity", "not-performed", "not-permitted"] | str] | None = Field(None, alias="dataAbsentReason", serialization_alias="dataAbsentReason") interpretation: PyList[CodeableConcept[Literal["_GeneticObservationInterpretation", "CAR", "Carrier", "_ObservationInterpretationChange", "B", "D", "U", "W", "_ObservationInterpretationExceptions", "<", ">", "AC", "IE", "QCF", "TOX", "_ObservationInterpretationNormality", "A", "AA", "HH", "LL", "H", "H>", "HU", "L", "L<", "LU", "N", "_ObservationInterpretationSusceptibility", "I", "MS", "NCL", "NS", "R", "SYN-R", "S", "SDD", "SYN-S", "VS", "EX", "HX", "LX", "HM", "ObservationInterpretationDetection", "IND", "E", "NEG", "ND", "POS", "DET", "ObservationInterpretationExpectation", "EXP", "UNE", "OBX", "ReactivityObservationInterpretation", "NR", "RR", "WR"] | str]] | None = Field(None, alias="interpretation", serialization_alias="interpretation") - reference_range: PyList[ObservationReferenceRange] | None = Field(None, alias="referenceRange", serialization_alias="referenceRange") - value_boolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") - value_codeable_concept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") - value_date_time: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") - value_integer: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") - value_period: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") - value_quantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") - value_range: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") - value_ratio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") - value_sampled_data: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") - value_string: str | None = Field(None, alias="valueString", serialization_alias="valueString") - value_time: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") + referenceRange: PyList[ObservationReferenceRange] | None = Field(None, alias="referenceRange", serialization_alias="referenceRange") + valueBoolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") + valueCodeableConcept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") + valueDateTime: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") + valueInteger: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") + valuePeriod: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") + valueQuantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") + valueRange: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") + valueRatio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") + valueSampledData: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") + valueString: str | None = Field(None, alias="valueString", serialization_alias="valueString") + valueTime: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") class ObservationReferenceRange(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") age: Range | None = Field(None, alias="age", serialization_alias="age") - applies_to: PyList[CodeableConcept] | None = Field(None, alias="appliesTo", serialization_alias="appliesTo") + appliesTo: PyList[CodeableConcept] | None = Field(None, alias="appliesTo", serialization_alias="appliesTo") high: Quantity | None = Field(None, alias="high", serialization_alias="high") low: Quantity | None = Field(None, alias="low", serialization_alias="low") text: str | None = Field(None, alias="text", serialization_alias="text") @@ -46,61 +46,61 @@ class ObservationReferenceRange(BackboneElement): class Observation(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Observation'] = Field( + resourceType: Literal['Observation'] = Field( default='Observation', alias='resourceType', serialization_alias='resourceType', pattern='Observation' ) - based_on: PyList[Reference] | None = Field(None, alias="basedOn", serialization_alias="basedOn") - body_site: CodeableConcept | None = Field(None, alias="bodySite", serialization_alias="bodySite") + basedOn: PyList[Reference] | None = Field(None, alias="basedOn", serialization_alias="basedOn") + bodySite: CodeableConcept | None = Field(None, alias="bodySite", serialization_alias="bodySite") category: PyList[CodeableConcept[Literal["social-history", "vital-signs", "imaging", "laboratory", "procedure", "survey", "exam", "therapy", "activity"] | str]] | None = Field(None, alias="category", serialization_alias="category") code: CodeableConcept = Field(alias="code", serialization_alias="code") component: PyList[ObservationComponent] | None = Field(None, alias="component", serialization_alias="component") - data_absent_reason: CodeableConcept[Literal["unknown", "asked-unknown", "temp-unknown", "not-asked", "asked-declined", "masked", "not-applicable", "unsupported", "as-text", "error", "not-a-number", "negative-infinity", "positive-infinity", "not-performed", "not-permitted"] | str] | None = Field(None, alias="dataAbsentReason", serialization_alias="dataAbsentReason") - derived_from: PyList[Reference] | None = Field(None, alias="derivedFrom", serialization_alias="derivedFrom") + dataAbsentReason: CodeableConcept[Literal["unknown", "asked-unknown", "temp-unknown", "not-asked", "asked-declined", "masked", "not-applicable", "unsupported", "as-text", "error", "not-a-number", "negative-infinity", "positive-infinity", "not-performed", "not-permitted"] | str] | None = Field(None, alias="dataAbsentReason", serialization_alias="dataAbsentReason") + derivedFrom: PyList[Reference] | None = Field(None, alias="derivedFrom", serialization_alias="derivedFrom") device: Reference | None = Field(None, alias="device", serialization_alias="device") - effective_date_time: str | None = Field(None, alias="effectiveDateTime", serialization_alias="effectiveDateTime") - effective_date_time_extension: Element | None = Field(None, alias="_effectiveDateTime", serialization_alias="_effectiveDateTime") - effective_instant: str | None = Field(None, alias="effectiveInstant", serialization_alias="effectiveInstant") - effective_instant_extension: Element | None = Field(None, alias="_effectiveInstant", serialization_alias="_effectiveInstant") - effective_period: Period | None = Field(None, alias="effectivePeriod", serialization_alias="effectivePeriod") - effective_timing: Timing | None = Field(None, alias="effectiveTiming", serialization_alias="effectiveTiming") + effectiveDateTime: str | None = Field(None, alias="effectiveDateTime", serialization_alias="effectiveDateTime") + effectiveDateTimeExtension: Element | None = Field(None, alias="_effectiveDateTime", serialization_alias="_effectiveDateTime") + effectiveInstant: str | None = Field(None, alias="effectiveInstant", serialization_alias="effectiveInstant") + effectiveInstantExtension: Element | None = Field(None, alias="_effectiveInstant", serialization_alias="_effectiveInstant") + effectivePeriod: Period | None = Field(None, alias="effectivePeriod", serialization_alias="effectivePeriod") + effectiveTiming: Timing | None = Field(None, alias="effectiveTiming", serialization_alias="effectiveTiming") encounter: Reference | None = Field(None, alias="encounter", serialization_alias="encounter") focus: PyList[Reference] | None = Field(None, alias="focus", serialization_alias="focus") - has_member: PyList[Reference] | None = Field(None, alias="hasMember", serialization_alias="hasMember") + hasMember: PyList[Reference] | None = Field(None, alias="hasMember", serialization_alias="hasMember") identifier: PyList[Identifier] | None = Field(None, alias="identifier", serialization_alias="identifier") interpretation: PyList[CodeableConcept[Literal["_GeneticObservationInterpretation", "CAR", "Carrier", "_ObservationInterpretationChange", "B", "D", "U", "W", "_ObservationInterpretationExceptions", "<", ">", "AC", "IE", "QCF", "TOX", "_ObservationInterpretationNormality", "A", "AA", "HH", "LL", "H", "H>", "HU", "L", "L<", "LU", "N", "_ObservationInterpretationSusceptibility", "I", "MS", "NCL", "NS", "R", "SYN-R", "S", "SDD", "SYN-S", "VS", "EX", "HX", "LX", "HM", "ObservationInterpretationDetection", "IND", "E", "NEG", "ND", "POS", "DET", "ObservationInterpretationExpectation", "EXP", "UNE", "OBX", "ReactivityObservationInterpretation", "NR", "RR", "WR"] | str]] | None = Field(None, alias="interpretation", serialization_alias="interpretation") issued: str | None = Field(None, alias="issued", serialization_alias="issued") - issued_extension: Element | None = Field(None, alias="_issued", serialization_alias="_issued") + issuedExtension: Element | None = Field(None, alias="_issued", serialization_alias="_issued") method: CodeableConcept | None = Field(None, alias="method", serialization_alias="method") note: PyList[Annotation] | None = Field(None, alias="note", serialization_alias="note") - part_of: PyList[Reference] | None = Field(None, alias="partOf", serialization_alias="partOf") + partOf: PyList[Reference] | None = Field(None, alias="partOf", serialization_alias="partOf") performer: PyList[Reference] | None = Field(None, alias="performer", serialization_alias="performer") - reference_range: PyList[ObservationReferenceRange] | None = Field(None, alias="referenceRange", serialization_alias="referenceRange") + referenceRange: PyList[ObservationReferenceRange] | None = Field(None, alias="referenceRange", serialization_alias="referenceRange") specimen: Reference | None = Field(None, alias="specimen", serialization_alias="specimen") status: Literal["registered", "preliminary", "final", "amended", "corrected", "cancelled", "entered-in-error", "unknown"] = Field(alias="status", serialization_alias="status") - status_extension: Element | None = Field(None, alias="_status", serialization_alias="_status") + statusExtension: Element | None = Field(None, alias="_status", serialization_alias="_status") subject: Reference | None = Field(None, alias="subject", serialization_alias="subject") - value_boolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") - value_boolean_extension: Element | None = Field(None, alias="_valueBoolean", serialization_alias="_valueBoolean") - value_codeable_concept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") - value_date_time: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") - value_date_time_extension: Element | None = Field(None, alias="_valueDateTime", serialization_alias="_valueDateTime") - value_integer: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") - value_integer_extension: Element | None = Field(None, alias="_valueInteger", serialization_alias="_valueInteger") - value_period: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") - value_quantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") - value_range: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") - value_ratio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") - value_sampled_data: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") - value_string: str | None = Field(None, alias="valueString", serialization_alias="valueString") - value_string_extension: Element | None = Field(None, alias="_valueString", serialization_alias="_valueString") - value_time: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") - value_time_extension: Element | None = Field(None, alias="_valueTime", serialization_alias="_valueTime") + valueBoolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") + valueBooleanExtension: Element | None = Field(None, alias="_valueBoolean", serialization_alias="_valueBoolean") + valueCodeableConcept: CodeableConcept | None = Field(None, alias="valueCodeableConcept", serialization_alias="valueCodeableConcept") + valueDateTime: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") + valueDateTimeExtension: Element | None = Field(None, alias="_valueDateTime", serialization_alias="_valueDateTime") + valueInteger: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") + valueIntegerExtension: Element | None = Field(None, alias="_valueInteger", serialization_alias="_valueInteger") + valuePeriod: Period | None = Field(None, alias="valuePeriod", serialization_alias="valuePeriod") + valueQuantity: Quantity | None = Field(None, alias="valueQuantity", serialization_alias="valueQuantity") + valueRange: Range | None = Field(None, alias="valueRange", serialization_alias="valueRange") + valueRatio: Ratio | None = Field(None, alias="valueRatio", serialization_alias="valueRatio") + valueSampledData: SampledData | None = Field(None, alias="valueSampledData", serialization_alias="valueSampledData") + valueString: str | None = Field(None, alias="valueString", serialization_alias="valueString") + valueStringExtension: Element | None = Field(None, alias="_valueString", serialization_alias="_valueString") + valueTime: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") + valueTimeExtension: Element | None = Field(None, alias="_valueTime", serialization_alias="_valueTime") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/operation_outcome.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/operation_outcome.py index 7b0165ae..76db80c3 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/operation_outcome.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/operation_outcome.py @@ -24,7 +24,7 @@ class OperationOutcomeIssue(BackboneElement): class OperationOutcome(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['OperationOutcome'] = Field( + resourceType: Literal['OperationOutcome'] = Field( default='OperationOutcome', alias='resourceType', serialization_alias='resourceType', @@ -33,7 +33,7 @@ class OperationOutcome(DomainResource): issue: PyList[OperationOutcomeIssue] = Field(alias="issue", serialization_alias="issue") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/organization.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/organization.py index 56fe8b3d..54f9dd94 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/organization.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/organization.py @@ -25,28 +25,28 @@ class OrganizationContact(BackboneElement): class Organization(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Organization'] = Field( + resourceType: Literal['Organization'] = Field( default='Organization', alias='resourceType', serialization_alias='resourceType', pattern='Organization' ) active: bool | None = Field(None, alias="active", serialization_alias="active") - active_extension: Element | None = Field(None, alias="_active", serialization_alias="_active") + activeExtension: Element | None = Field(None, alias="_active", serialization_alias="_active") address: PyList[Address] | None = Field(None, alias="address", serialization_alias="address") alias: PyList[str] | None = Field(None, alias="alias", serialization_alias="alias") - alias_extension: PyList[Element | None] | None = Field(None, alias="_alias", serialization_alias="_alias") + aliasExtension: PyList[Element | None] | None = Field(None, alias="_alias", serialization_alias="_alias") contact: PyList[OrganizationContact] | None = Field(None, alias="contact", serialization_alias="contact") endpoint: PyList[Reference] | None = Field(None, alias="endpoint", serialization_alias="endpoint") identifier: PyList[Identifier] | None = Field(None, alias="identifier", serialization_alias="identifier") name: str | None = Field(None, alias="name", serialization_alias="name") - name_extension: Element | None = Field(None, alias="_name", serialization_alias="_name") - part_of: Reference | None = Field(None, alias="partOf", serialization_alias="partOf") + nameExtension: Element | None = Field(None, alias="_name", serialization_alias="_name") + partOf: Reference | None = Field(None, alias="partOf", serialization_alias="partOf") telecom: PyList[ContactPoint] | None = Field(None, alias="telecom", serialization_alias="telecom") type: PyList[CodeableConcept] | None = Field(None, alias="type", serialization_alias="type") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/patient.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/patient.py index b674889d..fb252a70 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/patient.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/patient.py @@ -38,40 +38,40 @@ class PatientLink(BackboneElement): class Patient(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Patient'] = Field( + resourceType: Literal['Patient'] = Field( default='Patient', alias='resourceType', serialization_alias='resourceType', pattern='Patient' ) active: bool | None = Field(None, alias="active", serialization_alias="active") - active_extension: Element | None = Field(None, alias="_active", serialization_alias="_active") + activeExtension: Element | None = Field(None, alias="_active", serialization_alias="_active") address: PyList[Address] | None = Field(None, alias="address", serialization_alias="address") - birth_date: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") - birth_date_extension: Element | None = Field(None, alias="_birthDate", serialization_alias="_birthDate") + birthDate: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") + birthDateExtension: Element | None = Field(None, alias="_birthDate", serialization_alias="_birthDate") communication: PyList[PatientCommunication] | None = Field(None, alias="communication", serialization_alias="communication") contact: PyList[PatientContact] | None = Field(None, alias="contact", serialization_alias="contact") - deceased_boolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") - deceased_boolean_extension: Element | None = Field(None, alias="_deceasedBoolean", serialization_alias="_deceasedBoolean") - deceased_date_time: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") - deceased_date_time_extension: Element | None = Field(None, alias="_deceasedDateTime", serialization_alias="_deceasedDateTime") + deceasedBoolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") + deceasedBooleanExtension: Element | None = Field(None, alias="_deceasedBoolean", serialization_alias="_deceasedBoolean") + deceasedDateTime: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") + deceasedDateTimeExtension: Element | None = Field(None, alias="_deceasedDateTime", serialization_alias="_deceasedDateTime") gender: Literal["male", "female", "other", "unknown"] | None = Field(None, alias="gender", serialization_alias="gender") - gender_extension: Element | None = Field(None, alias="_gender", serialization_alias="_gender") - general_practitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") + genderExtension: Element | None = Field(None, alias="_gender", serialization_alias="_gender") + generalPractitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") identifier: PyList[Identifier] | None = Field(None, alias="identifier", serialization_alias="identifier") link: PyList[PatientLink] | None = Field(None, alias="link", serialization_alias="link") - managing_organization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") - marital_status: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") - multiple_birth_boolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") - multiple_birth_boolean_extension: Element | None = Field(None, alias="_multipleBirthBoolean", serialization_alias="_multipleBirthBoolean") - multiple_birth_integer: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") - multiple_birth_integer_extension: Element | None = Field(None, alias="_multipleBirthInteger", serialization_alias="_multipleBirthInteger") + managingOrganization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") + maritalStatus: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") + multipleBirthBoolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") + multipleBirthBooleanExtension: Element | None = Field(None, alias="_multipleBirthBoolean", serialization_alias="_multipleBirthBoolean") + multipleBirthInteger: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") + multipleBirthIntegerExtension: Element | None = Field(None, alias="_multipleBirthInteger", serialization_alias="_multipleBirthInteger") name: PyList[HumanName] | None = Field(None, alias="name", serialization_alias="name") photo: PyList[Attachment] | None = Field(None, alias="photo", serialization_alias="photo") telecom: PyList[ContactPoint] | None = Field(None, alias="telecom", serialization_alias="telecom") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_place.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_place.py index 0101e4e2..5d7fd9e2 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_place.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_place.py @@ -37,21 +37,21 @@ def apply(cls, resource: Extension) -> "BirthPlaceExtension": return cls(resource) @classmethod - def create_resource(cls, *, value_address: Address) -> Extension: - return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/patient-birthPlace", value_address=value_address) + def create_resource(cls, *, valueAddress: Address) -> Extension: + return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/patient-birthPlace", valueAddress=valueAddress) @classmethod - def create(cls, *, value_address: Address) -> "BirthPlaceExtension": - return cls.apply(cls.create_resource(value_address=value_address)) + def create(cls, *, valueAddress: Address) -> "BirthPlaceExtension": + return cls.apply(cls.create_resource(valueAddress=valueAddress)) def to_resource(self) -> Extension: return self._resource def get_value_address(self) -> Address | None: - return cast('Address | None', getattr(self._resource, "value_address", None)) + return cast('Address | None', getattr(self._resource, "valueAddress", None)) def set_value_address(self, value: Address) -> "BirthPlaceExtension": - setattr(self._resource, "value_address", value) + setattr(self._resource, "valueAddress", value) return self def get_url(self) -> str | None: @@ -67,6 +67,6 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "url")) errors.extend(validate_fixed_value(self._resource, profile_name, "url", "http://hl7.org/fhir/StructureDefinition/patient-birthPlace")) - errors.extend(validate_choice_required(self._resource, profile_name, ["value_address"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["valueAddress"])) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_time.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_time.py index 256192c7..6c6e0ee2 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_time.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_birth_time.py @@ -36,21 +36,21 @@ def apply(cls, resource: Extension) -> "BirthTimeExtension": return cls(resource) @classmethod - def create_resource(cls, *, value_date_time: str) -> Extension: - return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/patient-birthTime", value_date_time=value_date_time) + def create_resource(cls, *, valueDateTime: str) -> Extension: + return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/patient-birthTime", valueDateTime=valueDateTime) @classmethod - def create(cls, *, value_date_time: str) -> "BirthTimeExtension": - return cls.apply(cls.create_resource(value_date_time=value_date_time)) + def create(cls, *, valueDateTime: str) -> "BirthTimeExtension": + return cls.apply(cls.create_resource(valueDateTime=valueDateTime)) def to_resource(self) -> Extension: return self._resource def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "BirthTimeExtension": - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueDateTime", value) return self def get_url(self) -> str | None: @@ -66,6 +66,6 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "url")) errors.extend(validate_fixed_value(self._resource, profile_name, "url", "http://hl7.org/fhir/StructureDefinition/patient-birthTime")) - errors.extend(validate_choice_required(self._resource, profile_name, ["value_date_time"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["valueDateTime"])) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_nationality.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_nationality.py index 47f44569..82158f2c 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_nationality.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_nationality.py @@ -67,7 +67,7 @@ def get_code(self, mode: Literal["raw"] | None = None) -> CodeableConcept | Exte ext_obj = ext if not isinstance(ext, dict) else Extension(**ext) if mode == "raw": return ext_obj - return cast('CodeableConcept | None', get_extension_value(ext, "value_codeable_concept")) + return cast('CodeableConcept | None', get_extension_value(ext, "valueCodeableConcept")) def set_code(self, value: "Extension | Any") -> "NationalityExtension": if is_extension(value): @@ -75,7 +75,7 @@ def set_code(self, value: "Extension | Any") -> "NationalityExtension": raise ValueError(f"Expected extension url 'code', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="code", value_codeable_concept=value)) + push_extension(self._resource, Extension(url="code", valueCodeableConcept=value)) return self @overload @@ -90,7 +90,7 @@ def get_period(self, mode: Literal["raw"] | None = None) -> Period | Extension | ext_obj = ext if not isinstance(ext, dict) else Extension(**ext) if mode == "raw": return ext_obj - return cast('Period | None', get_extension_value(ext, "value_period")) + return cast('Period | None', get_extension_value(ext, "valuePeriod")) def set_period(self, value: "Extension | Any") -> "NationalityExtension": if is_extension(value): @@ -98,7 +98,7 @@ def set_period(self, value: "Extension | Any") -> "NationalityExtension": raise ValueError(f"Expected extension url 'period', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="period", value_period=value)) + push_extension(self._resource, Extension(url="period", valuePeriod=value)) return self def validate(self) -> dict[str, list[str]]: diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_own_prefix.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_own_prefix.py index 4fe467ce..1daa8953 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_own_prefix.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/extension_own_prefix.py @@ -36,21 +36,21 @@ def apply(cls, resource: Extension) -> "OwnPrefixExtension": return cls(resource) @classmethod - def create_resource(cls, *, value_string: str) -> Extension: - return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/humanname-own-prefix", value_string=value_string) + def create_resource(cls, *, valueString: str) -> Extension: + return build_resource(Extension, url="http://hl7.org/fhir/StructureDefinition/humanname-own-prefix", valueString=valueString) @classmethod - def create(cls, *, value_string: str) -> "OwnPrefixExtension": - return cls.apply(cls.create_resource(value_string=value_string)) + def create(cls, *, valueString: str) -> "OwnPrefixExtension": + return cls.apply(cls.create_resource(valueString=valueString)) def to_resource(self) -> Extension: return self._resource def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "OwnPrefixExtension": - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueString", value) return self def get_url(self) -> str | None: @@ -66,6 +66,6 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "url")) errors.extend(validate_fixed_value(self._resource, profile_name, "url", "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix")) - errors.extend(validate_choice_required(self._resource, profile_name, ["value_string"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["valueString"])) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_bodyweight.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_bodyweight.py index ffdb01d1..cb11db7d 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_bodyweight.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_bodyweight.py @@ -51,7 +51,7 @@ def create_resource(cls, *, category: list[CodeableConcept] | None = None, statu return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"code":"29463-7","system":"http://loinc.org"}]}, category=category_with_defaults, status=status, @@ -95,26 +95,26 @@ def set_code(self, value: CodeableConcept) -> "ObservationBodyweightProfile": return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "ObservationBodyweightProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "ObservationBodyweightProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "ObservationBodyweightProfile": - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueQuantity", value) return self @overload @@ -150,12 +150,12 @@ def validate(self) -> dict[str, list[str]]: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"code":"29463-7","system":"http://loinc.org"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["85353-1","9279-1","8867-4","2708-6","8310-5","8302-2","9843-4","29463-7","39156-5","85354-9","8480-6","8462-4","8478-0"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_vitalsigns.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_vitalsigns.py index c401b7ac..187f57df 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_vitalsigns.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/profiles/observation_observation_vitalsigns.py @@ -51,7 +51,7 @@ def create_resource(cls, *, category: list[CodeableConcept] | None = None, statu return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", category=category_with_defaults, status=status, code=code, @@ -95,19 +95,19 @@ def set_category(self, value: list[CodeableConcept]) -> "ObservationVitalsignsPr return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "ObservationVitalsignsProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "ObservationVitalsignsProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self @overload @@ -142,12 +142,12 @@ def validate(self) -> dict[str, list[str]]: errors.extend(validate_required(self._resource, profile_name, "code")) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["85353-1","9279-1","8867-4","2708-6","8310-5","8302-2","9843-4","29463-7","39156-5","85354-9","8480-6","8462-4","8478-0"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/resource.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/resource.py index cf9ed8bf..3fd02b76 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/resource.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/resource.py @@ -14,22 +14,22 @@ class Resource(FhirpyBaseModel): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: str = Field( + resourceType: str = Field( default='Resource', alias='resourceType', serialization_alias='resourceType', pattern='Resource' ) id: str | None = Field(None, alias="id", serialization_alias="id") - id_extension: Element | None = Field(None, alias="_id", serialization_alias="_id") - implicit_rules: str | None = Field(None, alias="implicitRules", serialization_alias="implicitRules") - implicit_rules_extension: Element | None = Field(None, alias="_implicitRules", serialization_alias="_implicitRules") + idExtension: Element | None = Field(None, alias="_id", serialization_alias="_id") + implicitRules: str | None = Field(None, alias="implicitRules", serialization_alias="implicitRules") + implicitRulesExtension: Element | None = Field(None, alias="_implicitRules", serialization_alias="_implicitRules") language: str | None = Field(None, alias="language", serialization_alias="language") - language_extension: Element | None = Field(None, alias="_language", serialization_alias="_language") + languageExtension: Element | None = Field(None, alias="_language", serialization_alias="_language") meta: Meta | None = Field(None, alias="meta", serialization_alias="meta") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_individual_sex_extension.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_individual_sex_extension.py index 4fc8986e..b011b1df 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_individual_sex_extension.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_individual_sex_extension.py @@ -37,21 +37,21 @@ def apply(cls, resource: Extension) -> "UscoreIndividualSexExtension": return cls(resource) @classmethod - def create_resource(cls, *, value_coding: Coding) -> Extension: - return build_resource(Extension, url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", value_coding=value_coding) + def create_resource(cls, *, valueCoding: Coding) -> Extension: + return build_resource(Extension, url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", valueCoding=valueCoding) @classmethod - def create(cls, *, value_coding: Coding) -> "UscoreIndividualSexExtension": - return cls.apply(cls.create_resource(value_coding=value_coding)) + def create(cls, *, valueCoding: Coding) -> "UscoreIndividualSexExtension": + return cls.apply(cls.create_resource(valueCoding=valueCoding)) def to_resource(self) -> Extension: return self._resource def get_value_coding(self) -> Coding | None: - return cast('Coding | None', getattr(self._resource, "value_coding", None)) + return cast('Coding | None', getattr(self._resource, "valueCoding", None)) def set_value_coding(self, value: Coding) -> "UscoreIndividualSexExtension": - setattr(self._resource, "value_coding", value) + setattr(self._resource, "valueCoding", value) return self def get_url(self) -> str | None: @@ -67,6 +67,6 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "url")) errors.extend(validate_fixed_value(self._resource, profile_name, "url", "http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex")) - errors.extend(validate_choice_required(self._resource, profile_name, ["value_coding"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["valueCoding"])) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_interpreter_needed_extension.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_interpreter_needed_extension.py index 64179535..9d9fdb47 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_interpreter_needed_extension.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/extension_uscore_interpreter_needed_extension.py @@ -37,21 +37,21 @@ def apply(cls, resource: Extension) -> "UscoreInterpreterNeededExtension": return cls(resource) @classmethod - def create_resource(cls, *, value_coding: Coding) -> Extension: - return build_resource(Extension, url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", value_coding=value_coding) + def create_resource(cls, *, valueCoding: Coding) -> Extension: + return build_resource(Extension, url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", valueCoding=valueCoding) @classmethod - def create(cls, *, value_coding: Coding) -> "UscoreInterpreterNeededExtension": - return cls.apply(cls.create_resource(value_coding=value_coding)) + def create(cls, *, valueCoding: Coding) -> "UscoreInterpreterNeededExtension": + return cls.apply(cls.create_resource(valueCoding=valueCoding)) def to_resource(self) -> Extension: return self._resource def get_value_coding(self) -> Coding | None: - return cast('Coding | None', getattr(self._resource, "value_coding", None)) + return cast('Coding | None', getattr(self._resource, "valueCoding", None)) def set_value_coding(self, value: Coding) -> "UscoreInterpreterNeededExtension": - setattr(self._resource, "value_coding", value) + setattr(self._resource, "valueCoding", value) return self def get_url(self) -> str | None: @@ -67,6 +67,6 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "url")) errors.extend(validate_fixed_value(self._resource, profile_name, "url", "http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed")) - errors.extend(validate_choice_required(self._resource, profile_name, ["value_coding"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["valueCoding"])) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_blood_pressure_profile.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_blood_pressure_profile.py index 94cfba06..6a3eb8e7 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_blood_pressure_profile.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_blood_pressure_profile.py @@ -61,7 +61,7 @@ def create_resource(cls, *, category: list[CodeableConcept] | None = None, compo return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"system":"http://loinc.org","code":"85354-9"}]}, category=category_with_defaults, component=component_with_defaults, @@ -113,206 +113,206 @@ def set_component(self, value: list[BackboneElement]) -> "UscoreBloodPressurePro return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "UscoreBloodPressureProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueQuantity", value) return self def get_value_codeable_concept(self) -> CodeableConcept | None: - return cast('CodeableConcept | None', getattr(self._resource, "value_codeable_concept", None)) + return cast('CodeableConcept | None', getattr(self._resource, "valueCodeableConcept", None)) def set_value_codeable_concept(self, value: CodeableConcept) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_codeable_concept", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueCodeableConcept", value) return self def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueString", value) return self def get_value_boolean(self) -> bool | None: - return cast('bool | None', getattr(self._resource, "value_boolean", None)) + return cast('bool | None', getattr(self._resource, "valueBoolean", None)) def set_value_boolean(self, value: bool) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_boolean", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueBoolean", value) return self def get_value_integer(self) -> int | None: - return cast('int | None', getattr(self._resource, "value_integer", None)) + return cast('int | None', getattr(self._resource, "valueInteger", None)) def set_value_integer(self, value: int) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_integer", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueInteger", value) return self def get_value_range(self) -> Range | None: - return cast('Range | None', getattr(self._resource, "value_range", None)) + return cast('Range | None', getattr(self._resource, "valueRange", None)) def set_value_range(self, value: Range) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_range", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRange", value) return self def get_value_ratio(self) -> Ratio | None: - return cast('Ratio | None', getattr(self._resource, "value_ratio", None)) + return cast('Ratio | None', getattr(self._resource, "valueRatio", None)) def set_value_ratio(self, value: Ratio) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_ratio", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRatio", value) return self def get_value_sampled_data(self) -> SampledData | None: - return cast('SampledData | None', getattr(self._resource, "value_sampled_data", None)) + return cast('SampledData | None', getattr(self._resource, "valueSampledData", None)) def set_value_sampled_data(self, value: SampledData) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_sampled_data", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueSampledData", value) return self def get_value_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_time", None)) + return cast('str | None', getattr(self._resource, "valueTime", None)) def set_value_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueTime", value) return self def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueDateTime", value) return self def get_value_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "value_period", None)) + return cast('Period | None', getattr(self._resource, "valuePeriod", None)) def set_value_period(self, value: Period) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", value) return self @overload @@ -392,16 +392,16 @@ def validate(self) -> dict[str, list[str]]: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"system":"http://loinc.org","code":"85354-9"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"system":"http://loinc.org","code":"8480-6"}]}}, "systolic", 1, 1)) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"system":"http://loinc.org","code":"8462-4"}]}}, "diastolic", 1, 1)) errors.extend(validate_reference(self._resource, profile_name, "performer", ["PractitionerRole","USCoreCareTeam","USCoreOrganizationProfile","Patient","USCorePractitionerProfile","USCoreRelatedPersonProfile"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["2708-6","29463-7","3140-1","3150-0","3151-8","39156-5","59408-5","59575-1","59576-9","77606-2","8287-5","8289-1","8302-2","8306-3","8310-5","8462-4","8478-0","8480-6","8867-4","9279-1","9843-4"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) warnings.extend(validate_must_support(self._resource, profile_name, "performer")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_body_weight_profile.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_body_weight_profile.py index 5f9a268b..55014ad3 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_body_weight_profile.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_body_weight_profile.py @@ -53,7 +53,7 @@ def create_resource(cls, *, category: list[CodeableConcept] | None = None, statu return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"system":"http://loinc.org","code":"29463-7"}]}, category=category_with_defaults, status=status, @@ -97,96 +97,96 @@ def set_code(self, value: CodeableConcept) -> "UscoreBodyWeightProfile": return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "UscoreBodyWeightProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueQuantity", value) return self def get_value_codeable_concept(self) -> CodeableConcept | None: - return cast('CodeableConcept | None', getattr(self._resource, "value_codeable_concept", None)) + return cast('CodeableConcept | None', getattr(self._resource, "valueCodeableConcept", None)) def set_value_codeable_concept(self, value: CodeableConcept) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_codeable_concept", value) + setattr(self._resource, "valueCodeableConcept", value) return self def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueString", value) return self def get_value_boolean(self) -> bool | None: - return cast('bool | None', getattr(self._resource, "value_boolean", None)) + return cast('bool | None', getattr(self._resource, "valueBoolean", None)) def set_value_boolean(self, value: bool) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_boolean", value) + setattr(self._resource, "valueBoolean", value) return self def get_value_integer(self) -> int | None: - return cast('int | None', getattr(self._resource, "value_integer", None)) + return cast('int | None', getattr(self._resource, "valueInteger", None)) def set_value_integer(self, value: int) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_integer", value) + setattr(self._resource, "valueInteger", value) return self def get_value_range(self) -> Range | None: - return cast('Range | None', getattr(self._resource, "value_range", None)) + return cast('Range | None', getattr(self._resource, "valueRange", None)) def set_value_range(self, value: Range) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_range", value) + setattr(self._resource, "valueRange", value) return self def get_value_ratio(self) -> Ratio | None: - return cast('Ratio | None', getattr(self._resource, "value_ratio", None)) + return cast('Ratio | None', getattr(self._resource, "valueRatio", None)) def set_value_ratio(self, value: Ratio) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_ratio", value) + setattr(self._resource, "valueRatio", value) return self def get_value_sampled_data(self) -> SampledData | None: - return cast('SampledData | None', getattr(self._resource, "value_sampled_data", None)) + return cast('SampledData | None', getattr(self._resource, "valueSampledData", None)) def set_value_sampled_data(self, value: SampledData) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_sampled_data", value) + setattr(self._resource, "valueSampledData", value) return self def get_value_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_time", None)) + return cast('str | None', getattr(self._resource, "valueTime", None)) def set_value_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_time", value) + setattr(self._resource, "valueTime", value) return self def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueDateTime", value) return self def get_value_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "value_period", None)) + return cast('Period | None', getattr(self._resource, "valuePeriod", None)) def set_value_period(self, value: Period) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_period", value) + setattr(self._resource, "valuePeriod", value) return self @overload @@ -222,24 +222,24 @@ def validate(self) -> dict[str, list[str]]: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"system":"http://loinc.org","code":"29463-7"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_reference(self._resource, profile_name, "performer", ["PractitionerRole","USCoreCareTeam","USCoreOrganizationProfile","Patient","USCorePractitionerProfile","USCoreRelatedPersonProfile"])) - errors.extend(validate_excluded(self._resource, profile_name, "value_codeable_concept")) - errors.extend(validate_excluded(self._resource, profile_name, "value_string")) - errors.extend(validate_excluded(self._resource, profile_name, "value_boolean")) - errors.extend(validate_excluded(self._resource, profile_name, "value_integer")) - errors.extend(validate_excluded(self._resource, profile_name, "value_range")) - errors.extend(validate_excluded(self._resource, profile_name, "value_ratio")) - errors.extend(validate_excluded(self._resource, profile_name, "value_sampled_data")) - errors.extend(validate_excluded(self._resource, profile_name, "value_time")) - errors.extend(validate_excluded(self._resource, profile_name, "value_date_time")) - errors.extend(validate_excluded(self._resource, profile_name, "value_period")) + errors.extend(validate_excluded(self._resource, profile_name, "valueCodeableConcept")) + errors.extend(validate_excluded(self._resource, profile_name, "valueString")) + errors.extend(validate_excluded(self._resource, profile_name, "valueBoolean")) + errors.extend(validate_excluded(self._resource, profile_name, "valueInteger")) + errors.extend(validate_excluded(self._resource, profile_name, "valueRange")) + errors.extend(validate_excluded(self._resource, profile_name, "valueRatio")) + errors.extend(validate_excluded(self._resource, profile_name, "valueSampledData")) + errors.extend(validate_excluded(self._resource, profile_name, "valueTime")) + errors.extend(validate_excluded(self._resource, profile_name, "valueDateTime")) + errors.extend(validate_excluded(self._resource, profile_name, "valuePeriod")) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["2708-6","29463-7","3140-1","3150-0","3151-8","39156-5","59408-5","59575-1","59576-9","77606-2","8287-5","8289-1","8302-2","8306-3","8310-5","8462-4","8478-0","8480-6","8867-4","9279-1","9843-4"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) warnings.extend(validate_must_support(self._resource, profile_name, "performer")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_vital_signs_profile.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_vital_signs_profile.py index 71eb5fbe..d3ca6b80 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_vital_signs_profile.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/observation_uscore_vital_signs_profile.py @@ -53,7 +53,7 @@ def create_resource(cls, *, category: list[CodeableConcept] | None = None, statu return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", category=category_with_defaults, status=status, code=code, @@ -97,206 +97,206 @@ def set_category(self, value: list[CodeableConcept]) -> "UscoreVitalSignsProfile return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "UscoreVitalSignsProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "UscoreVitalSignsProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueQuantity", value) return self def get_value_codeable_concept(self) -> CodeableConcept | None: - return cast('CodeableConcept | None', getattr(self._resource, "value_codeable_concept", None)) + return cast('CodeableConcept | None', getattr(self._resource, "valueCodeableConcept", None)) def set_value_codeable_concept(self, value: CodeableConcept) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_codeable_concept", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueCodeableConcept", value) return self def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueString", value) return self def get_value_boolean(self) -> bool | None: - return cast('bool | None', getattr(self._resource, "value_boolean", None)) + return cast('bool | None', getattr(self._resource, "valueBoolean", None)) def set_value_boolean(self, value: bool) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_boolean", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueBoolean", value) return self def get_value_integer(self) -> int | None: - return cast('int | None', getattr(self._resource, "value_integer", None)) + return cast('int | None', getattr(self._resource, "valueInteger", None)) def set_value_integer(self, value: int) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_integer", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueInteger", value) return self def get_value_range(self) -> Range | None: - return cast('Range | None', getattr(self._resource, "value_range", None)) + return cast('Range | None', getattr(self._resource, "valueRange", None)) def set_value_range(self, value: Range) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_range", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRange", value) return self def get_value_ratio(self) -> Ratio | None: - return cast('Ratio | None', getattr(self._resource, "value_ratio", None)) + return cast('Ratio | None', getattr(self._resource, "valueRatio", None)) def set_value_ratio(self, value: Ratio) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_ratio", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRatio", value) return self def get_value_sampled_data(self) -> SampledData | None: - return cast('SampledData | None', getattr(self._resource, "value_sampled_data", None)) + return cast('SampledData | None', getattr(self._resource, "valueSampledData", None)) def set_value_sampled_data(self, value: SampledData) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_sampled_data", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueSampledData", value) return self def get_value_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_time", None)) + return cast('str | None', getattr(self._resource, "valueTime", None)) def set_value_time(self, value: str) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueTime", value) return self def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueDateTime", value) return self def get_value_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "value_period", None)) + return cast('Period | None', getattr(self._resource, "valuePeriod", None)) def set_value_period(self, value: Period) -> "UscoreVitalSignsProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", value) return self @overload @@ -331,14 +331,14 @@ def validate(self) -> dict[str, list[str]]: errors.extend(validate_required(self._resource, profile_name, "code")) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_reference(self._resource, profile_name, "performer", ["PractitionerRole","USCoreCareTeam","USCoreOrganizationProfile","Patient","USCorePractitionerProfile","USCoreRelatedPersonProfile"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["2708-6","29463-7","3140-1","3150-0","3151-8","39156-5","59408-5","59575-1","59576-9","77606-2","8287-5","8289-1","8302-2","8306-3","8310-5","8462-4","8478-0","8480-6","8867-4","9279-1","9843-4"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) warnings.extend(validate_must_support(self._resource, profile_name, "performer")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/patient_uscore_patient_profile.py b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/patient_uscore_patient_profile.py index 3fe3445d..359b8b42 100644 --- a/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/patient_uscore_patient_profile.py +++ b/examples/python-r4-us-core/fhir_types/hl7_fhir_us_core/profiles/patient_uscore_patient_profile.py @@ -52,7 +52,7 @@ def apply(cls, resource: Patient) -> "UscorePatientProfile": def create_resource(cls, *, identifier: list[Identifier], name: list[HumanName]) -> Patient: return build_resource( Patient, - resource_type="Patient", + resourceType="Patient", identifier=identifier, name=name, meta={"profile": [cls.canonical_url]}, @@ -95,7 +95,7 @@ def get_race(self, mode: Literal["raw", "profile"] | None = None) -> dict[str, A return ext_obj if mode == "profile": return UscoreRaceExtension.apply(ext_obj) - config = [{"name": "ombCategory", "valueField": "value_coding", "isArray": False}, {"name": "detailed", "valueField": "value_coding", "isArray": True}, {"name": "text", "valueField": "value_string", "isArray": False}] + config = [{"name": "ombCategory", "valueField": "valueCoding", "isArray": False}, {"name": "detailed", "valueField": "valueCoding", "isArray": True}, {"name": "text", "valueField": "valueString", "isArray": False}] return extract_complex_extension(ext, config) def set_race(self, value: "UscoreRaceExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -108,11 +108,11 @@ def set_race(self, value: "UscoreRaceExtension | Extension | dict[str, Any]") -> else: sub_extensions = [] if value.get("ombCategory") is not None: - sub_extensions.append({"url": "ombCategory", "value_coding": value["ombCategory"]}) + sub_extensions.append({"url": "ombCategory", "valueCoding": value["ombCategory"]}) for item in value.get("detailed", []): - sub_extensions.append({"url": "detailed", "value_coding": item}) + sub_extensions.append({"url": "detailed", "valueCoding": item}) if value.get("text") is not None: - sub_extensions.append({"url": "text", "value_string": value["text"]}) + sub_extensions.append({"url": "text", "valueString": value["text"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", extension=sub_extensions)) return self @@ -132,7 +132,7 @@ def get_ethnicity(self, mode: Literal["raw", "profile"] | None = None) -> dict[s return ext_obj if mode == "profile": return UscoreEthnicityExtension.apply(ext_obj) - config = [{"name": "ombCategory", "valueField": "value_coding", "isArray": False}, {"name": "detailed", "valueField": "value_coding", "isArray": True}, {"name": "text", "valueField": "value_string", "isArray": False}] + config = [{"name": "ombCategory", "valueField": "valueCoding", "isArray": False}, {"name": "detailed", "valueField": "valueCoding", "isArray": True}, {"name": "text", "valueField": "valueString", "isArray": False}] return extract_complex_extension(ext, config) def set_ethnicity(self, value: "UscoreEthnicityExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -145,11 +145,11 @@ def set_ethnicity(self, value: "UscoreEthnicityExtension | Extension | dict[str, else: sub_extensions = [] if value.get("ombCategory") is not None: - sub_extensions.append({"url": "ombCategory", "value_coding": value["ombCategory"]}) + sub_extensions.append({"url": "ombCategory", "valueCoding": value["ombCategory"]}) for item in value.get("detailed", []): - sub_extensions.append({"url": "detailed", "value_coding": item}) + sub_extensions.append({"url": "detailed", "valueCoding": item}) if value.get("text") is not None: - sub_extensions.append({"url": "text", "value_string": value["text"]}) + sub_extensions.append({"url": "text", "valueString": value["text"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", extension=sub_extensions)) return self @@ -169,7 +169,7 @@ def get_tribal_affiliation(self, mode: Literal["raw", "profile"] | None = None) return ext_obj if mode == "profile": return UscoreTribalAffiliationExtension.apply(ext_obj) - config = [{"name": "tribalAffiliation", "valueField": "value_codeable_concept", "isArray": False}, {"name": "isEnrolled", "valueField": "value_boolean", "isArray": False}] + config = [{"name": "tribalAffiliation", "valueField": "valueCodeableConcept", "isArray": False}, {"name": "isEnrolled", "valueField": "valueBoolean", "isArray": False}] return extract_complex_extension(ext, config) def set_tribal_affiliation(self, value: "UscoreTribalAffiliationExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -182,9 +182,9 @@ def set_tribal_affiliation(self, value: "UscoreTribalAffiliationExtension | Exte else: sub_extensions = [] if value.get("tribalAffiliation") is not None: - sub_extensions.append({"url": "tribalAffiliation", "value_codeable_concept": value["tribalAffiliation"]}) + sub_extensions.append({"url": "tribalAffiliation", "valueCodeableConcept": value["tribalAffiliation"]}) if value.get("isEnrolled") is not None: - sub_extensions.append({"url": "isEnrolled", "value_boolean": value["isEnrolled"]}) + sub_extensions.append({"url": "isEnrolled", "valueBoolean": value["isEnrolled"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-tribal-affiliation", extension=sub_extensions)) return self @@ -204,7 +204,7 @@ def get_sex(self, mode: Literal["raw", "profile"] | None = None) -> Coding | Ext return ext_obj if mode == "profile": return UscoreIndividualSexExtension.apply(ext_obj) - return cast('Coding | None', get_extension_value(ext, "value_coding")) + return cast('Coding | None', get_extension_value(ext, "valueCoding")) def set_sex(self, value: "UscoreIndividualSexExtension | Extension | Any") -> "UscorePatientProfile": if isinstance(value, UscoreIndividualSexExtension): @@ -214,7 +214,7 @@ def set_sex(self, value: "UscoreIndividualSexExtension | Extension | Any") -> "U raise ValueError(f"Expected extension url 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", value_coding=value)) + push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", valueCoding=value)) return self @overload @@ -233,7 +233,7 @@ def get_interpreter_required(self, mode: Literal["raw", "profile"] | None = None return ext_obj if mode == "profile": return UscoreInterpreterNeededExtension.apply(ext_obj) - return cast('Coding | None', get_extension_value(ext, "value_coding")) + return cast('Coding | None', get_extension_value(ext, "valueCoding")) def set_interpreter_required(self, value: "UscoreInterpreterNeededExtension | Extension | Any") -> "UscorePatientProfile": if isinstance(value, UscoreInterpreterNeededExtension): @@ -243,7 +243,7 @@ def set_interpreter_required(self, value: "UscoreInterpreterNeededExtension | Ex raise ValueError(f"Expected extension url 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", value_coding=value)) + push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", valueCoding=value)) return self def validate(self) -> dict[str, list[str]]: @@ -252,7 +252,7 @@ def validate(self) -> dict[str, list[str]]: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "identifier")) errors.extend(validate_required(self._resource, profile_name, "name")) - warnings.extend(validate_must_support(self._resource, profile_name, "birth_date")) + warnings.extend(validate_must_support(self._resource, profile_name, "birthDate")) warnings.extend(validate_must_support(self._resource, profile_name, "address")) return {"errors": errors, "warnings": warnings} diff --git a/examples/python-r4-us-core/generate.ts b/examples/python-r4-us-core/generate.ts index 7ae138b9..b769a459 100644 --- a/examples/python-r4-us-core/generate.ts +++ b/examples/python-r4-us-core/generate.ts @@ -27,7 +27,7 @@ const builder = new APIBuilder({ logger }) primitiveTypeExtension: true, generateProfile: true, // client defaults to "fhirpy" - fieldFormat: "snake_case", + // fieldFormat defaults to "camelCase" }) .typeSchema({ treeShake: { diff --git a/examples/python-r4-us-core/test_bundle.py b/examples/python-r4-us-core/test_bundle.py index 79e2bbac..faa35cff 100644 --- a/examples/python-r4-us-core/test_bundle.py +++ b/examples/python-r4-us-core/test_bundle.py @@ -22,7 +22,7 @@ def test_bundle_generic_narrows_entry_resources() -> None: observations = [ e.resource for e in (bundle.entry or []) - if e.resource and e.resource.resource_type == "Observation" + if e.resource and e.resource.resourceType == "Observation" ] assert len(observations) == 1 assert observations[0].id == "obs-1" @@ -31,7 +31,7 @@ def test_bundle_generic_narrows_entry_resources() -> None: def test_bundle_entry_generic_narrows_resource() -> None: patient = Patient(id="p-1") entry: BundleEntry[Patient] = BundleEntry(resource=patient) - assert entry.resource.resource_type == "Patient" + assert entry.resource.resourceType == "Patient" def test_bundle_without_type_param_is_backwards_compatible() -> None: diff --git a/examples/python-r4-us-core/test_profile_bodyweight.py b/examples/python-r4-us-core/test_profile_bodyweight.py index 7e863a19..d94603e7 100644 --- a/examples/python-r4-us-core/test_profile_bodyweight.py +++ b/examples/python-r4-us-core/test_profile_bodyweight.py @@ -22,7 +22,7 @@ def test_import_profiled_observation_from_api_and_read_values() -> None: api_response = Observation( - resource_type="Observation", + resourceType="Observation", meta=Meta(profile=[CANONICAL_URL]), status="final", category=[ @@ -32,8 +32,8 @@ def test_import_profiled_observation_from_api_and_read_values() -> None: ], code=CodeableConcept(coding=[Coding(code="29463-7", system="http://loinc.org", display="Body weight")]), subject=Reference(reference="Patient/pt-1"), - effective_date_time="2024-06-15", - value_quantity=Quantity(value=75, unit="kg", system="http://unitsofmeasure.org", code="kg"), + effectiveDateTime="2024-06-15", + valueQuantity=Quantity(value=75, unit="kg", system="http://unitsofmeasure.org", code="kg"), ) profile = UscoreBodyWeightProfile.from_resource(api_response) @@ -45,7 +45,7 @@ def test_import_profiled_observation_from_api_and_read_values() -> None: def test_apply_profile_to_bare_observation_and_populate_it() -> None: - bare_observation = Observation(resource_type="Observation", status="preliminary", code=CodeableConcept()) + bare_observation = Observation(resourceType="Observation", status="preliminary", code=CodeableConcept()) profile = UscoreBodyWeightProfile.apply(bare_observation) profile.set_status("final") @@ -70,14 +70,14 @@ def test_create_builds_a_resource_with_fixed_code_and_required_slice_stubs() -> obs = profile.to_resource() assert obs.code.coding[0].code == "29463-7" - assert obs.value_quantity.value == 70 + assert obs.valueQuantity.value == 70 assert len(obs.category) == 1 assert profile.validate()["errors"] == [] def test_validate_catches_disallowed_value_variants_on_raw_resource() -> None: resource = Observation( - resource_type="Observation", + resourceType="Observation", meta=Meta(profile=[CANONICAL_URL]), status="final", category=[ @@ -87,13 +87,13 @@ def test_validate_catches_disallowed_value_variants_on_raw_resource() -> None: ], code=CodeableConcept(coding=[Coding(code="29463-7", system="http://loinc.org")]), subject=Reference(reference="Patient/pt-1"), - effective_date_time="2024-06-15", - value_string="not allowed", + effectiveDateTime="2024-06-15", + valueString="not allowed", ) profile = UscoreBodyWeightProfile.apply(resource) errors = profile.validate()["errors"] - assert "UscoreBodyWeightProfile: field 'value_string' must not be present" in errors + assert "UscoreBodyWeightProfile: field 'valueString' must not be present" in errors def test_get_vscat_returns_flat_value() -> None: diff --git a/examples/python-r4-us-core/test_profile_bp.py b/examples/python-r4-us-core/test_profile_bp.py index cc2403bb..a11f620d 100644 --- a/examples/python-r4-us-core/test_profile_bp.py +++ b/examples/python-r4-us-core/test_profile_bp.py @@ -34,21 +34,21 @@ def _make_bp() -> UscoreBloodPressureProfile: def test_import_profiled_observation_from_api_and_read_components() -> None: api_response = Observation( - resource_type="Observation", + resourceType="Observation", meta=Meta(profile=[CANONICAL_URL]), status="final", category=[CodeableConcept(coding=[VSCAT_CODING])], code=CodeableConcept(coding=[Coding(code="85354-9", system="http://loinc.org", display="Blood pressure panel")]), subject=Reference(reference="Patient/pt-1"), - effective_date_time="2024-06-15", + effectiveDateTime="2024-06-15", component=[ ObservationComponent( code=CodeableConcept(coding=[Coding(code="8480-6", system="http://loinc.org")]), - value_quantity=Quantity(value=120, unit="mmHg", system="http://unitsofmeasure.org", code="mm[Hg]"), + valueQuantity=Quantity(value=120, unit="mmHg", system="http://unitsofmeasure.org", code="mm[Hg]"), ), ObservationComponent( code=CodeableConcept(coding=[Coding(code="8462-4", system="http://loinc.org")]), - value_quantity=Quantity(value=80, unit="mmHg", system="http://unitsofmeasure.org", code="mm[Hg]"), + valueQuantity=Quantity(value=80, unit="mmHg", system="http://unitsofmeasure.org", code="mm[Hg]"), ), ], ) @@ -71,7 +71,7 @@ def test_import_profiled_observation_from_api_and_read_components() -> None: def test_apply_profile_to_bare_observation_and_populate_it() -> None: - bare_observation = Observation(resource_type="Observation", status="preliminary", code=CodeableConcept()) + bare_observation = Observation(resourceType="Observation", status="preliminary", code=CodeableConcept()) profile = UscoreBloodPressureProfile.apply(bare_observation) profile.set_status("final") @@ -98,7 +98,7 @@ def test_canonical_url_is_exposed() -> None: def test_create_auto_sets_code_and_meta_profile() -> None: profile = _make_bp() obs = profile.to_resource() - assert obs.resource_type == "Observation" + assert obs.resourceType == "Observation" assert obs.code.coding[0].code == "85354-9" assert obs.code.coding[0].system == "http://loinc.org" assert obs.meta.profile == [CANONICAL_URL] @@ -108,7 +108,7 @@ def test_freshly_created_profile_is_not_yet_valid_missing_effective() -> None: profile = _make_bp() errors = profile.validate()["errors"] assert errors == [ - "UscoreBloodPressureProfile: at least one of effective_date_time, effective_period is required", + "UscoreBloodPressureProfile: at least one of effectiveDateTime, effectivePeriod is required", ] @@ -130,7 +130,7 @@ def test_set_systolic_get_systolic_get_systolic_raw() -> None: } raw = profile.get_systolic("raw") - assert raw.value_quantity.value == 120 + assert raw.valueQuantity.value == 120 assert raw.code.coding[0].code == "8480-6" @@ -146,7 +146,7 @@ def test_set_diastolic_get_diastolic_get_diastolic_raw() -> None: } raw = profile.get_diastolic("raw") - assert raw.value_quantity.value == 80 + assert raw.valueQuantity.value == 80 assert raw.code.coding[0].code == "8462-4" @@ -161,7 +161,7 @@ def test_set_systolic_replaces_an_existing_systolic_component() -> None: profile.set_systolic({"value": 130, "unit": "mmHg"}) obs = profile.to_resource() assert len(obs.component) == 2 - assert profile.get_systolic("raw").value_quantity.value == 130 + assert profile.get_systolic("raw").valueQuantity.value == 130 def test_set_vscat_adds_category_with_discriminator_values() -> None: diff --git a/examples/python-r4-us-core/test_profile_patient.py b/examples/python-r4-us-core/test_profile_patient.py index bbd593b2..dd5eb83e 100644 --- a/examples/python-r4-us-core/test_profile_patient.py +++ b/examples/python-r4-us-core/test_profile_patient.py @@ -58,7 +58,7 @@ def test_set_extension_via_flat_input() -> None: assert patient.validate()["errors"] == [] res = patient.to_resource() - assert res.resource_type == "Patient" + assert res.resourceType == "Patient" assert res.identifier[0].value == "MRN-12345" assert res.name[0].family == "Garcia" assert res.meta.profile == [CANONICAL_URL] @@ -72,7 +72,7 @@ def test_set_extension_via_extension_profile_instance() -> None: ) ethnicity_profile = UscoreEthnicityExtension.create() ethnicity_profile.set_extension_omb_category({"code": "2135-2", "display": "Hispanic or Latino"}) - ethnicity_profile.set_extension_text({"value_string": "Hispanic or Latino"}) + ethnicity_profile.set_extension_text({"valueString": "Hispanic or Latino"}) patient.set_ethnicity(ethnicity_profile) assert patient.get_ethnicity() is not None @@ -82,14 +82,14 @@ def test_set_extension_via_raw_extension() -> None: identifier=[Identifier(value="1")], name=[HumanName(family="Test")], ) - sex_extension = Extension(url=SEX_URL, value_coding=Coding(code="female", display="Female")) + sex_extension = Extension(url=SEX_URL, valueCoding=Coding(code="female", display="Female")) patient.set_sex(sex_extension) assert patient.get_sex().code == "female" def test_import_profiled_resource_from_api_and_access_data_via_typed_getters() -> None: api_response = Patient( - resource_type="Patient", + resourceType="Patient", meta={"profile": [CANONICAL_URL]}, identifier=[Identifier(system="http://hospital.example.org/mrn", value="MRN-99999")], name=[HumanName(family="Smith", given=["John"])], @@ -97,13 +97,13 @@ def test_import_profiled_resource_from_api_and_access_data_via_typed_getters() - { "url": RACE_URL, "extension": [ - {"url": "ombCategory", "value_coding": {"code": "2054-5", "display": "Black or African American"}}, - {"url": "text", "value_string": "Black or African American"}, + {"url": "ombCategory", "valueCoding": {"code": "2054-5", "display": "Black or African American"}}, + {"url": "text", "valueString": "Black or African American"}, ], }, { "url": SEX_URL, - "value_coding": {"code": "male"}, + "valueCoding": {"code": "male"}, }, ], ) @@ -116,7 +116,7 @@ def test_import_profiled_resource_from_api_and_access_data_via_typed_getters() - assert names[0].given == ["John"] race = patient.get_race() - # Pydantic parses the value_coding sub-extension input into a Coding model, + # Pydantic parses the valueCoding sub-extension input into a Coding model, # so race["ombCategory"] is a Coding instance (not a dict like in TS). assert race["ombCategory"].code == "2054-5" assert race["ombCategory"].display == "Black or African American" @@ -128,7 +128,7 @@ def test_import_profiled_resource_from_api_and_access_data_via_typed_getters() - def test_apply_profile_to_a_bare_resource_and_populate_it() -> None: - patient = UscorePatientProfile.apply(Patient(resource_type="Patient")) + patient = UscorePatientProfile.apply(Patient(resourceType="Patient")) patient.set_identifier([Identifier(system="http://hospital.example.org/mrn", value="MRN-00001")]) patient.set_name([HumanName(family="Chen", given=["Wei"])]) @@ -160,7 +160,7 @@ def test_create_returns_a_profile_wrapping_the_resource() -> None: ) res = profile.to_resource() - assert res.resource_type == "Patient" + assert res.resourceType == "Patient" assert res.identifier[0].value == "12345" assert res.name[0].family == "Smith" @@ -171,12 +171,12 @@ def test_create_resource_returns_a_plain_patient() -> None: name=[HumanName(family="Smith", given=["John"])], ) assert isinstance(res, Patient) - assert res.resource_type == "Patient" + assert res.resourceType == "Patient" assert res.identifier[0].value == "12345" def test_apply_wraps_an_existing_patient() -> None: - patient = Patient(resource_type="Patient") + patient = Patient(resourceType="Patient") profile = UscorePatientProfile.apply(patient) profile.set_identifier([Identifier(system="http://hospital.example.org", value="12345")]) @@ -193,7 +193,7 @@ def test_all_three_methods_produce_equivalent_resources() -> None: from_create = UscorePatientProfile.create(identifier=identifier, name=name).to_resource() from_create_resource = UscorePatientProfile.create_resource(identifier=identifier, name=name) - bare = Patient(resource_type="Patient") + bare = Patient(resourceType="Patient") profile = UscorePatientProfile.apply(bare) profile.set_identifier(identifier).set_name(name) from_apply = profile.to_resource() @@ -301,7 +301,7 @@ def test_get_sex_raw_returns_raw_extension() -> None: raw = profile.get_sex("raw") assert raw.url == SEX_URL - assert raw.value_coding.code == "female" + assert raw.valueCoding.code == "female" def test_extension_getters_return_none_when_not_set() -> None: @@ -392,8 +392,8 @@ def test_set_race_accepts_raw_extension() -> None: raw_extension = Extension( url=RACE_URL, extension=[ - {"url": "ombCategory", "value_coding": {"code": "2106-3", "display": "White"}}, - {"url": "text", "value_string": "White"}, + {"url": "ombCategory", "valueCoding": {"code": "2106-3", "display": "White"}}, + {"url": "text", "valueString": "White"}, ], ) profile.set_race(raw_extension) @@ -415,7 +415,7 @@ def test_set_sex_accepts_extension_profile_instance() -> None: identifier=[Identifier(value="1")], name=[HumanName(family="Test")], ) - sex_profile = UscoreIndividualSexExtension.create(value_coding=Coding(code="male")) + sex_profile = UscoreIndividualSexExtension.create(valueCoding=Coding(code="male")) profile.set_sex(sex_profile) assert profile.get_sex().code == "male" @@ -425,7 +425,7 @@ def test_set_sex_accepts_raw_extension() -> None: identifier=[Identifier(value="1")], name=[HumanName(family="Test")], ) - raw_extension = Extension(url=SEX_URL, value_coding=Coding(code="female")) + raw_extension = Extension(url=SEX_URL, valueCoding=Coding(code="female")) profile.set_sex(raw_extension) assert profile.get_sex().code == "female" @@ -436,7 +436,7 @@ def test_set_sex_accepts_raw_extension() -> None: def test_profile_mutates_the_underlying_resource() -> None: - patient = Patient(resource_type="Patient") + patient = Patient(resourceType="Patient") profile = UscorePatientProfile.apply(patient) profile.set_identifier([Identifier(value="123")]) @@ -460,7 +460,7 @@ def test_freshly_created_profile_with_required_fields_is_valid() -> None: def test_profile_from_empty_resource_reports_missing_required_fields() -> None: - profile = UscorePatientProfile.apply(Patient(resource_type="Patient")) + profile = UscorePatientProfile.apply(Patient(resourceType="Patient")) errors = profile.validate()["errors"] assert "UscorePatientProfile: required field 'identifier' is missing" in errors diff --git a/examples/python-r4-us-core/test_profile_typed_bundle.py b/examples/python-r4-us-core/test_profile_typed_bundle.py index 3acb07a4..20924bc2 100644 --- a/examples/python-r4-us-core/test_profile_typed_bundle.py +++ b/examples/python-r4-us-core/test_profile_typed_bundle.py @@ -9,8 +9,8 @@ from fhir_types.example_folder_structures.profiles.bundle_example_typed_bundle import ExampleTypedBundleProfile -smith_patient = Patient(resource_type="Patient", name=[HumanName(family="Smith")]) -active_patient = Patient(resource_type="Patient", active=True) +smith_patient = Patient(resourceType="Patient", name=[HumanName(family="Smith")]) +active_patient = Patient(resourceType="Patient", active=True) # --------------------------------------------------------------------------- @@ -37,7 +37,7 @@ def test_get_patient_entry_returns_bundle_entry_instance() -> None: entry = bundle.get_patient_entry() assert isinstance(entry, BundleEntry) - assert entry.resource.resource_type == "Patient" + assert entry.resource.resourceType == "Patient" assert entry.resource.name[0].family == "Smith" @@ -47,7 +47,7 @@ def test_get_patient_entry_raw_mode_returns_bundle_entry_instance() -> None: entry = bundle.get_patient_entry() assert isinstance(entry, BundleEntry) - assert entry.resource.resource_type == "Patient" + assert entry.resource.resourceType == "Patient" def test_get_patient_entry_returns_stored_entry_including_resource() -> None: @@ -81,8 +81,8 @@ def test_set_organization_entry_accepts_a_list() -> None: bundle = ExampleTypedBundleProfile.create(type="collection") bundle.set_patient_entry(BundleEntry(resource=smith_patient)) - clinic = Organization(resource_type="Organization", name="Clinic") - acme = Organization(resource_type="Organization", name="Acme") + clinic = Organization(resourceType="Organization", name="Clinic") + acme = Organization(resourceType="Organization", name="Acme") bundle.set_organization_entry([BundleEntry(resource=clinic), BundleEntry(resource=acme)]) @@ -96,7 +96,7 @@ def test_get_organization_entry_returns_list() -> None: bundle = ExampleTypedBundleProfile.create(type="collection") bundle.set_patient_entry(BundleEntry(resource=smith_patient)) - org = Organization(resource_type="Organization", name="Clinic") + org = Organization(resourceType="Organization", name="Clinic") bundle.set_organization_entry([BundleEntry(resource=org)]) result = bundle.get_organization_entry() diff --git a/examples/python-r4-us-core/test_raw_extension.py b/examples/python-r4-us-core/test_raw_extension.py index f530b7c8..da94d69a 100644 --- a/examples/python-r4-us-core/test_raw_extension.py +++ b/examples/python-r4-us-core/test_raw_extension.py @@ -22,25 +22,25 @@ def create_patient_with_extensions() -> Patient: extension=[ Extension( url="http://example.org/fhir/StructureDefinition/name-verified", - value_boolean=True, + valueBoolean=True, ) ], family="van Beethoven", - family_extension=Element( + familyExtension=Element( extension=[ Extension( url="http://hl7.org/fhir/StructureDefinition/humanname-own-prefix", - value_string="van", + valueString="van", ), ], ), given=["Ludwig", "Maria", "Johann"], - given_extension=[ + givenExtension=[ Element( extension=[ Extension( url="http://example.org/fhir/StructureDefinition/name-source", - value_code="birth-certificate", + valueCode="birth-certificate", ), ], ), @@ -49,7 +49,7 @@ def create_patient_with_extensions() -> Patient: extension=[ Extension( url="http://example.org/fhir/StructureDefinition/name-source", - value_code="baptism-record", + valueCode="baptism-record", ), ], ), @@ -60,7 +60,7 @@ def create_patient_with_extensions() -> Patient: extension=[ Extension( url="http://example.org/fhir/StructureDefinition/contact-priority", - value_integer=1, + valueInteger=1, ) ], name=HumanName(family="Watson", given=["John"]), @@ -72,21 +72,21 @@ def create_patient_with_extensions() -> Patient: extension=[ Extension( url="http://hl7.org/fhir/StructureDefinition/patient-birthPlace", - value_address=Address(city="Springfield", country="US"), + valueAddress=Address(city="Springfield", country="US"), ), ], - modifier_extension=[ + modifierExtension=[ Extension( url="http://example.org/fhir/StructureDefinition/do-not-contact", - value_boolean=False, + valueBoolean=False, ), ], - birth_date="1990-03-15", - birth_date_extension=Element( + birthDate="1990-03-15", + birthDateExtension=Element( extension=[ Extension( url="http://hl7.org/fhir/StructureDefinition/patient-birthTime", - value_date_time="1990-03-15T08:22:00-05:00", + valueDateTime="1990-03-15T08:22:00-05:00", ), ], ), @@ -110,11 +110,11 @@ def test_read_resource_level_extension() -> None: assert patient.extension is not None assert patient.extension[0].url == "http://hl7.org/fhir/StructureDefinition/patient-birthPlace" - assert patient.extension[0].value_address is not None - assert patient.extension[0].value_address.city == "Springfield" + assert patient.extension[0].valueAddress is not None + assert patient.extension[0].valueAddress.city == "Springfield" - assert patient.modifier_extension is not None - assert patient.modifier_extension[0].value_boolean is False + assert patient.modifierExtension is not None + assert patient.modifierExtension[0].valueBoolean is False def test_read_element_level_extension() -> None: @@ -124,29 +124,29 @@ def test_read_element_level_extension() -> None: name = patient.name[0] assert name.extension is not None assert name.extension[0].url == "http://example.org/fhir/StructureDefinition/name-verified" - assert name.extension[0].value_boolean is True + assert name.extension[0].valueBoolean is True assert patient.contact is not None contact = patient.contact[0] assert contact.extension is not None - assert contact.extension[0].value_integer == 1 + assert contact.extension[0].valueInteger == 1 def test_read_primitive_extension() -> None: patient = create_patient_with_extensions() name = patient.name[0] - assert isinstance(name.family_extension, Element) - assert name.family_extension.extension[0].value_string == "van" + assert isinstance(name.familyExtension, Element) + assert name.familyExtension.extension[0].valueString == "van" - assert isinstance(name.given_extension, list) - assert name.given_extension[0].extension[0].value_code == "birth-certificate" - assert name.given_extension[1] is None - assert name.given_extension[2].extension[0].value_code == "baptism-record" + assert isinstance(name.givenExtension, list) + assert name.givenExtension[0].extension[0].valueCode == "birth-certificate" + assert name.givenExtension[1] is None + assert name.givenExtension[2].extension[0].valueCode == "baptism-record" - assert patient.birth_date_extension is not None - assert isinstance(patient.birth_date_extension, Element) - assert patient.birth_date_extension.extension[0].value_date_time == "1990-03-15T08:22:00-05:00" + assert patient.birthDateExtension is not None + assert isinstance(patient.birthDateExtension, Element) + assert patient.birthDateExtension.extension[0].valueDateTime == "1990-03-15T08:22:00-05:00" def test_primitive_extension_survives_round_trip() -> None: @@ -154,11 +154,11 @@ def test_primitive_extension_survives_round_trip() -> None: patient = create_patient_with_extensions() restored = Patient.from_json(patient.to_json()) - assert restored.birth_date == "1990-03-15" + assert restored.birthDate == "1990-03-15" assert restored.extension is not None - assert restored.extension[0].value_address is not None - assert restored.extension[0].value_address.city == "Springfield" + assert restored.extension[0].valueAddress is not None + assert restored.extension[0].valueAddress.city == "Springfield" - assert restored.birth_date_extension is not None - assert isinstance(restored.birth_date_extension, Element) - assert restored.birth_date_extension.extension[0].value_date_time == "1990-03-15T08:22:00-05:00" + assert restored.birthDateExtension is not None + assert isinstance(restored.birthDateExtension, Element) + assert restored.birthDateExtension.extension[0].valueDateTime == "1990-03-15T08:22:00-05:00" diff --git a/examples/python-r4-us-core/test_sdk.py b/examples/python-r4-us-core/test_sdk.py index 325ac1fd..1f3a73f0 100644 --- a/examples/python-r4-us-core/test_sdk.py +++ b/examples/python-r4-us-core/test_sdk.py @@ -32,7 +32,7 @@ async def created_patient(client: AsyncFHIRClient) -> AsyncIterator[Patient]: patient = Patient( name=[HumanName(given=["Test"], family="FhirpyPatient")], gender="female", - birth_date="1980-01-01", + birthDate="1980-01-01", ) created = await client.create(patient) yield created @@ -48,7 +48,7 @@ async def test_create_patient(client: AsyncFHIRClient) -> None: patient = Patient( name=[HumanName(given=["Create"], family="Test")], gender="female", - birth_date="1980-01-01", + birthDate="1980-01-01", ) created = await client.create(patient) @@ -56,7 +56,7 @@ async def test_create_patient(client: AsyncFHIRClient) -> None: assert created.name is not None assert created.name[0].family == "Test" assert created.gender == "female" - assert created.birth_date == "1980-01-01" + assert created.birthDate == "1980-01-01" await client.delete(f"Patient/{created.id}") @@ -90,7 +90,7 @@ async def test_search_returns_typed_resources(client: AsyncFHIRClient, created_p patients = await client.resources(Patient).fetch() for p in patients: assert isinstance(p, Patient) - assert p.resource_type == "Patient" + assert p.resourceType == "Patient" @pytest.mark.asyncio @@ -146,7 +146,7 @@ def test_to_from_json() -> None: p = Patient( name=[HumanName(given=["Test"], family="Patient")], gender="female", - birth_date="1980-01-01", + birthDate="1980-01-01", ) json = p.to_json(indent=2) p2 = Patient.from_json(json) diff --git a/examples/python-r4-us-core/us-core-demo/load.py b/examples/python-r4-us-core/us-core-demo/load.py index 4fd0c888..3a8bca05 100644 --- a/examples/python-r4-us-core/us-core-demo/load.py +++ b/examples/python-r4-us-core/us-core-demo/load.py @@ -57,7 +57,7 @@ def row_to_patient(row: Row) -> Patient: name=[HumanName(family=row.last, given=[row.first])], ) resource.gender = row.gender - resource.birth_date = row.dob + resource.birthDate = row.dob race = UscoreRaceExtension.create() race.set_extension_omb_category({ @@ -65,7 +65,7 @@ def row_to_patient(row: Row) -> Patient: "system": "urn:oid:2.16.840.1.113883.6.238", "display": row.race, }) - race.set_extension_text({"value_string": row.race}) + race.set_extension_text({"valueString": row.race}) profile = UscorePatientProfile.apply(resource) profile.set_race(race) diff --git a/src/api/builder.ts b/src/api/builder.ts index f1f89fe0..0395a0ba 100644 --- a/src/api/builder.ts +++ b/src/api/builder.ts @@ -301,7 +301,7 @@ export class APIBuilder { const defaultPyOpts: PythonGeneratorOptions = { ...defaultWriterOpts, rootPackageName: "fhir_types", - fieldFormat: "snake_case", + fieldFormat: "camelCase", primitiveTypeExtension: false, }; diff --git a/src/api/writer-generator/python/writer.ts b/src/api/writer-generator/python/writer.ts index e7d3cac3..39a1563b 100644 --- a/src/api/writer-generator/python/writer.ts +++ b/src/api/writer-generator/python/writer.ts @@ -625,7 +625,7 @@ export class Python extends Writer { private generateResourceMethods(_schema: SpecializationTypeSchema): void { this.line(); this.line("def model_post_init(self, __context: Any) -> None:"); - this.line(' self.__pydantic_fields_set__.add("resource_type")'); + this.line(` self.__pydantic_fields_set__.add("${this.nameFormatFunction("resourceType")}")`); this.line(); this.line("def to_json(self, indent: int | None = None) -> str:"); this.line(" return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent)"); diff --git a/test/api/write-generator/__snapshots__/python.test.ts.snap b/test/api/write-generator/__snapshots__/python.test.ts.snap index eb10e9ee..ff70f82a 100644 --- a/test/api/write-generator/__snapshots__/python.test.ts.snap +++ b/test/api/write-generator/__snapshots__/python.test.ts.snap @@ -32,7 +32,7 @@ T2 = TypeVar('T2', bound=Resource, default=Resource) class BundleEntry(BackboneElement, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - full_url: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") + fullUrl: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") link: PyList[BundleLink] | None = Field(None, alias="link", serialization_alias="link") request: BundleEntryRequest | None = Field(None, alias="request", serialization_alias="request") resource: T1 | None = Field(None, alias="resource", serialization_alias="resource") @@ -48,17 +48,17 @@ class BundleEntry(BackboneElement, Generic[T1, T2]): class BundleEntryRequest(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - if_match: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") - if_modified_since: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") - if_none_exist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") - if_none_match: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") + ifMatch: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") + ifModifiedSince: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") + ifNoneExist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") + ifNoneMatch: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") method: Literal["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"] = Field(alias="method", serialization_alias="method") url: str = Field(alias="url", serialization_alias="url") class BundleEntryResponse(BackboneElement, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") etag: str | None = Field(None, alias="etag", serialization_alias="etag") - last_modified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") + lastModified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") location: str | None = Field(None, alias="location", serialization_alias="location") outcome: T | None = Field(None, alias="outcome", serialization_alias="outcome") status: str = Field(alias="status", serialization_alias="status") @@ -83,7 +83,7 @@ class BundleLink(BackboneElement): class Bundle(Resource, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Bundle'] = Field( + resourceType: Literal['Bundle'] = Field( default='Bundle', alias='resourceType', serialization_alias='resourceType', @@ -99,7 +99,7 @@ class Bundle(Resource, Generic[T1, T2]): type: Literal["document", "message", "transaction", "transaction-response", "batch", "batch-response", "history", "searchset", "collection"] = Field(alias="type", serialization_alias="type") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -157,7 +157,7 @@ class PatientLink(BackboneElement): class Patient(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Patient'] = Field( + resourceType: Literal['Patient'] = Field( default='Patient', alias='resourceType', serialization_alias='resourceType', @@ -166,25 +166,25 @@ class Patient(DomainResource): ) active: bool | None = Field(None, alias="active", serialization_alias="active") address: PyList[Address] | None = Field(None, alias="address", serialization_alias="address") - birth_date: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") + birthDate: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") communication: PyList[PatientCommunication] | None = Field(None, alias="communication", serialization_alias="communication") contact: PyList[PatientContact] | None = Field(None, alias="contact", serialization_alias="contact") - deceased_boolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") - deceased_date_time: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") + deceasedBoolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") + deceasedDateTime: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") gender: Literal["male", "female", "other", "unknown"] | None = Field(None, alias="gender", serialization_alias="gender") - general_practitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") + generalPractitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") identifier: PyList[Identifier] | None = Field(None, alias="identifier", serialization_alias="identifier") link: PyList[PatientLink] | None = Field(None, alias="link", serialization_alias="link") - managing_organization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") - marital_status: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") - multiple_birth_boolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") - multiple_birth_integer: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") + managingOrganization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") + maritalStatus: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") + multipleBirthBoolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") + multipleBirthInteger: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") name: PyList[HumanName] | None = Field(None, alias="name", serialization_alias="name") photo: PyList[Attachment] | None = Field(None, alias="photo", serialization_alias="photo") telecom: PyList[ContactPoint] | None = Field(None, alias="telecom", serialization_alias="telecom") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -217,7 +217,7 @@ T2 = TypeVar('T2', bound=Resource, default=Resource) class BundleEntry(BackboneElement, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - full_url: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") + fullUrl: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") link: PyList[BundleLink] | None = Field(None, alias="link", serialization_alias="link") request: BundleEntryRequest | None = Field(None, alias="request", serialization_alias="request") resource: T1 | None = Field(None, alias="resource", serialization_alias="resource") @@ -233,17 +233,17 @@ class BundleEntry(BackboneElement, Generic[T1, T2]): class BundleEntryRequest(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - if_match: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") - if_modified_since: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") - if_none_exist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") - if_none_match: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") + ifMatch: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") + ifModifiedSince: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") + ifNoneExist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") + ifNoneMatch: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") method: Literal["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"] = Field(alias="method", serialization_alias="method") url: str = Field(alias="url", serialization_alias="url") class BundleEntryResponse(BackboneElement, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") etag: str | None = Field(None, alias="etag", serialization_alias="etag") - last_modified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") + lastModified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") location: str | None = Field(None, alias="location", serialization_alias="location") outcome: T | None = Field(None, alias="outcome", serialization_alias="outcome") status: str = Field(alias="status", serialization_alias="status") @@ -268,7 +268,7 @@ class BundleLink(BackboneElement): class Bundle(Resource, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Bundle'] = Field( + resourceType: Literal['Bundle'] = Field( default='Bundle', alias='resourceType', serialization_alias='resourceType', @@ -284,7 +284,7 @@ class Bundle(Resource, Generic[T1, T2]): type: Literal["document", "message", "transaction", "transaction-response", "batch", "batch-response", "history", "searchset", "collection"] = Field(alias="type", serialization_alias="type") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -324,7 +324,7 @@ T2 = TypeVar('T2', bound=Resource, default=Resource) class BundleEntry(BackboneElement, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - full_url: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") + fullUrl: str | None = Field(None, alias="fullUrl", serialization_alias="fullUrl") link: PyList[BundleLink] | None = Field(None, alias="link", serialization_alias="link") request: BundleEntryRequest | None = Field(None, alias="request", serialization_alias="request") resource: T1 | None = Field(None, alias="resource", serialization_alias="resource") @@ -340,17 +340,17 @@ class BundleEntry(BackboneElement, Generic[T1, T2]): class BundleEntryRequest(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - if_match: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") - if_modified_since: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") - if_none_exist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") - if_none_match: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") + ifMatch: str | None = Field(None, alias="ifMatch", serialization_alias="ifMatch") + ifModifiedSince: str | None = Field(None, alias="ifModifiedSince", serialization_alias="ifModifiedSince") + ifNoneExist: str | None = Field(None, alias="ifNoneExist", serialization_alias="ifNoneExist") + ifNoneMatch: str | None = Field(None, alias="ifNoneMatch", serialization_alias="ifNoneMatch") method: Literal["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH"] = Field(alias="method", serialization_alias="method") url: str = Field(alias="url", serialization_alias="url") class BundleEntryResponse(BackboneElement, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") etag: str | None = Field(None, alias="etag", serialization_alias="etag") - last_modified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") + lastModified: str | None = Field(None, alias="lastModified", serialization_alias="lastModified") location: str | None = Field(None, alias="location", serialization_alias="location") outcome: T | None = Field(None, alias="outcome", serialization_alias="outcome") status: str = Field(alias="status", serialization_alias="status") @@ -375,7 +375,7 @@ class BundleLink(BackboneElement): class Bundle(Resource, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Bundle'] = Field( + resourceType: Literal['Bundle'] = Field( default='Bundle', alias='resourceType', serialization_alias='resourceType', @@ -391,7 +391,7 @@ class Bundle(Resource, Generic[T1, T2]): type: Literal["document", "message", "transaction", "transaction-response", "batch", "batch-response", "history", "searchset", "collection"] = Field(alias="type", serialization_alias="type") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -464,7 +464,7 @@ class ObservationBodyweightProfile: return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"code":"29463-7","system":"http://loinc.org"}]}, category=category_with_defaults, status=status, @@ -508,26 +508,26 @@ class ObservationBodyweightProfile: return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "ObservationBodyweightProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "ObservationBodyweightProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "ObservationBodyweightProfile": - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueQuantity", value) return self @overload @@ -563,13 +563,13 @@ class ObservationBodyweightProfile: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"code":"29463-7","system":"http://loinc.org"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["85353-1","9279-1","8867-4","2708-6","8310-5","8302-2","9843-4","29463-7","39156-5","85354-9","8480-6","8462-4","8478-0"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) return {"errors": errors, "warnings": warnings} " @@ -639,7 +639,7 @@ class ObservationBpProfile: return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"code":"85354-9","system":"http://loinc.org"}]}, category=category_with_defaults, component=component_with_defaults, @@ -691,26 +691,26 @@ class ObservationBpProfile: return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "ObservationBpProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "ObservationBpProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "ObservationBpProfile": - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueQuantity", value) return self @overload @@ -790,15 +790,15 @@ class ObservationBpProfile: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"code":"85354-9","system":"http://loinc.org"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"code":"8480-6","system":"http://loinc.org"}]}}, "SystolicBP", 1, 1)) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"code":"8462-4","system":"http://loinc.org"}]}}, "DiastolicBP", 1, 1)) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["85353-1","9279-1","8867-4","2708-6","8310-5","8302-2","9843-4","29463-7","39156-5","85354-9","8480-6","8462-4","8478-0"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) return {"errors": errors, "warnings": warnings} " @@ -859,7 +859,7 @@ class UscorePatientProfile: def create_resource(cls, *, identifier: list[Identifier], name: list[HumanName]) -> Patient: return build_resource( Patient, - resource_type="Patient", + resourceType="Patient", identifier=identifier, name=name, meta={"profile": [cls.canonical_url]}, @@ -902,7 +902,7 @@ class UscorePatientProfile: return ext_obj if mode == "profile": return UscoreRaceExtension.apply(ext_obj) - config = [{"name": "ombCategory", "valueField": "value_coding", "isArray": False}, {"name": "detailed", "valueField": "value_coding", "isArray": True}, {"name": "text", "valueField": "value_string", "isArray": False}] + config = [{"name": "ombCategory", "valueField": "valueCoding", "isArray": False}, {"name": "detailed", "valueField": "valueCoding", "isArray": True}, {"name": "text", "valueField": "valueString", "isArray": False}] return extract_complex_extension(ext, config) def set_race(self, value: "UscoreRaceExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -915,11 +915,11 @@ class UscorePatientProfile: else: sub_extensions = [] if value.get("ombCategory") is not None: - sub_extensions.append({"url": "ombCategory", "value_coding": value["ombCategory"]}) + sub_extensions.append({"url": "ombCategory", "valueCoding": value["ombCategory"]}) for item in value.get("detailed", []): - sub_extensions.append({"url": "detailed", "value_coding": item}) + sub_extensions.append({"url": "detailed", "valueCoding": item}) if value.get("text") is not None: - sub_extensions.append({"url": "text", "value_string": value["text"]}) + sub_extensions.append({"url": "text", "valueString": value["text"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", extension=sub_extensions)) return self @@ -939,7 +939,7 @@ class UscorePatientProfile: return ext_obj if mode == "profile": return UscoreEthnicityExtension.apply(ext_obj) - config = [{"name": "ombCategory", "valueField": "value_coding", "isArray": False}, {"name": "detailed", "valueField": "value_coding", "isArray": True}, {"name": "text", "valueField": "value_string", "isArray": False}] + config = [{"name": "ombCategory", "valueField": "valueCoding", "isArray": False}, {"name": "detailed", "valueField": "valueCoding", "isArray": True}, {"name": "text", "valueField": "valueString", "isArray": False}] return extract_complex_extension(ext, config) def set_ethnicity(self, value: "UscoreEthnicityExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -952,11 +952,11 @@ class UscorePatientProfile: else: sub_extensions = [] if value.get("ombCategory") is not None: - sub_extensions.append({"url": "ombCategory", "value_coding": value["ombCategory"]}) + sub_extensions.append({"url": "ombCategory", "valueCoding": value["ombCategory"]}) for item in value.get("detailed", []): - sub_extensions.append({"url": "detailed", "value_coding": item}) + sub_extensions.append({"url": "detailed", "valueCoding": item}) if value.get("text") is not None: - sub_extensions.append({"url": "text", "value_string": value["text"]}) + sub_extensions.append({"url": "text", "valueString": value["text"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", extension=sub_extensions)) return self @@ -976,7 +976,7 @@ class UscorePatientProfile: return ext_obj if mode == "profile": return UscoreTribalAffiliationExtension.apply(ext_obj) - config = [{"name": "tribalAffiliation", "valueField": "value_codeable_concept", "isArray": False}, {"name": "isEnrolled", "valueField": "value_boolean", "isArray": False}] + config = [{"name": "tribalAffiliation", "valueField": "valueCodeableConcept", "isArray": False}, {"name": "isEnrolled", "valueField": "valueBoolean", "isArray": False}] return extract_complex_extension(ext, config) def set_tribal_affiliation(self, value: "UscoreTribalAffiliationExtension | Extension | dict[str, Any]") -> "UscorePatientProfile": @@ -989,9 +989,9 @@ class UscorePatientProfile: else: sub_extensions = [] if value.get("tribalAffiliation") is not None: - sub_extensions.append({"url": "tribalAffiliation", "value_codeable_concept": value["tribalAffiliation"]}) + sub_extensions.append({"url": "tribalAffiliation", "valueCodeableConcept": value["tribalAffiliation"]}) if value.get("isEnrolled") is not None: - sub_extensions.append({"url": "isEnrolled", "value_boolean": value["isEnrolled"]}) + sub_extensions.append({"url": "isEnrolled", "valueBoolean": value["isEnrolled"]}) push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-tribal-affiliation", extension=sub_extensions)) return self @@ -1011,7 +1011,7 @@ class UscorePatientProfile: return ext_obj if mode == "profile": return UscoreIndividualSexExtension.apply(ext_obj) - return cast('Coding | None', get_extension_value(ext, "value_coding")) + return cast('Coding | None', get_extension_value(ext, "valueCoding")) def set_sex(self, value: "UscoreIndividualSexExtension | Extension | Any") -> "UscorePatientProfile": if isinstance(value, UscoreIndividualSexExtension): @@ -1021,7 +1021,7 @@ class UscorePatientProfile: raise ValueError(f"Expected extension url 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", value_coding=value)) + push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-individual-sex", valueCoding=value)) return self @overload @@ -1040,7 +1040,7 @@ class UscorePatientProfile: return ext_obj if mode == "profile": return UscoreInterpreterNeededExtension.apply(ext_obj) - return cast('Coding | None', get_extension_value(ext, "value_coding")) + return cast('Coding | None', get_extension_value(ext, "valueCoding")) def set_interpreter_required(self, value: "UscoreInterpreterNeededExtension | Extension | Any") -> "UscorePatientProfile": if isinstance(value, UscoreInterpreterNeededExtension): @@ -1050,7 +1050,7 @@ class UscorePatientProfile: raise ValueError(f"Expected extension url 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed', got {_get_key(value, 'url')!r}") push_extension(self._resource, value) else: - push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", value_coding=value)) + push_extension(self._resource, Extension(url="http://hl7.org/fhir/us/core/StructureDefinition/us-core-interpreter-needed", valueCoding=value)) return self def validate(self) -> dict[str, list[str]]: @@ -1059,7 +1059,7 @@ class UscorePatientProfile: warnings: list[str] = [] errors.extend(validate_required(self._resource, profile_name, "identifier")) errors.extend(validate_required(self._resource, profile_name, "name")) - warnings.extend(validate_must_support(self._resource, profile_name, "birth_date")) + warnings.extend(validate_must_support(self._resource, profile_name, "birthDate")) warnings.extend(validate_must_support(self._resource, profile_name, "address")) return {"errors": errors, "warnings": warnings} @@ -1130,7 +1130,7 @@ class UscoreBloodPressureProfile: return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"system":"http://loinc.org","code":"85354-9"}]}, category=category_with_defaults, component=component_with_defaults, @@ -1182,206 +1182,206 @@ class UscoreBloodPressureProfile: return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "UscoreBloodPressureProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueQuantity", value) return self def get_value_codeable_concept(self) -> CodeableConcept | None: - return cast('CodeableConcept | None', getattr(self._resource, "value_codeable_concept", None)) + return cast('CodeableConcept | None', getattr(self._resource, "valueCodeableConcept", None)) def set_value_codeable_concept(self, value: CodeableConcept) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_codeable_concept", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueCodeableConcept", value) return self def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueString", value) return self def get_value_boolean(self) -> bool | None: - return cast('bool | None', getattr(self._resource, "value_boolean", None)) + return cast('bool | None', getattr(self._resource, "valueBoolean", None)) def set_value_boolean(self, value: bool) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_boolean", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueBoolean", value) return self def get_value_integer(self) -> int | None: - return cast('int | None', getattr(self._resource, "value_integer", None)) + return cast('int | None', getattr(self._resource, "valueInteger", None)) def set_value_integer(self, value: int) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_integer", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueInteger", value) return self def get_value_range(self) -> Range | None: - return cast('Range | None', getattr(self._resource, "value_range", None)) + return cast('Range | None', getattr(self._resource, "valueRange", None)) def set_value_range(self, value: Range) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_range", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRange", value) return self def get_value_ratio(self) -> Ratio | None: - return cast('Ratio | None', getattr(self._resource, "value_ratio", None)) + return cast('Ratio | None', getattr(self._resource, "valueRatio", None)) def set_value_ratio(self, value: Ratio) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_ratio", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueRatio", value) return self def get_value_sampled_data(self) -> SampledData | None: - return cast('SampledData | None', getattr(self._resource, "value_sampled_data", None)) + return cast('SampledData | None', getattr(self._resource, "valueSampledData", None)) def set_value_sampled_data(self, value: SampledData) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_sampled_data", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueSampledData", value) return self def get_value_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_time", None)) + return cast('str | None', getattr(self._resource, "valueTime", None)) def set_value_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueTime", value) return self def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_period", None) - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valuePeriod", None) + setattr(self._resource, "valueDateTime", value) return self def get_value_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "value_period", None)) + return cast('Period | None', getattr(self._resource, "valuePeriod", None)) def set_value_period(self, value: Period) -> "UscoreBloodPressureProfile": - setattr(self._resource, "value_quantity", None) - setattr(self._resource, "value_codeable_concept", None) - setattr(self._resource, "value_string", None) - setattr(self._resource, "value_boolean", None) - setattr(self._resource, "value_integer", None) - setattr(self._resource, "value_range", None) - setattr(self._resource, "value_ratio", None) - setattr(self._resource, "value_sampled_data", None) - setattr(self._resource, "value_time", None) - setattr(self._resource, "value_date_time", None) - setattr(self._resource, "value_period", value) + setattr(self._resource, "valueQuantity", None) + setattr(self._resource, "valueCodeableConcept", None) + setattr(self._resource, "valueString", None) + setattr(self._resource, "valueBoolean", None) + setattr(self._resource, "valueInteger", None) + setattr(self._resource, "valueRange", None) + setattr(self._resource, "valueRatio", None) + setattr(self._resource, "valueSampledData", None) + setattr(self._resource, "valueTime", None) + setattr(self._resource, "valueDateTime", None) + setattr(self._resource, "valuePeriod", value) return self @overload @@ -1461,16 +1461,16 @@ class UscoreBloodPressureProfile: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"system":"http://loinc.org","code":"85354-9"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"system":"http://loinc.org","code":"8480-6"}]}}, "systolic", 1, 1)) errors.extend(validate_slice_cardinality(self._resource, profile_name, "component", {"code":{"coding":[{"system":"http://loinc.org","code":"8462-4"}]}}, "diastolic", 1, 1)) errors.extend(validate_reference(self._resource, profile_name, "performer", ["PractitionerRole","USCoreCareTeam","USCoreOrganizationProfile","Patient","USCorePractitionerProfile","USCoreRelatedPersonProfile"])) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["2708-6","29463-7","3140-1","3150-0","3151-8","39156-5","59408-5","59575-1","59576-9","77606-2","8287-5","8289-1","8302-2","8306-3","8310-5","8462-4","8478-0","8480-6","8867-4","9279-1","9843-4"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) warnings.extend(validate_must_support(self._resource, profile_name, "performer")) return {"errors": errors, "warnings": warnings} @@ -1533,7 +1533,7 @@ class UscoreBodyWeightProfile: return build_resource( Observation, - resource_type="Observation", + resourceType="Observation", code={"coding":[{"system":"http://loinc.org","code":"29463-7"}]}, category=category_with_defaults, status=status, @@ -1577,96 +1577,96 @@ class UscoreBodyWeightProfile: return self def get_effective_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "effective_date_time", None)) + return cast('str | None', getattr(self._resource, "effectiveDateTime", None)) def set_effective_date_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "effective_period", None) - setattr(self._resource, "effective_date_time", value) + setattr(self._resource, "effectivePeriod", None) + setattr(self._resource, "effectiveDateTime", value) return self def get_effective_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "effective_period", None)) + return cast('Period | None', getattr(self._resource, "effectivePeriod", None)) def set_effective_period(self, value: Period) -> "UscoreBodyWeightProfile": - setattr(self._resource, "effective_date_time", None) - setattr(self._resource, "effective_period", value) + setattr(self._resource, "effectiveDateTime", None) + setattr(self._resource, "effectivePeriod", value) return self def get_value_quantity(self) -> Quantity | None: - return cast('Quantity | None', getattr(self._resource, "value_quantity", None)) + return cast('Quantity | None', getattr(self._resource, "valueQuantity", None)) def set_value_quantity(self, value: Quantity) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_quantity", value) + setattr(self._resource, "valueQuantity", value) return self def get_value_codeable_concept(self) -> CodeableConcept | None: - return cast('CodeableConcept | None', getattr(self._resource, "value_codeable_concept", None)) + return cast('CodeableConcept | None', getattr(self._resource, "valueCodeableConcept", None)) def set_value_codeable_concept(self, value: CodeableConcept) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_codeable_concept", value) + setattr(self._resource, "valueCodeableConcept", value) return self def get_value_string(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_string", None)) + return cast('str | None', getattr(self._resource, "valueString", None)) def set_value_string(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_string", value) + setattr(self._resource, "valueString", value) return self def get_value_boolean(self) -> bool | None: - return cast('bool | None', getattr(self._resource, "value_boolean", None)) + return cast('bool | None', getattr(self._resource, "valueBoolean", None)) def set_value_boolean(self, value: bool) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_boolean", value) + setattr(self._resource, "valueBoolean", value) return self def get_value_integer(self) -> int | None: - return cast('int | None', getattr(self._resource, "value_integer", None)) + return cast('int | None', getattr(self._resource, "valueInteger", None)) def set_value_integer(self, value: int) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_integer", value) + setattr(self._resource, "valueInteger", value) return self def get_value_range(self) -> Range | None: - return cast('Range | None', getattr(self._resource, "value_range", None)) + return cast('Range | None', getattr(self._resource, "valueRange", None)) def set_value_range(self, value: Range) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_range", value) + setattr(self._resource, "valueRange", value) return self def get_value_ratio(self) -> Ratio | None: - return cast('Ratio | None', getattr(self._resource, "value_ratio", None)) + return cast('Ratio | None', getattr(self._resource, "valueRatio", None)) def set_value_ratio(self, value: Ratio) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_ratio", value) + setattr(self._resource, "valueRatio", value) return self def get_value_sampled_data(self) -> SampledData | None: - return cast('SampledData | None', getattr(self._resource, "value_sampled_data", None)) + return cast('SampledData | None', getattr(self._resource, "valueSampledData", None)) def set_value_sampled_data(self, value: SampledData) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_sampled_data", value) + setattr(self._resource, "valueSampledData", value) return self def get_value_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_time", None)) + return cast('str | None', getattr(self._resource, "valueTime", None)) def set_value_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_time", value) + setattr(self._resource, "valueTime", value) return self def get_value_date_time(self) -> str | None: - return cast('str | None', getattr(self._resource, "value_date_time", None)) + return cast('str | None', getattr(self._resource, "valueDateTime", None)) def set_value_date_time(self, value: str) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_date_time", value) + setattr(self._resource, "valueDateTime", value) return self def get_value_period(self) -> Period | None: - return cast('Period | None', getattr(self._resource, "value_period", None)) + return cast('Period | None', getattr(self._resource, "valuePeriod", None)) def set_value_period(self, value: Period) -> "UscoreBodyWeightProfile": - setattr(self._resource, "value_period", value) + setattr(self._resource, "valuePeriod", value) return self @overload @@ -1702,24 +1702,24 @@ class UscoreBodyWeightProfile: errors.extend(validate_fixed_value(self._resource, profile_name, "code", {"coding":[{"system":"http://loinc.org","code":"29463-7"}]})) errors.extend(validate_required(self._resource, profile_name, "subject")) errors.extend(validate_reference(self._resource, profile_name, "subject", ["Patient"])) - errors.extend(validate_choice_required(self._resource, profile_name, ["effective_date_time","effective_period"])) - errors.extend(validate_reference(self._resource, profile_name, "has_member", ["MolecularSequence","QuestionnaireResponse","Observation"])) - errors.extend(validate_reference(self._resource, profile_name, "derived_from", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_choice_required(self._resource, profile_name, ["effectiveDateTime","effectivePeriod"])) + errors.extend(validate_reference(self._resource, profile_name, "hasMember", ["MolecularSequence","QuestionnaireResponse","Observation"])) + errors.extend(validate_reference(self._resource, profile_name, "derivedFrom", ["DocumentReference","ImagingStudy","Media","MolecularSequence","QuestionnaireResponse","Observation"])) errors.extend(validate_reference(self._resource, profile_name, "performer", ["PractitionerRole","USCoreCareTeam","USCoreOrganizationProfile","Patient","USCorePractitionerProfile","USCoreRelatedPersonProfile"])) - errors.extend(validate_excluded(self._resource, profile_name, "value_codeable_concept")) - errors.extend(validate_excluded(self._resource, profile_name, "value_string")) - errors.extend(validate_excluded(self._resource, profile_name, "value_boolean")) - errors.extend(validate_excluded(self._resource, profile_name, "value_integer")) - errors.extend(validate_excluded(self._resource, profile_name, "value_range")) - errors.extend(validate_excluded(self._resource, profile_name, "value_ratio")) - errors.extend(validate_excluded(self._resource, profile_name, "value_sampled_data")) - errors.extend(validate_excluded(self._resource, profile_name, "value_time")) - errors.extend(validate_excluded(self._resource, profile_name, "value_date_time")) - errors.extend(validate_excluded(self._resource, profile_name, "value_period")) + errors.extend(validate_excluded(self._resource, profile_name, "valueCodeableConcept")) + errors.extend(validate_excluded(self._resource, profile_name, "valueString")) + errors.extend(validate_excluded(self._resource, profile_name, "valueBoolean")) + errors.extend(validate_excluded(self._resource, profile_name, "valueInteger")) + errors.extend(validate_excluded(self._resource, profile_name, "valueRange")) + errors.extend(validate_excluded(self._resource, profile_name, "valueRatio")) + errors.extend(validate_excluded(self._resource, profile_name, "valueSampledData")) + errors.extend(validate_excluded(self._resource, profile_name, "valueTime")) + errors.extend(validate_excluded(self._resource, profile_name, "valueDateTime")) + errors.extend(validate_excluded(self._resource, profile_name, "valuePeriod")) warnings.extend(validate_enum(self._resource, profile_name, "category", ["social-history","vital-signs","imaging","laboratory","procedure","survey","exam","therapy","activity"])) warnings.extend(validate_enum(self._resource, profile_name, "code", ["2708-6","29463-7","3140-1","3150-0","3151-8","39156-5","59408-5","59575-1","59576-9","77606-2","8287-5","8289-1","8302-2","8306-3","8310-5","8462-4","8478-0","8480-6","8867-4","9279-1","9843-4"])) - warnings.extend(validate_enum(self._resource, profile_name, "data_absent_reason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) - warnings.extend(validate_must_support(self._resource, profile_name, "data_absent_reason")) + warnings.extend(validate_enum(self._resource, profile_name, "dataAbsentReason", ["unknown","asked-unknown","temp-unknown","not-asked","asked-declined","masked","not-applicable","unsupported","as-text","error","not-a-number","negative-infinity","positive-infinity","not-performed","not-permitted"])) + warnings.extend(validate_must_support(self._resource, profile_name, "dataAbsentReason")) warnings.extend(validate_must_support(self._resource, profile_name, "performer")) return {"errors": errors, "warnings": warnings} diff --git a/test/api/write-generator/multi-package/__snapshots__/cda.test.ts.snap b/test/api/write-generator/multi-package/__snapshots__/cda.test.ts.snap index 323292bd..7f0a9181 100644 --- a/test/api/write-generator/multi-package/__snapshots__/cda.test.ts.snap +++ b/test/api/write-generator/multi-package/__snapshots__/cda.test.ts.snap @@ -81,6 +81,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt, model_validator from typing import Any, Generic, List as PyList, Literal from typing_extensions import Self, TypeVar +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r5_core.base import Base from fhir_types.hl7_cda_uv_core.resource_preprocessor import preprocess_resource_fields @@ -91,47 +92,46 @@ T2 = TypeVar('T2', bound=ANY, default=ANY) class ClinicalDocument(ANY, Generic[T1, T2]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['ClinicalDocument'] = Field( + resourceType: Literal['ClinicalDocument'] = Field( default='ClinicalDocument', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='ClinicalDocument' ) authenticator: PyList[Authenticator[T1]] | None = Field(None, alias="authenticator", serialization_alias="authenticator") author: PyList[Author[T1]] = Field(alias="author", serialization_alias="author") authorization: PyList[Authorization] | None = Field(None, alias="authorization", serialization_alias="authorization") - class_code: str | None = Field(None, alias="classCode", serialization_alias="classCode") + classCode: str | None = Field(None, alias="classCode", serialization_alias="classCode") code: CE = Field(alias="code", serialization_alias="code") component: Component[T1, T2] = Field(alias="component", serialization_alias="component") - component_of: ComponentOf[T1] | None = Field(None, alias="componentOf", serialization_alias="componentOf") - confidentiality_code: CE = Field(alias="confidentialityCode", serialization_alias="confidentialityCode") - copy_time: TS | None = Field(None, alias="copyTime", serialization_alias="copyTime") + componentOf: ComponentOf[T1] | None = Field(None, alias="componentOf", serialization_alias="componentOf") + confidentialityCode: CE = Field(alias="confidentialityCode", serialization_alias="confidentialityCode") + copyTime: TS | None = Field(None, alias="copyTime", serialization_alias="copyTime") custodian: Custodian = Field(alias="custodian", serialization_alias="custodian") - data_enterer: DataEnterer[T1] | None = Field(None, alias="dataEnterer", serialization_alias="dataEnterer") - documentation_of: PyList[DocumentationOf[T1]] | None = Field(None, alias="documentationOf", serialization_alias="documentationOf") - effective_time: TS = Field(alias="effectiveTime", serialization_alias="effectiveTime") + dataEnterer: DataEnterer[T1] | None = Field(None, alias="dataEnterer", serialization_alias="dataEnterer") + documentationOf: PyList[DocumentationOf[T1]] | None = Field(None, alias="documentationOf", serialization_alias="documentationOf") + effectiveTime: TS = Field(alias="effectiveTime", serialization_alias="effectiveTime") id: II = Field(alias="id", serialization_alias="id") informant: PyList[Informant[T1]] | None = Field(None, alias="informant", serialization_alias="informant") - information_recipient: PyList[InformationRecipient[T1]] | None = Field(None, alias="informationRecipient", serialization_alias="informationRecipient") - in_fulfillment_of: PyList[InFulfillmentOf] | None = Field(None, alias="inFulfillmentOf", serialization_alias="inFulfillmentOf") - language_code: CS | None = Field(None, alias="languageCode", serialization_alias="languageCode") - legal_authenticator: LegalAuthenticator[T1] | None = Field(None, alias="legalAuthenticator", serialization_alias="legalAuthenticator") - mood_code: Literal["INT", "APT", "ARQ", "PRMS", "PRP", "RQO", "SLOT", "DEF", "EVN", "EVN.CRT", "GOL", "OPT", "PERM", "PERMRQ"] | None = Field(None, alias="moodCode", serialization_alias="moodCode") + informationRecipient: PyList[InformationRecipient[T1]] | None = Field(None, alias="informationRecipient", serialization_alias="informationRecipient") + inFulfillmentOf: PyList[InFulfillmentOf] | None = Field(None, alias="inFulfillmentOf", serialization_alias="inFulfillmentOf") + languageCode: CS | None = Field(None, alias="languageCode", serialization_alias="languageCode") + legalAuthenticator: LegalAuthenticator[T1] | None = Field(None, alias="legalAuthenticator", serialization_alias="legalAuthenticator") + moodCode: Literal["INT", "APT", "ARQ", "PRMS", "PRP", "RQO", "SLOT", "DEF", "EVN", "EVN.CRT", "GOL", "OPT", "PERM", "PERMRQ"] | None = Field(None, alias="moodCode", serialization_alias="moodCode") participant: PyList[Participant1[T1]] | None = Field(None, alias="participant", serialization_alias="participant") - realm_code: PyList[CS] | None = Field(None, alias="realmCode", serialization_alias="realmCode") - record_target: PyList[RecordTarget[T1]] = Field(alias="recordTarget", serialization_alias="recordTarget") - related_document: PyList[RelatedDocument] | None = Field(None, alias="relatedDocument", serialization_alias="relatedDocument") - sdtc_category: PyList[CD] | None = Field(None, alias="sdtcCategory", serialization_alias="sdtcCategory") - sdtc_status_code: CS | None = Field(None, alias="sdtcStatusCode", serialization_alias="sdtcStatusCode") - set_id: II | None = Field(None, alias="setId", serialization_alias="setId") - template_id: PyList[II] | None = Field(None, alias="templateId", serialization_alias="templateId") + realmCode: PyList[CS] | None = Field(None, alias="realmCode", serialization_alias="realmCode") + recordTarget: PyList[RecordTarget[T1]] = Field(alias="recordTarget", serialization_alias="recordTarget") + relatedDocument: PyList[RelatedDocument] | None = Field(None, alias="relatedDocument", serialization_alias="relatedDocument") + sdtcCategory: PyList[CD] | None = Field(None, alias="sdtcCategory", serialization_alias="sdtcCategory") + sdtcStatusCode: CS | None = Field(None, alias="sdtcStatusCode", serialization_alias="sdtcStatusCode") + setId: II | None = Field(None, alias="setId", serialization_alias="setId") + templateId: PyList[II] | None = Field(None, alias="templateId", serialization_alias="templateId") title: ST | None = Field(None, alias="title", serialization_alias="title") - type_id: II | None = Field(None, alias="typeId", serialization_alias="typeId") - version_number: INT | None = Field(None, alias="versionNumber", serialization_alias="versionNumber") + typeId: II | None = Field(None, alias="typeId", serialization_alias="typeId") + versionNumber: INT | None = Field(None, alias="versionNumber", serialization_alias="versionNumber") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/test/api/write-generator/multi-package/__snapshots__/local-package.test.ts.snap b/test/api/write-generator/multi-package/__snapshots__/local-package.test.ts.snap index b05e012b..a8c35962 100644 --- a/test/api/write-generator/multi-package/__snapshots__/local-package.test.ts.snap +++ b/test/api/write-generator/multi-package/__snapshots__/local-package.test.ts.snap @@ -1,4 +1,4 @@ -// Bun Snapshot v1, https://goo.gl/fbAQLP +// Bun Snapshot v1, https://bun.sh/docs/test/snapshots exports[`Local Package Folder - Multi-Package Generation TypeScript Generation should generate ExampleNotebook type in custom package folder 1`] = ` "// WARNING: This file is autogenerated by @atomic-ehr/codegen. @@ -202,6 +202,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt from typing import Any, List as PyList, Literal from typing_extensions import Self +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r4_core.base import Coding, Identifier, Reference from fhir_types.hl7_fhir_r4_core.domain_resource import DomainResource @@ -209,11 +210,10 @@ from fhir_types.hl7_fhir_r4_core.domain_resource import DomainResource class ExampleNotebook(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['ExampleNotebook'] = Field( + resourceType: Literal['ExampleNotebook'] = Field( default='ExampleNotebook', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='ExampleNotebook' ) author: Reference = Field(alias="author", serialization_alias="author") @@ -223,7 +223,7 @@ class ExampleNotebook(DomainResource): title: str = Field(alias="title", serialization_alias="title") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -244,6 +244,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt, model_validator from typing import Any, Generic, List as PyList, Literal from typing_extensions import Self, TypeVar +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r4_core.base import Extension, Narrative from fhir_types.hl7_fhir_r4_core.resource import Resource @@ -254,20 +255,19 @@ T = TypeVar('T', bound=Resource, default=Resource) class DomainResource(Resource, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: str = Field( + resourceType: str = Field( default='DomainResource', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='DomainResource' ) contained: PyList[T] | None = Field(None, alias="contained", serialization_alias="contained") extension: PyList[Extension] | None = Field(None, alias="extension", serialization_alias="extension") - modifier_extension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") + modifierExtension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") text: Narrative | None = Field(None, alias="text", serialization_alias="text") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -295,6 +295,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt from typing import Any, List as PyList, Literal from typing_extensions import Self +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r4_core.base import ( Address, Attachment, BackboneElement, CodeableConcept, ContactPoint, HumanName, Identifier, Period, Reference @@ -325,34 +326,33 @@ class PatientLink(BackboneElement): class Patient(DomainResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['Patient'] = Field( + resourceType: Literal['Patient'] = Field( default='Patient', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='Patient' ) active: bool | None = Field(None, alias="active", serialization_alias="active") address: PyList[Address] | None = Field(None, alias="address", serialization_alias="address") - birth_date: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") + birthDate: str | None = Field(None, alias="birthDate", serialization_alias="birthDate") communication: PyList[PatientCommunication] | None = Field(None, alias="communication", serialization_alias="communication") contact: PyList[PatientContact] | None = Field(None, alias="contact", serialization_alias="contact") - deceased_boolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") - deceased_date_time: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") + deceasedBoolean: bool | None = Field(None, alias="deceasedBoolean", serialization_alias="deceasedBoolean") + deceasedDateTime: str | None = Field(None, alias="deceasedDateTime", serialization_alias="deceasedDateTime") gender: Literal["male", "female", "other", "unknown"] | None = Field(None, alias="gender", serialization_alias="gender") - general_practitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") + generalPractitioner: PyList[Reference] | None = Field(None, alias="generalPractitioner", serialization_alias="generalPractitioner") identifier: PyList[Identifier] | None = Field(None, alias="identifier", serialization_alias="identifier") link: PyList[PatientLink] | None = Field(None, alias="link", serialization_alias="link") - managing_organization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") - marital_status: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") - multiple_birth_boolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") - multiple_birth_integer: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") + managingOrganization: Reference | None = Field(None, alias="managingOrganization", serialization_alias="managingOrganization") + maritalStatus: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None = Field(None, alias="maritalStatus", serialization_alias="maritalStatus") + multipleBirthBoolean: bool | None = Field(None, alias="multipleBirthBoolean", serialization_alias="multipleBirthBoolean") + multipleBirthInteger: int | None = Field(None, alias="multipleBirthInteger", serialization_alias="multipleBirthInteger") name: PyList[HumanName] | None = Field(None, alias="name", serialization_alias="name") photo: PyList[Attachment] | None = Field(None, alias="photo", serialization_alias="photo") telecom: PyList[ContactPoint] | None = Field(None, alias="telecom", serialization_alias="telecom") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/test/api/write-generator/multi-package/__snapshots__/sql-on-fhir.test.ts.snap b/test/api/write-generator/multi-package/__snapshots__/sql-on-fhir.test.ts.snap index c39aef07..f1a90417 100644 --- a/test/api/write-generator/multi-package/__snapshots__/sql-on-fhir.test.ts.snap +++ b/test/api/write-generator/multi-package/__snapshots__/sql-on-fhir.test.ts.snap @@ -88,6 +88,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt from typing import Any, List as PyList, Literal from typing_extensions import Self +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r5_core.base import BackboneElement from fhir_types.hl7_fhir_r5_core.canonical_resource import CanonicalResource @@ -96,34 +97,34 @@ from fhir_types.hl7_fhir_r5_core.canonical_resource import CanonicalResource class ViewDefinitionConstant(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") name: str = Field(alias="name", serialization_alias="name") - value_base64binary: str | None = Field(None, alias="valueBase64Binary", serialization_alias="valueBase64Binary") - value_boolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") - value_canonical: str | None = Field(None, alias="valueCanonical", serialization_alias="valueCanonical") - value_code: str | None = Field(None, alias="valueCode", serialization_alias="valueCode") - value_date: str | None = Field(None, alias="valueDate", serialization_alias="valueDate") - value_date_time: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") - value_decimal: float | None = Field(None, alias="valueDecimal", serialization_alias="valueDecimal") - value_id: str | None = Field(None, alias="valueId", serialization_alias="valueId") - value_instant: str | None = Field(None, alias="valueInstant", serialization_alias="valueInstant") - value_integer: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") - value_integer64: int | None = Field(None, alias="valueInteger64", serialization_alias="valueInteger64") - value_oid: str | None = Field(None, alias="valueOid", serialization_alias="valueOid") - value_positive_int: PositiveInt | None = Field(None, alias="valuePositiveInt", serialization_alias="valuePositiveInt") - value_string: str | None = Field(None, alias="valueString", serialization_alias="valueString") - value_time: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") - value_unsigned_int: int | None = Field(None, alias="valueUnsignedInt", serialization_alias="valueUnsignedInt") - value_uri: str | None = Field(None, alias="valueUri", serialization_alias="valueUri") - value_url: str | None = Field(None, alias="valueUrl", serialization_alias="valueUrl") - value_uuid: str | None = Field(None, alias="valueUuid", serialization_alias="valueUuid") + valueBase64binary: str | None = Field(None, alias="valueBase64Binary", serialization_alias="valueBase64Binary") + valueBoolean: bool | None = Field(None, alias="valueBoolean", serialization_alias="valueBoolean") + valueCanonical: str | None = Field(None, alias="valueCanonical", serialization_alias="valueCanonical") + valueCode: str | None = Field(None, alias="valueCode", serialization_alias="valueCode") + valueDate: str | None = Field(None, alias="valueDate", serialization_alias="valueDate") + valueDateTime: str | None = Field(None, alias="valueDateTime", serialization_alias="valueDateTime") + valueDecimal: float | None = Field(None, alias="valueDecimal", serialization_alias="valueDecimal") + valueId: str | None = Field(None, alias="valueId", serialization_alias="valueId") + valueInstant: str | None = Field(None, alias="valueInstant", serialization_alias="valueInstant") + valueInteger: int | None = Field(None, alias="valueInteger", serialization_alias="valueInteger") + valueInteger64: int | None = Field(None, alias="valueInteger64", serialization_alias="valueInteger64") + valueOid: str | None = Field(None, alias="valueOid", serialization_alias="valueOid") + valuePositiveInt: PositiveInt | None = Field(None, alias="valuePositiveInt", serialization_alias="valuePositiveInt") + valueString: str | None = Field(None, alias="valueString", serialization_alias="valueString") + valueTime: str | None = Field(None, alias="valueTime", serialization_alias="valueTime") + valueUnsignedInt: int | None = Field(None, alias="valueUnsignedInt", serialization_alias="valueUnsignedInt") + valueUri: str | None = Field(None, alias="valueUri", serialization_alias="valueUri") + valueUrl: str | None = Field(None, alias="valueUrl", serialization_alias="valueUrl") + valueUuid: str | None = Field(None, alias="valueUuid", serialization_alias="valueUuid") class ViewDefinitionSelect(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") column: PyList[ViewDefinitionSelectColumn] | None = Field(None, alias="column", serialization_alias="column") - for_each: str | None = Field(None, alias="forEach", serialization_alias="forEach") - for_each_or_null: str | None = Field(None, alias="forEachOrNull", serialization_alias="forEachOrNull") + forEach: str | None = Field(None, alias="forEach", serialization_alias="forEach") + forEachOrNull: str | None = Field(None, alias="forEachOrNull", serialization_alias="forEachOrNull") repeat: PyList[str] | None = Field(None, alias="repeat", serialization_alias="repeat") select: PyList[ViewDefinitionSelect] | None = Field(None, alias="select", serialization_alias="select") - union_all: PyList[ViewDefinitionSelect] | None = Field(None, alias="unionAll", serialization_alias="unionAll") + unionAll: PyList[ViewDefinitionSelect] | None = Field(None, alias="unionAll", serialization_alias="unionAll") class ViewDefinitionSelectColumn(BackboneElement): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") @@ -147,15 +148,14 @@ class ViewDefinitionWhere(BackboneElement): class ViewDefinition(CanonicalResource): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: Literal['ViewDefinition'] = Field( + resourceType: Literal['ViewDefinition'] = Field( default='ViewDefinition', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='ViewDefinition' ) constant: PyList[ViewDefinitionConstant] | None = Field(None, alias="constant", serialization_alias="constant") - fhir_version: PyList[Literal["0.01", "0.05", "0.06", "0.11", "0.0", "0.0.80", "0.0.81", "0.0.82", "0.4", "0.4.0", "0.5", "0.5.0", "1.0", "1.0.0", "1.0.1", "1.0.2", "1.1", "1.1.0", "1.4", "1.4.0", "1.6", "1.6.0", "1.8", "1.8.0", "3.0", "3.0.0", "3.0.1", "3.0.2", "3.3", "3.3.0", "3.5", "3.5.0", "4.0", "4.0.0", "4.0.1", "4.1", "4.1.0", "4.2", "4.2.0", "4.3", "4.3.0", "4.3.0-cibuild", "4.3.0-snapshot1", "4.4", "4.4.0", "4.5", "4.5.0", "4.6", "4.6.0", "5.0", "5.0.0", "5.0.0-cibuild", "5.0.0-snapshot1", "5.0.0-snapshot2", "5.0.0-ballot", "5.0.0-snapshot3", "5.0.0-draft-final"]] | None = Field(None, alias="fhirVersion", serialization_alias="fhirVersion") + fhirVersion: PyList[Literal["0.01", "0.05", "0.06", "0.11", "0.0", "0.0.80", "0.0.81", "0.0.82", "0.4", "0.4.0", "0.5", "0.5.0", "1.0", "1.0.0", "1.0.1", "1.0.2", "1.1", "1.1.0", "1.4", "1.4.0", "1.6", "1.6.0", "1.8", "1.8.0", "3.0", "3.0.0", "3.0.1", "3.0.2", "3.3", "3.3.0", "3.5", "3.5.0", "4.0", "4.0.0", "4.0.1", "4.1", "4.1.0", "4.2", "4.2.0", "4.3", "4.3.0", "4.3.0-cibuild", "4.3.0-snapshot1", "4.4", "4.4.0", "4.5", "4.5.0", "4.6", "4.6.0", "5.0", "5.0.0", "5.0.0-cibuild", "5.0.0-snapshot1", "5.0.0-snapshot2", "5.0.0-ballot", "5.0.0-snapshot3", "5.0.0-draft-final"]] | None = Field(None, alias="fhirVersion", serialization_alias="fhirVersion") name: str | None = Field(None, alias="name", serialization_alias="name") profile: PyList[str] | None = Field(None, alias="profile", serialization_alias="profile") resource: str = Field(alias="resource", serialization_alias="resource") @@ -163,7 +163,7 @@ class ViewDefinition(CanonicalResource): where: PyList[ViewDefinitionWhere] | None = Field(None, alias="where", serialization_alias="where") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) @@ -184,6 +184,7 @@ from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field, PositiveInt, model_validator from typing import Any, Generic, List as PyList, Literal from typing_extensions import Self, TypeVar +from fhir_types.fhirpy_base_model import FhirpyBaseModel from fhir_types.hl7_fhir_r5_core.base import Extension, Narrative from fhir_types.hl7_fhir_r5_core.resource import Resource @@ -194,20 +195,19 @@ T = TypeVar('T', bound=Resource, default=Resource) class DomainResource(Resource, Generic[T]): model_config = ConfigDict(validate_by_name=True, serialize_by_alias=True, extra="forbid") - resource_type: str = Field( + resourceType: str = Field( default='DomainResource', alias='resourceType', serialization_alias='resourceType', - frozen=True, pattern='DomainResource' ) contained: PyList[T] | None = Field(None, alias="contained", serialization_alias="contained") extension: PyList[Extension] | None = Field(None, alias="extension", serialization_alias="extension") - modifier_extension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") + modifierExtension: PyList[Extension] | None = Field(None, alias="modifierExtension", serialization_alias="modifierExtension") text: Narrative | None = Field(None, alias="text", serialization_alias="text") def model_post_init(self, __context: Any) -> None: - self.__pydantic_fields_set__.add("resource_type") + self.__pydantic_fields_set__.add("resourceType") def to_json(self, indent: int | None = None) -> str: return self.model_dump_json(exclude_unset=True, exclude_none=True, indent=indent) diff --git a/test/api/write-generator/python.test.ts b/test/api/write-generator/python.test.ts index c1a8f573..daa411cc 100644 --- a/test/api/write-generator/python.test.ts +++ b/test/api/write-generator/python.test.ts @@ -73,7 +73,7 @@ describe("Python Writer Generator", async () => { const patientPy = files["generated/hl7_fhir_r4_core/patient.py"]; it("generates CodeableConcept fields with enum bindings", () => { expect(patientPy).toContain( - 'marital_status: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None', + 'maritalStatus: CodeableConcept[Literal["A", "D", "I", "L", "M", "P", "S", "T", "U", "W", "UNK"] | str] | None', ); }); it("matches snapshot", () => {