Replace ComponentSourceType with general SourceType
This commit is contained in:
@@ -41,6 +41,29 @@ impl TryFrom<&String> for SourceType {
|
||||
}
|
||||
}
|
||||
|
||||
impl SourceType {
|
||||
fn from_component_source_type(value: &str) -> anyhow::Result<Self> {
|
||||
match value {
|
||||
"CD" => Ok(SourceType::CodingDiagnosis),
|
||||
"CP" => Ok(SourceType::CodingProcedure),
|
||||
"E" => Ok(SourceType::Encounter),
|
||||
"P" => Ok(SourceType::Patient),
|
||||
"R" => Ok(SourceType::Revenue),
|
||||
"S" => Ok(SourceType::Service),
|
||||
"T" => Ok(SourceType::Transfer),
|
||||
"EC" => Ok(SourceType::Encounter),
|
||||
"CDX" => Ok(SourceType::CodingDiagnosis),
|
||||
"CPX" => Ok(SourceType::CodingProcedure),
|
||||
"EX" => Ok(SourceType::Encounter),
|
||||
"PX" => Ok(SourceType::Patient),
|
||||
"RX" => Ok(SourceType::Revenue),
|
||||
"SX" => Ok(SourceType::Service),
|
||||
"TX" => Ok(SourceType::Transfer),
|
||||
_ => bail!("Invalid ComponentSourceType found: {}", value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Hash, PartialEq, PartialOrd)]
|
||||
pub enum FilterType {
|
||||
Equal,
|
||||
@@ -78,48 +101,10 @@ pub enum ExtraType {
|
||||
Transfer,
|
||||
}
|
||||
|
||||
#[derive(PartialEq)]
|
||||
pub enum ComponentSourceType {
|
||||
CodingDiagnosis,
|
||||
CodingProcedure,
|
||||
Encounter,
|
||||
Patient,
|
||||
Revenue,
|
||||
Service,
|
||||
Transfer,
|
||||
Extra(ExtraType),
|
||||
Classification,
|
||||
}
|
||||
|
||||
impl TryFrom<&str> for ComponentSourceType {
|
||||
type Error = anyhow::Error;
|
||||
|
||||
fn try_from(value: &str) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
"CD" => Ok(ComponentSourceType::CodingDiagnosis),
|
||||
"CP" => Ok(ComponentSourceType::CodingProcedure),
|
||||
"E" => Ok(ComponentSourceType::Encounter),
|
||||
"P" => Ok(ComponentSourceType::Patient),
|
||||
"R" => Ok(ComponentSourceType::Revenue),
|
||||
"S" => Ok(ComponentSourceType::Service),
|
||||
"T" => Ok(ComponentSourceType::Transfer),
|
||||
"EC" => Ok(ComponentSourceType::Classification),
|
||||
"CDX" => Ok(ComponentSourceType::Extra(ExtraType::CodingDiagnosis)),
|
||||
"CPX" => Ok(ComponentSourceType::Extra(ExtraType::CodingProcedure)),
|
||||
"EX" => Ok(ComponentSourceType::Extra(ExtraType::Encounter)),
|
||||
"PX" => Ok(ComponentSourceType::Extra(ExtraType::Patient)),
|
||||
"RX" => Ok(ComponentSourceType::Extra(ExtraType::Revenue)),
|
||||
"SX" => Ok(ComponentSourceType::Extra(ExtraType::Service)),
|
||||
"TX" => Ok(ComponentSourceType::Extra(ExtraType::Transfer)),
|
||||
_ => bail!("Invalid ComponentSourceType found: {}", value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub enum Component {
|
||||
Constant(String),
|
||||
// File, column_name
|
||||
Field(String, String),
|
||||
Field(SourceType, String),
|
||||
}
|
||||
|
||||
// Frequency per type:
|
||||
@@ -345,10 +330,10 @@ where
|
||||
Component::Constant(record.get("ComponentValueOrField").unwrap().to_owned())
|
||||
}
|
||||
source => {
|
||||
let component_source_type = ComponentSourceType::try_from(source)?;
|
||||
let component_source_type = SourceType::from_component_source_type(source)?;
|
||||
Component::Field(
|
||||
// TODO: Figure this out, should be determined from the source type
|
||||
"".to_owned(),
|
||||
component_source_type,
|
||||
// TODO: Field probably needs to be enumed to match onto the correct column in input files
|
||||
record.get("ComponentValueOrField").unwrap().to_owned(),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user