Skip to content

Commit f347d2d

Browse files
committed
Added transaction annotation to fetch generation.
Added migration to alter views to not return any generations for sources that do not exist. Fixes #2360.
1 parent d90d653 commit f347d2d

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

src/main/java/org/ohdsi/webapi/pathway/PathwayController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ public void cancelPathwaysGeneration(
364364
@Path("/{id}/generation")
365365
@Produces(MediaType.APPLICATION_JSON)
366366
@Consumes(MediaType.APPLICATION_JSON)
367+
@Transactional
367368
public List<CommonGenerationDTO> getPathwayGenerations(
368369
@PathParam("id") final Integer pathwayAnalysisId
369370
) {
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
DROP VIEW ${ohdsiSchema}.cc_generation;
2+
DROP VIEW ${ohdsiSchema}.estimation_analysis_generation;
3+
DROP VIEW ${ohdsiSchema}.pathway_analysis_generation;
4+
DROP VIEW ${ohdsiSchema}.prediction_analysis_generation;
5+
6+
CREATE OR REPLACE VIEW ${ohdsiSchema}.cc_generation as (
7+
SELECT
8+
-- Spring batch based
9+
job.job_execution_id id,
10+
job.create_time start_time,
11+
job.end_time end_time,
12+
job.status status,
13+
job.exit_message exit_message,
14+
CAST(cc_id_param.string_val AS INTEGER) cc_id,
15+
CAST(source_param.string_val AS INTEGER) source_id,
16+
-- Generation info based
17+
gen_info.hash_code hash_code,
18+
gen_info.created_by_id created_by_id
19+
FROM ${ohdsiSchema}.batch_job_execution job
20+
JOIN ${ohdsiSchema}.batch_job_execution_params cc_id_param ON job.job_execution_id = cc_id_param.job_execution_id
21+
AND cc_id_param.key_name = 'cohort_characterization_id'
22+
JOIN ${ohdsiSchema}.batch_job_execution_params source_param ON job.job_execution_id = source_param.job_execution_id
23+
AND source_param.key_name = 'source_id'
24+
JOIN ${ohdsiSchema}.source s on s.source_id = CAST(source_param.string_val AS INTEGER)
25+
LEFT JOIN ${ohdsiSchema}.analysis_generation_info gen_info ON job.job_execution_id = gen_info.job_execution_id
26+
ORDER BY start_time DESC
27+
);
28+
29+
CREATE OR REPLACE VIEW ${ohdsiSchema}.estimation_analysis_generation as
30+
SELECT
31+
job.job_execution_id id,
32+
job.create_time start_time,
33+
job.end_time end_time,
34+
job.status status,
35+
job.exit_message exit_message,
36+
CAST(estimation_id_param.string_val AS INTEGER) estimation_id,
37+
CAST(source_param.string_val AS INTEGER) source_id,
38+
passwd_param.string_val update_password,
39+
-- Generation info based
40+
gen_info.hash_code hash_code,
41+
gen_info.created_by_id created_by_id,
42+
-- Execution info based
43+
exec_info.id analysis_execution_id
44+
FROM ${ohdsiSchema}.batch_job_execution job
45+
JOIN ${ohdsiSchema}.batch_job_execution_params estimation_id_param ON job.job_execution_id = estimation_id_param.job_execution_id
46+
AND estimation_id_param.key_name = 'estimation_analysis_id'
47+
JOIN ${ohdsiSchema}.batch_job_execution_params source_param ON job.job_execution_id = source_param.job_execution_id
48+
AND source_param.key_name = 'source_id'
49+
JOIN ${ohdsiSchema}.batch_job_execution_params passwd_param ON job.job_execution_id = passwd_param.job_execution_id
50+
AND passwd_param.key_name = 'update_password'
51+
JOIN ${ohdsiSchema}.source s on s.source_id = CAST(source_param.string_val AS INTEGER)
52+
LEFT JOIN ${ohdsiSchema}.ee_analysis_status exec_info ON job.job_execution_id = exec_info.job_execution_id
53+
LEFT JOIN ${ohdsiSchema}.analysis_generation_info gen_info ON job.job_execution_id = gen_info.job_execution_id;
54+
55+
CREATE OR REPLACE VIEW ${ohdsiSchema}.pathway_analysis_generation as
56+
(SELECT
57+
job.job_execution_id id,
58+
job.create_time start_time,
59+
job.end_time end_time,
60+
job.status status,
61+
job.exit_message exit_message,
62+
CAST(pa_id_param.string_val AS INTEGER) pathway_analysis_id,
63+
CAST(source_param.string_val AS INTEGER) source_id,
64+
-- Generation info based
65+
gen_info.hash_code hash_code,
66+
gen_info.created_by_id created_by_id
67+
FROM ${ohdsiSchema}.batch_job_execution job
68+
JOIN ${ohdsiSchema}.batch_job_execution_params pa_id_param ON job.job_execution_id = pa_id_param.job_execution_id
69+
AND pa_id_param.key_name = 'pathway_analysis_id'
70+
JOIN ${ohdsiSchema}.batch_job_execution_params source_param ON job.job_execution_id = source_param.job_execution_id
71+
AND source_param.key_name = 'source_id'
72+
JOIN ${ohdsiSchema}.source s on s.source_id = CAST(source_param.string_val AS INTEGER)
73+
LEFT JOIN ${ohdsiSchema}.analysis_generation_info gen_info
74+
ON job.job_execution_id = gen_info.job_execution_id
75+
ORDER BY start_time DESC);
76+
77+
CREATE OR REPLACE VIEW ${ohdsiSchema}.prediction_analysis_generation as
78+
SELECT
79+
job.job_execution_id id,
80+
job.create_time start_time,
81+
job.end_time end_time,
82+
job.status status,
83+
job.exit_message exit_message,
84+
CAST(plp_id_param.string_val AS INTEGER) prediction_id,
85+
CAST(source_param.string_val AS INTEGER) source_id,
86+
passwd_param.string_val update_password,
87+
-- Generation info based
88+
gen_info.hash_code hash_code,
89+
gen_info.created_by_id created_by_id,
90+
-- Execution info based
91+
exec_info.id analysis_execution_id
92+
FROM ${ohdsiSchema}.batch_job_execution job
93+
JOIN ${ohdsiSchema}.batch_job_execution_params plp_id_param ON job.job_execution_id = plp_id_param.job_execution_id
94+
AND plp_id_param.key_name = 'prediction_analysis_id'
95+
JOIN ${ohdsiSchema}.batch_job_execution_params source_param ON job.job_execution_id = source_param.job_execution_id
96+
AND source_param.key_name = 'source_id'
97+
JOIN ${ohdsiSchema}.batch_job_execution_params passwd_param ON job.job_execution_id = passwd_param.job_execution_id
98+
AND passwd_param.key_name = 'update_password'
99+
JOIN ${ohdsiSchema}.source s on s.source_id = CAST(source_param.string_val AS INTEGER)
100+
LEFT JOIN ${ohdsiSchema}.ee_analysis_status exec_info ON job.job_execution_id = exec_info.job_execution_id
101+
LEFT JOIN ${ohdsiSchema}.analysis_generation_info gen_info ON job.job_execution_id = gen_info.job_execution_id;

0 commit comments

Comments
 (0)