Skip to content

Add Source generation for custom resources #140

Description

@almostchristian

My company is looking into using more and more custom FHIR resources, So I'm looking to develop a source generator to auto generate the resource code based on the structure definition. My idea is that it will look for files with a name that ends with .StructureDefinition.json and then generate code from those files.

I tried my hand in this but I think this could work.
image

I'm currently working on this branch:
https://github.com/almostchristian/fhir-codegen/tree/feature/sourcegen

Some issues that I'm looking to resolving:

  • change namespace to be the same as the <assemblyname>.<folder.path> instead of the constant namespace. This should be a simple change. supported in latest change
  • nested enum and generic Code<T> property generation, I'm still trying to figure out how to get this to work. supported in latest change

Activity

  1. added
    enhancementNew feature or request
    coreRelated to the core functionality, not language specific
    on Aug 15, 2023
  2. GinoCanessa commented on Aug 15, 2023

    @GinoCanessa
    Collaborator

    Just wanted to comment that I have reviewing this on my list for next week. Thanks for the work so far!

  3. almostchristian commented on Aug 17, 2023

    @almostchristian
    Author

    I tried this for one of my sample projects which uses v4.3.0 of the Firely libraries and ran into issues related to the changes introduced in the latest 5.x Firely libraries (specifically the change in the FhirEnumerationAttribute).

    image

    If this source generator is to be publicly released, should we make the generated code adapt to the version of the Firely library? Or do we tie it to a specific/latest version available? The source generator library itself does not reference the Firely library, and this could lead to mistakes like what I encountered.

    image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreRelated to the core functionality, not language specificenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions