haste_codegen/type_gen/rust_types/
mod.rs

1use 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}