Instance: HpiCapabilityStatement InstanceOf: CapabilityStatement Title: "CapabilityStatement" Description: "Represents API exposed by HPI" Usage: #definition //* jurisdiction.coding = urn:iso:std:iso:3166#NZ //* text.status = #additional //* text.div = "
HPI capabilities
" * name = "HPI_CapabilityStatement" * title = "Capability Statement describing HPI FHIR APIs" * description = """ This is the computable resource that describes the RESTful endpoint """ * date = "2020-04-01" * status = #draft * kind = #instance * fhirVersion = #4.0.1 * format = #json * implementation.description = "The HPI endpoint" * implementation.url = "https://api.hip.digital.health.nz/fhir/hpi/v1/" * rest.mode = #server // ============== The Practitioner endpoint /* #region Practitioner */ * rest.resource.type = #Practitioner * rest.resource.supportedProfile = "http://hl7.org.nz/fhir/StructureDefinition/hpi-practitioner" * rest.resource.documentation = """ Practitioner query """ //read by id * rest.resource.profile = "http://hl7.org.nz/fhir/StructureDefinition/HPIPractitioner" * rest.resource.interaction.code = #read * rest.resource.interaction.documentation = "GET, [base]/Practitioner[cpn], Retrieves a Practitioner resource by Id, system/Practitioner.r" //search by various parameters * rest.resource.interaction[1].code = #search-type * rest.resource.interaction[1].documentation = "GET,[base]/Practitioner, Queries against the Practitioner using name and other search parameters. Will return a Bundle (even if there are no matching resources),system/Practitioner.s " * rest.resource.interaction[2].code = #create * rest.resource.interaction[2].documentation = "POST',[base]/Practitioner, Creates a new Practitioner record , system/Practitioner.c" /* * rest.resource.interaction[3].code = #update * rest.resource.interaction[3].documentation = "" */ //identifier * rest.resource.searchParam[0].name = "identifier" * rest.resource.searchParam[0].type = #token * rest.resource.searchParam[0].documentation = "For searching a Practitioner resource using their council/board registration number" //Search by name. todo - may need add docs about dependencies - eg dob as well * rest.resource.searchParam[1].name = "name" * rest.resource.searchParam[1].type = #string * rest.resource.searchParam[1].documentation = "Should contain the person’s full name, include all given names and family name." //gender * rest.resource.searchParam[2].name = "gender" * rest.resource.searchParam[2].type = #token * rest.resource.searchParam[2].documentation = "Use with name and birthdate. Search by gender alone is not allowed." //birthdate * rest.resource.searchParam[3].name = "birthdate" * rest.resource.searchParam[3].type = #date //temp todo - need to figure out url * rest.resource.searchParam[3].definition = "http://hl7.org.nz/fhir/hpi/SearchParameter/HpiPractitionerBirthdate" * rest.resource.searchParam[3].documentation = "Use with name and gender. Search by birthdate alone is not allowed." /* //ra-identifier * rest.resource.searchParam[4].name = "ra-identifier" * rest.resource.searchParam[4].type = #token //temp todo * rest.resource.searchParam[4].definition = "http://hl7.org.nz/fhir/hpi/SearchParameter/HpiPractitionerRaIdentifier" * rest.resource.searchParam[4].documentation = "This is a custom search. It queries on the identifier supplied by the Registration Authority (Practitioner.qualification.identifier)" */ /* #endregion */ * rest.resource.operation[0].name = "update-core" * rest.resource.operation[0].definition = "https://hpi-ig.hip.digital.health.nz/OperationDefinition/practitioner-update-core" * rest.resource.operation[0].documentation = "POST, [base]/Practitioner[cpn],An operation that updates a health providers demographic details, system/Practitioner.u" // ============== The PractitionerRole endpoint ============= * rest.resource[1].type = #PractitionerRole * rest.resource[1].supportedProfile = "http://hl7.org.nz/fhir/StructureDefinition/hpi-practitioner-role" * rest.resource[1].documentation = """ PractitionerRole query """ //read by id * rest.resource[1].interaction.code = #read * rest.resource[1].interaction.documentation = "GET, [base]/PractitionerRole[id], Used to retrieve a PractitionerRole resource by Id, system/PractitionerRole.r" //search by various parameters * rest.resource[1].interaction[1].code = #search-type * rest.resource[1].interaction[1].documentation = "GET, [base]/PractitionerRole, Queries against PractitionerRole using hpi-person-id and other parameters. Will return a Bundle (even if there are no matching resources), system/PractitionerRole.s" * rest.resource[1].interaction[2].code = #create * rest.resource[1].interaction[2].documentation = "POST, [base]/PractitionerRole, Create a new PractitionerRole, system/PractitionerRole.c" * rest.resource[1].interaction[3].code = #update * rest.resource[1].interaction[3].documentation = "PUT, [base]/PractitionerRole[id], Update contact details and end date on an existing PractitionerRole record, system/PractitionerRole.u" * rest.resource[1].searchParam[0].name = "practitioner" * rest.resource[1].searchParam[0].type = #reference //* rest.resource[1].searchParam[0].definition = "http://hl7.org/fhir/SearchParameter/Practitioner-gender" * rest.resource[1].searchParam[0].documentation = "Given an hpi-person-id, returns the PractitionerRole records associated with that id" * rest.resource[1].searchParam[1].name = "organization" * rest.resource[1].searchParam[1].type = #reference //* rest.resource[1].searchParam[1].definition = "http://hl7.org/fhir/SearchParameter/Practitioner-gender" * rest.resource[1].searchParam[1].documentation = "Not yet enabled. Given an hpi-organization-id, returns the PractitionerRole records associated with that id" * rest.resource[1].searchParam[2].name = "location" * rest.resource[1].searchParam[2].type = #token //* rest.resource[1].searchParam[2].definition = "http://hl7.org/fhir/SearchParameter/Practitioner-gender" * rest.resource[1].searchParam[2].documentation = "Given an hpi-facility-id, returns the PractitionerRole records associated with that id" * rest.resource[1].searchParam[3].name = "role" * rest.resource[1].searchParam[3].type = #token * rest.resource[1].searchParam[3].documentation = "Returns PractitionerRole records based on role code" * rest.resource[1].searchParam[4].name = "active" * rest.resource[1].searchParam[4].type = #token * rest.resource[1].searchParam[4].documentation = "To enable exclusion of inactive PractitionerRole records" * rest.resource[1].searchInclude[0] = "practitioner" * rest.resource[1].searchInclude[1] = "organization" * rest.resource[1].searchInclude[2] = "location" // ============== The Organization endpoint * rest.resource[2].type = #Organization * rest.resource[2].supportedProfile = "http://hl7.org.nz/fhir/StructureDefinition/hpi-organization" * rest.resource[2].documentation = """ Organization query """ //read by id * rest.resource[2].interaction[0].code = #read * rest.resource[2].interaction[0].documentation = "GET, [base]/Organization/[hpi-org-id], Used to retrieve an Organization resource by Id, system/Organization.r" //search by various parameters * rest.resource[2].interaction[1].code = #search-type * rest.resource[2].interaction[1].documentation = "GET, [base]/Organization, Queries against the Organization using name or other parameters. Will return a Bundle (even if there are no matching resources), system/Organization.s" * rest.resource[2].searchParam[0].name = "active" * rest.resource[2].searchParam[0].type = #token * rest.resource[2].searchParam[0].documentation = "To enable exclusion of inactive organizations" * rest.resource[2].searchParam[1].name = "name" * rest.resource[2].searchParam[1].type = #string * rest.resource[2].searchParam[1].documentation = "For searching using the organisation’s name or an alias name" * rest.resource[2].searchParam[2].name = "identifier" * rest.resource[2].searchParam[2].type = #token * rest.resource[2].searchParam[2].documentation = "For searching using an organisation’s New Zealand Business Number (NZBN) or their legacy NZHIS agency code." * rest.resource[2].searchParam[3].name = "type" * rest.resource[2].searchParam[3].type = #token * rest.resource[2].searchParam[3].documentation = "For searching using an organisation's type E.g. DHB, RA, Educational institution" * rest.resource[2].searchParam[4].name = "partOf" * rest.resource[2].searchParam[4].type = #reference * rest.resource[2].searchParam[4].documentation = """ For retrieving organizations that are 'part of' another. """ //================== Location ================= * rest.resource[3].type = #Location * rest.resource[3].supportedProfile = "http://hl7.org.nz/fhir/StructureDefinition/hpi-location" * rest.resource[3].documentation = """ Location query """ //read by id * rest.resource[3].interaction[0].code = #read * rest.resource[3].interaction[0].documentation = "GET, [base]/Location/[hpi-facid], Used to retrieve an Location resource by Id, system/Location.r" //search by various parameters * rest.resource[3].interaction[1].code = #search-type * rest.resource[3].interaction[1].documentation = "GET, [base]/Location, Queries against the Location using name or other parameters. Will return a Bundle (even if there are no matching resources), system/Location.s" //todo - add read interaction * rest.resource[3].searchParam[0].name = "identifier" * rest.resource[3].searchParam[0].type = #token * rest.resource[3].searchParam[0].documentation = "For searching using an organization’s legacy NZHIS facility code." * rest.resource[3].searchParam[1].name = "name" * rest.resource[3].searchParam[1].type = #string * rest.resource[3].searchParam[1].documentation = "For searching using the Locations name or alias name" * rest.resource[3].searchParam[2].name = "type" * rest.resource[3].searchParam[2].type = #token * rest.resource[3].searchParam[2].documentation = "Retrieve Locations of the given type" * rest.resource[3].searchParam[3].name = "address" * rest.resource[3].searchParam[3].type = #string * rest.resource[3].searchParam[3].documentation = "Retrieve the Locations by address" * rest.resource[3].searchParam[4].name = "organization" * rest.resource[3].searchParam[4].type = #reference * rest.resource[3].searchParam[4].documentation = "Retrieve Locations with the given ManagingOrganization" * rest.resource[3].searchParam[5].name = "dhb" * rest.resource[3].searchParam[5].type = #token //* rest.resource[3].searchParam[5].definition = "http://hl7.fhir.org/fhir/SearchParameter/dhb" * rest.resource[3].searchParam[5].documentation = "Searching for Locations that are in a DHBs catchment area." * rest.resource[3].searchParam[6].name = "status" * rest.resource[3].searchParam[6].type = #token * rest.resource[3].searchParam[6].documentation = "Not yet enabled. To enable exclusion of inactive locations" * rest.resource[3].searchParam[7].name = "messaging-address" * rest.resource[3].searchParam[7].type = #string * rest.resource[3].searchParam[7].documentation = "Search by EDI address"