Uploaded image for project: 'Reference Application'
  1. Reference Application
  2. RA-1411

Registration App: Add extension point to registerPatient.gsp to insert custom JavaScript

    XMLWordPrintable

    Details

    • Type: Story
    • Status: Accepted
    • Priority: TBD
    • Resolution: Fixed
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None
    • Complexity:
      Undetermined

      Description

      This feature is based on the discussion in this talk thread

      We would like to add an extension point to the registerPatient.gsp page that allows developers to inject javascript into the page.

      Use Case:
      The iSant├ęPlus implementation needs to display a Medical Power of Attorney section only for minors. To do this, we need to manipulate the existing sections using JavaScript.

      Here's the JavaScript code:

          <script id="togglePowerOfAttorneyContact" type="text/javascript">
          var age = 999;
          var today = new Date();
          var nowyear = today.getFullYear();
          var nowmonth = today.getMonth() + 1; //we add 1 because getMonth is zero indexed
          var nowday = today.getDate();
      
          jQuery(function() {
              var birthdateYearField = jQuery('#birthdateYear-field');
              var birthdateMonthField = jQuery('#birthdateMonth-field');
              var birthdateDayField = jQuery('#birthdateDay-field');
              var yearsField = jQuery('#birthdateYears-field');
              var monthsField = jQuery('#birthdateMonths-field');
      
              jQuery(yearsField.change(function() {
                  if((!!monthsField.val() != '' && yearsField.val() == '') || (!!yearsField.val() && yearsField.val() < 18)) {
                      NavigatorController.getSectionById('powerOfAttorneyContact').show();
                  } else {
                      NavigatorController.getSectionById('powerOfAttorneyContact').hide();
                  }
              }));
      
              jQuery(monthsField.change(function() {
                  if((!!monthsField.val() != '' && yearsField.val() == '') || (!!yearsField.val() && yearsField.val() < 18)) {
                      NavigatorController.getSectionById('powerOfAttorneyContact').show();
                  } else {
                      NavigatorController.getSectionById('powerOfAttorneyContact').hide();
                  }
              }));
      
              jQuery(birthdateYearField.change(function() {
                  if (!!birthdateYear && !!birthdateMonth && !!birthdateDay) {
                      togglePowerOfAttorneyContact();
                  }
              }));
      
              jQuery(birthdateMonthField.change(function() {
                  if (!!birthdateYear && !!birthdateMonth && !!birthdateDay) {
                      togglePowerOfAttorneyContact();
                  }
              }));
      
              jQuery(birthdateDayField.change(function() {
                  if (!!birthdateYear && !!birthdateMonth && !!birthdateDay) {
                      togglePowerOfAttorneyContact();
                  }
              }));
          });
      
          jQuery(document).ready(function() {
              NavigatorController.getSectionById('powerOfAttorneyContact').hide();
          });
      
          function togglePowerOfAttorneyContact() {
              var birthdateYear = jQuery('#birthdateYear-field').val();
              age = nowyear - birthdateYear;
              var age_month = nowmonth - birthdateMonth;
              var age_day = nowday - birthdateDay;
             
              if(age_month < 0 || (age_month == 0 && age_day <0)) {
                      age = parseInt(age) -1;
                  }
      
              if(age < 18) {
                  NavigatorController.getSectionById('powerOfAttorneyContact').show();
              } else {
                  NavigatorController.getSectionById('powerOfAttorneyContact').hide();
              }
          };
      </script>
      

        Attachments

          Activity

            People

            Assignee:
            craigappl Craig Appl
            Reporter:
            craigappl Craig Appl
            Designated Committer:
            Mark Goodrich
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: