Exposes the same templates as the Template API (/v1/templates) as FHIR resources instead of plain JSON: form-style templates as the Questionnaire resource, task/workflow templates as the PlanDefinition resource, and instances of either kind as QuestionnaireResponse. A route only acts on templates of its own family — a PlanDefinition route 400s a form-style template id, and vice versa. Mounted at /fhir/v1/template.
Endpoints
GET /questionnaire/library
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Query:
kind,status,scope - Controller:
TemplateFhirController.listQuestionnaires - Response:
200: FHIRBundleofQuestionnaireresources (the shared library, filtered to questionnaire-style template kinds)
GET /questionnaire/organisation/:organisationId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId - Query:
kind,status,scope - Controller:
TemplateFhirController.listOrganisationQuestionnaires - Response:
200: FHIRBundleofQuestionnaireresources
GET /questionnaire/organisation/:organisationId/users/me
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId - Query:
kind,status,scope - Controller:
TemplateFhirController.listUserQuestionnaires - Response:
200: FHIRBundleofQuestionnaireresources
POST /questionnaire
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Body: FHIR
Questionnaireresource (resourceType: "Questionnaire") - Controller:
TemplateFhirController.createQuestionnaire - Response:
400: keysmessage(resource maps to a non-questionnaire template kind),201: FHIRQuestionnaireresource
GET /questionnaire/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.getQuestionnaire - Response:
404: keysmessage(template exists but is not a questionnaire-style kind),200: FHIRQuestionnaireresource
PATCH /questionnaire/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Body: FHIR
Questionnaireresource - Controller:
TemplateFhirController.updateQuestionnaire - Response:
400: keysmessage,200: FHIRQuestionnaireresource
POST /questionnaire/organisation/:organisationId/:templateId/publish
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.publishQuestionnaire - Response:
404: keysmessage,200: FHIRQuestionnaireresource
DELETE /questionnaire/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.archiveQuestionnaire - Response:
404: keysmessage,200: FHIRQuestionnaireresource
POST /questionnaire/organisation/:organisationId/:templateId/instances
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.createQuestionnaireInstance - Response:
201: FHIRQuestionnaireResponseresource
PATCH /questionnaire/template-instances/organisation/:organisationId/:instanceId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,instanceId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.updateQuestionnaireInstance - Response:
200: FHIRQuestionnaireResponseresource
POST /questionnaire/template-instances/organisation/:organisationId/:instanceId/submit
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,instanceId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.submitQuestionnaireInstance - Response:
200: FHIRQuestionnaireResponseresource (instance is markedCOMPLETED)
GET /plan-definition/library
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Query:
kind,status,scope - Controller:
TemplateFhirController.listPlanDefinitions - Response:
200: FHIRBundleofPlanDefinitionresources (the shared library, filtered to workflow-style template kinds)
GET /plan-definition/organisation/:organisationId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId - Query:
kind,status,scope - Controller:
TemplateFhirController.listOrganisationPlanDefinitions - Response:
200: FHIRBundleofPlanDefinitionresources
GET /plan-definition/organisation/:organisationId/users/me
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId - Query:
kind,status,scope - Controller:
TemplateFhirController.listUserPlanDefinitions - Response:
200: FHIRBundleofPlanDefinitionresources
POST /plan-definition
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Body: FHIR
PlanDefinitionresource (resourceType: "PlanDefinition") - Controller:
TemplateFhirController.createPlanDefinition - Response:
400: keysmessage(resource maps to a non-workflow template kind),201: FHIRPlanDefinitionresource
GET /plan-definition/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.getPlanDefinition - Response:
404: keysmessage(template exists but is not a workflow-style kind),200: FHIRPlanDefinitionresource
PATCH /plan-definition/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Body: FHIR
PlanDefinitionresource - Controller:
TemplateFhirController.updatePlanDefinition - Response:
400: keysmessage,200: FHIRPlanDefinitionresource
POST /plan-definition/organisation/:organisationId/:templateId/publish
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.publishPlanDefinition - Response:
404: keysmessage,200: FHIRPlanDefinitionresource
DELETE /plan-definition/organisation/:organisationId/:templateId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Controller:
TemplateFhirController.archivePlanDefinition - Response:
404: keysmessage,200: FHIRPlanDefinitionresource
POST /plan-definition/organisation/:organisationId/:templateId/instances
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,templateId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.createPlanDefinitionInstance - Response:
201: FHIRQuestionnaireResponseresource
PATCH /plan-definition/template-instances/organisation/:organisationId/:instanceId
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,instanceId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.updatePlanDefinitionInstance - Response:
200: FHIRQuestionnaireResponseresource
POST /plan-definition/template-instances/organisation/:organisationId/:instanceId/submit
- Auth:
requireWebAuth - RBAC:
withOrgPermissions, requirePermission - Params:
organisationId,instanceId - Body: FHIR
QuestionnaireResponseresource - Controller:
TemplateFhirController.submitPlanDefinitionInstance - Response:
200: FHIRQuestionnaireResponseresource (instance is markedCOMPLETED)