6.7.2.1 ResolvedEvent
6.7.2.1.1 Purpose¶
One real fact, supported by one or more canonical events from different feeds. It is what consumers, periods and exports read, and its status says whether the sources agree, conflict or leave a doubt.
6.7.2.1.2 Questions it answers¶
- Did this calving happen once, and on which date?
- Which sources support it, and do they agree?
- Which rule set produced the resolution?
- Was the resolution replaced after a merge, a split or a rule change?
6.7.2.1.3 Fields¶
| Field | Type | Cardinality | Description |
|---|---|---|---|
id |
string (uuid) |
1..1 |
Key. |
animal |
Animal | 0..1 |
|
animal_group |
AnimalGroup | 0..1 |
Exactly one subject, matching evidence; use the AnimalLink revision available at the query cutoff. |
event_type |
string |
1..1 |
The CanonicalEvent subtype, e.g. ParturitionEvent. |
occurred |
EventTime | 1..1 |
Taken from the evidence that wins the timing attribute group (EventEvidence.wins). |
status |
enum | 1..1 |
Values: corroborated, single_source, linked_with_doubt, conflict_resolved, unresolved, cancelled, retired.corroborated: independent origins agree, not merely two delivery feeds. single_source: only one independent evidence source.linked_with_doubt: linked in the grey zone of the rule (e.g. calvings 8-30 days apart). conflict_resolved: incompatible values (e.g. death vs slaughter), the most reliable source won. Both carry a DataIssue.cancelled: all its evidence was cancelled at the source.retired: the resolution was replaced after merge/split/rule correction; its underlying source evidence need not be cancelled. |
date_disagreement_days |
integer |
1..1 |
Default: 0.Largest gap between the dates of its evidence. |
rule_set |
ReconciliationRuleSet | 1..1 |
|
issues |
DataIssue | 0..* |
|
replaced_by |
ResolvedEvent | 0..* |
Exact replacement revisions for a retired resolution; splitting may have several successors. No cycles. |
retirement_reason |
enum | 0..1 |
Values: merged, split, rule_revision, invalid_resolution.Required only when retired; a rule re-run may reopen via a new revision. Never reactivate the historical row. |
revision |
RecordRevision | 1..1 |
Changed resolutions append revisions; attribute winners identify exact evidence revisions. Each required attribute group has one winner or explicit unknown/unresolved value. Corroboration needs independent evidence, not the same upstream record delivered through two channels. |
created_at |
datetime |
1..1 |
|
updated_at |
datetime |
1..1 |
6.7.2.1.4 Relationships¶
References
ResolvedEvent.animal→ Animal (0..1)ResolvedEvent.animal_group→ AnimalGroup (0..1)ResolvedEvent.rule_set→ ReconciliationRuleSet (1..1)ResolvedEvent.issues→ DataIssue (0..*)ResolvedEvent.replaced_by→ ResolvedEvent (0..*)
Referenced by
CanonicalPeriod.start_event(0..1)CanonicalPeriod.end_event(0..1)EventEvidence.resolved_event(1..1)DataIssue.resolved_events(0..*)OfficialSubmission.included_events(0..*)ResolvedEvent.replaced_by(0..*)
Uses types
6.7.2.1.5 Rules & constraints¶
- One real fact, supported by one or more CanonicalEvents. What consumers, periods and exports read.
- Equivalent to the "golden record" of MDM systems and to FHIR Linkage.