Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions assets/api/writer-generator/python/fhirpy_base_model.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion examples/python-r4-us-core/demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]},
)
Expand Down
11 changes: 1 addition & 10 deletions examples/python-r4-us-core/fhir_types/fhirpy_base_model.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand Down
456 changes: 228 additions & 228 deletions examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/base.py

Large diffs are not rendered by default.

22 changes: 11 additions & 11 deletions examples/python-r4-us-core/fhir_types/hl7_fhir_r4_core/bundle.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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")
Expand All @@ -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',
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,19 @@

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',
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)
Expand Down
Loading
Loading