HTML Form Schema to OpenMRS Form Schema Mapping

Introduction

Just for clarification, the OpenMRS Form Schema model is referred as "Form Schema" and it's composed by the form, field, form_field and field_type tables in the OpenMRS Data Model. The HTML Form Schema model is referred as "HTML Form Schema" and it's mapped mostly from the HTML code.

Forms

The HTML Form has a reference to a Form. All attributes of a Form can be changed in the HTML Form, as if an HTML Form is a Form, so no special mapping is required.

Fields

I've identified 2 major field types, that can be mapped in the field_type table:

  • Section, corresponding to structural sections in the HTML (with the <section> tag)
  • Concept, corresponding to Observation questions, identified by the Concept ID (with the <obs> tag)

Sections (<section>) can be mapped as follows:

  • field.field_type = Section
  • field.name = HtmlFormSection.name
  • All children of an HtmlFormSection should have its form_field.parent_form_field set to the section form_field.id

Observations (<obs>) can be mapped as follows:

  • field.field_type = Concept
  • field.name = name
  • field.concept_id = ObsField.question.concept_id

There are some attributes that I think that can be automatically mapped, based on the concept_id but I'm not sure yet:

  • field.table_name
  • field.attribute_name 

Also, there are some attributes that are not mapped in the HTML Form Schema:

  • field.default_value
  • field.select_multiple
  • form_field.field_number
  • form_field.field_part
  • form_field.page_number
  • form_field.min_occurs
  • form_field.max_occurs
  • form_field.required

Observations have answers. This could be mapped by the field_answer table, but I don't believe this table is used right now (I may be wrong). Answers to the obs questions can be an important part of the HTML Form Schema, but they are not currently represented in the OpenMRS Form Schema.