objc2-health-kit 0.3.2

Bindings to the HealthKit framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_class!(
    /// A sample object representing a CDA document.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkcdadocumentsample?language=objc)
    #[unsafe(super(HKDocumentSample, HKSample, HKObject, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(all(
        feature = "HKDocumentSample",
        feature = "HKObject",
        feature = "HKSample"
    ))]
    pub struct HKCDADocumentSample;
);

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
unsafe impl Send for HKCDADocumentSample {}

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
unsafe impl Sync for HKCDADocumentSample {}

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
extern_conformance!(
    unsafe impl NSCoding for HKCDADocumentSample {}
);

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
extern_conformance!(
    unsafe impl NSObjectProtocol for HKCDADocumentSample {}
);

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
extern_conformance!(
    unsafe impl NSSecureCoding for HKCDADocumentSample {}
);

#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
impl HKCDADocumentSample {
    extern_methods!(
        /// The contents of the document.
        ///
        /// Access to each CDA instance must be authorized by the user in order for the document data to be
        /// accessible to an app.  The authorization request occurs the first time a document matches the predicate
        /// of an executed HKDocumentQuery.  This property will always be nil if the sample is returned by an
        /// HKSampleQuery or an HKAnchoredObjectQuery.
        #[unsafe(method(document))]
        #[unsafe(method_family = none)]
        pub unsafe fn document(&self) -> Option<Retained<HKCDADocument>>;

        /// Creates a new document sample with the specified attributes.
        ///
        /// Parameter `documentData`: Document contents in an XML format that meets the CDA standard.
        ///
        /// Parameter `startDate`: The start date for the document.
        ///
        /// Parameter `endDate`: The end date for the document.
        ///
        /// Parameter `metadata`: Metadata for the document.
        ///
        /// Parameter `validationError`: The XML content will be validated against the standard for CDA content.  If that validation
        /// fails, then this parameter will be set with the relavant error.  Detailed information about the
        /// failure may be obtained by examining the value for the HKDetailedCDAValidationErrorKey key of
        /// the NSError's userInfo dictionary.
        ///
        /// Returns: The new instance or nil if the documentData does not pass validation.
        ///
        /// Attributes of the document, such as title, patient name, etc. will be extracted automatically
        /// from the document content.
        ///
        /// # Safety
        ///
        /// `metadata` generic should be of the correct type.
        #[unsafe(method(CDADocumentSampleWithData:startDate:endDate:metadata:validationError:_))]
        #[unsafe(method_family = none)]
        pub unsafe fn CDADocumentSampleWithData_startDate_endDate_metadata_validationError(
            document_data: &NSData,
            start_date: &NSDate,
            end_date: &NSDate,
            metadata: Option<&NSDictionary<NSString, AnyObject>>,
        ) -> Result<Retained<Self>, Retained<NSError>>;
    );
}

/// Methods declared on superclass `HKObject`.
#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
impl HKCDADocumentSample {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    );
}

/// Methods declared on superclass `NSObject`.
#[cfg(all(
    feature = "HKDocumentSample",
    feature = "HKObject",
    feature = "HKSample"
))]
impl HKCDADocumentSample {
    extern_methods!(
        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkcdadocument?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct HKCDADocument;
);

unsafe impl Send for HKCDADocument {}

unsafe impl Sync for HKCDADocument {}

extern_conformance!(
    unsafe impl NSObjectProtocol for HKCDADocument {}
);

impl HKCDADocument {
    extern_methods!(
        /// The CDA document content in XML format as specified in the CDA standard. This may be nil if the
        /// includeDocumentData option in HKDocumentQuery is specified as NO.
        #[unsafe(method(documentData))]
        #[unsafe(method_family = none)]
        pub unsafe fn documentData(&self) -> Option<Retained<NSData>>;

        /// The title of the document.
        ///
        /// This property is extracted automatically from the document.
        #[unsafe(method(title))]
        #[unsafe(method_family = none)]
        pub unsafe fn title(&self) -> Retained<NSString>;

        /// The name of the patient receiving treatment.
        ///
        /// This property is extracted automatically from the document.
        #[unsafe(method(patientName))]
        #[unsafe(method_family = none)]
        pub unsafe fn patientName(&self) -> Retained<NSString>;

        /// The person responsible for authoring the document.  Usually, this is the treating physician.
        ///
        /// This property is extracted automatically from the document.
        #[unsafe(method(authorName))]
        #[unsafe(method_family = none)]
        pub unsafe fn authorName(&self) -> Retained<NSString>;

        /// The organization responsible for the document.  This is usually the treating institution name.
        ///
        /// This property is extracted automatically from the document.
        #[unsafe(method(custodianName))]
        #[unsafe(method_family = none)]
        pub unsafe fn custodianName(&self) -> Retained<NSString>;
    );
}

/// Methods declared on superclass `NSObject`.
impl HKCDADocument {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathcdatitle?language=objc)
    pub static HKPredicateKeyPathCDATitle: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathcdapatientname?language=objc)
    pub static HKPredicateKeyPathCDAPatientName: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathcdaauthorname?language=objc)
    pub static HKPredicateKeyPathCDAAuthorName: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathcdacustodianname?language=objc)
    pub static HKPredicateKeyPathCDACustodianName: &'static NSString;
}

extern "C" {
    /// This may be used with the validationError parameter of
    /// CDADocumentSampleWithData:startDate:endDate:device:metadata:validationError: to obtain a detailed
    /// description of the validation errors encountered when creating a CDA document.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkdetailedcdavalidationerrorkey?language=objc)
    pub static HKDetailedCDAValidationErrorKey: &'static NSString;
}