#![allow(
missing_docs,
clippy::doc_markdown,
clippy::struct_excessive_bools,
clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Retrospection {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub basis: Option<super::defs::Basis>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
pub detected_at: String,
pub detecting_party: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disputed_attribution: Option<bool>,
pub encounter: super::defs::EncounterRef,
pub finding: RetrospectionFinding,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub latency: Option<i64>,
pub occurred_at: String,
}
impl crate::Record for Retrospection {
const NSID: &'static str = "dev.idiolect.retrospection";
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RetrospectionFinding {
pub detail: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub evidence: Option<RetrospectionFindingEvidence>,
pub kind: RetrospectionFindingKind,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "$type")]
pub enum RetrospectionFindingEvidence {
#[serde(rename = "dev.idiolect.defs#evidenceDivergence")]
EvidenceDivergence(super::defs::EvidenceDivergence),
#[serde(rename = "dev.idiolect.defs#evidenceLoss")]
EvidenceLoss(super::defs::EvidenceLoss),
#[serde(rename = "dev.idiolect.defs#evidenceMismatch")]
EvidenceMismatch(super::defs::EvidenceMismatch),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum RetrospectionFindingKind {
MergeDivergence,
DataLoss,
ReconciliationMismatch,
Other,
}