rh-codegen 0.1.0-beta.1

Code generation library for creating Rust types from FHIR StructureDefinitions
Documentation
use anyhow::Result;

fn main() -> Result<()> {
    println!("Testing cardinality-based return type fix...");

    // The key change was in trait_impl_generator.rs where we added:
    //
    // 1. Check if field is optional: let is_optional = element.min.unwrap_or(0) == 0;
    // 2. For non-array fields:
    //    - If optional (min=0): return Option<T>
    //    - If required (min=1+): return T directly
    //
    // This ensures trait method signatures match the expected optionality based on FHIR cardinality

    println!("✅ Code change applied successfully!");
    println!("   Modified trait_impl_generator.rs to respect FHIR cardinality");
    println!("   Added logic to check minimum cardinality for optionality.");
    println!();
    println!("Expected behavior:");
    println!("- Fields with min=0 (optional): Return Option<T> from trait methods");
    println!("- Fields with min=1+ (required): Return T directly from trait methods");
    println!("- Arrays: Continue to return &[T] regardless of cardinality");
    println!();
    println!("Example fixes:");
    println!("- Account.type_ (0..1): fn type_(&self) -> Option<CodeableConcept>");
    println!("- Account.status (1..1): fn status(&self) -> ConsentStateCodes");
    println!();
    println!("This resolves trait implementation type mismatches based on FHIR cardinality.");

    Ok(())
}