#![allow(
unused_imports,
clippy::large_enum_variant,
clippy::too_many_lines,
clippy::doc_markdown
)]
use crate::decode::{
choice_key, required, required_list, resource_type, Choice, Decoder, FhirJson, Obj, ObjWriter,
};
use crate::json::Json;
use crate::primitive::{Decimal, Kind, Primitive};
use crate::r4::*;
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct VerificationResult {
pub id: Option<String>,
pub meta: Option<Meta>,
pub implicit_rules: Option<Primitive<String>>,
pub language: Option<Primitive<String>>,
pub text: Option<Narrative>,
pub contained: Vec<Resource>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub target: Vec<Reference>,
pub target_location: Vec<Primitive<String>>,
pub need: Option<CodeableConcept>,
pub status: Option<Primitive<String>>,
pub status_date: Option<Primitive<String>>,
pub validation_type: Option<CodeableConcept>,
pub validation_process: Vec<CodeableConcept>,
pub frequency: Option<Timing>,
pub last_performed: Option<Primitive<String>>,
pub next_scheduled: Option<Primitive<String>>,
pub failure_action: Option<CodeableConcept>,
pub primary_source: Vec<VerificationResultPrimarySource>,
pub attestation: Option<VerificationResultAttestation>,
pub validator: Vec<VerificationResultValidator>,
}
#[cfg(feature = "base")]
impl FhirJson for VerificationResult {
const TYPE_NAME: &'static str = "VerificationResult";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
resource_type(&mut o, d, "VerificationResult");
let r = VerificationResult {
id: o.string(d, "id"),
meta: o.one(d, "meta"),
implicit_rules: o.prim(d, "implicitRules", Kind::Uri),
language: o.prim(d, "language", Kind::Code),
text: o.one(d, "text"),
contained: o.list(d, "contained"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
target: o.list(d, "target"),
target_location: o.prim_list(d, "targetLocation", Kind::String),
need: o.one(d, "need"),
status: o.prim(d, "status", Kind::Code),
status_date: o.prim(d, "statusDate", Kind::DateTime),
validation_type: o.one(d, "validationType"),
validation_process: o.list(d, "validationProcess"),
frequency: o.one(d, "frequency"),
last_performed: o.prim(d, "lastPerformed", Kind::DateTime),
next_scheduled: o.prim(d, "nextScheduled", Kind::Date),
failure_action: o.one(d, "failureAction"),
primary_source: o.list(d, "primarySource"),
attestation: o.one(d, "attestation"),
validator: o.list(d, "validator"),
};
required(d, "status", &r.status);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.raw("resourceType", Json::String("VerificationResult".into()));
w.string("id", &self.id);
w.one("meta", &self.meta);
w.prim("implicitRules", &self.implicit_rules);
w.prim("language", &self.language);
w.one("text", &self.text);
w.list("contained", &self.contained);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.list("target", &self.target);
w.prim_list("targetLocation", &self.target_location);
w.one("need", &self.need);
w.prim("status", &self.status);
w.prim("statusDate", &self.status_date);
w.one("validationType", &self.validation_type);
w.list("validationProcess", &self.validation_process);
w.one("frequency", &self.frequency);
w.prim("lastPerformed", &self.last_performed);
w.prim("nextScheduled", &self.next_scheduled);
w.one("failureAction", &self.failure_action);
w.list("primarySource", &self.primary_source);
w.one("attestation", &self.attestation);
w.list("validator", &self.validator);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct VerificationResultPrimarySource {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub who: Option<Reference>,
pub type_: Vec<CodeableConcept>,
pub communication_method: Vec<CodeableConcept>,
pub validation_status: Option<CodeableConcept>,
pub validation_date: Option<Primitive<String>>,
pub can_push_updates: Option<CodeableConcept>,
pub push_type_available: Vec<CodeableConcept>,
}
#[cfg(feature = "base")]
impl FhirJson for VerificationResultPrimarySource {
const TYPE_NAME: &'static str = "VerificationResultPrimarySource";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = VerificationResultPrimarySource {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
who: o.one(d, "who"),
type_: o.list(d, "type"),
communication_method: o.list(d, "communicationMethod"),
validation_status: o.one(d, "validationStatus"),
validation_date: o.prim(d, "validationDate", Kind::DateTime),
can_push_updates: o.one(d, "canPushUpdates"),
push_type_available: o.list(d, "pushTypeAvailable"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("who", &self.who);
w.list("type", &self.type_);
w.list("communicationMethod", &self.communication_method);
w.one("validationStatus", &self.validation_status);
w.prim("validationDate", &self.validation_date);
w.one("canPushUpdates", &self.can_push_updates);
w.list("pushTypeAvailable", &self.push_type_available);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct VerificationResultAttestation {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub who: Option<Reference>,
pub on_behalf_of: Option<Reference>,
pub communication_method: Option<CodeableConcept>,
pub date: Option<Primitive<String>>,
pub source_identity_certificate: Option<Primitive<String>>,
pub proxy_identity_certificate: Option<Primitive<String>>,
pub proxy_signature: Option<Signature>,
pub source_signature: Option<Signature>,
}
#[cfg(feature = "base")]
impl FhirJson for VerificationResultAttestation {
const TYPE_NAME: &'static str = "VerificationResultAttestation";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = VerificationResultAttestation {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
who: o.one(d, "who"),
on_behalf_of: o.one(d, "onBehalfOf"),
communication_method: o.one(d, "communicationMethod"),
date: o.prim(d, "date", Kind::Date),
source_identity_certificate: o.prim(d, "sourceIdentityCertificate", Kind::String),
proxy_identity_certificate: o.prim(d, "proxyIdentityCertificate", Kind::String),
proxy_signature: o.one(d, "proxySignature"),
source_signature: o.one(d, "sourceSignature"),
};
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("who", &self.who);
w.one("onBehalfOf", &self.on_behalf_of);
w.one("communicationMethod", &self.communication_method);
w.prim("date", &self.date);
w.prim(
"sourceIdentityCertificate",
&self.source_identity_certificate,
);
w.prim("proxyIdentityCertificate", &self.proxy_identity_certificate);
w.one("proxySignature", &self.proxy_signature);
w.one("sourceSignature", &self.source_signature);
w.finish()
}
}
#[cfg(feature = "base")]
#[derive(Debug, Clone, PartialEq, Default)]
pub struct VerificationResultValidator {
pub id: Option<String>,
pub extension: Vec<Extension>,
pub modifier_extension: Vec<Extension>,
pub organization: Option<Reference>,
pub identity_certificate: Option<Primitive<String>>,
pub attestation_signature: Option<Signature>,
}
#[cfg(feature = "base")]
impl FhirJson for VerificationResultValidator {
const TYPE_NAME: &'static str = "VerificationResultValidator";
fn decode(v: &Json, d: &mut Decoder) -> Option<Self> {
let mut o = Obj::new(v, d)?;
let r = VerificationResultValidator {
id: o.string(d, "id"),
extension: o.list(d, "extension"),
modifier_extension: o.list(d, "modifierExtension"),
organization: o.one(d, "organization"),
identity_certificate: o.prim(d, "identityCertificate", Kind::String),
attestation_signature: o.one(d, "attestationSignature"),
};
required(d, "organization", &r.organization);
o.finish(d);
Some(r)
}
fn encode(&self) -> Json {
let mut w = ObjWriter::new();
w.string("id", &self.id);
w.list("extension", &self.extension);
w.list("modifierExtension", &self.modifier_extension);
w.one("organization", &self.organization);
w.prim("identityCertificate", &self.identity_certificate);
w.one("attestationSignature", &self.attestation_signature);
w.finish()
}
}