Changeset 5733


Ignore:
Timestamp:
Nov 19, 2019, 11:50:40 AM (3 years ago)
Author:
olle
Message:

Refs #1029. Referral form generation updated to allow projects to use different number of digits in the referral ID. Most changes are related to an update of private method String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr) by adding an extra argument int numSerialDigits, in order to avoid using hard-coded limits:

  1. Java servlet class/file ReferralGeneratorServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for commands "UpdateUsedItemIdDigitsList", "GenerateReferralForms", "GenerateFfpeReferralForm", "GenerateFfpeSectionOrderFormSequential", and "DownloadFormBatchFile" to call private methods String nextItemIdDigits(String itemIdDigits, int numSerialDigits) and String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr) with extra argument int numSerialDigits.
    b. Private method void updateReferralFormLogFile(DbControl dc, String referralVariant, String startItemIdDigits, int nofFormSets, List<String> formTemplateFileList) updated to call private method String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr) with extra argument int numSerialDigits.
    c. Private method String nextItemIdDigits(String itemIdDigits, int numSerialDigits) updated with extra argument int numSerialDigits, which value is used when calling private method String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr) with extra argument int numSerialDigits.
    d. Private method String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr) updated with extra argument int numSerialDigits, which value is used instead of hard-coded limits.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/servlet/ReferralGeneratorServlet.java

    r5732 r5733  
    226226        dc = sc.newDbControl();
    227227        String startItemName = req.getParameter("startitemname");
     228        int numSerialDigits = Meludi.fetchReferralNumDigits(sc.getActiveProjectId());
     229        numSerialDigits = numSerialDigits - sitePrefixLength;
    228230        //String startitemIdDigits = Meludi.fetchRootDigits(startItemName, sc.getActiveProjectId());
    229231        String startitemIdDigits = Meludi.fetchReferralDigits(startItemName, sc.getActiveProjectId());
     
    232234        if (startItemName.startsWith(Meludi.fetchFfpeBlockItemPrefix(sc.getActiveProjectId())))
    233235        {
     236          numSerialDigits = Meludi.fetchFfpeBlockItemNumDigits(sc.getActiveProjectId());
    234237          nofItems = Values.getInteger(req.getParameter("nofFfpeBlocks"), 1);
    235238        }
     
    237240
    238241        String itemIdDigitsPure = startitemIdDigits.substring(sitePrefixLength);
    239         String nextitemIdDigitsPure = nextItemIdDigits(itemIdDigitsPure, nofItems);
    240         System.out.println("ReferralGeneratorServlet::doGet(): cmd = " + cmd + " UpdateUsedItemIdDigitsList: itemIdDigitsPure = " + itemIdDigitsPure + " nextitemIdDigitsPure = " + nextitemIdDigitsPure);
     242        String nextitemIdDigitsPure = nextItemIdDigits(itemIdDigitsPure, numSerialDigits, nofItems);
     243        //String nextitemIdDigitsPure = nextItemIdDigits(startitemIdDigits, numDigits, nofItems);
     244        System.out.println("ReferralGeneratorServlet::doGet(): cmd = " + cmd + " UpdateUsedItemIdDigitsList: itemIdDigitsPure = " + itemIdDigitsPure + " numSerialDigits = " + numSerialDigits + " nofItems = " + nofItems + " nextitemIdDigitsPure = " + nextitemIdDigitsPure);
    241245
    242246        // Get date string
     
    407411        String sitePrefix = itemIdRootDigits.substring(0,sitePrefixLength);
    408412        System.out.println("ReferralGeneratorServlet::doGet(): cmd = " + cmd + " GenerateReferralForms: startItemName = " + startItemName + " itemIdRootDigits = " + itemIdRootDigits + " sitePrefix = " + sitePrefix);
     413        int refNumDigits = Meludi.fetchReferralNumDigits(sc.getActiveProjectId());
     414        int numSerialDigits = refNumDigits - sitePrefixLength;
    409415
    410416        SimpleProgressReporter progress = new SimpleProgressReporter(null);
     
    461467          if (i > 0)
    462468          {
    463             itemIdDigits = nextItemIdDigits(itemIdDigits);
     469            itemIdDigits = nextItemIdDigits(itemIdDigits, numSerialDigits);
    464470          }
    465471          //String itemIdDigitsBiopsy = itemIdDigits + "C";
     
    536542          if (i > 0)
    537543          {
    538             itemIdDigits = nextItemIdDigits(itemIdDigits);
     544            itemIdDigits = nextItemIdDigits(itemIdDigits, numSerialDigits);
    539545          }
    540546          //String itemIdDigitsBiopsy = itemIdDigits + "C";
     
    586592        String itemIdRootDigits = Meludi.fetchReferralDigits(startItemName, sc.getActiveProjectId());
    587593        String sitePrefix = itemIdRootDigits.substring(0,sitePrefixLength);
     594        int numDigits = Meludi.fetchFfpeBlockItemNumDigits(sc.getActiveProjectId());
    588595
    589596        // Get case item from referral ID in order to get patient item
     
    646653          if (i > 0)
    647654          {
    648             itemIdDigits = nextItemIdDigits(itemIdDigits);
     655            itemIdDigits = nextItemIdDigits(itemIdDigits, numDigits);
    649656          }
    650657          //String itemIdDigitsBiopsy = itemIdDigits + "C";
     
    800807        //String pad = Values.getString(req.getParameter("pad"), "");
    801808        String itemIdRootDigits = Meludi.fetchRootDigits(startFfpeBlockName, Subtype.FFPE_BLOCK, sc.getActiveProjectId());
     809        int numDigits = Meludi.fetchFfpeBlockItemNumDigits(sc.getActiveProjectId());
    802810
    803811        // Get FFPE block item from FFPE block name
     
    846854          if (i > 0)
    847855          {
    848             ffpeBlockDigits = nextItemIdDigits(ffpeBlockDigits);
     856            ffpeBlockDigits = nextItemIdDigits(ffpeBlockDigits, numDigits);
    849857          }
    850858          String ffpeBlockId = ffpeBlockPrefix + ffpeBlockDigits;
     
    10031011        //System.out.println("ReferralGeneratorServlet::doGet(): cmd = " + cmd + ": batchType = " + batchType + " startItemName = " + startItemName + " endItemName = " + endItemName);
    10041012        // FFPE section forms contain several items on one referral form set
     1013        int refNumDigits = Meludi.fetchReferralNumDigits(sc.getActiveProjectId());
     1014        int numSerialDigits = refNumDigits - sitePrefixLength;
    10051015        int nofItems = Values.getInteger(req.getParameter("nofformsets"), 1);
    10061016        //System.out.println("ReferralGeneratorServlet::doGet(): cmd = " + cmd + ": batchType = " + batchType + " startItemName = " + startItemName + " nofItems = " + nofItems);
    10071017        if (startItemName.startsWith(Meludi.fetchFfpeBlockItemPrefix(sc.getActiveProjectId())))
    10081018        {
     1019          numSerialDigits = Meludi.fetchFfpeBlockItemNumDigits(sc.getActiveProjectId());
    10091020          nofItems = Values.getInteger(req.getParameter("nofFfpeBlocks"), 1);
    10101021        }
     
    10191030        if (endItemName == null || endItemName.equals("undefined"))
    10201031        {
    1021           String endItemIdDigits = nextItemIdDigits(startItemIdDigits, (nofItems-1));
     1032          String endItemIdDigits = nextItemIdDigits(startItemIdDigits, numSerialDigits, (nofItems-1));
    10221033          endItemName = itemPrefix + endItemIdDigits;
    10231034        }
     
    16741685    DateToStringConverter d3 = new DateToStringConverter(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
    16751686    String itemPrefix = Meludi.fetchReferralPrefix(dc.getSessionControl().getActiveProjectId());
     1687    int refNumDigits = Meludi.fetchReferralNumDigits(dc.getSessionControl().getActiveProjectId());
     1688    int numSerialDigits = refNumDigits - sitePrefixLength;
    16761689    String timeStampStr = d3.convert(new Date());
    1677     String endItemIdDigits = nextItemIdDigits(startItemIdDigits, (nofFormSets-1));
     1690    String endItemIdDigits = nextItemIdDigits(startItemIdDigits, numSerialDigits, (nofFormSets-1));
    16781691    String startItemId = itemPrefix + startItemIdDigits;
    16791692    String endItemId = itemPrefix + endItemIdDigits;
     
    17541767  }
    17551768
    1756   private String nextItemIdDigits(String itemIdDigits)
     1769  /**
     1770   * Increments an input item id with or without site prefix one unit.
     1771   *
     1772   * @param itemIdDigits String The item id with or without site prefix.
     1773   * @param numSerialDigits int The number of digits in serial number part of the item id, excluding optional site prefix.
     1774   * @return String The item id with given increment.
     1775   */
     1776  private String nextItemIdDigits(String itemIdDigits, int numSerialDigits)
    17571777  {
    1758     String nextItemIdDigits = nextItemIdDigits(itemIdDigits, 1);
     1778    String nextItemIdDigits = nextItemIdDigits(itemIdDigits, numSerialDigits, 1);
    17591779    return nextItemIdDigits;
    17601780  }
     
    17651785   *
    17661786   * @param itemIdDigits String The item id with or without site prefix.
     1787   * @param numSerialDigits int The number of digits in serial number part of the item id, excluding optional site prefix.
    17671788   * @param incr Integer Increment of item id.
    17681789   * @return String The item id with given increment.
    17691790   */
    1770   private String nextItemIdDigits(String itemIdDigits, Integer incr)
     1791  private String nextItemIdDigits(String itemIdDigits, int numSerialDigits, Integer incr)
    17711792  {
     1793System.out.println(new Date() + " nextItemIdDigits(): Start: itemIdDigits = \"" + itemIdDigits + "\" numSerialDigits = " + numSerialDigits + " incr = " + incr + ".");
    17721794    String nextItemIdDigits = null;
    17731795    String sitePrefix = "";
     
    17751797    if (itemIdDigits != null)
    17761798    {
    1777       if (itemIdDigits.length() > 6)
     1799      if (itemIdDigits.length() > numSerialDigits)
    17781800      {       
    17791801        sitePrefix = itemIdDigits.substring(0,sitePrefixLength);
    17801802        itemIdDigitsPure = itemIdDigits.substring(sitePrefixLength);
    17811803      }
    1782       else if (itemIdDigits.length() > 4)
     1804      else
    17831805      {       
    17841806        itemIdDigitsPure = itemIdDigits;
    17851807      }
     1808System.out.println(new Date() + " nextItemIdDigits(): sitePrefix = \"" + sitePrefix + "\" itemIdDigitsPure = \"" + itemIdDigitsPure + "\".");
    17861809      String itemIdDigitsSuffix = "";
    1787       if (itemIdDigitsPure.length() > 5)
     1810      if (itemIdDigitsPure.length() > numSerialDigits)
    17881811      {
    17891812        // Extract item ID suffix
     
    17911814        itemIdDigitsPure = itemIdDigitsPure.substring(0, itemIdDigitsPure.length() - 1);
    17921815      }
     1816System.out.println(new Date() + " nextItemIdDigits(): itemIdDigitsSuffix = \"" + itemIdDigitsSuffix + "\" itemIdDigitsPure = \"" + itemIdDigitsPure + "\".");
    17931817      // Remove initial zeroes
    17941818      while (itemIdDigitsPure.indexOf("0") == 0)
     
    18051829      }
    18061830      // Add initial zeroes
    1807       while (nextItemIdDigitsPure.length() < 5)
     1831      while (nextItemIdDigitsPure.length() < numSerialDigits)
    18081832      {
    18091833        // Add initial zero
     
    18121836      // Add item ID prefix and optional suffix
    18131837      nextItemIdDigits = sitePrefix + nextItemIdDigitsPure + itemIdDigitsSuffix;
     1838System.out.println(new Date() + " nextItemIdDigits(): siteProefix = \"" + sitePrefix + "\" nextItemIdDigitsPure = \"" + nextItemIdDigitsPure + "\" itemIdDigitsSuffix = \"" + itemIdDigitsSuffix + "\" nextItemIdDigits = \"" + nextItemIdDigits + "\".");
    18141839    }
    18151840    return nextItemIdDigits;
Note: See TracChangeset for help on using the changeset viewer.