/// <summary> /// Create the author from information in the HL7 V2 message. /// </summary> /// <param name="message">The HL7 V2 message.</param> /// <returns></returns> internal static IParticipationAuthorHealthcareProvider CreateAuthor(HL7GenericMessage message) { IParticipationAuthorHealthcareProvider author = BaseCDAModel.CreateAuthorHealthcareProvider(); // Document Author > Participant author.Participant = BaseCDAModel.CreateParticipantForAuthorHealthcareProvider(); // V2 MAP : OBR-22 author.AuthorParticipationPeriodOrDateTimeAuthored = BaseCDAModel.CreateParticipationPeriod(GetResultsReportStatusChange(message)); // Document Author > Role = AddressPurpose.Residential author.Role = BaseCDAModel.CreateRole(Occupation.Pathologist, CodingSystem.ANZSCORevision1); // Document Author > Participant > Person or Organisation or Device > Person > Person Name (Note: 1..* in ACI) var person = GetPrincipalResultInterpreter(message); author.Participant.Person = (IPersonHealthcareProvider)person; return(author); }
/// <summary> /// Creates and Hydrates the Participation Author Healthcare Provider /// /// Note: the data used within this method is intended as a guide and should be replaced. /// </summary> /// <returns>A Hydrated IParticipationAuthorHealthcareProvider object</returns> public static void HydrateAuthorHealthcareProvider(IParticipationAuthorHealthcareProvider author, bool mandatoryOnly) { // Document Author > Participation Period author.AuthorParticipationPeriodOrDateTimeAuthored = BaseCDAModel.CreateParticipationPeriod(new ISO8601DateTime(DateTime.Now)); // Document Author > Role author.Role = BaseCDAModel.CreateRole(Occupation.MedicalLaboratoryScientist); // Document Author > Participant author.Participant = BaseCDAModel.CreateParticipantForAuthorHealthcareProvider(); var person = BaseCDAModel.CreatePersonHealthcareProvider(); // Document Author > Participant > Person or Organisation or Device > Person > Person Name var name1 = BaseCDAModel.CreatePersonName(); name1.FamilyName = "Doctor"; var name2 = BaseCDAModel.CreatePersonName(); name2.FamilyName = "Wong"; person.PersonNames = new List <IPersonName> { name1, name2 }; // Document Author > Participant > Address var address1 = BaseCDAModel.CreateAddress(); address1.AddressPurpose = AddressPurpose.Residential; address1.AustralianAddress = BaseCDAModel.CreateAustralianAddress(); var address2 = BaseCDAModel.CreateAddress(); address2.AddressPurpose = AddressPurpose.Business; address2.AustralianAddress = BaseCDAModel.CreateAustralianAddress(); var addressList = new List <IAddress> { address1, address2 }; 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; author.Participant.Addresses = addressList; // Document Author > Participant > Entity Identifier person.Identifiers = new List <Identifier> { //BaseCDAModel.CreateIdentifier("AuthorHealthcareProvider", null, null, "1.2.3.4.5.66666", null), BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPII, "8003615833334118"), }; person.Organisation = BaseCDAModel.CreateEmploymentOrganisation(); person.Organisation.Name = "Hay Bill Hospital"; person.Organisation.NameUsage = OrganisationNameUsage.Other; person.Organisation.Identifiers = new List <Identifier> { BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPIO, "8003620833333789"), //BaseCDAModel.CreateIdentifier("SampleAuthority", null, null, "1.2.3.4.5.66666", null) }; person.Organisation.Department = "Some department service provider"; person.Organisation.EmploymentType = BaseCDAModel.CreateCodableText(null, null, null, "Casual", null); person.Organisation.Occupation = BaseCDAModel.CreateRole(Occupation.GeneralMedicalPractitioner); person.Organisation.PositionInOrganisation = BaseCDAModel.CreateCodableText(null, null, null, "Manager", null); if (!mandatoryOnly) { name1.GivenNames = new List <string> { "Good" }; name1.Titles = new List <string> { "Doctor" }; name1.NameUsages = new List <NameUsage> { NameUsage.Legal }; name2.GivenNames = new List <string> { "Davey" }; name2.Titles = new List <string> { "Brother" }; name2.NameUsages = new List <NameUsage> { NameUsage.NewbornName }; // Document Author > Participant > Elec-tronic Communication Detail var coms1 = BaseCDAModel.CreateElectronicCommunicationDetail( "0345754566", ElectronicCommunicationMedium.Telephone, ElectronicCommunicationUsage.WorkPlace); var coms2 = BaseCDAModel.CreateElectronicCommunicationDetail( "*****@*****.**", ElectronicCommunicationMedium.Email, ElectronicCommunicationUsage.WorkPlace); author.Participant.ElectronicCommunicationDetails = new List <ElectronicCommunicationDetail> { coms1, coms2 }; // Prescriber > Participant > Entitlement var entitlement1 = BaseCDAModel.CreateEntitlement(); var code = BaseCDAModel.CreateCodableText("11", CodingSystem.NCTISEntitlementTypeValues, "Medicare Pharmacy Approval Number", null, null); entitlement1.Id = BaseCDAModel.CreateIdentifier("pharmacy", null, "1234567892", "1.2.36.174030967.1.3.2.1", code); entitlement1.Type = EntitlementType.MedicarePharmacyApprovalNumber; entitlement1.ValidityDuration = BaseCDAModel.CreateInterval("1", TimeUnitOfMeasure.Year); person.Entitlements = new List <Entitlement> { entitlement1, entitlement1 }; // Qualifications person.Qualifications = "M.B.B.S., F.R.A.C.S."; } author.Participant.Person = person; }
/// <summary> /// Creates and Hydrates the Participation Author Healthcare Provider /// /// Note: the data used within this method is intended as a guide and should be replaced. /// </summary> /// <returns>A Hydrated IParticipationAuthorHealthcareProvider object</returns> public static void HydrateAuthorHealthcareProvider(IParticipationAuthorHealthcareProvider author, string organisationName, bool mandatoryOnly) { // Document Author > Participant author.Participant = BaseCDAModel.CreateParticipantForAuthorHealthcareProvider(); var person = BaseCDAModel.CreatePersonHealthcareProvider(); author.AuthorParticipationPeriodOrDateTimeAuthored = mandatoryOnly ? BaseCDAModel.CreateParticipationPeriod(new ISO8601DateTime(DateTime.Now, ISO8601DateTime.Precision.Second)) : BaseCDAModel.CreateParticipationPeriod(BaseCDAModel.CreateInterval(new ISO8601DateTime(DateTime.Now, ISO8601DateTime.Precision.Second), new ISO8601DateTime(DateTime.Now, ISO8601DateTime.Precision.Second))); // Document Author > Role = AddressPurpose.Residential author.Role = BaseCDAModel.CreateRole(Occupation.MedicalLaboratoryScientist, CodingSystem.ANZSCORevision1); // Document Author > Participant > Person or Organisation or Device > Person > Person Name (Note: 1..* in ACI) var name = BaseCDAModel.CreatePersonName(); if (!mandatoryOnly) { // Not providing a family name will insert a nullflavor of 'NI' name.FamilyName = "Doctor family name"; } person.PersonNames = new List <IPersonName> { name, name }; // Document Author > Participant > Entity Identifier person.Identifiers = new List <Identifier> { BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPII, "8003615833334118") }; person.Organisation = BaseCDAModel.CreateEmploymentOrganisation(); person.Organisation.Name = organisationName; person.Organisation.Identifiers = new List <Identifier> { BaseCDAModel.CreateHealthIdentifier(HealthIdentifierType.HPIO, "8003620833333789"), }; // Document Author > Participant > Electronic Communication Detail var coms1 = BaseCDAModel.CreateElectronicCommunicationDetail( "0345754566", ElectronicCommunicationMedium.Telephone, ElectronicCommunicationUsage.WorkPlace); var coms2 = BaseCDAModel.CreateElectronicCommunicationDetail( "*****@*****.**", ElectronicCommunicationMedium.Email, ElectronicCommunicationUsage.WorkPlace); author.Participant.ElectronicCommunicationDetails = new List <ElectronicCommunicationDetail> { coms1, coms2 }; if (!mandatoryOnly) { // Document Author > Participant > Address (Note: optional in ACI) var address1 = BaseCDAModel.CreateAddress(); address1.AddressPurpose = AddressPurpose.Business; address1.AustralianAddress = BaseCDAModel.CreateAustralianAddress(); var address2 = BaseCDAModel.CreateAddress(); address2.AddressPurpose = AddressPurpose.Business; address2.AustralianAddress = BaseCDAModel.CreateAustralianAddress(); // Document Author > Participant > Addresses author.Participant.Addresses = new List <IAddress> { address1, address2 }; name.GivenNames = new List <string> { "Fitun" }; name.Titles = new List <string> { "Dr" }; 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"; address2.AustralianAddress.UnstructuredAddressLines = new List <string> { "2 Clinician Street" }; address2.AustralianAddress.SuburbTownLocality = "Nehtaville"; address2.AustralianAddress.State = AustralianState.QLD; address2.AustralianAddress.PostCode = "5555"; person.Organisation.NameUsage = OrganisationNameUsage.Other; person.Organisation.Department = "Some department service provider"; person.Organisation.EmploymentType = BaseCDAModel.CreateCodableText(EmploymentType.Casual); person.Organisation.Occupation = BaseCDAModel.CreateRole(Occupation.GeneralMedicalPractitioner, CodingSystem.ANZSCORevision1); person.Organisation.PositionInOrganisation = BaseCDAModel.CreateCodableText(null, null, null, "Manager", null); person.Organisation.ElectronicCommunicationDetails = new List <ElectronicCommunicationDetail> { coms1, coms2 }; person.Organisation.Addresses = new List <IAddress> { address1, address2 }; // Prescriber > Participant > Entitlement var entitlement = BaseCDAModel.CreateEntitlement(); entitlement.Id = BaseCDAModel.CreateIdentifier("Pharmacy", null, "1234567892", "1.2.36.174030967.1.3.2.1", null); entitlement.Type = EntitlementType.MedicarePrescriberNumber; entitlement.ValidityDuration = BaseCDAModel.CreateInterval(new ISO8601DateTime(DateTime.Now), new ISO8601DateTime(DateTime.Now.AddYears(1))); person.Entitlements = new List <Entitlement> { entitlement, entitlement }; // Qualifications person.Qualifications = "M.B.B.S., F.R.A.C.S."; } author.Participant.Person = person; }