Is it possible to display data from a previously submitted form as a label in the new task form being filled out as a follow up for example if i feel out a check box field in form A
and submit it, and i want to display some of the results in that submitted form as a label in the next follow up task form B
Yes this should be possible. You can read some more details in the task documentation, but I think the basic workflow would look like this:
-
In your task definition (for the task triggered by submitting form
A
) you would want to set your desired value from formA
to the content for the newly triggered formB
using themodifyContent
function:modifyContent: function (content, contact, report, event) { content.my_field = getField(report, 'my_field'); }
-
Then in form
B
, you would need to define ahidden
field namedmy_field
within theinputs
group. When this form is triggered by a task, this field will be automatically populated with data from the task. -
Finally, your label in form
B
just needs to reference the hidden field in the label text:My field: ${my_field}
You can find more examples of using the modifyContent
functionality in the sample config here: cht-core/config at master · medic/cht-core · GitHub
Is it possible to display data from a previously submitted form outside of the task
and modifyContent: function
configuration ?
Hi @cliff
Could you please elaborate? What does “outside of the task
” refer to? Is there a reason why modifyContent
is not suitable for your use case?
Thanks!
thanks @diana …
I mean for example if am pulling data ie date of birth or phone number from the enrollment entry form of a patient and displaying it as labels in another form that i don’t intend to configure for a task
Hi @cliff
Thanks for the detailed explanation.
I believe you can populate a form with some outside data if you leverage contact-summary and submit a form for a contact.
First you would change your contact summary function to return some fields that are relevant, for example, pulling date of birth or phone number from the enrollment entry and adding them as fields.
Then, in another form, add a contact-summary
instance and reference it to display or calculate fields:
- example defining: cht-core/config/default/forms/app/pregnancy_facility_visit_reminder.xml at a4c2b2260119d312922694f3f8267a7ab6c29123 · medic/cht-core · GitHub
- example accessing: cht-core/config/default/forms/app/pregnancy_facility_visit_reminder.xml at a4c2b2260119d312922694f3f8267a7ab6c29123 · medic/cht-core · GitHub).
Submitting this form from the contact page enables the contact-summary data to be passed directly into the form.
hello @diana made some changes with the approach above ie
i added a contact summary calculation as seen below
and then referenced it later on
Then modified the context in the contact summary card
modifyContext: function(ctx, report) {
let fst_name = getField(report, 'contact:person:create.person.name');
ctx.fstname = fst_name;
}
where contact:person:create
is the form id of the enrollment form for a new patient .
The First name
entered in the enrollment form is not displaying in the other form , could i have missed something here ?
cc @jkuester
hello @diana ,
I managed to pull the patient name ie name
form the enrollment form which i under the inputs section
however when i try the same approach on the
date_of_birth
it fails ,the approach works for _id
, patient_id
, name
but fails for the rest
Hi @cliff
contact:person:create
doesn’t generate a report, it generates a contact
type document.
I think, in your case, the simplest would be to add an additional context property like:
const context = {
alive: isAlive(thisContact),
muted: false,
....
fstname: thisContact.name,
};
There should be no need for modifyContext
.