Opened 10 years ago
Closed 10 years ago
#725 closed task (fixed)
MeLuDi v.1.1 bug fixes and improvements
Reported by: | olle | Owned by: | olle |
---|---|---|---|
Priority: | major | Milestone: | MeLuDi v1.2 |
Component: | net.sf.basedb.meludi | Keywords: | |
Cc: |
Description
This ticket covers bug fixes and improvements to MeLuDi v.1.1.
Change History (47)
comment:1 by , 10 years ago
Status: | new → assigned |
---|
comment:2 by , 10 years ago
comment:3 by , 10 years ago
(In [3057]) Refs #725. Updates due to version number change to "1.2-dev
".
- Version number change to "
1.2-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:4 by , 10 years ago
Functional specification update:
- Project focus should have a new option "Colon cancer".
Design update:
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. New public string constants defined for different project focus filter values, including value for "Colon cancer".
b. Protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include value for "Colon cancer" in list of allowed values forAnnotationtype.PROJECT_FOCUS
. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated to include new option "Colon cancer" for project focus. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated to include new option "Colon cancer" for project focus. - Sample report generator updated::
a. JSP filesamplereportgenerator.jsp
inresources/reports/
updated to include new option "Colon cancer" for project focus filter.
b. Javascript filesamplereportgenerator.js
inresources/reports/
updated in functiongetProjectFocusFilterDisplayText(projectFocusFilter)
to include new option "Colon cancer" for project focus filter.
c. Java servlet class/fileSampleReportServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated to use new public string constants for different project focus filter values defined inInstallServlet
, instead of locally defined constants. - Case summary updated:
a. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to include new option "Colon cancer" for project focus filter, and to use new public string constants for different project focus filter values defined inInstallServlet
, instead of locally defined constants.
comment:5 by , 10 years ago
(In [3058]) Refs #725. Project focus updated with new option "Colon cancer":
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. New public string constants defined for different project focus filter values, including value for "Colon cancer".
b. Protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include value for "Colon cancer" in list of allowed values forAnnotationtype.PROJECT_FOCUS
. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated to include new option "Colon cancer" for project focus. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated to include new option "Colon cancer" for project focus. - Sample report generator updated::
a. JSP filesamplereportgenerator.jsp
inresources/reports/
updated to include new option "Colon cancer" for project focus filter.
b. Javascript filesamplereportgenerator.js
inresources/reports/
updated in functiongetProjectFocusFilterDisplayText(projectFocusFilter)
to include new option "Colon cancer" for project focus filter.
c. Java servlet class/fileSampleReportServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated to use new public string constants for different project focus filter values defined inInstallServlet
, instead of locally defined constants. - Case summary updated:
a. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to include new option "Colon cancer" for project focus filter, and to use new public string constants for different project focus filter values defined inInstallServlet
, instead of locally defined constants.
comment:6 by , 10 years ago
Bug found in sample report generator:
- A bug was introduced in the sample report generator 2014-12-11 in change set [3028], when annotations of type
PROJECT_FOCUS
("ProjectFocus
") was only stored with the case item, but not with specimen items. However, java servletSampleReportServlet.java
insrc/net/sf/basedb/meludi/servlet/
was never updated in private methodboolean passProjectFocusFilter(DbControl dc, SnapshotManager manager, String projectFocusFilter, Sample s)
, that still obtained the project focus string by calling(String) Annotationtype.PROJECT_FOCUS.getAnnotationValue(dc, manager, s)
, both when samples
was of subtype "Case
" and "Specimen
". This led to no specimen ever pass the test, when a specific filter was chosen, even if the parent case had a project focus annotation value of the right type.
Suggested fix:
- Java servlet
SampleReportServlet.java
insrc/net/sf/basedb/meludi/servlet/
should be updated in private methodboolean passProjectFocusFilter(DbControl dc, SnapshotManager manager, String projectFocusFilter, Sample s)
to call a new private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to obtain the relevant project focus value. The latter method should check the annotation value for the parent case, if the input sample is of subtype "Specimen
".
comment:7 by , 10 years ago
(In [3060]) Refs #725. Bugged fixed in sample report generator, that led to no specimens pass the project focus filter test, when a specific project focus filter was chosen.
- Java servlet
SampleReportServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. private methodboolean passProjectFocusFilter(DbControl dc, SnapshotManager manager, String projectFocusFilter, Sample s)
is updated to call new private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to obtain the relevant project focus value.
b. New private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
added. It checks the project focus annotation value for the parent case, if the input sample is of subtype "Specimen
".
c. New private instance variablesItemSubtype subtypeSpecimen
andItemSubtype subtypeCase
with private accessor methods added for convenience. They are initialized in protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
.
d. Private methodSite fetchSite(DbControl dc, SnapshotManager manager, ItemSubtype subtypeCase, ItemSubtype subtypeSpecimen, Sample s)
is updated by removal of argumentsItemSubtype subtypeCase
andItemSubtype subtypeSpecimen
, and instead calling getter methodsItemSubtype getSubtypeCase()
andItemSubtype getSubtypeSpecimen()
to obtain the desired values.
comment:8 by , 10 years ago
Functional specification update:
- Specimen tube registration should include an input field for the estimated part of viable tumour cells, in percentage of the total number of cells. It should accept an integer value, but allowed to be
null
.
Design update:
- Java data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new integer annotation typeVIABLE_TUMOUR_CELLS_PERCENT
for samples. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include annotations of new integer annotation typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for specimen items. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated with new input field for integer value of percentage viable tumour cells.
b. Javascript filespecimentube.js
inresources/sampleproc/
updated in functioninitPage()
to add event handler to input fieldviableTumourCellsPercent
and coupling it to new functionviableTumourCellsPercentOnChange()
, that checks that the value is a reasonable percent value, in which case new global variableviableTumourCellsPercentIsValid
is set totrue
. FunctionvalidateStep2()
is updated to require that new global variableviableTumourCellsPercentIsValid
istrue
, for step 2 to be considered valid. Functionsubmit()
updated to obtain the value in the viable tumour cells percentage input field and include it in the data sent toSpecimenTubeServlet
.
c. Java servlet class/fileSpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodvoid setAnnotations(DbControl dc, Annotatable item, JSONObject jsonCase, int nofSections, String operatorComment)
to get optional integer value of percentage viable tumour cells fromJSONObject jsonCase
via string key "viableTumourCellsPercent
", and set the value for annotation of typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for the item in question. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated with new input field for integer value of percentage viable tumour cells.
b. Javascript filepersinfo.js
inresources/personal/
updated in functioninitPage()
to add event handler to input fieldviableTumourCellsPercent
and coupling it to new functionviableTumourCellsPercentOnChange()
, that checks that the value is a reasonable percent value, in which case new global variableviableTumourCellsPercentIsValid
is set totrue
. Function initializeStep3() is updated to obtain value for percentage viable tumour cells from specimen data, if an existing case should be updated. FunctionvalidateStep3()
is updated to require that new global variableviableTumourCellsPercentIsValid
istrue
, for step 3 to be considered valid, for a case with specimen(s). Functionsubmit()
updated to obtain the value in the viable tumour cells percentage input field and include it in the data sent toPersonalRegistrationServlet
.
c. Java servlet class/filePersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to load value of percentage viable tumour cells from annotation "viableTumourCellsPercent
" for existing specimens. Private methodvoid setAnnotations(DbControl dc, Annotatable item, JSONObject jsonCase, int nofSections, String operatorComment)
updated to get optional integer value of percentage viable tumour cells fromJSONObject jsonCase
via string key "viableTumourCellsPercent
", and set the value for annotation of typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for the item in question. - Case summary updated:
a. JSP filecase_summary.jsp
inresources/reports/
updated with new report field in the specimen section for integer value of percentage viable tumour cells.
b. Javascript filecase_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
by adding columns for values of viable tumour cells percentage for specimens.
c. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodvoid loadSpecimenInfo(DbControl dc, SnapshotManager manager, SpecimenTube specimen)
to load annotations of integer annotation typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
.
comment:9 by , 10 years ago
(In [3067]) Refs #725. Specimen tube registration updated to include an input field for the estimated part of viable tumour cells, in percentage of the total number of cells. It should accept an integer value, but allowed to be null
:
- Java data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new integer annotation typeVIABLE_TUMOUR_CELLS_PERCENT
for samples. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include annotations of new integer annotation typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for specimen items. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated with new input field for integer value of percentage viable tumour cells.
b. Javascript filespecimentube.js
inresources/sampleproc/
updated in functioninitPage()
to add event handler to input fieldviableTumourCellsPercent
and coupling it to new functionviableTumourCellsPercentOnChange()
, that checks that the value is a reasonable percent value, in which case new global variableviableTumourCellsPercentIsValid
is set totrue
. FunctionvalidateStep2()
is updated to require that new global variableviableTumourCellsPercentIsValid
istrue
, for step 2 to be considered valid. Functionsubmit()
updated to obtain the value in the viable tumour cells percentage input field and include it in the data sent toSpecimenTubeServlet
.
c. Java servlet class/fileSpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodvoid setAnnotations(DbControl dc, Annotatable item, JSONObject jsonCase, int nofSections, String operatorComment)
to get optional integer value of percentage viable tumour cells fromJSONObject jsonCase
via string key "viableTumourCellsPercent
", and set the value for annotation of typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for the item in question. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated with new input field for integer value of percentage viable tumour cells.
b. Javascript filepersinfo.js
inresources/personal/
updated in functioninitPage()
to add event handler to input fieldviableTumourCellsPercent
and coupling it to new functionviableTumourCellsPercentOnChange()
, that checks that the value is a reasonable percent value, in which case new global variableviableTumourCellsPercentIsValid
is set totrue
. Function initializeStep3() is updated to obtain value for percentage viable tumour cells from specimen data, if an existing case should be updated. FunctionvalidateStep3()
is updated to require that new global variableviableTumourCellsPercentIsValid
istrue
, for step 3 to be considered valid, for a case with specimen(s). Functionsubmit()
updated to obtain the value in the viable tumour cells percentage input field and include it in the data sent toPersonalRegistrationServlet
.
c. Java servlet class/filePersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to load value of percentage viable tumour cells from annotation "viableTumourCellsPercent
" for existing specimens. Private methodvoid setAnnotations(DbControl dc, Annotatable item, JSONObject jsonCase, int nofSections, String operatorComment)
updated to get optional integer value of percentage viable tumour cells fromJSONObject jsonCase
via string key "viableTumourCellsPercent
", and set the value for annotation of typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
for the item in question. - Case summary updated:
a. JSP filecase_summary.jsp
inresources/reports/
updated with new report field in the specimen section for integer value of percentage viable tumour cells.
b. Javascript filecase_summary.js
inresources/reports/
updated in functioncaseInfoLoaded(response)
by adding columns for values of viable tumour cells percentage for specimens.
c. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodvoid loadSpecimenInfo(DbControl dc, SnapshotManager manager, SpecimenTube specimen)
to load annotations of integer annotation typeAnnotationtype.VIABLE_TUMOUR_CELLS_PERCENT
.
comment:10 by , 10 years ago
comment:11 by , 10 years ago
Functional specification update:
- MeLuDi should be updated with a Counter service of the same type as in Reggie 3.0. Initially, the number of registered patients, specimen tubes, extracted DNA and RNA items should be counted, and the numbers be displayed in a new summary section on the main index page.
Design update:
- Two new java classes/files
CounterServiceFactory.java
andCounterService.java
insrc/net/sf/basedb/meludi/counter/
added. Java class/fileCounterService.java
will start a timer task and automatically update counters at least every 60 minutes. Package private methodvoid count()
first calls new public static synchronized methodSessionControl Meludi.getRootSessionControl(SessionControl systemSc)
to get aSessionControl
where the root user is logged in and the "MeLuDi
" project is active, after which it calls private methodsvoid countPatients(DbControl dc, JSONObject json)
,void countSpecimen(DbControl dc, JSONObject json)
, andvoid countExtracts(DbControl dc, JSONObject json)
to count the number of patient, specimen tube, DNA, and RNA items and return the numbers in a JSON object for JSON keys "patients-all
", "specimen-all
", "dna-all-extracted
", and "rna-all-extracted
", respectively. Public methodJSONObject getCurrentCounts()
returns a JSON object with the current count values. - Extension XML configuration file
extensions.xml
inMETA-INF/
is updated with a new entry for factory classnet.sf.basedb.meludi.counter.CounterServiceFactory
. - Java servlet class/file
SessionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
to support command "GetCounters
" by adding the result of a call toCounterService.getInstance().getCurrentCounts()
to the returned JSON object for JSON key "counts
". - Java class/file
Meludi.java
insrc/net/sf/basedb/meludi/
updated:
a. New private static variableSessionControl rootSc
added.
b. New public static synchronized methodSessionControl getRootSessionControl(SessionControl systemSc)
added. It returns a session control where the root user is logged in and the "MeLuDi
" project is active. Note that the name of the project is hard coded, and will therefore only work with this project (in Reggie the corresponding project is "SCAN-B
").
c. New public static synchronized methodvoid closeRootSessionControl()
added. It closes the root session control if it is active. - Main index page updated with new summary section showing the number of registered patients, specimen tubes, DNA, and RNA extracts:
a. JSP fileindex.jsp
inresources/
updated with new counter style entries and newdiv
block with entries for patient, specimen, DNA, and RNA counter values corresponding todata-counter
string keys "patients-all
", "specimen-all
", "dna-all-extracted
", and "rna-all-extracted
", respectively.
b. Javascript fileindex.js
inresources/
updated in functioninitPage()
by exchanging call to functioncountNext()
for call to new functionloadCounts()
. FunctioncountNext()
exchanged for new functionloadCounts()
, that sends an Ajax request with command "GetCounters
" toSessionServlet
, setting functiononCounted(request)
as callback function. FunctiononCounted(request)
updated to support a list of counters and set them to the returned counter values.
comment:12 by , 10 years ago
(In [3100]) Refs #725. MeLuDi updated with a Counter service of the same type as in Reggie 3.0. Initially, the number of registered patients, specimen tubes, extracted DNA and RNA items are counted, and the numbers are displayed in a new summary section on the main index page:
- Two new java classes/files
CounterServiceFactory.java
andCounterService.java
insrc/net/sf/basedb/meludi/counter/
added. Java class/fileCounterService.java
will start a timer task and automatically update counters at least every 60 minutes. Package private methodvoid count()
first calls new public static synchronized methodSessionControl Meludi.getRootSessionControl(SessionControl systemSc)
to get aSessionControl
where the root user is logged in and the "MeLuDi
" project is active, after which it calls private methodsvoid countPatients(DbControl dc, JSONObject json)
,void countSpecimen(DbControl dc, JSONObject json)
, andvoid countExtracts(DbControl dc, JSONObject json)
to count the number of patient, specimen tube, DNA, and RNA items and return the numbers in a JSON object for JSON keys "patients-all
", "specimen-all
", "dna-all-extracted
", and "rna-all-extracted
", respectively. Public methodJSONObject getCurrentCounts()
returns a JSON object with the current count values. - Extension XML configuration file
extensions.xml
inMETA-INF/
is updated with a new entry for factory classnet.sf.basedb.meludi.counter.CounterServiceFactory
. - Java servlet class/file
SessionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
to support command "GetCounters
" by adding the result of a call toCounterService.getInstance().getCurrentCounts()
to the returned JSON object for JSON key "counts
". - Java class/file
Meludi.java
insrc/net/sf/basedb/meludi/
updated:
a. New private static variableSessionControl rootSc
added.
b. New public static synchronized methodSessionControl getRootSessionControl(SessionControl systemSc)
added. It returns a session control where the root user is logged in and the "MeLuDi
" project is active. Note that the name of the project is hard coded, and will therefore only work with this project (in Reggie the corresponding project is "SCAN-B
").
c. New public static synchronized methodvoid closeRootSessionControl()
added. It closes the root session control if it is active. - Main index page updated with new summary section showing the number of registered patients, specimen tubes, DNA, and RNA extracts:
a. JSP fileindex.jsp
inresources/
updated with new counter style entries and newdiv
block with entries for patient, specimen, DNA, and RNA counter values corresponding todata-counter
string keys "patients-all
", "specimen-all
", "dna-all-extracted
", and "rna-all-extracted
", respectively.
b. Javascript fileindex.js
inresources/
updated in functioninitPage()
by exchanging call to functioncountNext()
for call to new functionloadCounts()
. FunctioncountNext()
exchanged for new functionloadCounts()
, that sends an Ajax request with command "GetCounters
" toSessionServlet
, setting functiononCounted(request)
as callback function. FunctiononCounted(request)
updated to support a list of counters and set them to the returned counter values.
comment:13 by , 10 years ago
(In [3101]) Refs #725. MeLuDi updated in servlets managing items to call CounterService.getInstance().setForceCount()
after installation or registration of new items, forcing an update of the item counter values displayed on the main index page:
- Java servlet
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to callCounterService.getInstance().setForceCount()
after having created new items. - Java servlet
PersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
to callCounterService.getInstance().setForceCount()
after having created new items. - Java servlet
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
to callCounterService.getInstance().setForceCount()
after having created new items.
comment:14 by , 10 years ago
(In [3102]) Refs #725. MeLuDi updated in servlets to not use full class name (including package name) when calling CounterService.getInstance().setForceCount()
after installation or registration of new items:
- Java servlet
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to not use full class name when callingCounterService.getInstance().setForceCount()
after having created new items. - Java servlet
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
to not use full class name when callingCounterService.getInstance().setForceCount()
after having created new items.
comment:15 by , 10 years ago
Functional specification update:
- MeLuDi should be updated to display a counter value next to the entry for updating existing cases with patient info on the main index page. The counter should show the number of case items without parent, i.e. patient.
Design update:
- Class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated:
a. Package private methodvoid count()
updated to call new private methodvoid countCases(DbControl dc, JSONObject json)
, and include the result in the returned JSON object.
b. New private methodvoid countCases(DbControl dc, JSONObject json)
added. It counts the full number of cases, and the number of cases without parent item, and returns the numbers in a JSON object for JSON keys "cases-all
" and "cases-without-patient
", respectively. - Main index page updated to display the number os cases without patient next to the entry for updating existing cases with patient info:
a. JSP fileindex.jsp
inresources/
updated with new counterspan
block next to the entry for updating existing cases with patient info. The counter displays a value corresponding todata-counter
string key "cases-without-patient
".
comment:16 by , 10 years ago
(In [3103]) Refs #725. MeLuDi updated to display a counter value next to the entry for updating existing cases with patient info on the main index page. The counter shows the number of case items without parent, i.e. patient:
- Class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated:
a. Package private methodvoid count()
updated to call new private methodvoid countCases(DbControl dc, JSONObject json)
, and include the result in the returned JSON object.
b. New private methodvoid countCases(DbControl dc, JSONObject json)
added. It counts the full number of cases, and the number of cases without parent item, and returns the numbers in a JSON object for JSON keys "cases-all
" and "cases-without-patient
", respectively. - Main index page updated to display the number os cases without patient next to the entry for updating existing cases with patient info:
a. JSP fileindex.jsp
inresources/
updated with new counterspan
block next to the entry for updating existing cases with patient info. The counter displays a value corresponding todata-counter
string key "cases-without-patient
".
comment:17 by , 10 years ago
Bug to be fixed:
- The wizard for registering a new case without patient info only checks if any specimens have already been registered for a case with the input case name, but does not check if DNA or RNA extracts have been registered for it. The latter checks should be added, since the wizard is not intended for updating.
Design update:
- Java servlet
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to check if DNA or RNA extracts have been registered for the input case name. If any extracts are found, anInvalidDataException
should be thrown, with a message that the wizard cannot be used for updating.
comment:18 by , 10 years ago
(In [3104]) Refs #725. Bug fixed in wizard for registering a new case without patient info. It only checked if specimens had already been registered for a case with the input case name, but not if DNA or RNA extracts had been registered for it. The latter checks are added, since the wizard is not intended for updating:
- Java servlet
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to check if DNA or RNA extracts have been registered for the input case name. If any extracts are found, anInvalidDataException
is thrown, with a message that the wizard cannot be used for updating.
comment:19 by , 10 years ago
(In [3105]) Refs #725. Sample and extract registration wizards updated to support input of arrival and sampling dates using a BASE pop-up calendar:
- JSP file
specimentube.jsp
inresources/sampleproc/
updated to display a calendar icon next to input fields for arrival and sampling dates. Clicking on the icon displays a pop-up calendar, where the corresponding date value can be selected by clicking on a date in the calendar. - JSP file
persinfo.jsp
inresources/personal/
updated to display a calendar icon next to input fields for arrival and sampling dates. Clicking on the icon displays a pop-up calendar, where the corresponding date value can be selected by clicking on a date in the calendar.
comment:20 by , 10 years ago
(In [3106]) Refs #725. Bug not allowing null
values for the estimated part of viable tumour cells, when registering new cases, has been fixed:
- Javascript file
specimentube.js
inresources/sampleproc/
updated:
a. Global variableviableTumourCellsPercentIsValid
is now initialized totrue
, instead offalse
.
b. FunctionviableTumourCellsPeercentOnChange()
updated to only apply checks using functionparseInt()
, if the input string differs fromnull
. - Javascript file
persinfo.js
inresources/personal/
updated:
a. Global variableviableTumourCellsPercentIsValid
is now initialized totrue
, instead offalse
.
b. FunctionviableTumourCellsPeercentOnChange()
updated to only apply checks using functionparseInt()
, if the input string differs fromnull
.
comment:21 by , 10 years ago
(In [3120]) Refs #725. Case summary updated further to ensure that titles fit on a single line:
- Cascading style sheet file
case_summary.css
inresources/css/
updated by changing padding for table header. - JSP file
case_summary.jsp
inresources/reports/
updated by shortening title of specimen report fields "% Viable tumour cells
" and "Op. delivery comment
" to "% Viab. tumour cells
" and "Op. delivery comm.
", respectively.
comment:22 by , 10 years ago
(In [3122]) Refs #725. MeLuDi updated to use BASE version "3.4.0" instead of "3.3.2
":
- Outermost Ant XML build file
build.xml
in/
updated in propertydepend.base-version
and by removal of references to librarybase-webservices-client-*.jar
, that is no longer used in BASE 3.4.0. - Extensions XML configuration file
extensions.xml
inMETA-INF/
updated in xml tag "min-base-version", by exchanging value3.3.2
for3.4.0
. - Library file
json-simple-1.1.jar
inlib/compile/
exchanged forjson-simple-1.1.1.jar
.
comment:23 by , 10 years ago
Functional specification update:
- The set of mutation analysis options has been updated due to new referral forms:
Previous mutation analysis option set (check boxes, default = none selected):
Option text | Option value |
KRAS/NRAS (exon 2-4) | KRAS_NRAS
|
BRAF (codon 600) | BRAF
|
EGFR (exon 18-21) | EGFR
|
New mutation analysis option set (check boxes, default = none selected):
Option text | Option value |
KRAS exon 2-4 | KRAS
|
NRAS exon 2-4 | NRAS
|
BRAF codon 600 | BRAF
|
EGFR exon 18-21 | EGFR
|
ALK/EML4 translocation | ALKEML4
|
PDGFRA exon 11, 13, 17 | PDGFRA
|
KIT exon 9, 11, 13, 17, 18 | KIT
|
Other analysis | Other
|
Design update:
- It was decided to exchange the
Annotationtype.MUTATION_ANALYSIS
value option "KRAS_NRAS
" for two new values "KRAS
" and "NRAS
", since currently few samples have been registered with the former value. These items should have the mutation analysis updated as part of the installation to have both values "KRAS
" and "NRAS
" selected, instead of "KRAS_NRAS
", since the latter option will no longer be available.
- JSP file
specimentube.jsp
inresources/sampleproc/
updated in check box options for mutation analysis to display options on the new referral form. - Javascript file
specimentube.js
inresources/sampleproc/
updated in functionstreg.submit()
to obtain the mutation analysis selection from the form in JSP filespecimentube.jsp
and transfer them to servletSpecimenTubeServlet
. Also removal of unused special event handlers for mutation analysis check boxes in functionstreg.initPage()
. - JSP file
persinfo.jsp
inresources/personal/
updated in check box options for mutation analysis to display options on the new referral form. - Javascript file
persinfo.js
inresources/personal/
updated in functionpersinfo.submit()
to obtain the mutation analysis selection from the form in JSP filepersinfo.jsp
and transfer them to servletPersonalRegistrationServlet
. Also removal of unused special event handlers for mutation analysis check boxes in functionpersinfo.initPage()
. - Java class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
with new value options forAnnotationtype.MUTATION_ANALYSIS
. Old value option "KRAS_NRAS
" should be exchanged for the two new values "KRAS
" and "NRAS
". - Java class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateSpecimenTubes
" to obtain a list of selected mutation analysis values, that includes the new value options. Old value option "KRAS_NRAS
" should be exchanged for the two new values "KRAS
" and "NRAS
". - Java class/file
PersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateCase
" to obtain a list of selected mutation analysis values, that includes the new value options. Old value option "KRAS_NRAS
" should be exchanged for the two new values "KRAS
" and "NRAS
".
comment:24 by , 10 years ago
(In [3123]) Refs #725. Specimen tube registration updated in the set of mutation analysis options, in order to be compatible with new referral forms. Since currently few samples have been registered with removed value "KRAS_NRAS
", these items should have the mutation analysis updated as part of the installation to have both new values "KRAS
" and "NRAS
" selected, instead of "KRAS_NRAS
".
- JSP file
specimentube.jsp
inresources/sampleproc/
updated in check box options for mutation analysis to display options on the new referral form. - Javascript file
specimentube.js
inresources/sampleproc/
updated in functionstreg.submit()
to obtain the mutation analysis selection from the form in JSP filespecimentube.jsp
and transfer them to servletSpecimenTubeServlet
. Also removal of unused special event handlers for mutation analysis check boxes in functionstreg.initPage()
. - JSP file
persinfo.jsp
inresources/personal/
updated in check box options for mutation analysis to display options on the new referral form. - Javascript file
persinfo.js
inresources/personal/
updated in functionpersinfo.submit()
to obtain the mutation analysis selection from the form in JSP filepersinfo.jsp
and transfer them to servletPersonalRegistrationServlet
. Also removal of unused special event handlers for mutation analysis check boxes in functionpersinfo.initPage()
. - Java class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
with new value options forAnnotationtype.MUTATION_ANALYSIS
. Old value option "KRAS_NRAS
" is exchanged for the two new values "KRAS
" and "NRAS
". - Java class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateSpecimenTubes
" to obtain a list of selected mutation analysis values, that includes the new value options. Old value option "KRAS_NRAS
" is exchanged for the two new values "KRAS
" and "NRAS
". - Java class/file
PersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
for command "CreateCase
" to obtain a list of selected mutation analysis values, that includes the new value options. Old value option "KRAS_NRAS
" is exchanged for the two new values "KRAS
" and "NRAS
".
comment:25 by , 10 years ago
Functional specification update:
- Project focus should have a new option "GIST (Gastrointestinal stromal tumour)".
Design update:
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. New public string constant defined for "GIST (Gastrointestinal stromal tumour)".
b. Protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include value for "GIST (Gastrointestinal stromal tumour)" in list of allowed values forAnnotationtype.PROJECT_FOCUS
. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus. - Sample report generator updated:
a. JSP filesamplereportgenerator.jsp
inresources/reports/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter.
b. Javascript filesamplereportgenerator.js
inresources/reports/
updated in functiongetProjectFocusFilterDisplayText(projectFocusFilter)
to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter. - Case summary updated:
a. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter.
comment:26 by , 10 years ago
(In [3139]) Refs #725. Project focus updated with new option "GIST (Gastrointestinal stromal tumour)":
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. New public string constant defined for "GIST (Gastrointestinal stromal tumour)".
b. Protected methoddoGet(HttpServletRequest req, HttpServletResponse resp)
updated to include value for "GIST (Gastrointestinal stromal tumour)" in list of allowed values forAnnotationtype.PROJECT_FOCUS
. - Specimen tube registration updated:
a. JSP filespecimentube.jsp
inresources/sampleproc/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus. - Personal information registration updated:
a. JSP filepersinfo.jsp
inresources/personal/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus. - Sample report generator updated:
a. JSP filesamplereportgenerator.jsp
inresources/reports/
updated to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter.
b. Javascript filesamplereportgenerator.js
inresources/reports/
updated in functiongetProjectFocusFilterDisplayText(projectFocusFilter)
to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter. - Case summary updated:
a. Java servlet class/fileCaseSummaryServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in private methodString fetchProjectFocus(DbControl dc, SnapshotManager manager, Sample s)
to include new option "GIST (Gastrointestinal stromal tumour)" for project focus filter.
comment:27 by , 10 years ago
Functional specification update:
- Case registration with and without patient info should be updated to initially show the next available case name in the case name input field, as is already done for label generation.
Design update:
- Specimen tube registration updated in Javascript file
specimentube.js
inresources/sampleproc/
:
a. FunctioninitPage()
updated at end to send an Ajax request to servletLabelGenerationServlet
to count number of registered cases and send the result to new functioncaseInfoLoadedStep1()
.
b. New functioncaseInfoLoadedStep1()
added. It retrieves the number of registered cases from the Ajax request and inserts the next available case name in the case name input field. - Personal information registration updated in Javascript file
persinfo.js
inresources/personal/
:
a. FunctioninitPage()
updated at end to send an Ajax request to servletLabelGenerationServlet
to count number of registered cases and send the result to new functioncaseInfoLoadedStep1()
.
b. New functioncaseInfoLoadedStep1()
added. It retrieves the number of registered cases from the Ajax request and inserts the next available case name in the case name input field.
comment:28 by , 10 years ago
(In [3148]) Refs #725. Case registration with and without patient info updated to initially show the next available case name in the case name input field, as is already done for label generation:
- Specimen tube registration updated in Javascript file
specimentube.js
inresources/sampleproc/
:
a. FunctioninitPage()
updated at end to send an Ajax request to servletLabelGenerationServlet
to count number of registered cases and send the result to new functioncaseInfoLoadedStep1()
.
b. New functioncaseInfoLoadedStep1()
added. It retrieves the number of registered cases from the Ajax request and inserts the next available case name in the case name input field. - Personal information registration updated in Javascript file
persinfo.js
inresources/personal/
:
a. FunctioninitPage()
updated at end to send an Ajax request to servletLabelGenerationServlet
to count number of registered cases and send the result to new functioncaseInfoLoadedStep1()
.
b. New functioncaseInfoLoadedStep1()
added. It retrieves the number of registered cases from the Ajax request and inserts the next available case name in the case name input field.
comment:29 by , 10 years ago
Functional specification updates for DNA/RNA extraction wizard(s):
- MeLuDi should support registration of DNA/RNA extracted from existing specimens, including concentration measurements and delta-Ct values for DNA. Measurements should also be stored for input RNA/DNA.
- It should be possible to select up to 24 items of unprocessed specimens or unquantified RNA/DNA, and create a Lab Tracking Sheet for AllPrep isolation for the selection.
- Newly created RNA are extracted from a specimen in a QIAcube run, and a QIAcube position should therefore be stored for the former.
- RNA concentrations are measured using a NanoDrop instrument, both for newly created and input RNA:
a. A NanoDrop plate position should be allocated.
b. A Sample id file intended for use by the NanoDrop instrument should be created.
c. It should be possible to import measurement values from a NanoDrop value file. - Newly created DNA are extracted from a specimen in a process, not involving a QIAcube run, and no QIAcube position should therefore be stored for the former.
- DNA concentrations are measured using a Qubit instrument, both for newly created and input DNA:
a. It should be possible to input Qubit measurement values by hand in the web form.
b. It should be possible to import measurement values from a Qubit value file, provided that the instrument is reset before the measurement session, and that the measurements are made in the same order as in the Lab Tracking Sheet for AllPrep isolation, since the Qubit value file identifies values by timestamp, instead of sample names. - DNA delta-Ct values are measured using a qPCR instrument, both for newly created and input DNA:
a. A Sample id file intended for use by the qPCR instrument should be created.
b. It should be possible to import measurement values from a qPCR value file.
More specifications concerning QIAcube runs:
- Two QIAcube instruments are used, a primary and a secondary one. If only one instrument is needed, the primary is used. The instruments are specified by a prefix consisting of an uppercase letter. It should be possible to modify the prefixes for the primary and secondary QIAcubes, since different physical instruments might be used. The default prefixes for the primary and secondary instruments are "C" and "A", respectively:
a. For 1-12 specimens, the primary instrument is used.
b. For 13-24 specimens, the samples are distributed as evenly as possible between the two instruments.
c. For each QIAcube, the samples are allocated positions according to the QIAcube placement scheme, in order to ensure stability of the centrifuge.
d. Originally, 1 and 11 samples are not allowed in a QIAcube run, since they cannot be distributed so as to result in acceptable stability of the centrifuge. However, they will be allowed here, if a counterbalance blank vial filled with water is added, to ensure stability. A reminder note should be displayed to minimize the risk, that the counterbalance vial is forgotten.
e. A generalized QIAcube position will be used in the form, consisting of a QIAcube instrument prefix letter followed by the traditional position number in the instrument.
f. The generalized QIAcube position will be stored as two annotations for an extract; the original QIAcube position number and a QIAcube instrument prefix.
More specifications concerning allocation of NanoDrop plate positions:
- NanoDrop plate positions should be allocated in consecutive order, starting with "A1":
a. Plate positions are first allocated for RNA extracted from specimens, in the order of the generalized QIAcube positions, where positions in the primary instrument comes before those in the secondary. Note that there may be gaps in the QIAcube positions for an instrument, due to the necessity of placing the samples in a way that ensures balance of the centrifuge, but there should not be a corresponding gap in the sequence of NanoDrop plate positions.
b. Plate positions for input RNA are allocated in consecutive order, starting with the first available, efter positions have been allocated for newly created RNA.
More specifications concerning the created Lab Tracking Sheet for AllPrep isolation:
- The sheet should contain the following parts, from top to bottom:
1. A header.
2. Upper info section.
3. Table section.
4. Lower info section. - The header should contain two boxes:
1. Plate ID.
2. Operator (pre-filled). - The upper info section should contain:
1. Date for isolation (pre-filled)
2. FFPE DNA/RNA kit lot no. (pre-filled)
3. Kapa SYBR Fast lot. no.
4. Quality Control Primers (QCP) RGT
5. QUBIT DNA High Sens
6. QUBIT DNA Broad Range - The table section should contain the following columns:
1. Sample (pre-filled)
2. Pos. in QIAcube (pre-filled)
3. NanoDrop Plate Pos. (pre-filled)
4. RNA conc. ND (ng/ul)
5. DNA conc. Qubit (ng/ul)
6. Delta Ct
7. Remark - The lower info section should contain:
1. DNA elution volume (pre-filled)
2. DNAse treated RNA
3. Proteinase K treatment
Two wizards should be developed:
- Lab tracking protocol for Allprep isolation
- DNA/RNA registration/quantification
Lab tracking protocol for Allprep isolation wizard
- The wizard should contain 3 steps.
- Step 1 should display a list of unprocessed specimen and input RNA/DNA items, from which the user can select up to 24 items.
- Step 2 should allow input of the following data:
a. Extraction date.
b. Extraction protocol.
c. RNA default volume (µl).
d. DNA default volume.
e. QIAcube date.
f. Primary QIAcube prefix.
g. Secondary QIAcube prefix.
h. QIAcube run number.
i. Operator.
j. Allprep DNA/RNA FFPE kit lot no. - Step 3 should display a table with 11 columns, 6 of which contain values, while the other 5 are "dummy" columns, which will get values in the next wizard. The dummy columns are shown, in order to for the two wizards to have a similar layout, and while some are present in the lab tracking sheet to be created:
1. Specimen/RNA/DNA name for selected items.
2. QIAcube position.
3. Storage box for selected item, if existing.
4. NanoDrop plate position.
5. RNA volume (µl).
6. RNA concentration (ng/µl) (dummy).
7. RNA quantity (µg) (dummy).
8. DNA volume (µl).
9. DNA concentration (ng/µl) (dummy).
9. DNA quantity (µg) (dummy).
10. DNA qPCR ΔCt value (dummy).
11. Comment.
The following functionality should exist through buttons:
a. Downloading of a NanoDrop Sample ID file, intended to be imported in the NanoDrop software before analysis.
b. Downloading of a qPCR Sample ID file, intended to be imported in the qPCR software before analysis.
c. Creation of a Lab Tracking Sheet for Allprep isolation.
DNA/RNA registration/quantification
- The wizard should contain 3 steps.
- Step 1 should display a list of unprocessed specimen and input RNA/DNA items, from which the user can select up to 24 items.
- Step 2 should allow input of the following data:
a. Extraction date.
b. Extraction protocol.
c. RNA default volume (µl).
d. DNA default volume.
e. Specimen Xylene lot no.
f. Specimen ETOH 99.5% lot no.
g. Specimen PKD buffer lot no.
h. Specimen ATL buffer lot no.
i. Specimen Proteinase K lot no.
j. Specimen RNase A lot no.
k. QIAcube date.
l. Primary QIAcube prefix.
m. Secondary QIAcube prefix.
n. QIAcube run number.
o. Operator.
p. Allprep DNA/RNA FFPE kit lot no.
q. ETOF 99.5% lot no.
r. Buffer RLT lot no.
s. Buffer FRN lot no.
t. Buffer AL lot no.
u. Buffer AW1 lot no.
v. Buffer AW2 lot no.
w. Buffer ATE lot no.
x. Buffer RDD lot no.
y. RNase free water lot no.
z. DNAse mix lot no.
z2. RNeasy Min Elute Spin Column.
z3. QIAamp Min Elute Spin Column.
The following functionality should exist:
a. The lot no. input fields should be pre-filled with values from the latest created DNA specimen, extracted from a specimen.
b. It should be possible to select a text file in comma-separated format with used lot no. values, that should be imported to the input fields. - Step 3 should display a table with 11 columns, 6 of which contain values, while the other 5 are filled with values after the user has finished input in this wizard step:
1. Specimen/RNA/DNA name for selected items.
2. QIAcube position.
3. Storage box for selected item, if existing.
4. NanoDrop plate position.
5. RNA volume (µl).
6. RNA concentration (ng/µl).
7. RNA quantity (µg).
8. DNA volume (µl).
9. DNA concentration (ng/µl).
9. DNA quantity (µg).
10. DNA qPCR ΔCt value.
11. Comment.
The following functionality should exist through buttons:
a. It should be possible to select a NanoDrop value file, that should be imported to give RNA concentrations.
b. It should be possible to select a Qubit value file, that should be imported to give DNA concentrations.
c. It should be possible to select a qPCR value file, that should be imported to give DNA qPCR ΔCt values.
d. Creation of a Lab Tracking Sheet for Allprep isolation, with input values present in the table.
e. Registration of newly created RNA/DNA items and updating of input RNA/DNA items with the found quantities.
comment:30 by , 10 years ago
(In [3156]) Refs #725. Bug fixed in case registration with patient info when showing the next available case name in the case name input field, introduced in change set [3148]. Since the case name is validated when the contents of input field changes, the default case name was never set as valid, leading to the personal number entered always being regarded as non-standard:
- Javascript file
persinfo.js
inresources/personal/
updated in functionpersinfo.caseInfoLoadedStep1()
to call functionpersinfo.caseNameOnChange()
at the end to validate the default case name.
comment:31 by , 10 years ago
(In [3157]) Refs #725. Bug fixed in Javascript file persinfo.js
in resources/personal/
by renaming function persinfo.samplingDateTimeOnChange()
to samplingDateOnChange()
, which is the name referred to in event handler in function persinfo.initPage()
. Also, the new name is more appropriate, as only a pure date without time specification is input:
- Function
persinfo.samplingDateTimeOnChange()
renamed tosamplingDateOnChange()
.
comment:32 by , 10 years ago
(In [3159]) Refs #725. Specimen tube registration without and with patient info updated to ensure that arrival date is not before sampling date (date of surgical removal):
- Javascript file
specimentube.js
inresources/sampleproc/
updated in functionstreg.samplingDateOnChange()
to check that arrival date is not before sampling date, and if not display an error message. - Javascript file
persinfo.js
inresources/personal/
updated in functionpersinfo.samplingDateOnChange()
to check that arrival date is not before sampling date, and if not display an error message.
comment:33 by , 10 years ago
Design specification updates related to the functional specification updates for DNA/RNA extraction wizard(s):
Placeholder for information to be added at a later time.
comment:34 by , 10 years ago
(In [3176]) Refs #725. MeLuDi updated with basic functionality for the DNA/RNA extraction wizards. For details regarding the design, please check Ticket #725 (MeLuDi v.1.1 bug fixes and improvements):
- JSP and Javascript files
index.jsp
andindex.js
inresources/
updated with two new wizards, "Lab tracking protocol for Allprep isolation" and "DNA/RNA registration/quantification". - A number of new JSP and Javascript files added to
resources/sampleproc/
, containing the user interface for the new wizards:
a.extraction_preparation
manages the Allprep isolation wizard.
b.edit_dnarna_prep_details
manages the pop-up dialog for editing values in a table row in the Allprep isolation wizard.
c.extraction_registration
manages the DNA/RNA registration/quantification wizard.
d.edit_dnarna_details
manages the pop-up dialog for editing values in a table row in the DNA/RNA registration/quantification wizard.
e. JSP fileextraction_protocol2.jsp
and Javascript fileextraction_protocol.js
manage creation of the lab tracking sheet for Allprep isolation, with values obtained from the other Javascript files. - Service class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated with new counters. - Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new annotations for extracts. - Data access object classes/files
Dna.java
,Rna.java
, andSpecimenTube.java
insrc/net/sf/basedb/meludi/dao/
updated. - New Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
added. It contains the main functionality for the DNA/RNA extraction wizards, together with the Javascript files. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated for the new extract annotations. - Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated. - Servlet configuration XML file
servlets.xml
inMETA-INF
updated with entry for new servletExtractionServlet
.
comment:35 by , 10 years ago
(In [3177]) Refs #725. Wizards "Lab tracking protocol for Allprep isolation" and "DNA/RNA registration/quantification" updated by removing the "Pre-normalize" column, since it is not used in the current registration stage. The code is commented out, in order to simplify its re-appearance in the future:
- Javascript files
extraction_preparation.js
andextraction_registration.js
inresources/sampleproc/
updated by commenting out code for the "Pre-normalize" column.
comment:36 by , 10 years ago
Functional specification updates for DNA/RNA extraction wizard(s) with support for the batch concept:
- The selection of unprocessed specimen and input RNA/DNA items ("extract source items") in step 1 of the "Lab tracking protocol for Allprep isolation" wizard should be considered a batch, which should be assigned to a start DNA plate. The wizards should support this notion not only by creating the start DNA plate, but also by allowing the latter to be used to represent the batch of selected extract source items in later stages.
- The date entered at input field in section "
Extraction
" in the "Lab tracking protocol for Allprep isolation" wizard should be renamed "Isolation date
", and stored as an annotation with created DNA/RNA extracts. - The default DNA/RNA volume input fields should be removed from the "Lab tracking protocol for Allprep isolation" wizard, but remain in the "DNA/RNA registration/quantification" wizard. The reason is that the values are not known when the first wizard is used.
- The wizards should be updated to support extra samples outside the MeLuDi project to be included in a QIAcube run, when there are QIAcube positions available. The number of extra samples should be entered in the "Lab tracking protocol for Allprep isolation" wizard, as they influence what QIAcube positions should be filled, in order to ensure balance of the centrifuge. The created lab tracking sheet should also include lines for the extra samples, but no measurement values should be stored in the MeLuDi database for them.
Design updates:
- Specifications of the start DNA plate:
a. The plate should be a DNA reaction plate for extracts.
b. A start DNA plate should have a name consisting of prefix "LP" + a five-figure serial number with initial zeroes, starting from "LP00001".
c. The start plate item should have a multi-valued "SourceItemNames
" String annotation, intended to store the item names of the extract source items included in the batch.
Lab tracking protocol for Allprep isolation wizard updates:
- Step 1 still contains selection of a batch of unprocessed/unquantified specimens/RNA/DNA, except that only items with original quantity equal to
null
is shown in the selection list. - Step 2 should have an initial input field for "Start plate name", which will be automatically filled with the next name after stored start DNA plate with highest serial number. If no start plate is stored, plate name "LP00001" is used.
- Step 3 has two additions; the created Lab Tracking Sheet for Allprep isolation now has the chosen start DNA plate name inserted in the header at "Plate ID:", and a new button "Register" has been added. Clicking the "Register" button will create the chosen start DNA plate, which will have an annotation "
SourceItemNames
", containing a list of names of the extract source items, selected in step 1. The latter items will also be updated by having the original quantity set to 0.0, which will prevent them from appearing in the selection list, if the wizard is run again.
DNA/RNA registration/quantification wizard updates:
- Step 1 should be updated to allow selection of an unprocessed start DNA plate, representing the batch of extract source items selected in the previous wizard. A start DNA plate is considered unprocessed, if its event date equals
null
. - Step 2 should have an initial input field for "Start plate name", which will be automatically filled with the name of the plate selected in step 1.
- Step 3 has the same layout as previously, but extract source items in the batch will now be taken from the "
SourceItemNames
" annotation of the selected start DNA plate. The functionality should be updated with two additions; created Lab Tracking Sheet for Allprep isolation has the chosen start DNA plate name inserted in the header at "Plate ID:", and the functionality when clicking button "Register" has been extended. As previously at registration, RNA/DNA items for specimens are created and all RNA/DNA items related to the batch are updated with measurement values in the table in step 3, but in addition the start DNA plate event date will be set to the QIAcube date, which will mark it as processed, and prevent it from appearing in the selection list in step 1, if the wizard is run again.
Counter service updates:
- The counter service should be updated with a counter for unprocessed start DNA plates.
Other updates not related to batches:
- Lab tracking protocol for Allprep isolation wizard should be updated in step 2 to pre-fill lot no. input fields with values from the latest created DNA specimen, extracted from a specimen. Currently this wizard only contains one lot no. input field, which is for the AllPrep DNA/RNA FFPE kit used.
comment:37 by , 10 years ago
Design specification update:
- Java class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated:
a. Package private methodvoid count()
updated by calling two new private methods,void countExtractSourceItems(DbControl dc, JSONObject json)
andvoid countBioPlates(DbControl dc, JSONObject json)
.
b. New private methodvoid countExtractSourceItems(DbControl dc, JSONObject json)
added. It performs three queries; for number of specimens without extract, DNA without original quantity, and RNA without original quantity, after which it returns the sum as the value for JSON key "unprocessed-extract-source-items
".
c. New private methodvoid countBioPlates(DbControl dc, JSONObject json)
added. It performs a query for the number of active DNA plates with event date not set and returns the result as the value for JSON key "dna-plates-without-eventdate
".
- JSP file
index.jsp
iresources/
updated:
a. Entry for "Lab Tracking protocol for Allprep isolation" updated by exchanging the counter "specimens-without-extract
" for "unprocessed-extract-source-items
" and counter title "Number of unprocessed selections
" for "Number of unprocessed specimens and unquantified RNA/DNA
".
b. Entry for "DNA/RNA registration/quantification" updated by exchanging the counter "specimens-without-extract
" for "dna-plates-without-eventdate
" and counter title "Number of unprocessed specimens and unquantified RNA/DNA
" for "Number of unprocessed start DNA plates
".
- JSP file
extraction_preparation.jsp
and Javascript fileextraction_preparation.js
inresources/sampleproc/
updated to support extra QIAcube items outside the MeLuDi project, and get a "Register" functionality to create a start DNA reaction plate with all values for annotations necessary to recreate the selections made in step 1 and 2 of the wizard. Step 2 also updated by removal of the input fields for default DNA/RNA volumes. The table shown in step 3 has been simplified by removal of unused columns.
- JSP file
extraction_protocol2.jsp
and Javascript fileextraction_protocol.js
inresources/sampleproc/
updated to show start plate name in header of created form. Also updated to use exchange "Tracking Sheet
" in header for "Tracking Report
", when the created form contains measurement values, i.e. it is being requested from the "DNA/RNA registration/quantification" wizard.
- JSP file
extraction_registration.jsp
and Javascript fileextraction_registration.js
inresources/sampleproc/
updated to support extra QIAcube items outside the MeLuDi project, and to get input date from a selected start DNA reaction plate in step 1, instead of having to make exactly the same extract source item selections, as for the "Lab tracking protocol for Allprep isolation" wizard. When registering extracts, chosen default DNA/RNA volumes are transmitted to theExtraction
servlet, to be stored as annotations for the used start DNA reaction plate.
- Data access object (DAO) class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new annotation types:
Name | Type | Item type | Multi-valued |
IsolationDate | Type.DATE | Item.EXTRACT | No
|
SourceItemNames | Type.STRING | Item.BIOPLATE | Yes
|
BatchNumberExtraQiacubeItems | Type.INT | Item.BIOPLATE | No
|
BatchIsolationDate | Type.DATE | Item.BIOPLATE | No
|
BatchExtractionProtocolId | Type.INT | Item.BIOPLATE | No
|
BatchExtractionProtocolName | Type.STRING | Item.BIOPLATE | No
|
BatchRnaDefaultVolumeInMicroLitre | Type.FLOAT | Item.BIOPLATE | No
|
BatchDnaDefaultVolumeInMicroLitre | Type.FLOAT | Item.BIOPLATE | No
|
BatchQiacubeDate | Type.DATE | Item.BIOPLATE | No
|
BatchQiacubePrimaryPrefix | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeSecondaryPrefix | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeRunNo | Type.INT | Item.BIOPLATE | No
|
BatchQiacubeOperator | Type.STRING | Item.BIOPLATE | No
|
BatchAllprepFfpeKit | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeOperator | Type.STRING | Item.BIOPLATE | No
|
- Data access object (DAO) class/file
BioplateType.java
insrc/net/sf/basedb/meludi/dao/
updated with new bioplate typeDNA
.
- Data access object (DAO) class/file
Dna.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodDna findByName(DbControl dc, String name)
.
- Data access object (DAO) class/file
ReactionPlate.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodList<ReactionPlate> findActiveByBioPlateType(DbControl dc, BioplateType bioPlateType, Subtype subtype, String prefix, int numFreeWells, Annotationtype runDateAnnotation)
. It returns a list of active reaction plates which can hold biomaterial items of the given subtype and have names starting with an optional prefix.
- Data access object (DAO) class/file
Rna.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodsRna findByName(DbControl dc, String name)
andList<Rna> findUnquantifiedRna(DbControl dc)
.
- Data access object (DAO) class/file
Subtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static final subtypeEXTRACTION_PROTOCOL
for protocol items.
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated with new bioplate typeBioplateType.DNA
, annotation type categorySubtype.DNA
, and new annotation types.
- Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated with support for new commands "GetUnprocessedStartPlates
" and "GetSourceItemListFromStartPlate
", as wells as exchanging command "GetNextLibraryPlateName
" for "GetNextStartPlateName
". The latter method is also updated to get the next plate name from the stored plate with highest number, and not assume that the number of this plate equals the number of plates, i.e. that there is no gaps in the number sequence.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated with support for new commands "RegisterStartPlate
". Command "RegisterDnaRna
" updated to store isolation date as annotation for created DNA/RNA extracts, and store default DNA/RNA volumes as annotations for the start plate.
c. Names of package private methodslong findNumberOfLibraryPlates(DbControl dc, String libraryPlatePrefix)
andList<BioPlate> findLibraryPlates(DbControl dc, String libraryPlatePrefix)
exchanged forlong findNumberOfPlates(DbControl dc, String platePrefix)
andList<BioPlate> findPlates(DbControl dc, String platePrefix)
, respectively.
d. New package private methodBioPlate findPlateWithHighestNumber(DbControl dc, String platePrefix)
added.
comment:38 by , 10 years ago
(In [3180]) Refs #725. MeLuDi updated in the functionality for the DNA/RNA extraction wizards:
- Java class/file
CounterService.java
insrc/net/sf/basedb/meludi/counter/
updated:
a. Package private methodvoid count()
updated by calling two new private methods,void countExtractSourceItems(DbControl dc, JSONObject json)
andvoid countBioPlates(DbControl dc, JSONObject json)
.
b. New private methodvoid countExtractSourceItems(DbControl dc, JSONObject json)
added. It performs three queries; for number of specimens without extract, DNA without original quantity, and RNA without original quantity, after which it returns the sum as the value for JSON key "unprocessed-extract-source-items
".
c. New private methodvoid countBioPlates(DbControl dc, JSONObject json)
added. It performs a query for the number of active DNA plates with event date not set and returns the result as the value for JSON key "dna-plates-without-eventdate
".
- JSP file
index.jsp
iresources/
updated:
a. Entry for "Lab Tracking protocol for Allprep isolation" updated by exchanging the counter "specimens-without-extract
" for "unprocessed-extract-source-items
" and counter title "Number of unprocessed selections
" for "Number of unprocessed specimens and unquantified RNA/DNA
".
b. Entry for "DNA/RNA registration/quantification" updated by exchanging the counter "specimens-without-extract
" for "dna-plates-without-eventdate
" and counter title "Number of unprocessed specimens and unquantified RNA/DNA
" for "Number of unprocessed start DNA plates
".
- JSP file
extraction_preparation.jsp
and Javascript fileextraction_preparation.js
inresources/sampleproc/
updated to support extra QIAcube items outside the MeLuDi project, and get a "Register" functionality to create a start DNA reaction plate with all values for annotations necessary to recreate the selections made in step 1 and 2 of the wizard. Step 2 also updated by removal of the input fields for default DNA/RNA volumes. The table shown in step 3 has been simplified by removal of unused columns.
- JSP file
extraction_protocol2.jsp
and Javascript fileextraction_protocol.js
inresources/sampleproc/
updated to show start plate name in header of created form. Also updated to use exchange "Tracking Sheet
" in header for "Tracking Report
", when the created form contains measurement values, i.e. it is being requested from the "DNA/RNA registration/quantification" wizard.
- JSP file
extraction_registration.jsp
and Javascript fileextraction_registration.js
inresources/sampleproc/
updated to support extra QIAcube items outside the MeLuDi project, and to get input date from a selected start DNA reaction plate in step 1, instead of having to make exactly the same extract source item selections, as for the "Lab tracking protocol for Allprep isolation" wizard. When registering extracts, chosen default DNA/RNA volumes are transmitted to theExtraction
servlet, to be stored as annotations for the used start DNA reaction plate.
- Data access object (DAO) class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new annotation types:
Name | Type | Item type | Multi-valued |
IsolationDate | Type.DATE | Item.EXTRACT | No
|
SourceItemNames | Type.STRING | Item.BIOPLATE | Yes
|
BatchNumberExtraQiacubeItems | Type.INT | Item.BIOPLATE | No
|
BatchIsolationDate | Type.DATE | Item.BIOPLATE | No
|
BatchExtractionProtocolId | Type.INT | Item.BIOPLATE | No
|
BatchExtractionProtocolName | Type.STRING | Item.BIOPLATE | No
|
BatchRnaDefaultVolumeInMicroLitre | Type.FLOAT | Item.BIOPLATE | No
|
BatchDnaDefaultVolumeInMicroLitre | Type.FLOAT | Item.BIOPLATE | No
|
BatchQiacubeDate | Type.DATE | Item.BIOPLATE | No
|
BatchQiacubePrimaryPrefix | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeSecondaryPrefix | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeRunNo | Type.INT | Item.BIOPLATE | No
|
BatchQiacubeOperator | Type.STRING | Item.BIOPLATE | No
|
BatchAllprepFfpeKit | Type.STRING | Item.BIOPLATE | No
|
BatchQiacubeOperator | Type.STRING | Item.BIOPLATE | No
|
- Data access object (DAO) class/file
BioplateType.java
insrc/net/sf/basedb/meludi/dao/
updated with new bioplate typeDNA
.
- Data access object (DAO) class/file
Dna.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodDna findByName(DbControl dc, String name)
.
- Data access object (DAO) class/file
ReactionPlate.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodList<ReactionPlate> findActiveByBioPlateType(DbControl dc, BioplateType bioPlateType, Subtype subtype, String prefix, int numFreeWells, Annotationtype runDateAnnotation)
. It returns a list of active reaction plates which can hold biomaterial items of the given subtype and have names starting with an optional prefix.
- Data access object (DAO) class/file
Rna.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static methodsRna findByName(DbControl dc, String name)
andList<Rna> findUnquantifiedRna(DbControl dc)
.
- Data access object (DAO) class/file
Subtype.java
insrc/net/sf/basedb/meludi/dao/
updated with new public static final subtypeEXTRACTION_PROTOCOL
for protocol items.
- Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated with new bioplate typeBioplateType.DNA
, annotation type categorySubtype.DNA
, and new annotation types.
- Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated with support for new commands "GetUnprocessedStartPlates
" and "GetSourceItemListFromStartPlate
", as wells as exchanging command "GetNextLibraryPlateName
" for "GetNextStartPlateName
". The latter method is also updated to get the next plate name from the stored plate with highest number, and not assume that the number of this plate equals the number of plates, i.e. that there is no gaps in the number sequence.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated with support for new commands "RegisterStartPlate
". Command "RegisterDnaRna
" updated to store isolation date as annotation for created DNA/RNA extracts, and store default DNA/RNA volumes as annotations for the start plate.
c. Names of package private methodslong findNumberOfLibraryPlates(DbControl dc, String libraryPlatePrefix)
andList<BioPlate> findLibraryPlates(DbControl dc, String libraryPlatePrefix)
exchanged forlong findNumberOfPlates(DbControl dc, String platePrefix)
andList<BioPlate> findPlates(DbControl dc, String platePrefix)
, respectively.
d. New package private methodBioPlate findPlateWithHighestNumber(DbControl dc, String platePrefix)
added.
comment:39 by , 10 years ago
Functional specification update of "DNA/RNA registration/quantification" wizard:
- The "DNA/RNA registration/quantification" wizard should be updated in step 2 regarding input options for reagent lot no.:
a. A new button should be added for clearing the reagent input fields.
b. Lot no. from the latest registered DNA extract should not be loaded automatically, but be coupled to a new button.
comment:40 by , 10 years ago
(In [3183]) Refs #725. MeLuDi updated in the "DNA/RNA registration/quantification" wizard step 2 input options for reagent lot no.s to couple loading of lot no.s from latest registered DNA extract to a new button, and add a new button for clearing the reagent input fields:
- JSP file
extraction_registration.jsp
inresources/sampleproc/
updated in the "Common information for Extraction and QIAcube" step:
a. The section has been included in adiv
tag with id = "commonInfoSection
".
b. The "Input options" part has been extended with two buttons; one for clearing the reagent input fields, and one for copying lot no.s from latest registered DNA.
- Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. Functionexreg.initializeStep2()
updated to couple clicks on two new buttons to new functionsexreg.clearReagents()
andexreg.copyReagentsFromLatestExtract()
, respectively. Reagent lot no.s from latest registered DNA extract will now not be loaded automatically.
b. New functionexreg.clearReagents()
added. It will clear reagent lot no. input fields.
c. New functionexreg.copyReagentsFromLatestExtract()
added. It will make an AJAX request toExtractionServlet
with commandGetLastProcessedDna
and callback functionexreg.lastProcessedDnaLoaded()
.
d. Functionexreg.lastProcessedDnaLoaded()
updated by removal of unnecessary condition check.
comment:41 by , 10 years ago
comment:42 by , 10 years ago
comment:43 by , 10 years ago
comment:44 by , 10 years ago
(In [3189]) Refs #725. Updates due to version number change to "1.2
".
- Version number change to "
1.2
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:46 by , 10 years ago
comment:47 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Ticket closed as MeLuDi version 1.2 has been created.
Ticket accepted.