/// <summary>
        /// Fill in additional required information in the DiagnosticImagingReport.
        /// </summary>
        /// <param name="report">The DiagnosticImagingReport to complete.</param>
        /// <param name="metadata">Metadata information.</param>
        internal static void FillInAdditionalMetadata(DiagnosticImagingReport report, DiagnosticImagingMetadata metadata)
        {
            report.SCSContext.OrderDetails.RequesterOrderIdentifier = metadata.RequesterOrderIdentifier;
            report.SCSContext.OrderDetails.AccessionNumber          = metadata.AccessionNumber;

            // Author
            report.SCSContext.Author.Participant.Person.Organisation             = BaseCDAModel.CreateEmploymentOrganisation();
            report.SCSContext.Author.Participant.Person.Organisation.Identifiers = new List <Identifier>
            {
                BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPIO, metadata.AuthorOrganisationHpio)
            };

            // Reporting radiologist
            report.SCSContext.ReportingRadiologist.Role = DiagnosticImagingReport.CreateRole(metadata.ReportingRadiologist.Role, CodingSystem.ANZSCO);
            report.SCSContext.ReportingRadiologist.Participant.Addresses = metadata.ReportingRadiologist.Address;
            report.SCSContext.ReportingRadiologist.Participant.ElectronicCommunicationDetails  = metadata.ReportingRadiologist.ContactDetails;
            report.SCSContext.ReportingRadiologist.Participant.Person.Organisation             = BaseCDAModel.CreateEmploymentOrganisation();
            report.SCSContext.ReportingRadiologist.Participant.Person.Organisation.Identifiers = new List <Identifier> {
                BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPIO, metadata.ReportingRadiologist.OrganisationHpio)
            };
        }
        /// <summary>
        /// Creates and Hydrates a IParticipationReceivingLaboratory
        ///
        /// Note: the data used within this method is intended as a guide and should be replaced.
        /// </summary>
        /// <returns>IParticipationReceivingLaboratory</returns>
        private static IParticipationReportingRadiologist CreateReportingRadiologist(Boolean mandatoryOnly)
        {
            // Receiving Laboratory
            var reportingPathologist = BaseCDAModel.CreateReportingRadiologist();

            // Document reportingPathologist > Participant
            reportingPathologist.Participant = BaseCDAModel.CreateParticipantForReportingRadiologist();

            var person = BaseCDAModel.CreatePersonWithOrganisation();

            // Participation Period
            reportingPathologist.ParticipationEndTime = new ISO8601DateTime(DateTime.Now);

            // Document reportingPathologist > Role
            reportingPathologist.Role = DiagnosticImagingReport.CreateRole(Occupation.Pathologist);

            // Document reportingPathologist > Participant > Person or Organisation or Device > Person > Person Name
            var name = BaseCDAModel.CreatePersonName();

            name.FamilyName    = "Radiologist";
            person.PersonNames = new List <IPersonName> {
                name
            };

            // Document reportingPathologist > Participant > Entity Identifier
            person.Identifiers = new List <Identifier> {
                BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPII, "8003615833334118"),
            };

            // Employment Organisation
            person.Organisation                        = BaseCDAModel.CreateEmploymentOrganisation();
            person.Organisation.Name                   = "Hay Bill Hospital";
            person.Organisation.NameUsage              = OrganisationNameUsage.Other;
            person.Organisation.Department             = "Some department service provider";
            person.Organisation.EmploymentType         = BaseCDAModel.CreateCodableText("Casual");
            person.Organisation.Occupation             = DiagnosticImagingReport.CreateRole(Occupation.DiagnosticandInterventionalRadiologist);
            person.Organisation.PositionInOrganisation = BaseCDAModel.CreateCodableText("Radiologist");

            person.Organisation.Identifiers = new List <Identifier> {
                BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPIO, "8003620833333789"),
                BaseCDAModel.CreateIdentifier("SampleReportingId", null, null, "1.2.3.4.5.66666", null)
            };

            if (!mandatoryOnly)
            {
                // Document reportingPathologist > Participant > Electronic Communication Detail
                var coms1 = BaseCDAModel.CreateElectronicCommunicationDetail(
                    "0345754566",
                    ElectronicCommunicationMedium.Telephone,
                    ElectronicCommunicationUsage.WorkPlace);

                var coms2 = BaseCDAModel.CreateElectronicCommunicationDetail(
                    "*****@*****.**",
                    ElectronicCommunicationMedium.Email,
                    ElectronicCommunicationUsage.WorkPlace);

                reportingPathologist.Participant.ElectronicCommunicationDetails = new List <ElectronicCommunicationDetail> {
                    coms1, coms2
                };

                // Document reportingPathologist > Participant > Address
                var address1 = BaseCDAModel.CreateAddress();
                address1.AddressPurpose    = AddressPurpose.Business;
                address1.AustralianAddress = BaseCDAModel.CreateAustralianAddress();

                var address2 = BaseCDAModel.CreateAddress();
                address2.AddressPurpose    = AddressPurpose.Business;
                address2.AustralianAddress = BaseCDAModel.CreateAustralianAddress();

                var addressList = new List <IAddress> {
                    address1, address2
                };
                reportingPathologist.Participant.Addresses = addressList;

                // Participant > Entitlement 1
                var medicarePharmacyApprovalNumberEntitlement = BaseCDAModel.CreateEntitlement();
                var code = BaseCDAModel.CreateCodableText("11", CodingSystem.NCTISEntitlementTypeValues, "Medicare Pharmacy Approval Number", null, null);
                medicarePharmacyApprovalNumberEntitlement.Id = BaseCDAModel.CreateIdentifier("Pharmacy",
                                                                                             null,
                                                                                             "1234567892",
                                                                                             "1.2.36.174030967.1.3.2.1",
                                                                                             code);
                medicarePharmacyApprovalNumberEntitlement.Type             = EntitlementType.MedicarePharmacyApprovalNumber;
                medicarePharmacyApprovalNumberEntitlement.ValidityDuration = BaseCDAModel.CreateInterval("1", TimeUnitOfMeasure.Year);

                // Participant > Entitlement 2
                var medicarePrescriberNumberEntitlement = BaseCDAModel.CreateEntitlement();
                var medicarePharmacyApprovalNumberCode  = BaseCDAModel.CreateCodableText("10", CodingSystem.NCTISEntitlementTypeValues, "Medicare Prescriber Number", null, null);
                medicarePrescriberNumberEntitlement.Id = BaseCDAModel.CreateIdentifier("Prescriber",
                                                                                       null,
                                                                                       "049960CT",
                                                                                       "1.2.36.174030967.0.3",
                                                                                       medicarePharmacyApprovalNumberCode);

                medicarePrescriberNumberEntitlement.Type             = EntitlementType.MedicarePrescriberNumber;
                medicarePrescriberNumberEntitlement.ValidityDuration = BaseCDAModel.CreateInterval("1", TimeUnitOfMeasure.Year);

                reportingPathologist.Participant.Entitlements = new List <Entitlement> {
                    medicarePharmacyApprovalNumberEntitlement, medicarePrescriberNumberEntitlement
                };

                name.GivenNames = new List <string> {
                    "Good"
                };
                name.Titles = new List <string> {
                    "Doctor"
                };
                name.NameUsages = new List <NameUsage> {
                    NameUsage.Legal
                };

                address1.AustralianAddress.UnstructuredAddressLines = new List <string> {
                    "1 Clinician Street"
                };
                address1.AustralianAddress.SuburbTownLocality = "Nehtaville";
                address1.AustralianAddress.State           = AustralianState.QLD;
                address1.AustralianAddress.PostCode        = "5555";
                address1.AustralianAddress.DeliveryPointId = 32568931;

                address2.AustralianAddress.UnstructuredAddressLines = new List <string> {
                    "2 Clinician Street"
                };
                address2.AustralianAddress.SuburbTownLocality = "Nehtaville";
                address2.AustralianAddress.State           = AustralianState.QLD;
                address2.AustralianAddress.PostCode        = "5555";
                address2.AustralianAddress.DeliveryPointId = 32568931;

                // Qualifications
                reportingPathologist.Participant.Qualifications = "FRACGP";
            }

            reportingPathologist.Participant.Person = person;

            return(reportingPathologist);
        }