#![allow(non_snake_case)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AdditionalInfo {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NumericRangeWithUnitAndQualifier {
#[serde(rename = "ExactValue", skip_serializing_if = "Option::is_none")]
pub exact_value: Option<NumericRangeWithUnitAndQualifierExactValue>,
#[serde(rename = "UpperValue", skip_serializing_if = "Option::is_none")]
pub upper_value: Option<NumericRangeWithUnitAndQualifierUpperValue>,
#[serde(rename = "LowerValue", skip_serializing_if = "Option::is_none")]
pub lower_value: Option<NumericRangeWithUnitAndQualifierLowerValue>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NumericRangeWithUnitAndQualifierExactValue {
#[serde(rename = "ValueSymbol", skip_serializing_if = "Option::is_none")]
pub value_symbol: Option<String>,
#[serde(rename = "Value", skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NumericRangeWithUnitAndQualifierLowerValue {
#[serde(rename = "ValueSymbol", skip_serializing_if = "Option::is_none")]
pub value_symbol: Option<String>,
#[serde(rename = "Value", skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct NumericRangeWithUnitAndQualifierUpperValue {
#[serde(rename = "ValueSymbol", skip_serializing_if = "Option::is_none")]
pub value_symbol: Option<String>,
#[serde(rename = "Value", skip_serializing_if = "Option::is_none")]
pub value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiers {
#[serde(rename = "SubstanceNames", skip_serializing_if = "Option::is_none")]
pub substance_names: Option<SubstanceIdentifiersSubstanceNames>,
#[serde(rename = "CommonName", skip_serializing_if = "Option::is_none")]
pub common_name: Option<SubstanceIdentifiersCommonName>,
#[serde(rename = "SubstanceIdentity", skip_serializing_if = "Option::is_none")]
pub substance_identity: Option<SubstanceIdentifiersSubstanceIdentity>,
#[serde(rename = "CBI", skip_serializing_if = "Option::is_none")]
pub cbi: Option<bool>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiersCommonName {
#[serde(rename = "OtherName", skip_serializing_if = "Option::is_none")]
pub other_name: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiersSubstanceIdentity {
#[serde(rename = "CASno", skip_serializing_if = "Option::is_none")]
pub ca_sno: Option<SubstanceIdentifiersSubstanceIdentityCASno>,
#[serde(rename = "OtherNo", skip_serializing_if = "Option::is_none")]
pub other_no: Option<Vec<SubstanceIdentifiersSubstanceIdentityOtherNo>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiersSubstanceIdentityCASno {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiersSubstanceIdentityOtherNo {
#[serde(rename = "IdentityName", skip_serializing_if = "Option::is_none")]
pub identity_name: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SubstanceIdentifiersSubstanceNames {
#[serde(rename = "IupacName", skip_serializing_if = "Option::is_none")]
pub iupac_name: Option<String>,
#[serde(rename = "CasInventoryName", skip_serializing_if = "Option::is_none")]
pub cas_inventory_name: Option<String>,
#[serde(rename = "GenericName", skip_serializing_if = "Option::is_none")]
pub generic_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcotoxicityTestInfo {
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "TestGuidline", skip_serializing_if = "Option::is_none")]
pub test_guidline: Option<String>,
#[serde(rename = "GLP", skip_serializing_if = "Option::is_none")]
pub glp: Option<String>,
#[serde(rename = "Species", skip_serializing_if = "Option::is_none")]
pub species: Option<String>,
#[serde(rename = "TestDuration", skip_serializing_if = "Option::is_none")]
pub test_duration: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<String>,
#[serde(rename = "Dose/Concentration", skip_serializing_if = "Option::is_none")]
pub dose_concentration: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "TestReference", skip_serializing_if = "Option::is_none")]
pub test_reference: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GazetteNo {
#[serde(rename = "CSCL", skip_serializing_if = "Option::is_none")]
pub cscl: Option<GazetteNoCSCL>,
#[serde(rename = "ISHA", skip_serializing_if = "Option::is_none")]
pub isha: Option<GazetteNoISHA>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GazetteNoCSCL {
#[serde(rename = "CsclGazetteNo", skip_serializing_if = "Option::is_none")]
pub cscl_gazette_no: Option<Vec<String>>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<Vec<GazetteNoCSCLClassification>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GazetteNoCSCLClassification {
#[serde(rename = "ClassificationName", skip_serializing_if = "Option::is_none")]
pub classification_name: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GazetteNoISHA {
#[serde(rename = "IshaGazetteNo", skip_serializing_if = "Option::is_none")]
pub isha_gazette_no: Option<Vec<String>>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<Vec<GazetteNoISHAClassification>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct GazetteNoISHAClassification {
#[serde(rename = "ClassificationName", skip_serializing_if = "Option::is_none")]
pub classification_name: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicityTestInfo {
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "TestGuidline", skip_serializing_if = "Option::is_none")]
pub test_guidline: Option<String>,
#[serde(rename = "GLP", skip_serializing_if = "Option::is_none")]
pub glp: Option<String>,
#[serde(rename = "Species", skip_serializing_if = "Option::is_none")]
pub species: Option<String>,
#[serde(rename = "Gender", skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(rename = "TestDuration", skip_serializing_if = "Option::is_none")]
pub test_duration: Option<String>,
#[serde(rename = "ExposureTime", skip_serializing_if = "Option::is_none")]
pub exposure_time: Option<String>,
#[serde(rename = "ExposureFrequency", skip_serializing_if = "Option::is_none")]
pub exposure_frequency: Option<String>,
#[serde(rename = "Dose/Concentration", skip_serializing_if = "Option::is_none")]
pub dose_concentration: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<String>,
#[serde(rename = "TestReference", skip_serializing_if = "Option::is_none")]
pub test_reference: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasures {
#[serde(rename = "HumanExposureAndEmergencyMeasuress", skip_serializing_if = "Option::is_none")]
pub human_exposure_and_emergency_measuress: Option<AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuress>,
#[serde(rename = "EnvironmentalPrecautions", skip_serializing_if = "Option::is_none")]
pub environmental_precautions: Option<AccidentalReleaseMeasuresEnvironmentalPrecautions>,
#[serde(rename = "ContainmentAndCleaningUp", skip_serializing_if = "Option::is_none")]
pub containment_and_cleaning_up: Option<AccidentalReleaseMeasuresContainmentAndCleaningUp>,
#[serde(rename = "SecondaryDisasterPreventionMeasures", skip_serializing_if = "Option::is_none")]
pub secondary_disaster_prevention_measures: Option<AccidentalReleaseMeasuresSecondaryDisasterPreventionMeasures>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresContainmentAndCleaningUp {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "Containment", skip_serializing_if = "Option::is_none")]
pub containment: Option<String>,
#[serde(rename = "CleaningUp", skip_serializing_if = "Option::is_none")]
pub cleaning_up: Option<String>,
#[serde(rename = "ForSmallQuantity", skip_serializing_if = "Option::is_none")]
pub for_small_quantity: Option<String>,
#[serde(rename = "ForLargeQuantity", skip_serializing_if = "Option::is_none")]
pub for_large_quantity: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresEnvironmentalPrecautions {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuress {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "GeneralMeasures", skip_serializing_if = "Option::is_none")]
pub general_measures: Option<String>,
#[serde(rename = "ForNonEmergencyPersonnel", skip_serializing_if = "Option::is_none")]
pub for_non_emergency_personnel: Option<AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuressForNonEmergencyPersonnel>,
#[serde(rename = "ForEmergencyResponders", skip_serializing_if = "Option::is_none")]
pub for_emergency_responders: Option<AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuressForEmergencyResponders>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuressForEmergencyResponders {
#[serde(rename = "PersonalProtectionEquipment", skip_serializing_if = "Option::is_none")]
pub personal_protection_equipment: Option<String>,
#[serde(rename = "EmergencyProcedures", skip_serializing_if = "Option::is_none")]
pub emergency_procedures: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresHumanExposureAndEmergencyMeasuressForNonEmergencyPersonnel {
#[serde(rename = "PersonalProtectionEquipment", skip_serializing_if = "Option::is_none")]
pub personal_protection_equipment: Option<String>,
#[serde(rename = "EmergencyProcedures", skip_serializing_if = "Option::is_none")]
pub emergency_procedures: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct AccidentalReleaseMeasuresSecondaryDisasterPreventionMeasures {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct Composition {
#[serde(rename = "CompositionType", skip_serializing_if = "Option::is_none")]
pub composition_type: Option<String>,
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "Use", skip_serializing_if = "Option::is_none")]
pub r#use: Option<String>,
#[serde(rename = "CompositionAndConcentration", skip_serializing_if = "Option::is_none")]
pub composition_and_concentration: Option<Vec<CompositionCompositionAndConcentration>>,
#[serde(rename = "ImpuritiesAndStabilizingAdditives", skip_serializing_if = "Option::is_none")]
pub impurities_and_stabilizing_additives: Option<CompositionImpuritiesAndStabilizingAdditives>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompositionCompositionAndConcentration {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "MolecularFormula", skip_serializing_if = "Option::is_none")]
pub molecular_formula: Option<String>,
#[serde(rename = "StructuralFormula", skip_serializing_if = "Option::is_none")]
pub structural_formula: Option<String>,
#[serde(rename = "StructuralFormulaPathAndFileName", skip_serializing_if = "Option::is_none")]
pub structural_formula_path_and_file_name: Option<String>,
#[serde(rename = "SMILES", skip_serializing_if = "Option::is_none")]
pub smiles: Option<String>,
#[serde(rename = "InChI", skip_serializing_if = "Option::is_none")]
pub in_ch_i: Option<String>,
#[serde(rename = "InChIKey", skip_serializing_if = "Option::is_none")]
pub in_ch_i_key: Option<String>,
#[serde(rename = "MolecularWeight", skip_serializing_if = "Option::is_none")]
pub molecular_weight: Option<f64>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<CompositionCompositionAndConcentrationConcentration>,
#[serde(rename = "gazetteNo", skip_serializing_if = "Option::is_none")]
pub gazette_no: Option<GazetteNo>,
#[serde(rename = "Use", skip_serializing_if = "Option::is_none")]
pub r#use: Option<String>,
#[serde(rename = "GHSinfo", skip_serializing_if = "Option::is_none")]
pub gh_sinfo: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompositionCompositionAndConcentrationConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompositionImpuritiesAndStabilizingAdditives {
#[serde(rename = "isPresent", skip_serializing_if = "Option::is_none")]
pub is_present: Option<bool>,
#[serde(rename = "SubstancesAndConcentration", skip_serializing_if = "Option::is_none")]
pub substances_and_concentration: Option<Vec<CompositionImpuritiesAndStabilizingAdditivesSubstancesAndConcentration>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompositionImpuritiesAndStabilizingAdditivesSubstancesAndConcentration {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "MolecularFormula", skip_serializing_if = "Option::is_none")]
pub molecular_formula: Option<String>,
#[serde(rename = "StructuralFormula", skip_serializing_if = "Option::is_none")]
pub structural_formula: Option<String>,
#[serde(rename = "StructuralFormulaPathAndFileName", skip_serializing_if = "Option::is_none")]
pub structural_formula_path_and_file_name: Option<String>,
#[serde(rename = "SMILES", skip_serializing_if = "Option::is_none")]
pub smiles: Option<String>,
#[serde(rename = "InChI", skip_serializing_if = "Option::is_none")]
pub in_ch_i: Option<String>,
#[serde(rename = "InChIKey", skip_serializing_if = "Option::is_none")]
pub in_ch_i_key: Option<String>,
#[serde(rename = "MolecularWeight", skip_serializing_if = "Option::is_none")]
pub molecular_weight: Option<f64>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<CompositionImpuritiesAndStabilizingAdditivesSubstancesAndConcentrationConcentration>,
#[serde(rename = "gazetteNo", skip_serializing_if = "Option::is_none")]
pub gazette_no: Option<GazetteNo>,
#[serde(rename = "Use", skip_serializing_if = "Option::is_none")]
pub r#use: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CompositionImpuritiesAndStabilizingAdditivesSubstancesAndConcentrationConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct Datasheet {
#[serde(rename = "IssueDate", skip_serializing_if = "Option::is_none")]
pub issue_date: Option<String>,
#[serde(rename = "RevisionDate", skip_serializing_if = "Option::is_none")]
pub revision_date: Option<Vec<String>>,
#[serde(rename = "VersionNo", skip_serializing_if = "Option::is_none")]
pub version_no: Option<Vec<String>>,
#[serde(rename = "JISVersionNo", skip_serializing_if = "Option::is_none")]
pub jis_version_no: Option<Vec<String>>,
#[serde(rename = "SDS-SchemaVersionNo", skip_serializing_if = "Option::is_none")]
pub sds_schema_version_no: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DisposalConsiderations {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "ProductWaste", skip_serializing_if = "Option::is_none")]
pub product_waste: Option<Vec<String>>,
#[serde(rename = "PackagingWaste", skip_serializing_if = "Option::is_none")]
pub packaging_waste: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformation {
#[serde(rename = "CompositionType", skip_serializing_if = "Option::is_none")]
pub composition_type: Option<String>,
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "EcotoxicologicalInformation", skip_serializing_if = "Option::is_none")]
pub ecotoxicological_information: Option<EcologicalInformationEcotoxicologicalInformation>,
#[serde(rename = "PersistenceDegradability", skip_serializing_if = "Option::is_none")]
pub persistence_degradability: Option<EcologicalInformationPersistenceDegradability>,
#[serde(rename = "Bioaccumulation", skip_serializing_if = "Option::is_none")]
pub bioaccumulation: Option<EcologicalInformationBioaccumulation>,
#[serde(rename = "Mobility", skip_serializing_if = "Option::is_none")]
pub mobility: Option<EcologicalInformationMobility>,
#[serde(rename = "HazardousOzoneLayer", skip_serializing_if = "Option::is_none")]
pub hazardous_ozone_layer: Option<EcologicalInformationHazardousOzoneLayer>,
#[serde(rename = "AdditionalEcotoxInformation", skip_serializing_if = "Option::is_none")]
pub additional_ecotox_information: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationBioaccumulation {
#[serde(rename = "BioconcentrationFactor", skip_serializing_if = "Option::is_none")]
pub bioconcentration_factor: Option<EcologicalInformationBioaccumulationBioconcentrationFactor>,
#[serde(rename = "LogKoW", skip_serializing_if = "Option::is_none")]
pub log_ko_w: Option<f64>,
#[serde(rename = "Bioaccumulation", skip_serializing_if = "Option::is_none")]
pub bioaccumulation: Option<String>,
#[serde(rename = "TestReference", skip_serializing_if = "Option::is_none")]
pub test_reference: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationBioaccumulationBioconcentrationFactor {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationEcotoxicologicalInformation {
#[serde(rename = "AquaticAcuteToxicity", skip_serializing_if = "Option::is_none")]
pub aquatic_acute_toxicity: Option<EcologicalInformationEcotoxicologicalInformationAquaticAcuteToxicity>,
#[serde(rename = "AquaticChronicToxicity", skip_serializing_if = "Option::is_none")]
pub aquatic_chronic_toxicity: Option<EcologicalInformationEcotoxicologicalInformationAquaticChronicToxicity>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationEcotoxicologicalInformationAquaticAcuteToxicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<EcologicalInformationEcotoxicologicalInformationAquaticAcuteToxicityResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationEcotoxicologicalInformationAquaticAcuteToxicityResult {
#[serde(rename = "ecotoxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub ecotoxicity_test_info: Option<EcotoxicityTestInfo>,
#[serde(rename = "ValueType", skip_serializing_if = "Option::is_none")]
pub value_type: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationEcotoxicologicalInformationAquaticChronicToxicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<EcologicalInformationEcotoxicologicalInformationAquaticChronicToxicityResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationEcotoxicologicalInformationAquaticChronicToxicityResult {
#[serde(rename = "ecotoxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub ecotoxicity_test_info: Option<EcotoxicityTestInfo>,
#[serde(rename = "ValueType", skip_serializing_if = "Option::is_none")]
pub value_type: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationHazardousOzoneLayer {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "AnnexMontrealProtocol", skip_serializing_if = "Option::is_none")]
pub annex_montreal_protocol: Option<bool>,
#[serde(rename = "OzoneDepletionPotential", skip_serializing_if = "Option::is_none")]
pub ozone_depletion_potential: Option<f64>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationMobility {
#[serde(rename = "AdsorptionCoefficient", skip_serializing_if = "Option::is_none")]
pub adsorption_coefficient: Option<EcologicalInformationMobilityAdsorptionCoefficient>,
#[serde(rename = "Mobility", skip_serializing_if = "Option::is_none")]
pub mobility: Option<String>,
#[serde(rename = "TestReference", skip_serializing_if = "Option::is_none")]
pub test_reference: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationMobilityAdsorptionCoefficient {
#[serde(rename = "KoC", skip_serializing_if = "Option::is_none")]
pub ko_c: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Kd", skip_serializing_if = "Option::is_none")]
pub kd: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct EcologicalInformationPersistenceDegradability {
#[serde(rename = "BiologicalDegradability", skip_serializing_if = "Option::is_none")]
pub biological_degradability: Option<String>,
#[serde(rename = "AbioticDegradation", skip_serializing_if = "Option::is_none")]
pub abiotic_degradation: Option<String>,
#[serde(rename = "RapidDegradability", skip_serializing_if = "Option::is_none")]
pub rapid_degradability: Option<bool>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtection {
#[serde(rename = "OccupationalExposureLimits", skip_serializing_if = "Option::is_none")]
pub occupational_exposure_limits: Option<Vec<ExposureControlPersonalProtectionOccupationalExposureLimits>>,
#[serde(rename = "AppropriateEngineeringControls", skip_serializing_if = "Option::is_none")]
pub appropriate_engineering_controls: Option<Vec<String>>,
#[serde(rename = "PersonalProtectionEquipment", skip_serializing_if = "Option::is_none")]
pub personal_protection_equipment: Option<ExposureControlPersonalProtectionPersonalProtectionEquipment>,
#[serde(rename = "SpecialInstructions", skip_serializing_if = "Option::is_none")]
pub special_instructions: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimits {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "DecompositionProduct", skip_serializing_if = "Option::is_none")]
pub decomposition_product: Option<bool>,
#[serde(rename = "ControlConcentration", skip_serializing_if = "Option::is_none")]
pub control_concentration: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsControlConcentration>,
#[serde(rename = "OccupationalExposureLimit", skip_serializing_if = "Option::is_none")]
pub occupational_exposure_limit: Option<Vec<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimit>>,
#[serde(rename = "BiologicalLimitValue", skip_serializing_if = "Option::is_none")]
pub biological_limit_value: Option<Vec<ExposureControlPersonalProtectionOccupationalExposureLimitsBiologicalLimitValue>>,
#[serde(rename = "EnvironmentalExposurePrevention", skip_serializing_if = "Option::is_none")]
pub environmental_exposure_prevention: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsEnvironmentalExposurePrevention>,
#[serde(rename = "ExposureGuidelines", skip_serializing_if = "Option::is_none")]
pub exposure_guidelines: Option<String>,
#[serde(rename = "GuidelineValuesForIndoorAirConcentration", skip_serializing_if = "Option::is_none")]
pub guideline_values_for_indoor_air_concentration: Option<String>,
#[serde(rename = "RecommendedMonitoringProcedure", skip_serializing_if = "Option::is_none")]
pub recommended_monitoring_procedure: Option<String>,
#[serde(rename = "AppropriateTechnicalManagement", skip_serializing_if = "Option::is_none")]
pub appropriate_technical_management: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsBiologicalLimitValue {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "SamplingTime", skip_serializing_if = "Option::is_none")]
pub sampling_time: Option<String>,
#[serde(rename = "Sample", skip_serializing_if = "Option::is_none")]
pub sample: Option<String>,
#[serde(rename = "substance", skip_serializing_if = "Option::is_none")]
pub substance: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsControlConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsEnvironmentalExposurePrevention {
#[serde(rename = "PNEC", skip_serializing_if = "Option::is_none")]
pub pnec: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimit {
#[serde(rename = "LimitValueTypeWithCountryOrOrganisation", skip_serializing_if = "Option::is_none")]
pub limit_value_type_with_country_or_organisation: Option<String>,
#[serde(rename = "LimitValue", skip_serializing_if = "Option::is_none")]
pub limit_value: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValue>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValue {
#[serde(rename = "Limit8H", skip_serializing_if = "Option::is_none")]
pub limit8_h: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueLimit8H>,
#[serde(rename = "LimitShortTerm", skip_serializing_if = "Option::is_none")]
pub limit_short_term: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueLimitShortTerm>,
#[serde(rename = "PeakLimitation", skip_serializing_if = "Option::is_none")]
pub peak_limitation: Option<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValuePeakLimitation>,
#[serde(rename = "OtherLimitation", skip_serializing_if = "Option::is_none")]
pub other_limitation: Option<Vec<ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueOtherLimitation>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueLimit8H {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueLimitShortTerm {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValueOtherLimitation {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionOccupationalExposureLimitsOccupationalExposureLimitLimitValuePeakLimitation {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<Vec<NumericRangeWithUnitAndQualifier>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipment {
#[serde(rename = "RespiratoryProtection", skip_serializing_if = "Option::is_none")]
pub respiratory_protection: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentRespiratoryProtection>>,
#[serde(rename = "HandProtection", skip_serializing_if = "Option::is_none")]
pub hand_protection: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtection>>,
#[serde(rename = "EyeProtection", skip_serializing_if = "Option::is_none")]
pub eye_protection: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentEyeProtection>>,
#[serde(rename = "SkinProtection", skip_serializing_if = "Option::is_none")]
pub skin_protection: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtection>>,
#[serde(rename = "SpecialTreatmentNeeded", skip_serializing_if = "Option::is_none")]
pub special_treatment_needed: Option<ExposureControlPersonalProtectionPersonalProtectionEquipmentSpecialTreatmentNeeded>,
#[serde(rename = "GeneralSafetyAndHealthMeasures", skip_serializing_if = "Option::is_none")]
pub general_safety_and_health_measures: Option<String>,
#[serde(rename = "SafetySigns", skip_serializing_if = "Option::is_none")]
pub safety_signs: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentEyeProtection {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "SuitableEyeProtection", skip_serializing_if = "Option::is_none")]
pub suitable_eye_protection: Option<ExposureControlPersonalProtectionPersonalProtectionEquipmentEyeProtectionSuitableEyeProtection>,
#[serde(rename = "UnSuitableEyeProtection", skip_serializing_if = "Option::is_none")]
pub un_suitable_eye_protection: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentEyeProtectionSuitableEyeProtection {
#[serde(rename = "Type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(rename = "Standard", skip_serializing_if = "Option::is_none")]
pub standard: Option<String>,
#[serde(rename = "Manufacturer", skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "ProductInfomation", skip_serializing_if = "Option::is_none")]
pub product_infomation: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtection {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "Type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(rename = "RecommendedProtectiveGloveArticles", skip_serializing_if = "Option::is_none")]
pub recommended_protective_glove_articles: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtectionRecommendedProtectiveGloveArticles>>,
#[serde(rename = "UnsuitableMaterials", skip_serializing_if = "Option::is_none")]
pub unsuitable_materials: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtectionRecommendedProtectiveGloveArticles {
#[serde(rename = "Material", skip_serializing_if = "Option::is_none")]
pub material: Option<String>,
#[serde(rename = "ThicknessOfGloveMaterial", skip_serializing_if = "Option::is_none")]
pub thickness_of_glove_material: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "GloveBreakthroughTime", skip_serializing_if = "Option::is_none")]
pub glove_breakthrough_time: Option<ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtectionRecommendedProtectiveGloveArticlesGloveBreakthroughTime>,
#[serde(rename = "MaxWearDurationPermanentContact", skip_serializing_if = "Option::is_none")]
pub max_wear_duration_permanent_contact: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Standard", skip_serializing_if = "Option::is_none")]
pub standard: Option<String>,
#[serde(rename = "Manufacturer", skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "ProductInfomation", skip_serializing_if = "Option::is_none")]
pub product_infomation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentHandProtectionRecommendedProtectiveGloveArticlesGloveBreakthroughTime {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "PermeationChart", skip_serializing_if = "Option::is_none")]
pub permeation_chart: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentRespiratoryProtection {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "TasksNeedingRespiratoryProtection", skip_serializing_if = "Option::is_none")]
pub tasks_needing_respiratory_protection: Option<String>,
#[serde(rename = "SuitableRespiratoryProtectionEquipment", skip_serializing_if = "Option::is_none")]
pub suitable_respiratory_protection_equipment: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentRespiratoryProtectionSuitableRespiratoryProtectionEquipment>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentRespiratoryProtectionSuitableRespiratoryProtectionEquipment {
#[serde(rename = "MaskType", skip_serializing_if = "Option::is_none")]
pub mask_type: Option<String>,
#[serde(rename = "FilterApparatusType", skip_serializing_if = "Option::is_none")]
pub filter_apparatus_type: Option<String>,
#[serde(rename = "Standard", skip_serializing_if = "Option::is_none")]
pub standard: Option<String>,
#[serde(rename = "Description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "Manufacturer", skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "ProductInfomation", skip_serializing_if = "Option::is_none")]
pub product_infomation: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtection {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "SuitableProtectiveClothing", skip_serializing_if = "Option::is_none")]
pub suitable_protective_clothing: Option<ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothing>,
#[serde(rename = "UnsuitableProtectiveClothing", skip_serializing_if = "Option::is_none")]
pub unsuitable_protective_clothing: Option<String>,
#[serde(rename = "AdditionalSkinProtectionMeasures", skip_serializing_if = "Option::is_none")]
pub additional_skin_protection_measures: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothing {
#[serde(rename = "RecommendedProtectiveClothingArticles", skip_serializing_if = "Option::is_none")]
pub recommended_protective_clothing_articles: Option<Vec<ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothingRecommendedProtectiveClothingArticles>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothingRecommendedProtectiveClothingArticles {
#[serde(rename = "Material", skip_serializing_if = "Option::is_none")]
pub material: Option<String>,
#[serde(rename = "ThicknessOfGloveMaterial", skip_serializing_if = "Option::is_none")]
pub thickness_of_glove_material: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "GloveBreakthroughTime", skip_serializing_if = "Option::is_none")]
pub glove_breakthrough_time: Option<ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothingRecommendedProtectiveClothingArticlesGloveBreakthroughTime>,
#[serde(rename = "MaxWearDurationPermanentContact", skip_serializing_if = "Option::is_none")]
pub max_wear_duration_permanent_contact: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Standard", skip_serializing_if = "Option::is_none")]
pub standard: Option<String>,
#[serde(rename = "Manufacturer", skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "ProductInfomation", skip_serializing_if = "Option::is_none")]
pub product_infomation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentSkinProtectionSuitableProtectiveClothingRecommendedProtectiveClothingArticlesGloveBreakthroughTime {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "PermeationChart", skip_serializing_if = "Option::is_none")]
pub permeation_chart: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ExposureControlPersonalProtectionPersonalProtectionEquipmentSpecialTreatmentNeeded {
#[serde(rename = "ThermalHazardsProtection", skip_serializing_if = "Option::is_none")]
pub thermal_hazards_protection: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasures {
#[serde(rename = "MediaToBeUsed", skip_serializing_if = "Option::is_none")]
pub media_to_be_used: Option<FireFightingMeasuresMediaToBeUsed>,
#[serde(rename = "MediaNotBeUsed", skip_serializing_if = "Option::is_none")]
pub media_not_be_used: Option<FireFightingMeasuresMediaNotBeUsed>,
#[serde(rename = "FireAndExplosionHazards", skip_serializing_if = "Option::is_none")]
pub fire_and_explosion_hazards: Option<FireFightingMeasuresFireAndExplosionHazards>,
#[serde(rename = "FireFightingProcedures", skip_serializing_if = "Option::is_none")]
pub fire_fighting_procedures: Option<FireFightingMeasuresFireFightingProcedures>,
#[serde(rename = "SpecialProtectiveEquipmentForFirefighters", skip_serializing_if = "Option::is_none")]
pub special_protective_equipment_for_firefighters: Option<FireFightingMeasuresSpecialProtectiveEquipmentForFirefighters>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasuresFireAndExplosionHazards {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "HazardCombustionProd", skip_serializing_if = "Option::is_none")]
pub hazard_combustion_prod: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasuresFireFightingProcedures {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "InitialFireFightingMethod", skip_serializing_if = "Option::is_none")]
pub initial_fire_fighting_method: Option<String>,
#[serde(rename = "LargeScaleFireFightingMethod", skip_serializing_if = "Option::is_none")]
pub large_scale_fire_fighting_method: Option<String>,
#[serde(rename = "SurroundingFireProcedures", skip_serializing_if = "Option::is_none")]
pub surrounding_fire_procedures: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasuresMediaNotBeUsed {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasuresMediaToBeUsed {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FireFightingMeasuresSpecialProtectiveEquipmentForFirefighters {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "SpecialProtectiveEquipmentAndPreventiveMeasuresForFirefighters", skip_serializing_if = "Option::is_none")]
pub special_protective_equipment_and_preventive_measures_for_firefighters: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasures {
#[serde(rename = "ExposureRoute", skip_serializing_if = "Option::is_none")]
pub exposure_route: Option<FirstAidMeasuresExposureRoute>,
#[serde(rename = "DescriptionOfFirstAidMeasures", skip_serializing_if = "Option::is_none")]
pub description_of_first_aid_measures: Option<FirstAidMeasuresDescriptionOfFirstAidMeasures>,
#[serde(rename = "InformationToHealthProfessionals", skip_serializing_if = "Option::is_none")]
pub information_to_health_professionals: Option<FirstAidMeasuresInformationToHealthProfessionals>,
#[serde(rename = "MedicalAttentionAndSpecialTreatmentNeeded", skip_serializing_if = "Option::is_none")]
pub medical_attention_and_special_treatment_needed: Option<FirstAidMeasuresMedicalAttentionAndSpecialTreatmentNeeded>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresDescriptionOfFirstAidMeasures {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresExposureRoute {
#[serde(rename = "FirstAidInhalation", skip_serializing_if = "Option::is_none")]
pub first_aid_inhalation: Option<FirstAidMeasuresExposureRouteFirstAidInhalation>,
#[serde(rename = "FirstAidSkin", skip_serializing_if = "Option::is_none")]
pub first_aid_skin: Option<FirstAidMeasuresExposureRouteFirstAidSkin>,
#[serde(rename = "FirstAidEye", skip_serializing_if = "Option::is_none")]
pub first_aid_eye: Option<FirstAidMeasuresExposureRouteFirstAidEye>,
#[serde(rename = "FirstAidIngestion", skip_serializing_if = "Option::is_none")]
pub first_aid_ingestion: Option<FirstAidMeasuresExposureRouteFirstAidIngestion>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresExposureRouteFirstAidEye {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresExposureRouteFirstAidIngestion {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresExposureRouteFirstAidInhalation {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresExposureRouteFirstAidSkin {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresInformationToHealthProfessionals {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AcuteSymptomsAndEffects", skip_serializing_if = "Option::is_none")]
pub acute_symptoms_and_effects: Option<FirstAidMeasuresInformationToHealthProfessionalsAcuteSymptomsAndEffects>,
#[serde(rename = "DelayedSymptomsAndEffects", skip_serializing_if = "Option::is_none")]
pub delayed_symptoms_and_effects: Option<FirstAidMeasuresInformationToHealthProfessionalsDelayedSymptomsAndEffects>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresInformationToHealthProfessionalsAcuteSymptomsAndEffects {
#[serde(rename = "FirstAidInhalation", skip_serializing_if = "Option::is_none")]
pub first_aid_inhalation: Option<Vec<String>>,
#[serde(rename = "FirstAidEye", skip_serializing_if = "Option::is_none")]
pub first_aid_eye: Option<Vec<String>>,
#[serde(rename = "FirstAidSkin", skip_serializing_if = "Option::is_none")]
pub first_aid_skin: Option<Vec<String>>,
#[serde(rename = "FirstAidIngestion", skip_serializing_if = "Option::is_none")]
pub first_aid_ingestion: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresInformationToHealthProfessionalsDelayedSymptomsAndEffects {
#[serde(rename = "FirstAidInhalation", skip_serializing_if = "Option::is_none")]
pub first_aid_inhalation: Option<Vec<String>>,
#[serde(rename = "FirstAidEye", skip_serializing_if = "Option::is_none")]
pub first_aid_eye: Option<Vec<String>>,
#[serde(rename = "FirstAidSkin", skip_serializing_if = "Option::is_none")]
pub first_aid_skin: Option<Vec<String>>,
#[serde(rename = "FirstAidIngestion", skip_serializing_if = "Option::is_none")]
pub first_aid_ingestion: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct FirstAidMeasuresMedicalAttentionAndSpecialTreatmentNeeded {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorage {
#[serde(rename = "SafeHandling", skip_serializing_if = "Option::is_none")]
pub safe_handling: Option<HandlingAndStorageSafeHandling>,
#[serde(rename = "Storage", skip_serializing_if = "Option::is_none")]
pub storage: Option<HandlingAndStorageStorage>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorageSafeHandling {
#[serde(rename = "TechnicalMeasuresAndStorageConditions", skip_serializing_if = "Option::is_none")]
pub technical_measures_and_storage_conditions: Option<HandlingAndStorageSafeHandlingTechnicalMeasuresAndStorageConditions>,
#[serde(rename = "HandlingPrecautions", skip_serializing_if = "Option::is_none")]
pub handling_precautions: Option<String>,
#[serde(rename = "AvoidContact", skip_serializing_if = "Option::is_none")]
pub avoid_contact: Option<String>,
#[serde(rename = "HygienicMeasures", skip_serializing_if = "Option::is_none")]
pub hygienic_measures: Option<String>,
#[serde(rename = "AdditionalProcessingHazards", skip_serializing_if = "Option::is_none")]
pub additional_processing_hazards: Option<String>,
#[serde(rename = "FoodHygieneRegulations", skip_serializing_if = "Option::is_none")]
pub food_hygiene_regulations: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorageSafeHandlingTechnicalMeasuresAndStorageConditions {
#[serde(rename = "ProtectiveMeasures", skip_serializing_if = "Option::is_none")]
pub protective_measures: Option<String>,
#[serde(rename = "MeasuresToPreventFire", skip_serializing_if = "Option::is_none")]
pub measures_to_prevent_fire: Option<String>,
#[serde(rename = "GeneralOccupationalHygiene", skip_serializing_if = "Option::is_none")]
pub general_occupational_hygiene: Option<String>,
#[serde(rename = "VentilationCondition", skip_serializing_if = "Option::is_none")]
pub ventilation_condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorageStorage {
#[serde(rename = "ConditionsForSafeStorage", skip_serializing_if = "Option::is_none")]
pub conditions_for_safe_storage: Option<HandlingAndStorageStorageConditionsForSafeStorage>,
#[serde(rename = "PackagingContainer", skip_serializing_if = "Option::is_none")]
pub packaging_container: Option<String>,
#[serde(rename = "SpecificEndUses", skip_serializing_if = "Option::is_none")]
pub specific_end_uses: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorageStorageConditionsForSafeStorage {
#[serde(rename = "TechnicalMeasuresAndStorageConditions", skip_serializing_if = "Option::is_none")]
pub technical_measures_and_storage_conditions: Option<String>,
#[serde(rename = "ConditionsToAvoid", skip_serializing_if = "Option::is_none")]
pub conditions_to_avoid: Option<String>,
#[serde(rename = "Conditions", skip_serializing_if = "Option::is_none")]
pub conditions: Option<HandlingAndStorageStorageConditionsForSafeStorageConditions>,
#[serde(rename = "StoragePrecautions", skip_serializing_if = "Option::is_none")]
pub storage_precautions: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HandlingAndStorageStorageConditionsForSafeStorageConditions {
#[serde(rename = "MaximumStoragePeriod", skip_serializing_if = "Option::is_none")]
pub maximum_storage_period: Option<String>,
#[serde(rename = "StorageTemperature", skip_serializing_if = "Option::is_none")]
pub storage_temperature: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentification {
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<HazardIdentificationClassification>,
#[serde(rename = "HazardLabelling", skip_serializing_if = "Option::is_none")]
pub hazard_labelling: Option<HazardIdentificationHazardLabelling>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassification {
#[serde(rename = "PhysicochemicalEffect", skip_serializing_if = "Option::is_none")]
pub physicochemical_effect: Option<HazardIdentificationClassificationPhysicochemicalEffect>,
#[serde(rename = "HealthEffect", skip_serializing_if = "Option::is_none")]
pub health_effect: Option<HazardIdentificationClassificationHealthEffect>,
#[serde(rename = "EnvironmentalEffect", skip_serializing_if = "Option::is_none")]
pub environmental_effect: Option<HazardIdentificationClassificationEnvironmentalEffect>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationEnvironmentalEffect {
#[serde(rename = "AquaticToxicityAcute", skip_serializing_if = "Option::is_none")]
pub aquatic_toxicity_acute: Option<String>,
#[serde(rename = "AquaticToxicityChronic", skip_serializing_if = "Option::is_none")]
pub aquatic_toxicity_chronic: Option<String>,
#[serde(rename = "HazardousOzoneLayer", skip_serializing_if = "Option::is_none")]
pub hazardous_ozone_layer: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationHealthEffect {
#[serde(rename = "AcuteToxicityOral", skip_serializing_if = "Option::is_none")]
pub acute_toxicity_oral: Option<String>,
#[serde(rename = "AcuteToxicityDermal", skip_serializing_if = "Option::is_none")]
pub acute_toxicity_dermal: Option<String>,
#[serde(rename = "AcuteToxicityInhalationGas", skip_serializing_if = "Option::is_none")]
pub acute_toxicity_inhalation_gas: Option<String>,
#[serde(rename = "AcuteToxicityInhalationVapour", skip_serializing_if = "Option::is_none")]
pub acute_toxicity_inhalation_vapour: Option<String>,
#[serde(rename = "AcuteToxicityInhalationDustOrMist", skip_serializing_if = "Option::is_none")]
pub acute_toxicity_inhalation_dust_or_mist: Option<String>,
#[serde(rename = "SkinCorrosionIrritation", skip_serializing_if = "Option::is_none")]
pub skin_corrosion_irritation: Option<String>,
#[serde(rename = "EyeDamageOrIrritation", skip_serializing_if = "Option::is_none")]
pub eye_damage_or_irritation: Option<String>,
#[serde(rename = "RespiratorySensitisation", skip_serializing_if = "Option::is_none")]
pub respiratory_sensitisation: Option<String>,
#[serde(rename = "SkinSensitisation", skip_serializing_if = "Option::is_none")]
pub skin_sensitisation: Option<String>,
#[serde(rename = "GermCellMutagenicity", skip_serializing_if = "Option::is_none")]
pub germ_cell_mutagenicity: Option<String>,
#[serde(rename = "Carcinogenicity", skip_serializing_if = "Option::is_none")]
pub carcinogenicity: Option<String>,
#[serde(rename = "ReproductiveToxicity", skip_serializing_if = "Option::is_none")]
pub reproductive_toxicity: Option<HazardIdentificationClassificationHealthEffectReproductiveToxicity>,
#[serde(rename = "SpecificTargetOrganSE", skip_serializing_if = "Option::is_none")]
pub specific_target_organ_se: Option<Vec<HazardIdentificationClassificationHealthEffectSpecificTargetOrganSE>>,
#[serde(rename = "SpecificTargetOrganRE", skip_serializing_if = "Option::is_none")]
pub specific_target_organ_re: Option<Vec<HazardIdentificationClassificationHealthEffectSpecificTargetOrganRE>>,
#[serde(rename = "AspirationHazard", skip_serializing_if = "Option::is_none")]
pub aspiration_hazard: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationHealthEffectReproductiveToxicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Lactation", skip_serializing_if = "Option::is_none")]
pub lactation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationHealthEffectSpecificTargetOrganRE {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "TargetOrgan", skip_serializing_if = "Option::is_none")]
pub target_organ: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationHealthEffectSpecificTargetOrganSE {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "TargetOrgan", skip_serializing_if = "Option::is_none")]
pub target_organ: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationClassificationPhysicochemicalEffect {
#[serde(rename = "Explosives", skip_serializing_if = "Option::is_none")]
pub explosives: Option<String>,
#[serde(rename = "FlammableGases", skip_serializing_if = "Option::is_none")]
pub flammable_gases: Option<String>,
#[serde(rename = "FlammableAerosols", skip_serializing_if = "Option::is_none")]
pub flammable_aerosols: Option<String>,
#[serde(rename = "OxidisingGases", skip_serializing_if = "Option::is_none")]
pub oxidising_gases: Option<String>,
#[serde(rename = "GasesUnderPressure", skip_serializing_if = "Option::is_none")]
pub gases_under_pressure: Option<String>,
#[serde(rename = "FlammableLiquids", skip_serializing_if = "Option::is_none")]
pub flammable_liquids: Option<String>,
#[serde(rename = "FlammableSolids", skip_serializing_if = "Option::is_none")]
pub flammable_solids: Option<String>,
#[serde(rename = "SelfreactiveSubstancesAndMixtures", skip_serializing_if = "Option::is_none")]
pub selfreactive_substances_and_mixtures: Option<String>,
#[serde(rename = "PyrophoricLiquids", skip_serializing_if = "Option::is_none")]
pub pyrophoric_liquids: Option<String>,
#[serde(rename = "PyrophoricSolids", skip_serializing_if = "Option::is_none")]
pub pyrophoric_solids: Option<String>,
#[serde(rename = "SelfheatingSubstancesAndMixtures", skip_serializing_if = "Option::is_none")]
pub selfheating_substances_and_mixtures: Option<String>,
#[serde(rename = "SubstancesWhichInContactWithWaterEmitFlammableGases", skip_serializing_if = "Option::is_none")]
pub substances_which_in_contact_with_water_emit_flammable_gases: Option<String>,
#[serde(rename = "OxidisingLiquids", skip_serializing_if = "Option::is_none")]
pub oxidising_liquids: Option<String>,
#[serde(rename = "OxidisingSolids", skip_serializing_if = "Option::is_none")]
pub oxidising_solids: Option<String>,
#[serde(rename = "OrganicPeroxides", skip_serializing_if = "Option::is_none")]
pub organic_peroxides: Option<String>,
#[serde(rename = "CorrosiveToMetals", skip_serializing_if = "Option::is_none")]
pub corrosive_to_metals: Option<String>,
#[serde(rename = "DesensitizedExplosives", skip_serializing_if = "Option::is_none")]
pub desensitized_explosives: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabelling {
#[serde(rename = "HazardPictogram", skip_serializing_if = "Option::is_none")]
pub hazard_pictogram: Option<Vec<String>>,
#[serde(rename = "SignalWord", skip_serializing_if = "Option::is_none")]
pub signal_word: Option<String>,
#[serde(rename = "HazardStatement", skip_serializing_if = "Option::is_none")]
pub hazard_statement: Option<Vec<HazardIdentificationHazardLabellingHazardStatement>>,
#[serde(rename = "PrecautionaryStatements", skip_serializing_if = "Option::is_none")]
pub precautionary_statements: Option<HazardIdentificationHazardLabellingPrecautionaryStatements>,
#[serde(rename = "OtherHazardsInfo", skip_serializing_if = "Option::is_none")]
pub other_hazards_info: Option<HazardIdentificationHazardLabellingOtherHazardsInfo>,
#[serde(rename = "SignificantIndicatorsAndEmergencyOverview", skip_serializing_if = "Option::is_none")]
pub significant_indicators_and_emergency_overview: Option<HazardIdentificationHazardLabellingSignificantIndicatorsAndEmergencyOverview>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingHazardStatement {
#[serde(rename = "HazardStatementCode", skip_serializing_if = "Option::is_none")]
pub hazard_statement_code: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingOtherHazardsInfo {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "PhysicochemicalEffect", skip_serializing_if = "Option::is_none")]
pub physicochemical_effect: Option<String>,
#[serde(rename = "HealthEffect", skip_serializing_if = "Option::is_none")]
pub health_effect: Option<String>,
#[serde(rename = "EnvironmentalEffect", skip_serializing_if = "Option::is_none")]
pub environmental_effect: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingPrecautionaryStatements {
#[serde(rename = "Prevention", skip_serializing_if = "Option::is_none")]
pub prevention: Option<Vec<HazardIdentificationHazardLabellingPrecautionaryStatementsPrevention>>,
#[serde(rename = "Response", skip_serializing_if = "Option::is_none")]
pub response: Option<Vec<HazardIdentificationHazardLabellingPrecautionaryStatementsResponse>>,
#[serde(rename = "Storage", skip_serializing_if = "Option::is_none")]
pub storage: Option<Vec<HazardIdentificationHazardLabellingPrecautionaryStatementsStorage>>,
#[serde(rename = "Disposal", skip_serializing_if = "Option::is_none")]
pub disposal: Option<Vec<HazardIdentificationHazardLabellingPrecautionaryStatementsDisposal>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingPrecautionaryStatementsDisposal {
#[serde(rename = "PrecautionaryStatementCode", skip_serializing_if = "Option::is_none")]
pub precautionary_statement_code: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingPrecautionaryStatementsPrevention {
#[serde(rename = "PrecautionaryStatementCode", skip_serializing_if = "Option::is_none")]
pub precautionary_statement_code: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingPrecautionaryStatementsResponse {
#[serde(rename = "PrecautionaryStatementCode", skip_serializing_if = "Option::is_none")]
pub precautionary_statement_code: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingPrecautionaryStatementsStorage {
#[serde(rename = "PrecautionaryStatementCode", skip_serializing_if = "Option::is_none")]
pub precautionary_statement_code: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct HazardIdentificationHazardLabellingSignificantIndicatorsAndEmergencyOverview {
#[serde(rename = "SignificantIndicators", skip_serializing_if = "Option::is_none")]
pub significant_indicators: Option<String>,
#[serde(rename = "EmergencyOverview", skip_serializing_if = "Option::is_none")]
pub emergency_overview: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct Identification {
#[serde(rename = "TradeProductIdentity", skip_serializing_if = "Option::is_none")]
pub trade_product_identity: Option<IdentificationTradeProductIdentity>,
#[serde(rename = "SpecificationNo", skip_serializing_if = "Option::is_none")]
pub specification_no: Option<Vec<String>>,
#[serde(rename = "SupplierInformation", skip_serializing_if = "Option::is_none")]
pub supplier_information: Option<IdentificationSupplierInformation>,
#[serde(rename = "UseAndUseAdvisedAgainst", skip_serializing_if = "Option::is_none")]
pub use_and_use_advised_against: Option<IdentificationUseAndUseAdvisedAgainst>,
#[serde(rename = "DomesticManufacturerInformation", skip_serializing_if = "Option::is_none")]
pub domestic_manufacturer_information: Option<IdentificationDomesticManufacturerInformation>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationDomesticManufacturerInformation {
#[serde(rename = "CompanyName", skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(rename = "Department", skip_serializing_if = "Option::is_none")]
pub department: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "PostCode", skip_serializing_if = "Option::is_none")]
pub post_code: Option<String>,
#[serde(rename = "Address", skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "Phone", skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(rename = "WorkingHours", skip_serializing_if = "Option::is_none")]
pub working_hours: Option<String>,
#[serde(rename = "Fax", skip_serializing_if = "Option::is_none")]
pub fax: Option<String>,
#[serde(rename = "Email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(rename = "CompanyUrl", skip_serializing_if = "Option::is_none")]
pub company_url: Option<String>,
#[serde(rename = "EmergencyContact", skip_serializing_if = "Option::is_none")]
pub emergency_contact: Option<Vec<IdentificationDomesticManufacturerInformationEmergencyContact>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationDomesticManufacturerInformationEmergencyContact {
#[serde(rename = "CompanyName", skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(rename = "Department", skip_serializing_if = "Option::is_none")]
pub department: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "PostCode", skip_serializing_if = "Option::is_none")]
pub post_code: Option<String>,
#[serde(rename = "Address", skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "Phone", skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(rename = "WorkingHours", skip_serializing_if = "Option::is_none")]
pub working_hours: Option<String>,
#[serde(rename = "Fax", skip_serializing_if = "Option::is_none")]
pub fax: Option<String>,
#[serde(rename = "Email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(rename = "CompanyUrl", skip_serializing_if = "Option::is_none")]
pub company_url: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationSupplierInformation {
#[serde(rename = "CompanyName", skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(rename = "Department", skip_serializing_if = "Option::is_none")]
pub department: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "PostCode", skip_serializing_if = "Option::is_none")]
pub post_code: Option<String>,
#[serde(rename = "Address", skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "Phone", skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(rename = "WorkingHours", skip_serializing_if = "Option::is_none")]
pub working_hours: Option<String>,
#[serde(rename = "Fax", skip_serializing_if = "Option::is_none")]
pub fax: Option<String>,
#[serde(rename = "Email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(rename = "CompanyUrl", skip_serializing_if = "Option::is_none")]
pub company_url: Option<String>,
#[serde(rename = "EmergencyContact", skip_serializing_if = "Option::is_none")]
pub emergency_contact: Option<Vec<IdentificationSupplierInformationEmergencyContact>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationSupplierInformationEmergencyContact {
#[serde(rename = "CompanyName", skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(rename = "Department", skip_serializing_if = "Option::is_none")]
pub department: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "PostCode", skip_serializing_if = "Option::is_none")]
pub post_code: Option<String>,
#[serde(rename = "Address", skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "Phone", skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(rename = "WorkingHours", skip_serializing_if = "Option::is_none")]
pub working_hours: Option<String>,
#[serde(rename = "Fax", skip_serializing_if = "Option::is_none")]
pub fax: Option<String>,
#[serde(rename = "Email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(rename = "CompanyUrl", skip_serializing_if = "Option::is_none")]
pub company_url: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationTradeProductIdentity {
#[serde(rename = "TradeNameJP", skip_serializing_if = "Option::is_none")]
pub trade_name_jp: Option<String>,
#[serde(rename = "TradeNameEN", skip_serializing_if = "Option::is_none")]
pub trade_name_en: Option<String>,
#[serde(rename = "OtherName", skip_serializing_if = "Option::is_none")]
pub other_name: Option<Vec<String>>,
#[serde(rename = "ProductNoUser", skip_serializing_if = "Option::is_none")]
pub product_no_user: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct IdentificationUseAndUseAdvisedAgainst {
#[serde(rename = "Use", skip_serializing_if = "Option::is_none")]
pub r#use: Option<Vec<String>>,
#[serde(rename = "UseAdvisedAgainst", skip_serializing_if = "Option::is_none")]
pub use_advised_against: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct OtherInformation {
#[serde(rename = "RelatedDocuments", skip_serializing_if = "Option::is_none")]
pub related_documents: Option<String>,
#[serde(rename = "RevisionInformation", skip_serializing_if = "Option::is_none")]
pub revision_information: Option<Vec<OtherInformationRevisionInformation>>,
#[serde(rename = "Desclaimer", skip_serializing_if = "Option::is_none")]
pub desclaimer: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct OtherInformationRevisionInformation {
#[serde(rename = "LastUpdateDate", skip_serializing_if = "Option::is_none")]
pub last_update_date: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalProperties {
#[serde(rename = "BasePhysicalChemicalProperties", skip_serializing_if = "Option::is_none")]
pub base_physical_chemical_properties: Option<PhysicalChemicalPropertiesBasePhysicalChemicalProperties>,
#[serde(rename = "MeltingPointRelated", skip_serializing_if = "Option::is_none")]
pub melting_point_related: Option<Vec<PhysicalChemicalPropertiesMeltingPointRelated>>,
#[serde(rename = "BoilingPointRelated", skip_serializing_if = "Option::is_none")]
pub boiling_point_related: Option<Vec<PhysicalChemicalPropertiesBoilingPointRelated>>,
#[serde(rename = "Flammability", skip_serializing_if = "Option::is_none")]
pub flammability: Option<Vec<String>>,
#[serde(rename = "ExplosionLimit", skip_serializing_if = "Option::is_none")]
pub explosion_limit: Option<Vec<PhysicalChemicalPropertiesExplosionLimit>>,
#[serde(rename = "FlashPoint", skip_serializing_if = "Option::is_none")]
pub flash_point: Option<Vec<PhysicalChemicalPropertiesFlashPoint>>,
#[serde(rename = "AutoignitionTemperature", skip_serializing_if = "Option::is_none")]
pub autoignition_temperature: Option<Vec<PhysicalChemicalPropertiesAutoignitionTemperature>>,
#[serde(rename = "DecompositionTemperature", skip_serializing_if = "Option::is_none")]
pub decomposition_temperature: Option<Vec<PhysicalChemicalPropertiesDecompositionTemperature>>,
#[serde(rename = "PhValue", skip_serializing_if = "Option::is_none")]
pub ph_value: Option<Vec<PhysicalChemicalPropertiesPhValue>>,
#[serde(rename = "DynamicViscosity", skip_serializing_if = "Option::is_none")]
pub dynamic_viscosity: Option<Vec<PhysicalChemicalPropertiesDynamicViscosity>>,
#[serde(rename = "Solubilities", skip_serializing_if = "Option::is_none")]
pub solubilities: Option<PhysicalChemicalPropertiesSolubilities>,
#[serde(rename = "PartitionCoefficient", skip_serializing_if = "Option::is_none")]
pub partition_coefficient: Option<Vec<PhysicalChemicalPropertiesPartitionCoefficient>>,
#[serde(rename = "VapourPressure", skip_serializing_if = "Option::is_none")]
pub vapour_pressure: Option<Vec<PhysicalChemicalPropertiesVapourPressure>>,
#[serde(rename = "Densities", skip_serializing_if = "Option::is_none")]
pub densities: Option<Vec<PhysicalChemicalPropertiesDensities>>,
#[serde(rename = "RelativeVapourDensity", skip_serializing_if = "Option::is_none")]
pub relative_vapour_density: Option<Vec<PhysicalChemicalPropertiesRelativeVapourDensity>>,
#[serde(rename = "ParticleSize", skip_serializing_if = "Option::is_none")]
pub particle_size: Option<PhysicalChemicalPropertiesParticleSize>,
#[serde(rename = "Radioactivity", skip_serializing_if = "Option::is_none")]
pub radioactivity: Option<Vec<PhysicalChemicalPropertiesRadioactivity>>,
#[serde(rename = "BulkDensity", skip_serializing_if = "Option::is_none")]
pub bulk_density: Option<Vec<PhysicalChemicalPropertiesBulkDensity>>,
#[serde(rename = "BurningPersistence", skip_serializing_if = "Option::is_none")]
pub burning_persistence: Option<Vec<PhysicalChemicalPropertiesBurningPersistence>>,
#[serde(rename = "OtherPhysicalChemicalProperty", skip_serializing_if = "Option::is_none")]
pub other_physical_chemical_property: Option<Vec<PhysicalChemicalPropertiesOtherPhysicalChemicalProperty>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesAutoignitionTemperature {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBasePhysicalChemicalProperties {
#[serde(rename = "PhysicalState", skip_serializing_if = "Option::is_none")]
pub physical_state: Option<String>,
#[serde(rename = "Colour", skip_serializing_if = "Option::is_none")]
pub colour: Option<String>,
#[serde(rename = "Odour", skip_serializing_if = "Option::is_none")]
pub odour: Option<String>,
#[serde(rename = "OdourThreshold", skip_serializing_if = "Option::is_none")]
pub odour_threshold: Option<PhysicalChemicalPropertiesBasePhysicalChemicalPropertiesOdourThreshold>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBasePhysicalChemicalPropertiesOdourThreshold {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBoilingPointRelated {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesBoilingPointRelatedCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBoilingPointRelatedCondition {
#[serde(rename = "PressureValue", skip_serializing_if = "Option::is_none")]
pub pressure_value: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBulkDensity {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesBurningPersistence {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesDecompositionTemperature {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesDensities {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesDynamicViscosity {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesDynamicViscosityCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesDynamicViscosityCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesExplosionLimit {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesFlashPoint {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesMeltingPointRelated {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesMeltingPointRelatedCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesMeltingPointRelatedCondition {
#[serde(rename = "PressureValue", skip_serializing_if = "Option::is_none")]
pub pressure_value: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesOtherPhysicalChemicalProperty {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesParticleSize {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<Vec<PhysicalChemicalPropertiesParticleSizeItemName>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesParticleSizeItemName {
#[serde(rename = "ItemName", skip_serializing_if = "Option::is_none")]
pub item_name: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesPartitionCoefficient {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesPartitionCoefficientCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesPartitionCoefficientCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesPhValue {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesPhValueCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesPhValueCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesRadioactivity {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesRelativeVapourDensity {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesSolubilities {
#[serde(rename = "WaterSolubility", skip_serializing_if = "Option::is_none")]
pub water_solubility: Option<Vec<PhysicalChemicalPropertiesSolubilitiesWaterSolubility>>,
#[serde(rename = "OtherSolubility", skip_serializing_if = "Option::is_none")]
pub other_solubility: Option<Vec<PhysicalChemicalPropertiesSolubilitiesOtherSolubility>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesSolubilitiesOtherSolubility {
#[serde(rename = "Solvent", skip_serializing_if = "Option::is_none")]
pub solvent: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesSolubilitiesOtherSolubilityCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesSolubilitiesOtherSolubilityCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesSolubilitiesWaterSolubility {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesSolubilitiesWaterSolubilityCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesSolubilitiesWaterSolubilityCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesVapourPressure {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
#[serde(rename = "Method", skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<PhysicalChemicalPropertiesVapourPressureCondition>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PhysicalChemicalPropertiesVapourPressureCondition {
#[serde(rename = "Temperature", skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OtherCondition", skip_serializing_if = "Option::is_none")]
pub other_condition: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformation {
#[serde(rename = "PRTRLaw", skip_serializing_if = "Option::is_none")]
pub prtr_law: Option<RegulatoryInformationPRTRLaw>,
#[serde(rename = "ISHA", skip_serializing_if = "Option::is_none")]
pub isha: Option<RegulatoryInformationISHA>,
#[serde(rename = "PDSCA", skip_serializing_if = "Option::is_none")]
pub pdsca: Option<RegulatoryInformationPDSCA>,
#[serde(rename = "OtherLegislation", skip_serializing_if = "Option::is_none")]
pub other_legislation: Option<RegulatoryInformationOtherLegislation>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationISHA {
#[serde(rename = "ISHAregulation", skip_serializing_if = "Option::is_none")]
pub ish_aregulation: Option<Vec<RegulatoryInformationISHAISHAregulation>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationISHAISHAregulation {
#[serde(rename = "RegulationName", skip_serializing_if = "Option::is_none")]
pub regulation_name: Option<String>,
#[serde(rename = "Composition", skip_serializing_if = "Option::is_none")]
pub composition: Option<Vec<RegulatoryInformationISHAISHAregulationComposition>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationISHAISHAregulationComposition {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "ImplementationDate", skip_serializing_if = "Option::is_none")]
pub implementation_date: Option<String>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<RegulatoryInformationISHAISHAregulationCompositionConcentration>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationISHAISHAregulationCompositionConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationOtherLegislation {
#[serde(rename = "Legislation", skip_serializing_if = "Option::is_none")]
pub legislation: Option<Vec<RegulatoryInformationOtherLegislationLegislation>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationOtherLegislationLegislation {
#[serde(rename = "LegislationName", skip_serializing_if = "Option::is_none")]
pub legislation_name: Option<String>,
#[serde(rename = "Regulations", skip_serializing_if = "Option::is_none")]
pub regulations: Option<Vec<RegulatoryInformationOtherLegislationLegislationRegulations>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationOtherLegislationLegislationRegulations {
#[serde(rename = "RegulationName", skip_serializing_if = "Option::is_none")]
pub regulation_name: Option<String>,
#[serde(rename = "Composition", skip_serializing_if = "Option::is_none")]
pub composition: Option<Vec<RegulatoryInformationOtherLegislationLegislationRegulationsComposition>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationOtherLegislationLegislationRegulationsComposition {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "ImplementationDate", skip_serializing_if = "Option::is_none")]
pub implementation_date: Option<String>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<RegulatoryInformationOtherLegislationLegislationRegulationsCompositionConcentration>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationOtherLegislationLegislationRegulationsCompositionConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPDSCA {
#[serde(rename = "Composition", skip_serializing_if = "Option::is_none")]
pub composition: Option<Vec<RegulatoryInformationPDSCAComposition>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPDSCAComposition {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "RegulationName", skip_serializing_if = "Option::is_none")]
pub regulation_name: Option<String>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "ImplementationDate", skip_serializing_if = "Option::is_none")]
pub implementation_date: Option<String>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<RegulatoryInformationPDSCACompositionConcentration>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPDSCACompositionConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPRTRLaw {
#[serde(rename = "Composition", skip_serializing_if = "Option::is_none")]
pub composition: Option<Vec<RegulatoryInformationPRTRLawComposition>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPRTRLawComposition {
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "Classification", skip_serializing_if = "Option::is_none")]
pub classification: Option<String>,
#[serde(rename = "JPSNo", skip_serializing_if = "Option::is_none")]
pub jps_no: Option<String>,
#[serde(rename = "isApplicable", skip_serializing_if = "Option::is_none")]
pub is_applicable: Option<bool>,
#[serde(rename = "ImplementationDate", skip_serializing_if = "Option::is_none")]
pub implementation_date: Option<String>,
#[serde(rename = "Concentration", skip_serializing_if = "Option::is_none")]
pub concentration: Option<RegulatoryInformationPRTRLawCompositionConcentration>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegulatoryInformationPRTRLawCompositionConcentration {
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StabilityReactivity {
#[serde(rename = "ReactivityDescription", skip_serializing_if = "Option::is_none")]
pub reactivity_description: Option<String>,
#[serde(rename = "StabilityDescription", skip_serializing_if = "Option::is_none")]
pub stability_description: Option<String>,
#[serde(rename = "HazardousReactions", skip_serializing_if = "Option::is_none")]
pub hazardous_reactions: Option<StabilityReactivityHazardousReactions>,
#[serde(rename = "ConditionsToAvoid", skip_serializing_if = "Option::is_none")]
pub conditions_to_avoid: Option<String>,
#[serde(rename = "MaterialsToAvoid", skip_serializing_if = "Option::is_none")]
pub materials_to_avoid: Option<String>,
#[serde(rename = "HazardousDecompositionProducts", skip_serializing_if = "Option::is_none")]
pub hazardous_decomposition_products: Option<StabilityReactivityHazardousDecompositionProducts>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StabilityReactivityHazardousDecompositionProducts {
#[serde(rename = "Substance", skip_serializing_if = "Option::is_none")]
pub substance: Option<String>,
#[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct StabilityReactivityHazardousReactions {
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "Flammability", skip_serializing_if = "Option::is_none")]
pub flammability: Option<String>,
#[serde(rename = "IgnitionCharacteristics", skip_serializing_if = "Option::is_none")]
pub ignition_characteristics: Option<String>,
#[serde(rename = "OxidizingProperties", skip_serializing_if = "Option::is_none")]
pub oxidizing_properties: Option<String>,
#[serde(rename = "SelfReactivityAndExplosiveness", skip_serializing_if = "Option::is_none")]
pub self_reactivity_and_explosiveness: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformation {
#[serde(rename = "CompositionType", skip_serializing_if = "Option::is_none")]
pub composition_type: Option<String>,
#[serde(rename = "SubstanceIdentifiers", skip_serializing_if = "Option::is_none")]
pub substance_identifiers: Option<SubstanceIdentifiers>,
#[serde(rename = "AcuteToxicity", skip_serializing_if = "Option::is_none")]
pub acute_toxicity: Option<ToxicologicalInformationAcuteToxicity>,
#[serde(rename = "SkinCorrosionIrritation", skip_serializing_if = "Option::is_none")]
pub skin_corrosion_irritation: Option<ToxicologicalInformationSkinCorrosionIrritation>,
#[serde(rename = "EyeDamageOrIrritation", skip_serializing_if = "Option::is_none")]
pub eye_damage_or_irritation: Option<ToxicologicalInformationEyeDamageOrIrritation>,
#[serde(rename = "RespiratorySensitisation", skip_serializing_if = "Option::is_none")]
pub respiratory_sensitisation: Option<ToxicologicalInformationRespiratorySensitisation>,
#[serde(rename = "SkinSensitisation", skip_serializing_if = "Option::is_none")]
pub skin_sensitisation: Option<ToxicologicalInformationSkinSensitisation>,
#[serde(rename = "GermCellMutagenicity", skip_serializing_if = "Option::is_none")]
pub germ_cell_mutagenicity: Option<ToxicologicalInformationGermCellMutagenicity>,
#[serde(rename = "Carcinogenicity", skip_serializing_if = "Option::is_none")]
pub carcinogenicity: Option<ToxicologicalInformationCarcinogenicity>,
#[serde(rename = "ReproductiveToxicity", skip_serializing_if = "Option::is_none")]
pub reproductive_toxicity: Option<ToxicologicalInformationReproductiveToxicity>,
#[serde(rename = "SpecificTargetOrganSE", skip_serializing_if = "Option::is_none")]
pub specific_target_organ_se: Option<ToxicologicalInformationSpecificTargetOrganSE>,
#[serde(rename = "SpecificTargetOrganRE", skip_serializing_if = "Option::is_none")]
pub specific_target_organ_re: Option<ToxicologicalInformationSpecificTargetOrganRE>,
#[serde(rename = "AspirationHazard", skip_serializing_if = "Option::is_none")]
pub aspiration_hazard: Option<ToxicologicalInformationAspirationHazard>,
#[serde(rename = "AdditionalToxicologicalInformation", skip_serializing_if = "Option::is_none")]
pub additional_toxicological_information: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAcuteToxicity {
#[serde(rename = "ExposureRoute", skip_serializing_if = "Option::is_none")]
pub exposure_route: Option<Vec<ToxicologicalInformationAcuteToxicityExposureRoute>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAcuteToxicityExposureRoute {
#[serde(rename = "ExposureRouteName", skip_serializing_if = "Option::is_none")]
pub exposure_route_name: Option<String>,
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationAcuteToxicityExposureRouteResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAcuteToxicityExposureRouteResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "Ate", skip_serializing_if = "Option::is_none")]
pub ate: Option<Vec<ToxicologicalInformationAcuteToxicityExposureRouteResultAte>>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAcuteToxicityExposureRouteResultAte {
#[serde(rename = "AteTypes", skip_serializing_if = "Option::is_none")]
pub ate_types: Option<String>,
#[serde(rename = "NumericRangeWithUnitAndQualifier", skip_serializing_if = "Option::is_none")]
pub numeric_range_with_unit_and_qualifier: Option<NumericRangeWithUnitAndQualifier>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAspirationHazard {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationAspirationHazardResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationAspirationHazardResult {
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "DynamicViscosity", skip_serializing_if = "Option::is_none")]
pub dynamic_viscosity: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationCarcinogenicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "EvaluationOrganization", skip_serializing_if = "Option::is_none")]
pub evaluation_organization: Option<Vec<ToxicologicalInformationCarcinogenicityEvaluationOrganization>>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationCarcinogenicityResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationCarcinogenicityEvaluationOrganization {
#[serde(rename = "OrganizationName", skip_serializing_if = "Option::is_none")]
pub organization_name: Option<String>,
#[serde(rename = "EvaluationResults", skip_serializing_if = "Option::is_none")]
pub evaluation_results: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
#[serde(rename = "ExplanatoryNotes", skip_serializing_if = "Option::is_none")]
pub explanatory_notes: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationCarcinogenicityResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationEyeDamageOrIrritation {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationEyeDamageOrIrritationResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationEyeDamageOrIrritationResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationGermCellMutagenicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationGermCellMutagenicityResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationGermCellMutagenicityResult {
#[serde(rename = "Species", skip_serializing_if = "Option::is_none")]
pub species: Option<String>,
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationReproductiveToxicity {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "ReproductiveEffects", skip_serializing_if = "Option::is_none")]
pub reproductive_effects: Option<String>,
#[serde(rename = "DevelopmentalEffects", skip_serializing_if = "Option::is_none")]
pub developmental_effects: Option<String>,
#[serde(rename = "Lactation", skip_serializing_if = "Option::is_none")]
pub lactation: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationReproductiveToxicityResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationReproductiveToxicityResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationRespiratorySensitisation {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationRespiratorySensitisationResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationRespiratorySensitisationResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSkinCorrosionIrritation {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationSkinCorrosionIrritationResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSkinCorrosionIrritationResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSkinSensitisation {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationSkinSensitisationResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSkinSensitisationResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "HumanExperience", skip_serializing_if = "Option::is_none")]
pub human_experience: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganRE {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "TargetOrgan", skip_serializing_if = "Option::is_none")]
pub target_organ: Option<Vec<String>>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationSpecificTargetOrganREResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganREResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "STOTData", skip_serializing_if = "Option::is_none")]
pub stot_data: Option<Vec<ToxicologicalInformationSpecificTargetOrganREResultSTOTData>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganREResultSTOTData {
#[serde(rename = "Dose/Concentration", skip_serializing_if = "Option::is_none")]
pub dose_concentration: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OrganAffected", skip_serializing_if = "Option::is_none")]
pub organ_affected: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "ResultEvaluation", skip_serializing_if = "Option::is_none")]
pub result_evaluation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganSE {
#[serde(rename = "Category", skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(rename = "TargetOrgan", skip_serializing_if = "Option::is_none")]
pub target_organ: Option<Vec<String>>,
#[serde(rename = "Rationale", skip_serializing_if = "Option::is_none")]
pub rationale: Option<String>,
#[serde(rename = "Result", skip_serializing_if = "Option::is_none")]
pub result: Option<Vec<ToxicologicalInformationSpecificTargetOrganSEResult>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganSEResult {
#[serde(rename = "toxicityTestInfo", skip_serializing_if = "Option::is_none")]
pub toxicity_test_info: Option<ToxicityTestInfo>,
#[serde(rename = "STOTData", skip_serializing_if = "Option::is_none")]
pub stot_data: Option<Vec<ToxicologicalInformationSpecificTargetOrganSEResultSTOTData>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct ToxicologicalInformationSpecificTargetOrganSEResultSTOTData {
#[serde(rename = "Dose/Concentration", skip_serializing_if = "Option::is_none")]
pub dose_concentration: Option<f64>,
#[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(rename = "OrganAffected", skip_serializing_if = "Option::is_none")]
pub organ_affected: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "ResultEvaluation", skip_serializing_if = "Option::is_none")]
pub result_evaluation: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformation {
#[serde(rename = "InternationalRegulations", skip_serializing_if = "Option::is_none")]
pub international_regulations: Option<Vec<TransportInformationInternationalRegulations>>,
#[serde(rename = "DomesticRegulations", skip_serializing_if = "Option::is_none")]
pub domestic_regulations: Option<Vec<TransportInformationDomesticRegulations>>,
#[serde(rename = "SpecialPrecautionUser", skip_serializing_if = "Option::is_none")]
pub special_precaution_user: Option<Vec<TransportInformationSpecialPrecautionUser>>,
#[serde(rename = "SpecialProvisions", skip_serializing_if = "Option::is_none")]
pub special_provisions: Option<Vec<TransportInformationSpecialProvisions>>,
#[serde(rename = "AccidentalReleaseMeasures", skip_serializing_if = "Option::is_none")]
pub accidental_release_measures: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformationDomesticRegulations {
#[serde(rename = "TransportationType", skip_serializing_if = "Option::is_none")]
pub transportation_type: Option<String>,
#[serde(rename = "LegislationName", skip_serializing_if = "Option::is_none")]
pub legislation_name: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "Erg", skip_serializing_if = "Option::is_none")]
pub erg: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformationInternationalRegulations {
#[serde(rename = "RegulationName", skip_serializing_if = "Option::is_none")]
pub regulation_name: Option<Vec<TransportInformationInternationalRegulationsRegulationName>>,
#[serde(rename = "MarinePollutant", skip_serializing_if = "Option::is_none")]
pub marine_pollutant: Option<String>,
#[serde(rename = "TransportInBulkSubstanceName", skip_serializing_if = "Option::is_none")]
pub transport_in_bulk_substance_name: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformationInternationalRegulationsRegulationName {
#[serde(rename = "TransportationType", skip_serializing_if = "Option::is_none")]
pub transportation_type: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<String>,
#[serde(rename = "UnNo", skip_serializing_if = "Option::is_none")]
pub un_no: Option<String>,
#[serde(rename = "ProperShippingName", skip_serializing_if = "Option::is_none")]
pub proper_shipping_name: Option<String>,
#[serde(rename = "DangerReleasingSubstance", skip_serializing_if = "Option::is_none")]
pub danger_releasing_substance: Option<String>,
#[serde(rename = "PackingGroup", skip_serializing_if = "Option::is_none")]
pub packing_group: Option<String>,
#[serde(rename = "SubsidiaryRisk", skip_serializing_if = "Option::is_none")]
pub subsidiary_risk: Option<String>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformationSpecialPrecautionUser {
#[serde(rename = "TransportationType", skip_serializing_if = "Option::is_none")]
pub transportation_type: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct TransportInformationSpecialProvisions {
#[serde(rename = "TransportationType", skip_serializing_if = "Option::is_none")]
pub transportation_type: Option<String>,
#[serde(rename = "FullText", skip_serializing_if = "Option::is_none")]
pub full_text: Option<Vec<String>>,
#[serde(rename = "AdditionalInfo", skip_serializing_if = "Option::is_none")]
pub additional_info: Option<AdditionalInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SdsRoot {
#[serde(rename = "Datasheet", skip_serializing_if = "Option::is_none")]
pub datasheet: Option<Datasheet>,
#[serde(rename = "Identification", skip_serializing_if = "Option::is_none")]
pub identification: Option<Identification>,
#[serde(rename = "HazardIdentification", skip_serializing_if = "Option::is_none")]
pub hazard_identification: Option<HazardIdentification>,
#[serde(rename = "Composition", skip_serializing_if = "Option::is_none")]
pub composition: Option<Composition>,
#[serde(rename = "FirstAidMeasures", skip_serializing_if = "Option::is_none")]
pub first_aid_measures: Option<FirstAidMeasures>,
#[serde(rename = "FireFightingMeasures", skip_serializing_if = "Option::is_none")]
pub fire_fighting_measures: Option<FireFightingMeasures>,
#[serde(rename = "AccidentalReleaseMeasures", skip_serializing_if = "Option::is_none")]
pub accidental_release_measures: Option<AccidentalReleaseMeasures>,
#[serde(rename = "HandlingAndStorage", skip_serializing_if = "Option::is_none")]
pub handling_and_storage: Option<HandlingAndStorage>,
#[serde(rename = "ExposureControlPersonalProtection", skip_serializing_if = "Option::is_none")]
pub exposure_control_personal_protection: Option<ExposureControlPersonalProtection>,
#[serde(rename = "PhysicalChemicalProperties", skip_serializing_if = "Option::is_none")]
pub physical_chemical_properties: Option<PhysicalChemicalProperties>,
#[serde(rename = "StabilityReactivity", skip_serializing_if = "Option::is_none")]
pub stability_reactivity: Option<StabilityReactivity>,
#[serde(rename = "ToxicologicalInformation", skip_serializing_if = "Option::is_none")]
pub toxicological_information: Option<Vec<ToxicologicalInformation>>,
#[serde(rename = "EcologicalInformation", skip_serializing_if = "Option::is_none")]
pub ecological_information: Option<Vec<EcologicalInformation>>,
#[serde(rename = "DisposalConsiderations", skip_serializing_if = "Option::is_none")]
pub disposal_considerations: Option<DisposalConsiderations>,
#[serde(rename = "TransportInformation", skip_serializing_if = "Option::is_none")]
pub transport_information: Option<TransportInformation>,
#[serde(rename = "RegulatoryInformation", skip_serializing_if = "Option::is_none")]
pub regulatory_information: Option<RegulatoryInformation>,
#[serde(rename = "OtherInformation", skip_serializing_if = "Option::is_none")]
pub other_information: Option<OtherInformation>,
}