public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client UploadDocumentMetadataClient uploadDocumentMetadataClient = new UploadDocumentMetadataClient( new Uri("https://UploadDocumentEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; byte[] packageBytes = File.ReadAllBytes("CdaPackage.zip"); // Create a package // Create a request from an existing package // Format codes and format code names are not fixed, and it is recommended for them to be configurable. SubmitObjectsRequest request = uploadDocumentMetadataClient.CreateRequestForNewDocument( packageBytes, "unique repository ID", "formatCode", "formatCodeName", HealthcareFacilityTypeCodes.GeneralPractice, PracticeSettingTypes.GeneralPracticeMedicalClinicService ); try { // Invoke the service RegistryResponseType registryResponse = uploadDocumentMetadataClient.UploadDocumentMetadata(header, request); // Get the soap request and response string soapRequest = uploadDocumentMetadataClient.SoapMessages.SoapRequest; string soapResponse = uploadDocumentMetadataClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/removeDocument" // production endpoint is "https://services.ehealth.gov.au:443/removeDocument" RemoveDocumentClient removeDocumentClient = new RemoveDocumentClient( new Uri("https://RemoveDocumentEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; try { var request = new removeDocument() { // this should be the value of the ExternalIdentifier "XDSDocumentEntry.uniqueId" in the GetDocumentList response documentID = "document ID", // reasonForRemoval should be one of: // removeDocumentReasonForRemoval.IncorrectIdentity // removeDocumentReasonForRemoval.ElectToRemove // removeDocumentReasonForRemoval.Withdrawn reasonForRemoval = removeDocumentReasonForRemoval.Withdrawn }; // Invoke the service var responseStatus = removeDocumentClient.RemoveDocument(header, request); // Get the soap request and response string soapRequest = removeDocumentClient.SoapMessages.SoapRequest; string soapResponse = removeDocumentClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
public void Sample() { // NASH certificate should be used here, NOT the HI/Medicare certificates // The NASH certificate can be found in the NASH PKI Test Kit // To receive the Test Kit fill the application to request a National Authentication Service // for Health(NASH) Public Key Infrastructure(PKI) test certificate kit form // https://myhealthrecorddeveloper.digitalhealth.gov.au/resources/prepare/my-health-record-system-pre-requisites#step-2 // Insure the certificate is installed in Current User -> Personal -> Certificates // (run MMC and add the certificates add - on to view) // The "Issue To" field of a NASH certificate looks like general(or something different)."HPI-O".electronichealth.net.au // "Serial Number" can be found in the details once the certificate is installed. // Type the Serial number, don't copy and paste it, remove the spaces and use uppercase. // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "06fba6", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Instantiate the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/doesPCEHRExist" // Production endpoint is "https://services.ehealth.gov.au/doesPCEHRExist" DoesPCEHRExistClient doesPcehrExistClient = new DoesPCEHRExistClient(new Uri("https://b2b.ehealthvendortest.health.gov.au/doesPCEHRExist"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; try { // Invoke the service doesPCEHRExistResponse response = doesPcehrExistClient.DoesPCEHRExist(header); // Get the soap request and response string soapRequest = doesPcehrExistClient.SoapMessages.SoapRequest; string soapResponse = doesPcehrExistClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Interface requires this to be blank header.IhiNumber = null; // Create the client GetTemplateClient templateClient = new GetTemplateClient(new Uri("https://GetTemplateEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Specify the objects that will hold the output getTemplateResponseTemplate responseTemplate; DateTime cacheExpiry = new DateTime(); try { var request = new getTemplate() { serviceRequestorOption = ServiceRequestorOption.FullPackage.ToString(), templateID = "document unique ID" }; // Invoke the service var responseStatusType = templateClient.GetTemplate( header, request); // Get the soap request and response string soapRequest = templateClient.SoapMessages.SoapRequest; string soapResponse = templateClient.SoapMessages.SoapResponse; } catch (FaultException e) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Instantiate the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getAuditView" // production endpoint is "https://services.ehealth.gov.au/getAuditView" GetAuditViewClient getAuditViewClient = new GetAuditViewClient(new Uri("https://GetAuditViewEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; try { // Invoke the service getAuditViewResponseEventTrail[] eventTrails; // Set up the dates var dates = new getAuditView() { dateFrom = DateTime.Parse("from date/time"), dateTo = DateTime.Parse("to date/time") }; var responseStatus = getAuditViewClient.GetAuditView(header, dates); // Get the soap request and response string soapRequest = getAuditViewClient.SoapMessages.SoapRequest; string soapResponse = getAuditViewClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header (See PcehrHeaderHelper.cs) CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getDocument" // production endpoint is "https://services.ehealth.gov.au/getDocument" GetDocumentClient getDocumentClient = new GetDocumentClient(new Uri("https://GetDocumentEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Create a request List <RetrieveDocumentSetRequestTypeDocumentRequest> request = new List <RetrieveDocumentSetRequestTypeDocumentRequest>(); // Set the details of the document to retrieve request.Add(new RetrieveDocumentSetRequestTypeDocumentRequest() { // This should be the value of the ExternalIdentifier "XDSDocumentEntry.uniqueId" in the GetDocumentList response DocumentUniqueId = "document unique id", // This should be the value of "repositoryUniqueId" in the GetDocumentList response RepositoryUniqueId = "repository unique id" }); try { // Invoke the service RetrieveDocumentSetResponseType response = getDocumentClient.GetDocument(header, request.ToArray()); } catch (FaultException e) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Interface requires this to be blank header.IhiNumber = null; // Create the client SearchTemplateClient searchTemplateClient = new SearchTemplateClient(new Uri("https://SearchTemplateEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Specify the objects that will hold the output searchTemplateResponseTemplate[] responseTemplates; try { // Invoke the service searchTemplateResponse responseStatus = searchTemplateClient.SearchTemplate(header, new searchTemplate() { templateID = "template ID", templateMetadata = null }); // Get the soap request and response string soapRequest = searchTemplateClient.SoapMessages.SoapRequest; string soapResponse = searchTemplateClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
public void Sample() { // NASH certificate should be used here, NOT the HI certificate // the NASH certificate can be found in the NASH PKI Test Kit // certificate needs to be installed in the right place // the "Issue To" field of a NASH certificate looks like general(or something different)."HPI-O".electronichealth.net.au // "Serial Number" can be found in the details once the certificate is installed. e.g. in Windows, certificates can be found in Certs.msc // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getRepresentativeList" // production endpoint is "https://services.ehealth.gov.au/getRepresentativeList" GetIndividualDetailsViewClient getIndividualDetailsClient = new GetIndividualDetailsViewClient( new Uri("https://GetIndividualDetailsViewClientEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; object request = (string)""; try { // Invoke the service getIndividualDetailsViewResponse response = getIndividualDetailsClient.GetIndividualDetailsView(header, request); } catch (FaultException e) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Instantiate the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getChangeHistoryView" // production endpoint is "https://services.ehealth.gov.au/getChangeHistoryView" GetChangeHistoryViewClient changeHistoryViewClient = new GetChangeHistoryViewClient(new Uri("https://GetChangeHistoryViewEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; try { // Invoke the service // if you run GetDocumentList first, you will get a list of document ids in the response // the "value" attribute in the <ns3:ExternalIdentifier> element provides the unique document id var changeHistoryView = changeHistoryViewClient.GetChangeHistoryView( header, new getChangeHistoryView() { documentID = "document unique id" } ); } catch (FaultException e) { // Handle any errors } }
public RetrieveDocumentSetResponseType GetDocument(string documentId, string repositoryId) { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Create the client GetDocumentClient getDocumentClient = new GetDocumentClient(new Uri("https://GetDocumentEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Create a request List <RetrieveDocumentSetRequestTypeDocumentRequest> request = new List <RetrieveDocumentSetRequestTypeDocumentRequest>(); // Set the details of the document to retrieve request.Add(new RetrieveDocumentSetRequestTypeDocumentRequest() { DocumentUniqueId = documentId, RepositoryUniqueId = repositoryId }); try { // Invoke the service RetrieveDocumentSetResponseType response = getDocumentClient.GetDocument(header, request.ToArray()); return(response); } catch (FaultException e) { // Handle any errors return(null); } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client // SVT endpoint is https://b2b.ehealthvendortest.health.gov.au/uploadDocument // production endpoint is https://services.ehealth.gov.au/uploadDocument UploadDocumentClient uploadDocumentClient = new UploadDocumentClient( new Uri("https://UploadDocumentEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; byte[] packageBytes = File.ReadAllBytes("CdaPackage.zip"); // Create a package // Create a request to register a new document on the PCEHR. // Create a request to register a new document on the PCEHR. // Format codes and format code names are not fixed, and it is recommended for them to be configurable. // formatCode is the Template Package ID for each clinical document, formatCodeName is the Document type // please find specific details for each clinical document type on https://digitalhealth.gov.au/implementation-resources/clinical-documents // formatCodeName can be read in Table 3 of the Document Exchange Service Technical Service Specification // For example (formateCodeName - formatCode): // "eHealth Dispense Record" - 1.2.36.1.2001.1006.1.171.5 // "Pathology Report" - 1.2.36.1.2001.1006.1.220.4 // "Diagnostic Imaging Report" - 1.2.36.1.2001.1006.1.222.4 ProvideAndRegisterDocumentSetRequestType request = uploadDocumentClient.CreateRequestForNewDocument( packageBytes, "formatCode", "formatCodeName", HealthcareFacilityTypeCodes.GeneralPractice, // Update to relevant code PracticeSettingTypes.GeneralPracticeMedicalClinicService // Update to relevant code ); // To supercede / amend an existing document, the same UploadDocument call is used. However, the request is // prepared using the CreateRequestForReplacement function. // Note that the new document must have a different UUID/GUID to the one it is replacing. // the uuidOfDocumentToReplace must be converted to OID format and include the repository OID. // (i.e. a document being replaced in the My Health Record repository is) // ProvideAndRegisterDocumentSetRequestType request = uploadDocumentClient.CreateRequestForReplacement( // packageBytes, // "formatCode", // "formatCodeName", // HealthcareFacilityTypeCodes.GeneralPractice, // PracticeSettingTypes.GeneralPracticeMedicalClinicService, // "uuidOfDocumentToReplace" // ); // When uploading to the NPDR where the repository unique ID, document size and hash may need to be included // in the metadata, use the utility function below. // uploadDocumentClient.AddRepositoryIdAndCalculateHashAndSize(request, "REPOSITORY_UNIQUE_ID"); try { // Invoke the service RegistryResponseType registryResponse = uploadDocumentClient.UploadDocument(header, request); // Get the soap request and response string soapRequest = uploadDocumentClient.SoapMessages.SoapRequest; string soapResponse = uploadDocumentClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
// Sample code for these CDA response getViews // Nehta.VendorLibrary.PCEHR.PrescriptionAndDispenseView.prescriptionAndDispenseView // Nehta.VendorLibrary.PCEHR.MedicareOverview.medicareOverview // Nehta.VendorLibrary.PCEHR.HealthCheckScheduleView.healthCheckScheduleView // Nehta.VendorLibrary.PCEHR.ObservationView.observationView public void SampleForCdaDocumentResponses() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Instantiate the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getView" // production endpoint is "https://services.ehealth.gov.au/getView" GetViewClient getViewClient = new GetViewClient(new Uri("https://GetViewEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; try { getView request = new getView() { // For PrescriptionAndDispenseView view = new prescriptionAndDispenseView() { fromDate = DateTime.Now.AddDays(-10), toDate = DateTime.Now, // versionNumber can be found in the "PCEHR View Service - Technical Service Specification" via // https://digitalhealth.gov.au/implementation-resources/national-infrastructure/EP-2109-2015 // If the specification doesn't specify the version number then it is 1.0 versionNumber = "Version number here" } // For MedicareOverview //view = new medicareOverview() //{ // fromDate = DateTime.Now.AddDays(-10), // toDate = DateTime.Now, // versionNumber can be found in the "PCEHR View Service - Technical Service Specification" via // https://digitalhealth.gov.au/implementation-resources/national-infrastructure/EP-2109-2015 // If the specification doesn't specify the version number then it is 1.0 // versionNumber = "Version number here" //} // For HealthCheckScheduleView //view = new healthCheckScheduleView() //{ // jurisdiction = healthCheckScheduleViewJurisdiction.NSW, // versionNumber can be found in the "PCEHR View Service - Technical Service Specification" via // https://digitalhealth.gov.au/implementation-resources/national-infrastructure/EP-2109-2015 // If the specification doesn't specify the version number then it is 1.0 // versionNumber = "Version number here" //} // For ObservationView //view = new observationView() //{ // fromDate = DateTime.Now.AddDays(-10), // toDate = DateTime.Now, // versionNumber can be found in the "PCEHR View Service - Technical Service Specification" via // https://digitalhealth.gov.au/implementation-resources/national-infrastructure/EP-2109-2015 // If the specification doesn't specify the version number then it is 1.0 // versionNumber = "Version number here" // documentSource = observationViewDocumentSource.ALL, // observationType = observationViewObservationType.WEIGHT, // referenceData = observationViewReferenceData.CDC //} }; var responseStatus = getViewClient.GetView(header, request); // Treat response like a getDocument - unzip package if (responseStatus.view != null) { var zipfile = responseStatus.view.data; // and Unzip } // Get the soap request and response string soapRequest = getViewClient.SoapMessages.SoapRequest; string soapResponse = getViewClient.SoapMessages.SoapResponse; } catch (FaultException fex) { // Handle any errors } }
private bool GetDocumentId(string IHI, out string documentId, out string repositoryId) { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Instantiate the client GetDocumentListClient documentListClient = new GetDocumentListClient(new Uri("https://GetDocumentListEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Create a query AdhocQueryBuilder adhocQueryBuilder = new AdhocQueryBuilder(IHI, new[] { DocumentStatus.Approved }); // Reduce documents returned to just SHS from yesterday onwards (Medicines View will always be returned in this query) // as cannot filter on Medicines View as a document adhocQueryBuilder.ClassCode = new List <ClassCodes>(); adhocQueryBuilder.ClassCode.Add(ClassCodes.SharedHealthSummary); adhocQueryBuilder.ServiceStopTimeFrom = new ISO8601DateTime(Convert.ToDateTime(DateTime.Now).AddDays(-1)); // Create the request using the query AdhocQueryRequest queryRequest = adhocQueryBuilder.BuildRequest(); // Initialise repositoryId = ""; documentId = ""; try { // Invoke the service AdhocQueryResponse queryResponse = documentListClient.GetDocumentList(header, queryRequest); if (queryResponse != null && queryResponse.status == "urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success" && queryResponse.RegistryObjectList != null) { const string XDS_DOCUMENT_ENTRY_CLASS_CODE = "urn:uuid:41a5887f-8865-4c09-adf7-e362475b143a"; const string XDS_DOCUMENT_ENTRY_UNIQUE_ID = "urn:uuid:2e82c1f6-a085-4c72-9da3-8640a32e42ab"; const string NCTIS_CLASS_CODE_MEDS_VIEW = "100.32002"; //Loop through responses foreach (var entry in queryResponse.RegistryObjectList.ExtrinsicObject) { var classification = entry.Classification.FirstOrDefault(o => o.classificationScheme == XDS_DOCUMENT_ENTRY_CLASS_CODE); if (classification != null && classification.nodeRepresentation == NCTIS_CLASS_CODE_MEDS_VIEW) { // Get Values var repid = entry.Slot.FirstOrDefault(o => o.name == "repositoryUniqueId"); var docId = entry.ExternalIdentifier.FirstOrDefault(o => o.identificationScheme == XDS_DOCUMENT_ENTRY_UNIQUE_ID); // Set Values repositoryId = (repid != null ? repid.ValueList.Value[0] : ""); documentId = (docId != null ? docId.value : ""); break; } } } return(true); } catch (FaultException e) { // Handle any errors return(false); } }
public void Sample() { // NASH certificate should be used here, NOT the HI certificate the NASH certificate can be found in the NASH PKI Test Kit // certificate needs to be installed in the right place // The "Issue To" field of a NASH certificate looks like general (or something different)."HPI-O".electronichealth.net.au // "Serial Number" can be found in the details once the certificate is installed.e.g. in Windows, certificates can be found in Certs.msc // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Instantiate the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/getDocumentList" // production endpoint is "https://services.ehealth.gov.au/getDocumentList" GetDocumentListClient documentListClient = new GetDocumentListClient(new Uri("https://GetDocumentListEndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Create a query AdhocQueryBuilder adhocQueryBuilder = new AdhocQueryBuilder("patient IHI", new[] { DocumentStatus.Approved }); // To further filter documents, build on the adhocQueryBuilder helper functions // For example, filtering on document type // adhocQueryBuilder.ClassCode = new List<ClassCodes>() {ClassCodes.DischargeSummary}; // See Table 3 XDSDocumentEntry Document Type and Class Code value set from // the Document Exchange Service Technical Service Specification // Create the request using the query AdhocQueryRequest queryRequest = adhocQueryBuilder.BuildRequest(); try { // Invoke the service AdhocQueryResponse queryResponse = documentListClient.GetDocumentList(header, queryRequest); // Process data into a more simple model XdsRecord[] data = XdsMetadataHelper.ProcessXdsMetadata(queryResponse.RegistryObjectList.ExtrinsicObject); // For displaying the data in a list foreach (var row in data) { // Convert dates from UTC to local time //row.creationTimeUTC.ToLocalTime(); //row.serviceStopTimeUTC.ToLocalTime(); // Document name //row.classCodeDisplayName // Organisation //row.authorInstitution.institutionName // Organisation Type //row.healthcareFacilityTypeCodeDisplayName // Identifiers to retrieve the document //row.repositoryUniqueId //row.documentId } // Get the soap request and response string soapRequest = documentListClient.SoapMessages.SoapRequest; string soapResponse = documentListClient.SoapMessages.SoapResponse; } catch (FaultException e) { // Handle any errors } }
public void Sample() { // Obtain the certificate for use with TLS and signing X509Certificate2 cert = X509CertificateUtil.GetCertificate( "Serial Number", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true ); // Create PCEHR header CommonPcehrHeader header = PcehrHeaderHelper.CreateHeader(); // Override this value to the current patient's IHI. header.IhiNumber = "IHI"; // Create the client // SVT endpoint is "https://b2b.ehealthvendortest.health.gov.au/registerPCEHR" // production endpoint is "https://services.ehealth.gov.au/registerPCEHR" RegisterPCEHRClient registerClient = new RegisterPCEHRClient( new Uri("https://RegisterPCEHREndpoint"), cert, cert); // Add server certificate validation callback ServicePointManager.ServerCertificateValidationCallback += ValidateServiceCertificate; // Create a request registerPCEHR request = new registerPCEHR(); // Set required assertion values request.assertions = new registerPCEHRAssertions() { acceptedTermsAndConditions = true, documentConsent = new registerPCEHRAssertionsDocument[] { new registerPCEHRAssertionsDocument() { // status is either ConsentGiven or ConsentNotGiven status = registerPCEHRAssertionsDocumentStatus.ConsentGiven, // Types of document include: // ACIR (Australian Childhood Immunisation Register) // AODR (Australian Organ Donor Register) // MBS (Medicare Benefits Report) // PBS (Pharmaceutical Benefits Report) // PBSPastAssimilation, - last 2 years worth // MBSPastAssimilation, - last 2 years worth type = registerPCEHRAssertionsDocumentType.AODR }, // For multiple document types new registerPCEHRAssertionsDocument() { status = registerPCEHRAssertionsDocumentStatus.ConsentNotGiven, type = registerPCEHRAssertionsDocumentType.ACIR } }, identity = new registerPCEHRAssertionsIdentity() { evidenceOfIdentity = new registerPCEHRAssertionsIdentityEvidenceOfIdentity() { // type can be one of IdentityVerificationMethod1 to IdentityVerificationMethod10 // the details of each method can be found in Part A of the My Health Record Identification Framework (link below) // https://myhealthrecord.gov.au/internet/mhr/publishing.nsf/Content/healthcare-providers/$file/My-Health-Record-Assisted-Registration-Identification-Framework.pdf type = registerPCEHRAssertionsIdentityEvidenceOfIdentityType.IdentityVerificationMethod5 }, // indigenousStatus can be one of: Item1, Item2, Item3, Item4 or Item9 the meaning of each of these // items can be found in the Value domain attributes section of http://meteor.aihw.gov.au/content/index.phtml/itemId/291036 indigenousStatus = registerPCEHRAssertionsIdentityIndigenousStatus.Item3, // the consent form can be downloaded from: // https://myhealthrecord.gov.au/internet/mhr/publishing.nsf/Content/healthcare-providers/$file/My-Health-Record-Assisted-Registration-Form.pdf for adult // https://myhealthrecord.gov.au/internet/mhr/publishing.nsf/Content/healthcare-providers/$file/My-Health-Record-Assisted-Registration-Form-Child.pdf for child signedConsentForm = File.ReadAllBytes("signedConsentForm.pdf") }, ivcCorrespondence = new registerPCEHRAssertionsIvcCorrespondence() { channel = registerPCEHRAssertionsIvcCorrespondenceChannel.email, contactDetails = new contactDetailsType() { emailAddress = "*****@*****.**", mobilePhoneNumber = "patient phone number" } }, representativeDeclaration = false, representativeDeclarationSpecified = true }; // Populate a new individual request.individual = new registerPCEHRIndividual() { demographics = new registerPCEHRIndividualDemographics() { name = new nameTypeSupp() { givenName = new string[] { "First Name" }, familyName = "Family Name", }, sex = sex.M, dateOfBirth = DateTime.Parse("1 Jan 1978") } }; try { // Invoke the service registerPCEHRResponse response = registerClient.RegisterPCEHR(header, request); } catch (FaultException e) { // Handle any errors } }