Wiki Spaces

Documentation
Projects
Resources

Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack

Documentation

Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Reference for writing HTML for the Html_Form_Entry_Module

Tag Reference

<code>

See <translations>

<encounterDate>

Data entry widget for recording encounter date. Along with encounterLocation and encounterProvider, encounterDate should be present on every HTML form.

Attributes

  • default: Specifies default value for encounterDate widget. 
    • OPTIONAL
    • Example: <encounterDate default="today"/>
    • Value: "today", "now", or ?????
    • Default: None
  • showTime:  The showTime attribute determines if the encounterDate widget is date-only or date and time.
    • OPTIONAL
    • Example: <encounterDate showTime="true"/>
    • Value: "true" or "false"
    • Default: False - Widget is date-only

Example Usage <encounterDate/> <!- an initially-blank date widget ->

<encounterDate default="today"/> <!- a date widget pre-filled with today's date ->
<encounterDate showTime="true"/> <!- a date and time widget ->
<encounterDate showTime="true" default="now"/> <!-  a date and time widget defaulting to the time on the server --->

<encounterLocation>

Data entry widget for recording location of the encounter. Along with encounterDate and encounterProvider, encounterLocation should be present on every HTML form.

Attributes

  • defaultSets: default value for the widget. 
    • OPTIONAL
    • Example: <encounterLocation default="2"/>
    • Value: Location ID or Location
    • NameDefault: None
  • order:  Determines which locations appear in the list, and specifies the order in which they appear.
    • OPTIONAL
    • Example: <encounterLocation order="2,7,4"/>
    • Value: Comma separated list of Location IDs or Location Names
    • Default: All locations in alphabetical order

Example Usage <encounterLocation/> <!- a list of all locations, sorted alphabetically by name ->

<encounterLocation default="2"/> <!- a list of all locations, sorted alphabetically by name, with location 2 selected by default ->
<encounterLocation order="2,7,4"/> <!- a list of the specified locations, by id ->
<encounterLocation order="Rwinkwavu,Kirehe,Mulindi"/> <!- a list of the specified locations, by name ->

<encounterProvider>

Data entry widget for recording provider for the encounter. Along with encounterDate and encounterLocation, encounterProvider should be present on every HTML form.

Attributes

  • defaultSets:  default value for the widget.[OPTIONAL]
    • OPTIONAL
    • Example: <encounterProvider default="djaz"/>
    • Value: Username or UserID
    • Default: None
  • roleFilters:  the list of users to only those with the specified role. [OPTIONAL]
    • OPTIONAL
    • Example: <encounterProvider role="Provider"/>
    • Value: Any valid role
    • Default: None - List includes all users.

Example Usage <encounterProvider/> <!- a list of all users ->

<encounterProvider default="djaz"/> <!- a list of all users, with the user whose username is djaz selected ->
<encounterProvider default="6"/> <!- a list of all users, with the user whose userId is 6 selected ->
<encounterProvider role="Provider"/> <!- a list of those users with the Provider role ->

<enrollInProgram>

Enrolls a patient in a program when the form is submitted. This only happens when the form is first entered--nothing happens when the form is edited or deleted.

Specifics about this enrollment behavior:

  • If the patient is already in the program on that date, nothing changes
  • If the patient is registered in the program after that date, then the patient's enrollment date will be moved back to the date of this encounter
  • Otherwise, the patient is enrolled as requested

Attributes

  • programID
    • ID of the program in which the patient is to be enrolled.
    • REQUIRED
    • Example: <enrollInProgram programId="1"/>
    • Value: Any valid program ID.
    • Default: None.

<excludeIf>

A tag that optionally exclude all its content based on evaluating a logic token or a velocity expression. This tag has to only contain either a logic test or a velocity test.

Attributes

  • logicTest A logic expression represents a logic test. 
    • OPTIONAL
    • Example: <excludeIf logicTest="GENDER = F"/>
    • A logic test to see if the patient's gender is female
  • velocityTest A velocity expression represents a velocity test. 
    • OPTIONAL
    • Example: <excludeIf velocityTest=""$patient.gender" == "F" "/>
    • A velocity test to see if the patient's gender is female.

<htmlform>

Top-level tag that defines a form. A form must be wrapped in an htmlform tag.

Example Usage <htmlform>

 <table border="0" width="100%">
 <tr><td><includeIf logicTest="GENDER = F">This  shows a logic test for a woman</includeIf> </td></tr>

<tr><td><includeIf  velocityTest=""$patient.gender" == "F" ">This shows a velocity test  for a woman</includeIf> </td></tr>

<tr><td><excludeIf logicTest="GENDER =  F">This won't show for a logic test for a woman</excludeIf>  </td></tr>

<tr><td><excludeIf  velocityTest=""$patient.gender" == "F" ">This won't show for a  velocity test for a woman</excludeIf> </td></tr>

</table>
 </htmlform>

<includeIf>

See <excludeIf>

[edit]

<lookup>

Allows you to evaluation of velocity expressions.

The variables you have access to in the velocity context are:patientthepatient objectyou're entering the form forlocalethe authenticated user's localepatientIdentifiersMap<String, List<String>> of identifierType.name -> all identifiers of that type[edit]

Attributes

  • complexexpression[OPTIONAL]Example: <lookup complexExpression="#foreach( $addr in $patient.addresses ) $!addr.cityVillage <br/> #end"/>Value: Valid complex velocity expressionDefault: None
  • class[OPTIONAL]Example: <lookup .../>Value: Valid velocity classDefault: None
  • expression[OPTIONAL]Example: <lookup expression="patient.personName"/>Value: Valid velocity expressionDefault: None[edit]

Unknown macro: {patient.personName} ">Example Usage<lookup expression="patient.personName"/> this will translate to the velocity expression $!
Unknown macro: {patient.personName}

<lookup expression="patient.getPatientIdentifier(5)"/> this will get the patient's first identifier with Identifier Type Id of 5

<lookup complexExpression="#foreach( $addr in $patient.addresses ) $!addr.cityVillage <br/> #end"/>

<lookup .../> this will produce <span>result of expression</span>

[edit]

<macros>

Define macros at the top of the file (e.g. for things like colors).

[edit]

Example Usage<htmlform>

<macros>
lightgrey=#e0e0e0
lightblue=#e0e0ff
darkblue=#4444ff
</macros>
<div style="background-color: $lightblue">This is a pleasant light blue color</div>
</htmlform>

[edit]

<obs>

Generates an obs data entry widget. Depending on the datatype of the concept you specify, you get different obs.value widgets, and you use different attributes to control them.

[edit]

Data Types

[edit]

Numeric

By default, displays a small text box that auto-checks that entries are between absoluteMinimum and absoluteMaximum for the concept, and checks on precise also. You can also specify a constrained list of answers, as radio button or checkboxes. (Since 1.6.1) Example:<!- free text box (constrained to legal numbers) ->
<obs conceptId="5497" labelText="Most recent CD4:" dateLabel="Date of test:"/>

<!- constrained to None, 1-6, and 7-8 ->
<obs conceptId="123" labelText="Education" answers="0,6,8" answerLabels="None,1-6,7-8" style="radio"/>
<obs conceptId="123" labelText="Education" answers="0,6,8" answerLabels="None,1-6,7-8" style="dropdown"/>
You can also specify answerCodes instead of answerLabels to reference answer labels by codes in messages.properties or in the translation mappings in the form itself.

[edit]

Boolean

Various widget styles can be used to input Boolean values:style="checkbox" A checkbox that when checked creates a TRUE obs, and when unchecked does nothing
style="checkbox" value="false" A checkbox that when checked creates a FALSE obs, and when unchecked does nothing
style="no_yes" Radio buttons for no and yes. You may click on a selected radio button to unselect it.
style="yes_no" Like above but reverse order
style="no_yes_dropdown" Dropdown list with blank, no, and yes options.
style="yes_no_dropdown" Like above but reverse order

<!- Localization ->
<obs style="no_yes" noLabel="Non" yesLabel="Oui"/>

[edit]

Text

By default, displays a normal text input box.size="5" means a text field with the specified size
style="textarea" means a textarea
rows="10" number of rows in the textarea (implies style="textarea")
cols="80" number of columns in the textarea (implies style="textarea")
answers="comma,separated,legal,answers"
answerLabels="Display,For,Legal,Answers"
answerCodes=Allows you to reference labels by a messages.properties codes or a codes in the translation mappings defined in the form.
style="location" provides a drop-down list of Locations.

[edit]

Date

Renders a date picker widget. Note that dates are not allowed to be in the future, unless attribute allowFutureDates="true".

[edit]

Coded

Renders a drop-down with all possible coded answered. Set style="radio" to display a radio set of options in lieu of a drop-down. Set style = "autocomplete" to display a autocomplete widget. Note autocomplete has to work with either an answerClasses attribute or an answerConceptId attribute.Examples:
<obs conceptId="1234" answerConceptId="123" labelText="The question:" answerLabel="The answer"/>
Renders as: The question: [ ]The answer
If checked creates an obs with conceptId=1234 and valueCoded=123

<obs conceptId="1234"/>
Renders as a dropdown of all possible answer specified for concept 1234 in the dictionary

<obs conceptId="1234" answerConceptIds="123,7,912" answerLabels="Malaria,Tuberculosis,Diabetes"/>
Renders as a dropdown of the specified answers with the specified labels.

<obs conceptId="1296" answerClasses="Drug"/>
Renders as a dropdown all Concepts with ConceptClass = "Drug", ordered by Concept Name

<obs conceptId="1296" answerClasses="Drug" style="autocomplete"/>
Renders as a autocomplete widget with ConceptClass = "Drug", ordered by Concept Name

You can also specify answerCode instead of answerLabel to reference an answer label by a code in messages.properties or in the translation mappings in the form itself.

[edit]

Attributes

  • allowFutureDatesWhen set to true allows future dates. [OPTIONAL]Example: <obs conceptId="5096" allowFutureDates="true" />Value: "true" or "false"Default: False - Only past dates are allowed by default.
  • answerCodesAllows you to reference labels by a messages.properties codes or a codes in the translation mappings defined in the form. [OPTIONAL]Example: ???Value: ?Default: ???
  • answerClassesRenders as a dropdown all Concepts with specified ConceptClass, ordered by Concept Name [OPTIONAL]Example: <obs conceptId="1296" answerClasses="Drug"/>Value: Valid ConceptClassDefault: None
  • answerConceptIDConcept reference corresponding to the coded answer for the question. Frequently used with checkboxes. [OPTIONAL]Examples:<obs conceptId="3509" answerConceptId="2070" answerLabel="l'hôpital" style="checkbox" /><obs conceptId="3509" answerConceptId="XYZ:HT" answerLabel="l'hôpital" style="checkbox" /><obs conceptId="3509" answerConceptId="0cbe2ed3-cd5f-4f46-9459-26127c9265ab" answerLabel="l'hôpital" style="checkbox" />Value: A valid Concept Integer ID, Concept Mapping, or Concept uuid.Default: None
  • answerConceptIdsConcept references corresponding to the coded answers for the question. Used with radio buttons and dropdowns. [OPTIONAL]Exaples:<obs conceptId="1319" labelText="Toiture/Roofing: " answerConceptIds="1320,1321,1316" answerLabels="tole,tache,beton"/><obs conceptId="1319" labelText="Toiture/Roofing: " answerConceptIds="XYZ:HT,ABC:QQ,QWE:TR" answerLabels="tole,tache,beton"/><obs conceptId="1319" labelText="Toiture/Roofing: " answerConceptIds="5ecb88f3-cd5f-4f46-9459-26127c9265ab,74e3ded1-cd4f-4f4b-9459-26127c9265ab,0cbe2ed3-cd5f-4f46-9459-26127c9265ab" answerLabels="tole,tache,beton"/><obs conceptId="1319" labelText="Toiture/Roofing: " answerConceptIds="1320,ABC:QQ,0cbe2ed3-cd5f-4f46-9459-26127c9265ab" answerLabels="tole,tache,beton"/>Value: Quoted, comma separated list of valid Concept Integer IDs, Concept Mappings, or Concept uuid's.Default: None
  • answerLabelSets the text to display after the object. Used with checkboxes. [OPTIONAL]Example: <obs conceptId="3509" answerConceptId="2070" answerLabel="l'hôpital" style="checkbox" />Value: Any quoted stringDefault: None
  • answerLabelsSets the text to display after the objects. Used with radio buttons or dropdowns. [OPTIONAL]Example: <obs conceptId="3201" labelText="" answerConceptIds="1065,1066" style="radio" answerLabels="oui,non" />Value: Comma separated list.Default: None
  • answersValues to be stored as the answer for a radio button or dropdown. NOT used when answers are concepts - see answerConceptIds in that case [OPTIONAL]Example: <obs conceptId="123" labelText="Education" answers="0,6,8" answerLabels="None,1-6,7-8" style="radio"/>Value: Comma-separated listDefault: None
  • colsNumber of columns in the textarea (implies style="textarea"). [OPTIONAL]Example: <obs conceptId="3221" rows="7" cols="60" />Value: Positive integer.Default: None
  • conceptIDInteger ID, Concept Mapping, or Concept uuid of the concept to which the obs widget is linked. The datatype of this concept drives the behavior of the widget. [REQUIRED]Examples:<obs conceptId="6135" /><obs conceptId="XYZ:HT" /><obs conceptId="0cbe2ed3-cd5f-4f46-9459-26127c9265ab" />Value: Valid Concept Integer ID, Concept Mapping, or Concept uuid.Default: None
  • dateLabelText to display after the obs.value widget and before the obs.datetime widget. Specifying this implies showDate="true". [OPTIONAL]Example: <obs conceptId="5497" labelText="Most recent CD4:" dateLabel="Date of test:"/>Value: Any quoted stringDefault: None
  • labelCodeAllows you to reference a label by a messages.properties code or a code in the translation mappings defined in the form. [OPTIONAL]Example: <obs conceptId="1234" labelCode="night_sweats"/>Value: If referencing a translation mapping, the value for the labelCode attribute must be a valid name as defined within the <code> tag.Default: None
  • labelNameTag"default" will delegate to Concept.getBestName(Context.getLocale()). Currently that's the only legal tag. [OPTIONAL]Example: ?????Value: "default"Default: None
  • labelTextSets the label that goes before the widget. [OPTIONAL]Example: <obs conceptId="3355" labelText="cause de décès:" />Value: Any quoted stringDefault: None
  • noLabelDefines the label for the "no" option for all styles with a "no" parameter. Commonly used to change label from "No" to "non" [OPTIONAL]Example: <obs conceptId="6689" style="yes_no" noLabel="non" yesLabel="oui" />Value: Any quoted string.Default: "No"
  • requiredSets this field as a required field [OPTIONAL]Example: <obs conceptId="3453" required="true" />Value: True or falseDefault: False
  • rowsNumber of rows in the textarea (implies style="textarea") [OPTIONAL]Example: <obs conceptId="3221" rows="7" cols="60" />Value: Positive IntegerDefault: None
  • showDateSets whether or not to show a date widget to set the obs.datetime for this obs [OPTIONAL]Example: <obs conceptId="3232" showDate="true" />Value: True or falseDefault: False
  • sizeSpecifies the size of a text field. [OPTIONAL]Example: <obs conceptId="2216" labelText="Résultats: " size="80" />Value: Positive integerDefault: ?
  • styleSpecifies the type of input element (radio, checkbox, dropdown, yes/no, etc.) that displays on the form. [OPTIONAL]Example: <obs conceptId="6689" style="yes_no" noLabel="non" yesLabel="oui" />Value: "radio", "checkbox", "dropdown", "yes_no", "no_yes", "yes_no_dropdown", "no_yes_dropdown", "textarea", "autocomplete"Default: Driven by datatype of associated concept.
  • valueWhen set to "false", a checked checkbox signifies a value of false for the concept. It inverts the normal relationship where a checked checkbox signifies "true".[OPTIONAL]Example: <obs conceptId="2146" style="checkbox" value="false" />Value: True or falseDefault: True
  • yesLabelDefines the label for the "no" option for all styles with a "no" parameter. Commonly used to change label from "Yes" to "Oui" [OPTIONAL]Example: <obs conceptId="6689" style="yes_no" noLabel="non" yesLabel="oui" />Value: Any quoted string.Default: "Yes"[edit]

Related Tags

  • <obsgroup>

[edit]

<obsgroup>

Used to create an obs group. You are required to specify a groupingConceptId. Nested obs groups are not currently supported (but should be shortly. Check release notes on main HTML Form Entry Module wiki page.)

[edit]

Attributes

  • groupingConceptIdID of the associated concept [REQUIRED]Examples:<obsgroup groupingConceptId="2214"><obsgroup groupingConceptId="XYZ:HT"><obsgroup groupingConceptId="0cbe2ed3-cd5f-4f46-9459-26127c9265ab">Value: Any valid concept integer ID, concept mapping pair, or concept uuid.Default: None[edit]

Related Tags

  • <obs>

[edit]

Example Usage<obsgroup groupingConceptId="1234">

<obs conceptId="1234" answerConceptId="123" answerLabel="Other"/>
<obs conceptId="987" labelText="specify:"/>
</obsgroup>

You can wrap an obsgroup tag anywhere in the html, generally speaking, as long as it is still a well-formed xml document.

This is okay:

<table>
<tr>
<obsgroup groupingConceptId="1234">
<td><obs conceptId="5089" labelText="Weight:"/></td>
<td><obs conceptId="5090" labelText="Height:"/></td>
</obsgroup>
</tr>
</table>

This will break:

<obsgroup groupingConceptId="1234">
<table>
<tr>
<td><obs conceptId="5089" labelText="Weight:"/></td>
<td><obs conceptId="5090" labelText="Height:"/></td>
</obsgroup>
</tr>
</table>

[edit]

<render>

See <repeat>

[edit]

<repeat>

Repeatedly renders code that is contained within template tags. Facilitates future code maintenance. Repeats can be nested inside of other tags. A repeat can contain only 2 top level tags: template and render.

[edit]

Related Tags

[edit]

<template>

The code contained in the <template> tags is repeated for each <render> tag.

[edit]

<render>

Used within a repeat tag to render code. Within the render tag you can also specify attributes that can be used as keys during substitution.

[edit]

Example Usage<repeat>

<template>
<obsgroup groupingConceptId="1295">
<tr>
<td><obs conceptId="1297" answerConceptId="

Unknown macro: {concept}

" answerLabel="

Unknown macro: {effect}

" labelText=""/></td>
<td><obs conceptId="3063"/></td>
<td><obs conceptId="1300"/></td>
<td><obs conceptId="1643"/></td>
</tr>
</obsgroup>
</template>
<render concept="6355" effect="Nausées/vomissements"/>
<render concept="16" effect="Diarrhée"/>
<render concept="80" effect="Arthralgie"/>
<render concept="877" effect="Etourdissements et/ou vertiges"/>
</repeat>

[edit]

<section>

The <section> tag lets you break your form, and corresponding form schema, into sections.

[edit]

Attributes

  • headerCodeAllows you specify the header label using a code that references message.properties or the translation mappings in the form itself. [OPTIONAL]Example: ???Value: ??Default: None.
  • headerLabelThe label to use in the section header. [OPTIONAL]Example: <section headerLabel="1. Information démographique">Value: Any quoted stringDefault: None.
  • headerStyleAllows you to override the default style for the section header. [OPTIONAL]Value: Valid CSS style attributesDefault: None
  • sectionStyleAllows you to override the default style for the section. [OPTIONAL]Value: Valid CSS style attributesDefault: None[edit]

<submit>

You need to put a submit tag at the bottom of your form, or else your users will be very disappointed in you.

[edit]

Example<htmlform>

...stuff goes here...
<submit/>
</htmlform>

[edit]

<template>

See <repeat>

[edit]

<translations>

Defines translation mappings at the top of the file which can be accessed by specialized coded attributes in other tags.

[edit]

Attributes

  • defaultLocaleAllows you to specify the default variant value. [OPTIONAL]Example: <translations defaultLocale="en">Value: Any quoted string.Default: None.[edit]

Related Tags

[edit]

<code>

Used to define a code to assign variant values to.

[edit]

Attributes
  • nameName of the variant [REQUIRED]Example: <code name="night_sweats">Value: Any quoted string.Default: None[edit]

<variant>

Used to identify the value for a code as determined by the locale.

[edit]

Attributes
  • locale ???? [REQUIRED]Example: <variant locale="en" value="night sweats"/>Value: A valid two letter locale value. E.g. "ar", "en", "es", "fr"Default: None
  • valueThe value to be assigned to the code. [REQUIRED]Example: <variant locale="en" value="night sweats"/>Value: Any quoted string.Default: None[edit]

Example Usage<translations defaultLocale="en">

<code name="night_sweats">
<variant locale="en" value="night sweats"/>
<variant locale="fr" value="sueurs nocturnes"/>
</code>
</translations>

And then in the body of the form:

<obs conceptId="1234" labelCode="night_sweats"/>

[edit]

<variant>

See <translations>

[edit]

Other Examples & Tips

link HTMLforms

[edit]

Linking to Pages

To make it seem like your html form has multiple pages, it would be best to put links to allow the user to jump down to the next page:<a href="#page1">1</a>
Jump to Page: <b>1</b> | <a href="#page2">2</a> | <a href="#page3">3</a>
...
...
<hr/>
<a name="page2"></a>
Jump to Page: <a href="#page1">1</a> | <b>2</b> | <a href="#page3">3</a>
...
...
<hr/>
<a name="page3"></a>
Jump to Page: <a href="#page1">1</a> | <a href="#page2">2</a> | <b>3</b>
...

  • No labels