pub enum ContentType {
Csv,
CsvWithHeader,
Json,
NdJson,
Parquet,
}Expand description
Supported output content types for ViewDefinition transformations.
This enum defines the available output formats for transformed FHIR data. Each format has specific characteristics and use cases for different integration scenarios.
§Format Descriptions
- CSV: Comma-separated values without headers
- CSV with Headers: Comma-separated values with column headers
- JSON: Pretty-printed JSON array of objects
- NDJSON: Newline-delimited JSON (one object per line)
- Parquet: Apache Parquet columnar format (planned)
§Examples
use helios_sof::ContentType;
// Parse from string
let csv_type = ContentType::from_string("text/csv")?;
assert_eq!(csv_type, ContentType::CsvWithHeader); // Default includes headers
let json_type = ContentType::from_string("application/json")?;
assert_eq!(json_type, ContentType::Json);
// CSV without headers
let csv_no_headers = ContentType::from_string("text/csv;header=false")?;
assert_eq!(csv_no_headers, ContentType::Csv);Variants§
Csv
Comma-separated values format without headers
CsvWithHeader
Comma-separated values format with column headers
Json
Pretty-printed JSON array format
NdJson
Newline-delimited JSON format (NDJSON)
Parquet
Apache Parquet columnar format (not yet implemented)
Implementations§
Source§impl ContentType
impl ContentType
Sourcepub fn from_string(s: &str) -> Result<Self, SofError>
pub fn from_string(s: &str) -> Result<Self, SofError>
Parse a content type from its MIME type string representation.
This method converts standard MIME type strings to the corresponding ContentType enum variants. It supports the SQL-on-FHIR specification’s recommended content types.
§Supported MIME Types
"text/csv"→ContentType::Csv"text/csv"→ContentType::CsvWithHeader(default: headers included)"text/csv;header=true"→ContentType::CsvWithHeader"text/csv;header=false"→ContentType::Csv"application/json"→ContentType::Json"application/ndjson"→ContentType::NdJson"application/x-ndjson"→ContentType::NdJson"application/parquet"→ContentType::Parquet
§Arguments
s- The MIME type string to parse
§Returns
Ok(ContentType)- Successfully parsed content typeErr(SofError::UnsupportedContentType)- Unknown or unsupported MIME type
§Examples
use helios_sof::ContentType;
// Shortened format names
let csv = ContentType::from_string("csv")?;
assert_eq!(csv, ContentType::CsvWithHeader);
let json = ContentType::from_string("json")?;
assert_eq!(json, ContentType::Json);
let ndjson = ContentType::from_string("ndjson")?;
assert_eq!(ndjson, ContentType::NdJson);
// Full MIME types still supported
let csv_mime = ContentType::from_string("text/csv")?;
assert_eq!(csv_mime, ContentType::CsvWithHeader);
// CSV with headers explicitly
let csv_headers = ContentType::from_string("text/csv;header=true")?;
assert_eq!(csv_headers, ContentType::CsvWithHeader);
// CSV without headers
let csv_no_headers = ContentType::from_string("text/csv;header=false")?;
assert_eq!(csv_no_headers, ContentType::Csv);
// JSON format
let json_mime = ContentType::from_string("application/json")?;
assert_eq!(json_mime, ContentType::Json);
// Error for unsupported type
assert!(ContentType::from_string("text/plain").is_err());Trait Implementations§
Source§impl Clone for ContentType
impl Clone for ContentType
Source§fn clone(&self) -> ContentType
fn clone(&self) -> ContentType
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ContentType
impl Debug for ContentType
Source§impl PartialEq for ContentType
impl PartialEq for ContentType
impl Copy for ContentType
impl Eq for ContentType
impl StructuralPartialEq for ContentType
Auto Trait Implementations§
impl Freeze for ContentType
impl RefUnwindSafe for ContentType
impl Send for ContentType
impl Sync for ContentType
impl Unpin for ContentType
impl UnwindSafe for ContentType
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more