/// <summary> /// Validates the header. /// </summary> /// <param name="pcehrHeader">PCEHR header.</param> /// <exception cref="ArgumentException">Thrown when validation fails.</exception> private static void ValidatePcehrHeader(PCEHRHeader pcehrHeader) { Validation.ValidateArgumentRequired("User", pcehrHeader.User); Validation.ValidateArgumentRequired("User.ID", pcehrHeader.User.ID); Validation.ValidateArgumentRequired("User.userName", pcehrHeader.User.userName); if (pcehrHeader.User.IDType == PCEHRHeaderUserIDType.HPII) { Validation.ValidateStringLength("pcehrHeader.User.ID", pcehrHeader.User.ID, 16, true); } Validation.ValidateArgumentRequired("productType", pcehrHeader.productType); Validation.ValidateArgumentRequired("productType.platform", pcehrHeader.productType.platform); Validation.ValidateArgumentRequired("productType.productName", pcehrHeader.productType.productName); Validation.ValidateArgumentRequired("productType.productVersion", pcehrHeader.productType.productVersion); Validation.ValidateArgumentRequired("productType.vendor", pcehrHeader.productType.vendor); if (pcehrHeader.accessingOrganisation != null) { Validation.ValidateArgumentRequired("accessingOrganisation.organisationID", pcehrHeader.accessingOrganisation.organisationID); Validation.ValidateArgumentRequired("accessingOrganisation.organisationName", pcehrHeader.accessingOrganisation.organisationName); Validation.ValidateStringLength("accessingOrganisation.organisationID", pcehrHeader.accessingOrganisation.organisationID, 16, true); } if (pcehrHeader.ihiNumber != null) { Validation.ValidateStringLength("ihiNumber", pcehrHeader.ihiNumber, 16, true); } }
/// <summary> /// Serializes CommmonPcehrHeader as a PCEHRHeader. /// </summary> /// <returns>Serialized PCEHRHeader.</returns> public XmlDocument Serialize() { var pcehrHeader = new PCEHRHeader(); pcehrHeader.ihiNumber = IhiNumber; pcehrHeader.User = new PCEHRHeaderUser(); pcehrHeader.User.ID = UserId; pcehrHeader.User.IDType = (PCEHRHeaderUserIDType)Enum.Parse(typeof(PCEHRHeaderUserIDType), UserIdType.ToString()); pcehrHeader.User.userName = UserName; pcehrHeader.User.role = UserRole; pcehrHeader.User.useRoleForAudit = UserUseRoleForAudit; pcehrHeader.accessingOrganisation = new PCEHRHeaderAccessingOrganisation(); pcehrHeader.accessingOrganisation.organisationName = OrganisationName; pcehrHeader.accessingOrganisation.organisationID = OrganisationId; pcehrHeader.accessingOrganisation.alternateOrganisationName = AlternateOrganisationName; pcehrHeader.clientSystemType = (PCEHRHeaderClientSystemType)Enum.Parse(typeof(PCEHRHeaderClientSystemType), ClientSystemType.ToString()); pcehrHeader.productType = new PCEHRHeaderProductType(); pcehrHeader.productType.platform = ProductPlatform; pcehrHeader.productType.productName = ProductName; pcehrHeader.productType.productVersion = ProductVersion; pcehrHeader.productType.vendor = ProductVendor; return(pcehrHeader.SerializeToXml()); }
/// <summary> /// Gain access to an individual's PCEHR. /// </summary> /// <param name="pcehrHeader">PCEHR header.</param> /// <returns>Query response.</returns> internal responseStatusType GainPCEHRAccess(PCEHRHeader pcehrHeader, gainPCEHRAccessPCEHRRecord accessPcehrRecord, out gainPCEHRAccessResponseIndividual individual) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); return(pcehrProfileClient.gainPCEHRAccess(timestamp, ref signatureContainer, pcehrHeader, accessPcehrRecord, out individual)); }
/// <summary> /// Check if PCEHR exists for an individual. /// </summary> /// <param name="pcehrHeader">PCEHR header.</param> /// <returns>Query response.</returns> internal doesPCEHRExistResponse DoesPCEHRExist(PCEHRHeader pcehrHeader) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); return(pcehrProfileClient.doesPCEHRExist(timestamp, ref signatureContainer, pcehrHeader, "")); }
/// <summary> /// Upload a document. /// </summary> /// <param name="header">PCEHR header.</param> /// <param name="request">Request.</param> /// <returns>Response.</returns> internal RegistryResponseType UploadDocument(PCEHRHeader header, ProvideAndRegisterDocumentSetRequestType request) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); return(repositoryClient.DocumentRepository_ProvideAndRegisterDocumentSetb(timestamp, ref signatureContainer, header, request)); }
/// <summary> /// Uploads document metadata. /// </summary> /// <param name="pcehrHeader">PCEHR header.</param> /// <param name="submitObjectsRequest">Metadata.</param> /// <returns>Response.</returns> internal RegistryResponseType UploadDocumentMetadata(PCEHRHeader pcehrHeader, SubmitObjectsRequest submitObjectsRequest) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); return(documentRegistryClient.DocumentRegistry_RegisterDocumentSetb(timestamp, ref signatureContainer, pcehrHeader, submitObjectsRequest)); }
/// <summary> /// Gets a document list based on a query. /// </summary> /// <param name="pcehrHeader">PCEHR header.</param> /// <param name="queryRequest">Query request.</param> /// <returns>Query response.</returns> internal AdhocQueryResponse GetDocumentList(PCEHRHeader pcehrHeader, AdhocQueryRequest queryRequest) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); return(documentRegistryClient.DocumentRegistry_RegistryStoredQuery(timestamp, ref signatureContainer, pcehrHeader, queryRequest)); }
/// <summary> /// Retrieve a document. /// </summary> /// <param name="header">PCEHR header.</param> /// <param name="requests">Request.</param> /// <returns>Response.</returns> internal RetrieveDocumentSetResponseType GetDocument(PCEHRHeader header, RetrieveDocumentSetRequestTypeDocumentRequest[] requests) { var timestamp = new timestampType() { created = DateTime.Now }; var signatureContainer = new signatureContainerType(); var result = repositoryClient.DocumentRepository_RetrieveDocumentSet(timestamp, ref signatureContainer, header, requests); return(result); }
/// <summary> /// Converts a PCEHR header into a common PCEHR header that can be validated. /// </summary> /// <typeparam name="T">PCEHR header type.</typeparam> /// <param name="header">PCEHR header.</param> /// <returns>Converted header.</returns> private static PCEHRHeader ConvertPcehrHeader <T>(T header) { Debug.Assert(typeof(T).IsClass); Debug.Assert(typeof(T).Name == "PCEHRHeader"); // Serialize MemoryStream memoryStream = new MemoryStream(); //Updated to use memory safe version //XmlSerializer serializer = new XmlSerializer(typeof(T)); XmlSerializer serializer = CachingXmlSerializerFactory.Create(typeof(T)); serializer.Serialize(memoryStream, header); memoryStream.Position = 0; // Deserialize //Updated to use memory safe version //XmlSerializer deserializer = new XmlSerializer(typeof(PCEHRHeader)); XmlSerializer deserializer = CachingXmlSerializerFactory.Create(typeof(PCEHRHeader)); PCEHRHeader pcehrHeader = (PCEHRHeader)deserializer.Deserialize(memoryStream); return(pcehrHeader); }