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(
15 file_paths: &Vec<String>,
16 level: Option<&'static str>,
17) -> Result<GeneratedTypes, OperationOutcomeError> {
18 let terminology_types = terminology::generate(file_paths).await?;
19
20 let data_types =
21 data_types::generate(file_paths, level, &terminology_types.inlined_terminologies)
22 .map_err(|d| OperationOutcomeError::error(IssueType::Exception(None), d))?;
23
24 Ok(GeneratedTypes {
25 terminology: terminology_types.tokens,
26 resources: data_types.resources,
27 types: data_types.types,
28 })
29}