haste_codegen/type_gen/rust_types/
mod.rs1use haste_fhir_model::r4::generated::terminology::IssueType;
2use haste_fhir_operation_error::OperationOutcomeError;
3use proc_macro2::TokenStream;
4
5mod data_types;
6mod terminology;
7
8pub struct GeneratedTypes {
9 pub terminology: TokenStream,
10 pub resources: TokenStream,
11 pub types: TokenStream,
12}
13
14pub async fn generate(
22 file_paths: &Vec<String>,
23 level: Option<&'static str>,
24) -> Result<GeneratedTypes, OperationOutcomeError> {
25 let terminology_types = terminology::generate(file_paths).await?;
26
27 let data_types =
28 data_types::generate(file_paths, level, &terminology_types.inlined_terminologies)
29 .map_err(|d| OperationOutcomeError::error(IssueType::exception(), d))?;
30
31 Ok(GeneratedTypes {
32 terminology: terminology_types.tokens,
33 resources: data_types.resources,
34 types: data_types.types,
35 })
36}