Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit be9eec5

Browse files
committedDec 19, 2024
Add Aidbox Forms renderer
1 parent 28dd61a commit be9eec5

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<template>
2+
<div>
3+
<template v-if="questionnaire">
4+
<aidbox-form-renderer
5+
style="width: 100%; height: calc(100vh - 200px); border: 1px solid #efefef; border-radius: 4px; display: block"
6+
:questionnaire="JSON.stringify(questionnaire)"
7+
:questionnaire-response="JSON.stringify(questionnaireResponse)"
8+
@change="handleChange"
9+
/>
10+
</template>
11+
<template v-else>
12+
<p>No questionnaire provided</p>
13+
</template>
14+
</div>
15+
</template>
16+
17+
<script lang="ts">
18+
import Vue, {PropType} from "vue";
19+
import {Questionnaire, QuestionnaireResponse} from "fhir/r4";
20+
21+
22+
function loadScript(src) {
23+
return new Promise((resolve, reject) => {
24+
const tag = document.createElement('script');
25+
tag.setAttribute('src', src);
26+
tag.setAttribute('async', false);
27+
tag.setAttribute('defer', true);
28+
tag.addEventListener('error', reject);
29+
tag.addEventListener('load', resolve);
30+
document.body.appendChild(tag);
31+
});
32+
}
33+
34+
let loaded = null;
35+
36+
export default Vue.extend({
37+
mounted() {
38+
if (!loaded) {
39+
loaded = loadScript('https://form-builder.aidbox.app/static/aidbox-forms-renderer-webcomponent.js');
40+
}
41+
},
42+
methods: {
43+
handleChange(event) {
44+
const response = event.detail;
45+
if (response.status !== 'in-progress') {
46+
this.$emit("response", response);
47+
}
48+
}
49+
},
50+
props: {
51+
questionnaire: Object as PropType<Questionnaire>,
52+
questionnaireResponse: Object as PropType<QuestionnaireResponse>,
53+
},
54+
});
55+
</script>

‎nuxt.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ export default {
33
target: 'static',
44
ssr: false,
55

6+
vue: {
7+
config: {
8+
ignoredElements: ['aidbox-form-renderer']
9+
}
10+
},
11+
612
// Global page headers: https://go.nuxtjs.dev/config-head
713
head: {
814
title: 'fhirpath-lab',

‎pages/Questionnaire/tester.vue

+16
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,15 @@
118118
@highlight-path="highlightPath" />
119119
</template>
120120

121+
<template v-slot:Aidbox_Forms>
122+
<EditorAidboxFormsSection
123+
v-if="raw"
124+
v-bind:questionnaire="raw"
125+
v-bind:questionnaireResponse="questionnaireResponse"
126+
@response="processUpdatedQuestionnaireResponse"
127+
/>
128+
</template>
129+
121130
<template v-slot:CSIRO_Renderer>
122131
<EditorRendererSection ref="csiroFormsRenderer" v-if="raw" v-bind:questionnaire="raw" :context="contextData"
123132
:dataServer="dataServerBaseUrl"
@@ -580,6 +589,13 @@ export default Vue.extend({
580589
show: true,
581590
enabled: true,
582591
},
592+
{
593+
iconName: "mdi-bug-play-outline",
594+
tabName: "Aidbox Forms",
595+
title: "Aidbox Forms",
596+
show: true,
597+
enabled: true,
598+
},
583599
{
584600
iconName: "mdi-clipboard-text-outline",
585601
tabName: "Response",

0 commit comments

Comments
 (0)
Please sign in to comment.