Opened 9 years ago

Closed 9 years ago

#802 closed task (fixed)

MeLuDI v.1.3.1 bug fixes and improvements

Reported by: olle Owned by: olle
Priority: major Milestone: MeLuDI v1.3.2
Component: net.sf.basedb.meludi Keywords:
Cc:

Description

This ticket covers bug fixes and improvements to MeLuDI v.1.3.1.

Change History (29)

comment:1 by olle, 9 years ago

Status: newassigned

Ticket accepted.

comment:2 by olle, 9 years ago

Traceability note:

  • MeLuDi v.1.0 was introduced in Ticket #690 (MeLuDi - Registration wizard for melanoma-lung cancer projects).
  • MeLuDi v.1.1 was introduced in Ticket #718 (MeLuDi v.1.0 bug fixes and improvements).
  • MeLuDi v.1.2 was introduced in Ticket #725 (MeLuDi v.1.1 bug fixes and improvements).
  • MeLuDI v.1.2.1 was introduced in Ticket #759 (MeLuDi v.1.2 bug fixes and improvements).
  • MeLuDI v.1.2.2 was introduced in Ticket #767 (MeLuDI v.1.2.1 bug fixes and improvements).
  • MeLuDI v.1.2.3 was introduced in Ticket #768 (MeLuDI v.1.2.2 bug fixes and improvements).
  • MeLuDI v.1.2.4 was introduced in Ticket #777 (MeLuDI v.1.2.3 bug fixes and improvements).
  • MeLuDI v.1.2.5 was introduced in Ticket #786 (MeLuDI v.1.2.4 bug fixes and improvements).
  • MeLuDI v.1.3.1 was introduced in Ticket #792 (MeLuDI v.1.2.5 bug fixes and improvements).
  • First version of library preparation wizards was introduced in Ticket #801 (MeLuDI library preparation wizards first version).

comment:3 by olle, 9 years ago

(In [3454]) Refs #802. Updates due to version number change to "1.3.2-dev".

  1. Version number change to "1.3.2-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:4 by olle, 9 years ago

(In [3455]) Refs #802. Lab tracking report copy updated to set extract volume to default value, also when no concentration value exists (or is 0):

  1. Javascript file extraction_formcopy.js in resources/sampleproc/ updated in function initializeStep3b(response) to set extract volume to default value, also when no concentration value exists (or is 0).

comment:5 by olle, 9 years ago

(In [3456]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by exchanging references to "Controller" for "Control":

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 3 form by exchanging references to "Controller" for "Control".

comment:6 by olle, 9 years ago

(In [3457]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of bug preventing placement of more than the first FPA aliquot (variables "row" and "column" had not been defined and given values, when used to find the FPB well on the right side of the plate from the FPA well).

comment:7 by olle, 9 years ago

(In [3458]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of two bugs:
    a. Fix of bug in code creating JSONArray of modified wells. If the number of selected items was larger than the number of selected wells, the array previously included a gap of undefined array items between the modified FPA wells and FPB wells.
    b. Removal of test code making extra item placements starting from the upper left well and continuing downwards.

comment:8 by olle, 9 years ago

(In [3459]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by adapting routine for loading data from file to placing FPA and FPB aliquots on plate:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) adapting routine for loading data from file to placing FPA and FPB aliquots on plate.
  2. Javascript file select_file.js in resources/libprep/ updated by referring to DNA instead of RNA.

comment:9 by olle, 9 years ago

(In [3460]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug in routine for loading data from file, when column number 7 is addressed in the file:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) by fix of bug, when column number 7 is addressed in the file. The condition for checking what columns are allowed for FPA extracts uses a column variable adjusted to numbering columns 0-11, instead of 1-12, so the first column number for FPB extracts is 6, not 7.

comment:10 by olle, 9 years ago

(In [3461]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated by placing selected DNA extracts on plate depending on information on the last used column (1-6) for FPA extracts, using current TruSight library preparation kit. The columns are proposed according to a cyclic scheme, intending to make best use of the barcode reagents in a kit:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 2 form by addition of pop-up menu for selecting last used column (1-6) for FPA extracts, using current TruSight library preparation kit. This will simulate the resulting proposed DNA layout of the plate. In the final program, the value for last used column is intended to be obtained from the last stored start plate, where the selected TruSight library preparation kit was used.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated by moving code for placing selected DNA items on plate from function barcodesLoaded(response) to nextPlateNameLoaded(response). The latter function also updated to place the DNA extracts in columns making best use of the barcode reagents in a kit.
Last edited 9 years ago by olle (previous) (diff)

comment:11 by olle, 9 years ago

(In [3462]) Refs #801. Refs #802. MeLuDI updated to sort MeLuDI items and extra material items by name when obtaining DNA items from start item lists:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetListOfItemsFromStartItemLists" to sort MeLuDI items and extra material items by name, before combining them into a final item list. Previously, in each category, only items from each input start item list were guaranteed to come in alphabetical order.

comment:12 by olle, 9 years ago

(In [3463]) Refs #801. Refs #802. MeLuDI "admin" section updated by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools". This tool was only needed when updating to MeLuDI v1.3.1, and will not work with start plates created in the library preparation wizard, since the needed annotation data does not exist:

  1. JSP file index.jsp in resources/ updated in "admin" section by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools".

comment:13 by olle, 9 years ago

(In [3464]) Refs #801. Refs #802. Updates due to version number change to "1.3.2a1".

  1. Version number change to "1.3.2a1":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:14 by olle, 9 years ago

(In [3465]) Refs #801. Refs #802. Updates due to version number change to "1.3.2-dev".

  1. Version number change to "1.3.2-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:15 by olle, 9 years ago

Functional specification update:

  • Case registration should be updated to create new plate for specimens, DNA, or RNA, if needed, instead of relying on the administrator to have created the plate items in advance.

Design discussion:

Several issues need to be addressed to implement automatic creation of storage box items:

  • The function for finding recommended locations for a particular type of item needs to be updated to prepare for new storage boxes, if the number of free wells in existing boxes is not sufficient.

    a. The name should be consistent with a storage box for the particular type of item, and the number should be the next expected one.
    b. Values for storage location (hardware, section, tray, position) should be set to expected values. Currently these values are not used, but this may be an issue in the future.

  • Validation of modified storage locations should not report an error, if the specified storage box doesn't exist.
  • At registration, any needed new storage box item should be created once only, and then reused, if needed.

Design specification:

  1. Java servlet class/file SpecimenTubeServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "ValidateWell" to call new private method BioPlate createStorageBox(DbControl dc, String plateName) to get a new bio plate item, if no existing storage box with the specified name exists.
    b. Private method JSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps) updated to call new private method BioPlate createStorageBox(DbControl dc, String platePrefix, String plateSuffix, int plateNumber)get a new bio plate item, if no existing storage box with the specified name exists. New private convenience method JSONArray updateJsonWells(JSONArray jsonWells, BioPlate box, Integer nofWellsNeeded, Boolean fillGaps) is called to update the JSONArray of proposed wells, both for existing and new storage boxes.
    c. New private convenience method JSONArray updateJsonWells(JSONArray jsonWells, BioPlate box, Integer nofWellsNeeded, Boolean fillGaps) added. It updates a JSONArray with wells to use for the specified storage box. The core code is taken from the previous version of private method JSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps).
    d. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "CreateSpecimenTubes" to create a HashMap<String, BioPlate> item that is given as argument in calls of updated private methods BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap) and BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType).
    e. Private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap) updated with new argument HashMap<String, BioPlate> bioPlateNamePlateHashMap, that is used as argument when calling updated private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType).
    f. Private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType) updated with new argument HashMap<String, BioPlate> bioPlateNamePlateHashMap. If no storage box item with the name specified in argument jsonSpec exists, a check is made if a created item with the desired name exists in the hash map, in which case the former is used, otherwise new private method BioPlate createStorageBox(DbControl dc, String plateName) is called to provide one. If a new storage box item is created, it is marked to be saved in the database by calling dc.saveItem(), with the item as argument, after which it is added as value in the hash map, using the storage box name as key.
    g. New private method BioPlate createStorageBox(DbControl dc, String platePrefix, String plateSuffix, int plateNumber) added. It creates a storage box name from the input arguments and then calls new private method BioPlate createStorageBox(DbControl dc, String plateName) to create a storage box item, that is returned.
    h. New private method BioPlate createStorageBox(DbControl dc, String plateName) added. It preforms database queries to obtain plate geometry and bio plate type items for storage boxes, which are used to create a new BioPlate storage box item with the desired name. The created storage box item is then returned. Database queries are performed for the plate geometry and bio plate type items, instead of creating new items, since the BioPlate storage box item contains links to the former items.
Last edited 9 years ago by olle (previous) (diff)

comment:16 by olle, 9 years ago

(In [3478]) Refs #802. MeLuDI case registration updated to create storage box items, if needed:

  1. Java servlet class/file SpecimenTubeServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "ValidateWell" to call new private method BioPlate createStorageBox(DbControl dc, String plateName) to get a new bio plate item, if no existing storage box with the specified name exists.
    b. Private method JSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps) updated to call new private method BioPlate createStorageBox(DbControl dc, String platePrefix, String plateSuffix, int plateNumber)get a new bio plate item, if no existing storage box with the specified name exists. New private convenience method JSONArray updateJsonWells(JSONArray jsonWells, BioPlate box, Integer nofWellsNeeded, Boolean fillGaps) is called to update the JSONArray of proposed wells, both for existing and new storage boxes.
    c. New private convenience method JSONArray updateJsonWells(JSONArray jsonWells, BioPlate box, Integer nofWellsNeeded, Boolean fillGaps) added. It updates a JSONArray with wells to use for the specified storage box. The core code is taken from the previous version of private method JSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps).
    d. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "CreateSpecimenTubes" to create a HashMap<String, BioPlate> item that is given as argument in calls of updated private methods BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap) and BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType).
    e. Private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap) updated with new argument HashMap<String, BioPlate> bioPlateNamePlateHashMap, that is used as argument when calling updated private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType).
    f. Private method BioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, HashMap<String, BioPlate> bioPlateNamePlateHashMap, String boxType) updated with new argument HashMap<String, BioPlate> bioPlateNamePlateHashMap. If no storage box item with the name specified in argument jsonSpec exists, a check is made if a created item with the desired name exists in the hash map, in which case the former is used, otherwise new private method BioPlate createStorageBox(DbControl dc, String plateName) is called to provide one. If a new storage box item is created, it is marked to be saved in the database by calling dc.saveItem(), with the item as argument, after which it is added as value in the hash map, using the storage box name as key.
    g. New private method BioPlate createStorageBox(DbControl dc, String platePrefix, String plateSuffix, int plateNumber) added. It creates a storage box name from the input arguments and then calls new private method BioPlate createStorageBox(DbControl dc, String plateName) to create a storage box item, that is returned.
    h. New private method BioPlate createStorageBox(DbControl dc, String plateName) added. It preforms database queries to obtain plate geometry and bio plate type items for storage boxes, which are used to create a new BioPlate storage box item with the desired name. The created storage box item is then returned. Database queries are performed for the plate geometry and bio plate type items, instead of creating new items, since the BioPlate storage box item contains links to the former items.

comment:17 by olle, 9 years ago

Functional specification update:

  • DNA/RNA extraction wizard for lab tracking protocol for Allprep isolation should be updated in step 2 to include a button for downloading a reagent lot number file for latest registered DNA. The default filename should consist of prefix "extraction-reagents-" + start list name + "-" + isolation date in YYYYMMDD format + suffix "_latest_used_dna", and have file extension ".csv".

Design discussion:

  • Currently the DNA/RNA extraction wizard for DNA/RNA registration/quantification, that normally follows the Allprep isolation wizard, allows reagent lot numbers to be loaded from a file, from latest registered DNA, or entered manually, after which the lot number set may be downloaded to a file. The lab tracking protocol/report copy wizard also allows the reagent lot numbers for a registered start list to be downloaded to a file. The required functionality is therefore already present in the Extraction servlet, but in two different commands, "GetLastProcessedDna" and "DownloadReagentLotNoFile".
  • In the DNA/RNA registration/quantification wizard, lot numbers loaded from latest registered DNA are stored as values in web form input fields, and values in these fields are used when downloading lot numbers to a file. Since no lot numbers except the one for the Allprep DNA/RNA FFPE kit are currently presented in the Allprep isolation wizard, it was decided to create special Javascript functions for the new button, where values loaded from latest registered DNA are directly used when downloading the lot numbers to a file. However, the new functions will be based on corresponding functions for the DNA/RNA registration/quantification wizard.

Design specification:

  1. JSP file extraction_preparation.jsp in resources/sampleproc/ updated in step 2 with a new sub-table "Output options", containing a button to download a file with current lot numbers for latest registered DNA.
  2. Javascript file extraction_preparation.js in resources/sampleproc/ updated:
    a. Function initPage() updated for step 2 by adding a click handler for the new download button, coupling it to new function downloadReagentLotNoFileForLatestRegisteredDna().
    b. New function downloadReagentLotNoFileForLatestRegisteredDna() added. It calls ExtractionServlet with command "GetLastProcessedDna" and callback function lastProcessedDnaLoadedForReagentFileDownload(response).
    c. New function lastProcessedDnaLoadedForReagentFileDownload(response) added. It obtains the lot numbers for last registered DNA and adds them to a JSON object formatted for being used for storing the values in a reagent lot number file. Start list name and isolation date are obtained from the web form, after which ExtractionServlet is called with command "DownloadReagentLotNoFile" in a new window. The default filename proposed consists of prefix "extraction-reagents-" + start list name + "-" + isolation date in YYYYMMDD format + suffix "_latest_used_dna", and have file extension ".csv".
Last edited 9 years ago by olle (previous) (diff)

comment:18 by olle, 9 years ago

(In [3480]) Refs #802. DNA/RNA extraction wizard for lab tracking protocol for Allprep isolation updated in step 2 to include a button for downloading a reagent lot number file for latest registered DNA:

  1. JSP file extraction_preparation.jsp in resources/sampleproc/ updated in step 2 with a new sub-table "Output options", containing a button to download a file with current lot numbers for latest registered DNA.
  2. Javascript file extraction_preparation.js in resources/sampleproc/ updated:
    a. Function initPage() updated for step 2 by adding a click handler for the new download button, coupling it to new function downloadReagentLotNoFileForLatestRegisteredDna().
    b. New function downloadReagentLotNoFileForLatestRegisteredDna() added. It calls ExtractionServlet with command "GetLastProcessedDna" and callback function lastProcessedDnaLoadedForReagentFileDownload(response).
    c. New function lastProcessedDnaLoadedForReagentFileDownload(response) added. It obtains the lot numbers for last registered DNA and adds them to a JSON object formatted for being used for storing the values in a reagent lot number file. Start list name and isolation date are obtained from the web form, after which ExtractionServlet is called with command "DownloadReagentLotNoFile" in a new window. The default filename proposed consists of prefix "extraction-reagents-" + start list name + "-" + isolation date in YYYYMMDD format + suffix "_latest_used_dna", and have file extension ".csv".

comment:19 by olle, 9 years ago

Functional specification update:

  • The DNA/RNA extraction wizards should be updated to allow input of all lot numbers of interest in the first wizard, the "Lab tracking protocol for Allprep isolation" wizard (name to be changed to "Lab tracking protocol for FFPE extraction"), and display of all the lot number values in the other wizards and created protocols/reports:

    a. The name of the first wizard should be changed from "Lab tracking protocol for Allprep isolation" to "Lab tracking protocol for FFPE extraction", since the protocol used differs from the AllPrep protocol. The corresponding name change should be made in headers of web forms and created protocols/reports. However, the "AllPrep DNA/RNA FFPE Kit" is used also in the new protocol, so the corresponding lot number annotations will not be changed.
    b. The "Lab tracking protocol for FFPE extraction" wizard should be extended in step 2 with all lot number input, previously made in step 2 of the "DNA/RNA registration/quantification" wizard. All the lot number input and output options previously available in step 2 of the latter wizard, should also be available here, i.e. import from latest registered DNA or from lot number csv-file, and export of lot numbers to a csv-file. This makes the button introduced in change set [3480] for downloading a reagent lot number file for latest registered DNA redundant, and it will therefore be removed. The entered lot numbers should be stored with the created item list.
    c. Changes to the lab tracking protocols/reports for FFPE extraction, that also affects all existing wizards creating a lab tracking protocol or report:
    c1. The lab tracking protocols/reports for FFPE extraction should be extended in the header section to include values of all lot numbers.
    c2. The header section layout should be updated to a framed table, with data in two panels, like that currently used for "Start list" and "Operator". The left panel should contain data for FFPE extraction and quality control, while the right panel should contain data for QIAcube operation.
    c3. Header "Isolation date" should be exchanged for "Start date".
    c4. The protocol name should no longer be shown as a sub-header, but should be included in the FFPE extraction table data.
    d. The "DNA/RNA registration/quantification" wizard should be updated in step 2 to display values of all lot numbers for the selected start list, but it should still be possible to modify the values.

Design discussion:

The change may appear to be subtle, but have far-reaching consequences, as it affects what items the information set is stored with.

  • Previously, lot numbers entered in the first extraction wizard were stored as annotations for the created start item list, while lot numbers entered in the following DNA/RNA registration wizard were stored as annotations for the created DNA/RNA extract items.
  • If all lot numbers should be input in the first wizard (although their values can be changed in the second), it is natural to store all the entered "default" lot numbers as annotations for the created start item list. However, the DNA/RNA registration wizard should still store lot numbers as annotations for the DNA/RNA extract items, since individual numbers for each item might have been input in the latter wizard.
  • The "Lab tracking protocol/report copy" wizard should by default display lot numbers stored with the input start item list, instead of values stored with a DNA extract in the list.
  • In order for the updated "Lab tracking protocol/report copy" wizard to be able to display all lot numbers for start item lists created prior to MeLuDI v1.3.2, the latter start lists need to be updated. A new wizard, "Update processed start lists with lot numbers from extracts", should therefore be added to the "Special conversion tools" sub-section of the "Admin" section. It should allow a number of processed start item lists to be selected from a menu (normally all start item lists are selected, if the conversion is performed directly after installing MeLuDI v1.3.2). For each selected start item list, new lot number annotations of the latter will be set to values of the corresponding annotations for the first DNA extract, or if no such extract exists, the first RNA extract (MeLuDI items are used if existing, otherwise extra material items). The new extraction operator annotation will not be set, as it was not defined for extracts prior to MeLuDI v1.3.2. The conversion tool is only needed once, when updated to MeLuDI v1.3.2, and can therefore be removed in later versions.

Design overview:

  1. JSP file index.jsp in resources/ updated in wizard names and by adding new conversion wizard "Update processed start lists with lot numbers from extracts" to the "Special conversion tools" sub-section of the "Admin" section.
  2. New JSP and javascript files update_start_list_with_lot_numbers_from_extract.jsp and update_start_list_with_lot_numbers_from_extract.js added to resources/admin/. The latter file calls Extraction servlet with new command "UpdateStartListsWithLotNumbersFromExtracts" to perform the conversion.
  3. JSP and javascript files in "resources/sampleproc/" updated to allow input of all lot numbers in the "Lab tracking protocol for FFPE extraction" wizard, storing them in the created start item list, reading the values from the latter in the "DNA/RNA registration/quantification" and "Lab tracking protocol/report copy" wizards, and displaying all values in any created labe tracking protocol/report:

    a. extraction_preparation.jsp
    b. extraction_preparation.js
    c. extraction_registration.jsp
    d. extraction_registration.js
    e. extraction_formcopy.jsp
    f. extraction_formcopy.js
    g. extraction_protocol2.jsp
    h. extraction_protocol.js

  4. Java data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new ItemList annotations for new lot numbers. Also new annotation for extraction operator for both extract and ItemList items.
  5. Java data access object class/file StartList.java in src/net/sf/basedb/meludi/dao/ updated by making item type constants static, and adding new public methods List<String> fetchItemNameListFromItemList(DbControl dc, String itemType) and List<String> fetchItemNameListFromItemList(DbControl dc, String itemType, boolean meludiItemsFirst). They return a list of extract member items of the desired type from the start list.
  6. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated for new annotation types.
  7. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartItemList" to return values for new annotations.
    b. Private method void loadRnaInfo(DbControl dc, SnapshotManager manager, Rna rna) updated to support new annotation type Annotationtype.EXTRACTION_OPERATOR.
    c. Private method void loadDnaInfo(DbControl dc, SnapshotManager manager, Dna dna) updated to support new annotation type Annotationtype.EXTRACTION_OPERATOR.
    d. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterStartItemList" to store values for new annotations.
    e. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterDnaRna" to store values for new annotations.
    f. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated with new command "UpdateStartListsWithLotNumbersFromExtracts". For each selected start item list, new lot number annotations of the latter will be set to values of the corresponding annotations for the first DNA extract, or if no such extract exists, the first RNA extract (MeLuDI items are used if existing, otherwise extra material items). The new extraction operator annotation will not be set, as it was not defined for extracts prior to MeLuDI v1.3.2.
Last edited 9 years ago by olle (previous) (diff)

comment:20 by olle, 9 years ago

(In [3501]) Refs #802. The DNA/RNA extraction wizards updated to allow input of all lot numbers of interest in the first wizard, the "Lab tracking protocol for Allprep isolation" wizard (name changed to "Lab tracking protocol for FFPE extraction"), and display of all the lot number values in the other wizards and created protocols/reports. Entry of extraction operator added. The lot numbers are now stored with the created item list. A conversion wizard is supplied for start item lists created prior to MeLuDI v1.3.2:

  1. JSP file index.jsp in resources/ updated in wizard names and by adding new conversion wizard "Update processed start lists with lot numbers from extracts" to the "Special conversion tools" sub-section of the "Admin" section.
  2. New JSP and javascript files update_start_list_with_lot_numbers_from_extract.jsp and update_start_list_with_lot_numbers_from_extract.js added to resources/admin/. The latter file calls Extraction servlet with new command "UpdateStartListsWithLotNumbersFromExtracts" to perform the conversion.
  3. JSP and javascript files in "resources/sampleproc/" updated to allow input of all lot numbers in the "Lab tracking protocol for FFPE extraction" wizard, storing them in the created start item list, reading the values from the latter in the "DNA/RNA registration/quantification" and "Lab tracking protocol/report copy" wizards, and displaying all values in any created labe tracking protocol/report:

    a. extraction_preparation.jsp
    b. extraction_preparation.js
    c. extraction_registration.jsp
    d. extraction_registration.js
    e. extraction_formcopy.jsp
    f. extraction_formcopy.js
    g. extraction_protocol2.jsp
    h. extraction_protocol.js

  4. Java data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new ItemList annotations for new lot numbers. Also new annotation for extraction operator for both extract and ItemList items.
  5. Java data access object class/file StartList.java in src/net/sf/basedb/meludi/dao/ updated by making item type constants static, and adding new public methods List<String> fetchItemNameListFromItemList(DbControl dc, String itemType) and List<String> fetchItemNameListFromItemList(DbControl dc, String itemType, boolean meludiItemsFirst). They return a list of extract member items of the desired type from the start list.
  6. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated for new annotation types.
  7. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartItemList" to return values for new annotations.
    b. Private method void loadRnaInfo(DbControl dc, SnapshotManager manager, Rna rna) updated to support new annotation type Annotationtype.EXTRACTION_OPERATOR.
    c. Private method void loadDnaInfo(DbControl dc, SnapshotManager manager, Dna dna) updated to support new annotation type Annotationtype.EXTRACTION_OPERATOR.
    d. Protected method void doPostHttpServletRequest req, HttpServletResponse resp) updated for command "RegisterStartItemList" to store values for new annotations.
    e. Protected method void doPostHttpServletRequest req, HttpServletResponse resp) updated for command "RegisterDnaRna" to store values for new annotations.
    f. Protected method void doPostHttpServletRequest req, HttpServletResponse resp) updated with new command "UpdateStartListsWithLotNumbersFromExtracts". For each selected start item list, new lot number annotations of the latter will be set to values of the corresponding annotations for the first DNA extract, or if no such extract exists, the first RNA extract (MeLuDI items are used if existing, otherwise extra material items). The new extraction operator annotation will not be set, as it was not defined for extracts prior to MeLuDI v1.3.2.
Version 0, edited 9 years ago by olle (next)

comment:21 by olle, 9 years ago

Functional specification update:

  • The DNA/RNA extraction wizards should be updated to allow removal of an unprocessed start item list related to a lab tracking protocol for FFPE extraction. An unprocessed start item list has not yet had any quantification or other measurement values registered for the extracts related to the list. The functionality should be implemented as a wizard, with the following properties:

    a. Step 1 should display a menu of unprocessed start item lists, from which a start list can be selected.
    b. Step 2 should display all values entered in step 2 of the wizard for "Lab tracking protocol for FFPE extraction", in order to ensure that the correct start item list has been selected. The values should be read-only.
    c. Step 3 should display the same table of extract source item data as step 3 of the wizard for "Lab tracking protocol for FFPE extraction", in order to ensure that the correct start item list has been selected. A "Remove start list" button should initially be disabled, unless the user checks a "Check to verify removal of start list" check box. This is to ensure, that the start item list is not removed by mistake.
    d. If the "Remove start list" button is enabled and pressed, the selected start item list should be removed directly, i.e. not moved to the trashcan, and the extract source items related to the start list should have their quantities changed from 0.0 to null, in order for them to appear again in the selection menu in step 1 of the "Lab tracking protocol for FFPE extraction" wizard.

Background:

  • A controlled way of removing an unprocessed start item list will simplify data management, if the user discovers that the wrong selection of extract source items was made in the "Lab tracking protocol for FFPE extraction" wizard. Furthermore, the many lot numbers entered for the protocol in step 2, are meant as guidelines only, and may be changed manually on a paper copy of the protocol, at the time of extraction. If several lot numbers need to be changed, it may be desirable to create a new protocol with the new correct lot numbers. The simplest way to achieve this is to remove the old start item list and create a new one having the same start list number, before one enters the "DNA/RNA registration/quantification" wizard.

Desing update:

  1. JSP file index.jsp in resources/ updated by adding new wizard "Optional - Undo last step, remove unprocessed start list" to the "DNA/RNA extraction wizards" section, after the "Lab tracking protocol for FFPE extraction" wizard. It will be coupled to new JSP file extraction_startlist_removal.jsp in resources/sampleproc/. The new wizard will be accompanied by a counter showing the number of unprocessed start item lists.
  2. New JSP and javascript files extraction_startlist_removal.jsp and extraction_startlist_removal.js added to resources/sampleproc/. The latter file calls Extraction servlet with new command "RemoveStartItemList" to perform the start item list removal.
  3. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp):
    a. Support for new command "RemoveStartItemList" added. The selected start item list will be removed, and the extract source items related to the start list have their quantities changed from 0.0 to null, in order for them to appear again in the selection menu in step 1 of the "Lab tracking protocol for FFPE extraction" wizard.
    b. Calls of CounterService.getInstance().setForceCount() have been added at the end of code for commands affecting the number of counted items.
Last edited 9 years ago by olle (previous) (diff)

comment:22 by olle, 9 years ago

(In [3502]) Refs #802. The "DNA/RNA extraction wizards" section updated with a new wizard to remove an unprocessed start item list:

  1. JSP file index.jsp in resources/ updated by adding new wizard "Optional - Undo last step, remove unprocessed start list" to the "DNA/RNA extraction wizards" section, after the "Lab tracking protocol for FFPE extraction" wizard. It will be coupled to new JSP file extraction_startlist_removal.jsp in resources/sampleproc/. The new wizard will be accompanied by a counter showing the number of unprocessed start item lists.
  2. New JSP and javascript files extraction_startlist_removal.jsp and extraction_startlist_removal.js added to resources/sampleproc/. The latter file calls Extraction servlet with new command "RemoveStartItemList" to perform the start item list removal.
  3. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp):
    a. Support for new command "RemoveStartItemList" added. The selected start item list will be removed, and the extract source items related to the start list have their quantities changed from 0.0 to null, in order for them to appear again in the selection menu in step 1 of the "Lab tracking protocol for FFPE extraction" wizard.
    b. Calls of CounterService.getInstance().setForceCount() have been added at the end of code for commands affecting the number of counted items.

comment:23 by olle, 9 years ago

Functional specification update:

  • The Sample source report wizards should be updated to only include MeLuDI samples in the statistics, i.e. extra material is excluded.

Design update:

  1. Java servlet class/file SampleReportServlet.java in src/net/sf/basedb/meludi/servlet/ updated in the following private methods to restrict sample queries to items with names starting with "ML":
    a. JSONObject createSampleCountReport(...)
    b. JSONObject createPatientCountReport(...)
    c. JSONObject createOverviewReport(...)
    d. List<Sample> createSampleListForMissingSampleDataReport(...)

comment:24 by olle, 9 years ago

(In [3504]) Refs #802. Sample source report wizards updated to only include MeLuDI samples in the statistics, i.e. extra material is excluded:

  1. Java servlet class/file SampleReportServlet.java in src/net/sf/basedb/meludi/servlet/ updated in the following private methods to restrict sample queries to items with names starting with "ML":
    a. JSONObject createSampleCountReport(...)
    b. JSONObject createPatientCountReport(...)
    c. JSONObject createOverviewReport(...)
    d. List<Sample> createSampleListForMissingSampleDataReport(...)

comment:25 by olle, 9 years ago

Functional specification update:

  • The "Statistics and reporting wizards" section should be extended with a "Sample processing statistics" wizard. The first statistic of the latter should be a "MeLuDI quarter/month report", allowing box plots of DNA/RNA original quantity and DNA ΔCt values to be generated. The DNA and RNA items used for the statistics should be selected as follows:

    1. MeLuDI items only, not extra material.
    2. Extracts with a case or specimen as parent, i.e. not extract child items.
    3. Extracts with QIAcube date set.
    4. Extracts passing optional project focus and/or site filters.

    The time period is determined from the item QIAcube date. The following input should be supported:

    a. Report period start and end dates.
    b. View type [Quarter + Month, Auto, Week, Month, Quarter, Year].
    c. Project focus filter [None, Melanoma, Lung cancer, Colon cancer, GIST, unknown].
    d. Chart site [All sites together, Helsingborg, ...].
    e. Chart data [All, Original quantity DNA, Original quantity RNA, DNA ΔCt value].

Design update:

  1. XML servlet configuration file servlets.xml in META-INF/ updated with entry for new servlet class MeludiQuarterMonthReportServlet.
  2. JSP file index.jsp in resources/ updated by adding new "Sample processing statistics" wizard to the "Statistics and reporting wizards" section. It will be coupled to new JSP file meludi_quarter_month_report_generator.jsp in resources/reports/.
  3. New JSP and javascript files meludi_quarter_month_report_generator.jsp, meludi_quarter_month_report_generator.js, and boxplot.js added to resources/reports/. Javascript file meludi_quarter_month_report_generator.js calls new servlet MeludiQuarterMonthReportServlet with command "meludiquartermonthreport" to create JSON data for the statistics, which is used by boxplot.js to create the box plots in HTML5 canvas elements.
  4. New java servlet class/file MeludiQuarterMonthReportServlet.java in src/net/sf/basedb/meludi/servlet/ added. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) supports commands "getSites" and "meludiquartermonthreport". The latter command creates JSON data for the statistics.
Last edited 9 years ago by olle (previous) (diff)

comment:26 by olle, 9 years ago

(In [3505]) Refs #802. Section "Statistics and reporting wizards" extended with a "Sample processing statistics" wizard, which initially supports creation of a "MeLuDI quarter/month report"; consisting of box plots of DNA/RNA original quantity and DNA ΔCt values:

  1. XML servlet configuration file servlets.xml in META-INF/ updated with entry for new servlet class MeludiQuarterMonthReportServlet.
  2. JSP file index.jsp in resources/ updated by adding new "Sample processing statistics" wizard to the "Statistics and reporting wizards" section. It will be coupled to new JSP file meludi_quarter_month_report_generator.jsp in resources/reports/.
  3. New JSP and javascript files meludi_quarter_month_report_generator.jsp, meludi_quarter_month_report_generator.js, and boxplot.js added to resources/reports/. Javascript file meludi_quarter_month_report_generator.js calls new servlet MeludiQuarterMonthReportServlet with command "meludiquartermonthreport" to create JSON data for the statistics, which is used by boxplot.js to create the box plots in HTML5 canvas elements.
  4. New java servlet class/file MeludiQuarterMonthReportServlet.java in src/net/sf/basedb/meludi/servlet/ added. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) supports commands "getSites" and "meludiquartermonthreport". The latter command creates JSON data for the statistics.

comment:27 by olle, 9 years ago

(In [3507]) Refs #802. MeLuDI README file in / updated with minor changes, e.g. change of software name from "MeLuDi" to "MeLuDI".

comment:28 by olle, 9 years ago

(In [3509]) Refs #802. Updates due to version number change to "1.3.2".

  1. Version number change to "1.3.2":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:29 by olle, 9 years ago

Resolution: fixed
Status: assignedclosed

Ticket closed as MeLuDI version 1.3.2 has been created.

Note: See TracTickets for help on using tickets.