/// <summary> /// Creates and hydrates the 'RelatedInformation' section. /// </summary> /// <param name="mandatorySectionsOnly">Includes on the mandatory items</param> /// <returns>A hydrated 'RelatedInformation' object.</returns> public static IDocumentDetails CreateRelatedDocument(Boolean mandatorySectionsOnly) { var relatedDocument = AdvanceCareInformation.CreateRelatedDocument(); // Examination Result Representation (Document Target) relatedDocument.ExternalData = BaseCDAModel.CreateExternalData(); relatedDocument.ExternalData.ExternalDataMediaType = MediaType.PDF; relatedDocument.ExternalData.Path = AttachmentFileNameAndPath; relatedDocument.ExternalData.Caption = "Attachment"; // Document Provenance relatedDocument.DocumentProvenance = CreateDocumentProvenance(mandatorySectionsOnly); return(relatedDocument); }
/// <summary> /// Creates and hydrates the 'DocumentProvenances' section. /// </summary> /// <param name="mandatorySectionsOnly">Includes on the mandatory sections</param> /// <returns>A hydrated 'DocumentProvenance' object.</returns> public static DocumentProvenance CreateDocumentProvenance(bool mandatorySectionsOnly) { var documentProvenance = AdvanceCareInformation.CreateDocumentProvenance(); // Document Type documentProvenance.DocumentType = DocumentType.AdvanceCarePlanDirectiveAndSubstituteDecisionMaker; // Author of the CDA document documentProvenance.Author = CreateDocumentAuthor(mandatorySectionsOnly); if (!mandatorySectionsOnly) { // Document Identifier documentProvenance.DocumentIdentifier = BaseCDAModel.CreateIdentifier("Test Authority", null, null, "2.999.1234567890", null); } return(documentProvenance); }
/// <summary> /// This sample populates both the mandatory and optional Sections / Entries depending on the /// mandatorySectionsOnly Boolean /// </summary> internal static AdvanceCareInformation PopulatedAdvanceCareInformation(Boolean mandatorySectionsOnly, AuthorType authorType) { var advanceCareInformation = AdvanceCareInformation.CreateAdvanceCareInformation(); // Include Logo advanceCareInformation.IncludeLogo = true; advanceCareInformation.LogoPath = OutputFolderPath; // Set Creation Time advanceCareInformation.DocumentCreationTime = new ISO8601DateTime(DateTime.Now); #region Setup and populate the CDA context model // Setup and populate the CDA context model var cdaContext = AdvanceCareInformation.CreateCDAContext(); // Document Id cdaContext.DocumentId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateOid()); // Set Id cdaContext.SetId = BaseCDAModel.CreateIdentifier(BaseCDAModel.CreateGuid()); // CDA Context Version cdaContext.Version = "1"; // Custodian cdaContext.Custodian = BaseCDAModel.CreateCustodian(); GenericObjectReuseSample.HydrateCustodian(cdaContext.Custodian, "Organisation Name", mandatorySectionsOnly); // Legal Authenticator cdaContext.LegalAuthenticator = BaseCDAModel.CreateLegalAuthenticator(); GenericObjectReuseSample.HydrateAuthenticator(cdaContext.LegalAuthenticator, mandatorySectionsOnly); advanceCareInformation.CDAContext = cdaContext; #endregion #region Setup and Populate the SCS Context model // Setup and Populate the SCS Context model advanceCareInformation.SCSContext = AdvanceCareInformation.CreateSCSContext(); // Switch on the author enumerator. switch (authorType) { case AuthorType.AuthorHealthcareProvider: // Create Author Healthcare Provider var authorHealthcareProvider = BaseCDAModel.CreateAuthorHealthcareProvider(); GenericObjectReuseSample.HydrateAuthorHealthcareProvider(authorHealthcareProvider, "Organisation Name", mandatorySectionsOnly); advanceCareInformation.SCSContext.Author = authorHealthcareProvider; break; case AuthorType.AuthorNonHealthcareProvider: // Create Author Non Healthcare Provider var authorNonHealthcareProvider = BaseCDAModel.CreateAuthorPerson(); GenericObjectReuseSample.HydrateAuthorNonHealthcareProvider(authorNonHealthcareProvider, mandatorySectionsOnly); advanceCareInformation.SCSContext.Author = authorNonHealthcareProvider; break; } advanceCareInformation.SCSContext.SubjectOfCare = BaseCDAModel.CreateSubjectOfCare(); GenericObjectReuseSample.HydrateSubjectofCare(advanceCareInformation.SCSContext.SubjectOfCare, mandatorySectionsOnly); // REMOVE THESE FIELDS AS NOT ALLOWED IN ACI advanceCareInformation.SCSContext.SubjectOfCare.Participant.Person.DateOfDeath = null; advanceCareInformation.SCSContext.SubjectOfCare.Participant.Person.DateOfDeathAccuracyIndicator = null; advanceCareInformation.SCSContext.SubjectOfCare.Participant.Person.SourceOfDeathNotification = null; #endregion #region Setup and populate the SCS Content model // Setup and populate the SCS Content model advanceCareInformation.SCSContent = AdvanceCareInformation.CreateSCSContent(); // Related Information advanceCareInformation.SCSContent.DocumentDetails = CreateRelatedDocument(mandatorySectionsOnly); #endregion return(advanceCareInformation); }