Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 3
0
        /// <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));
        }
Ejemplo n.º 4
0
        /// <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));
        }
Ejemplo n.º 6
0
        /// <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));
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 9
0
        /// <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);
        }