Skip to content

Commit 53d5f1c

Browse files
authored
Merge pull request #82 from darwin-eu-dev/issue_68
Issue 68
2 parents f109b62 + 910d774 commit 53d5f1c

31 files changed

+2767
-66
lines changed

CohortDiagnostics.Rproj

+1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ RnwWeave: Sweave
1313
LaTeX: pdfLaTeX
1414

1515
BuildType: Package
16+
PackageUseDevtools: Yes
1617
PackageInstallArgs: --no-multiarch --with-keep.source
1718
PackageRoxygenize: rd,collate,namespace

R/hold/executeDiagnostics.R

+2-2
Original file line numberDiff line numberDiff line change
@@ -864,11 +864,11 @@ executeDiagnostics <- function(cohortDefinitionSet,
864864
if (runVisitContext) {
865865
timeExecution(
866866
exportFolder,
867-
"executeVisitContextDiagnostics",
867+
"runVisitContext",
868868
cohortIds,
869869
parent = "executeDiagnostics",
870870
expr = {
871-
executeVisitContextDiagnostics(
871+
runVisitContext(
872872
connection = connection,
873873
tempEmulationSchema = tempEmulationSchema,
874874
cdmDatabaseSchema = cdmDatabaseSchema,

R/runVisitContext.R

+56-22
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
getVisitContext <- function(connectionDetails = NULL,
18-
connection = NULL,
17+
getVisitContext <- function(connection = NULL,
1918
cdmDatabaseSchema,
2019
tempEmulationSchema = NULL,
2120
cohortDatabaseSchema = cdmDatabaseSchema,
@@ -30,8 +29,7 @@ getVisitContext <- function(connectionDetails = NULL,
3029
start <- Sys.time()
3130

3231
if (is.null(connection)) {
33-
connection <- DatabaseConnector::connect(connectionDetails)
34-
on.exit(DatabaseConnector::disconnect(connection))
32+
stop("Connection cannot be null.")
3533
}
3634

3735
sql <- SqlRender::loadRenderTranslateSql(
@@ -108,30 +106,66 @@ getVisitContext <- function(connectionDetails = NULL,
108106
return(visitContext)
109107
}
110108

109+
runVisitContext <- function(connection,
110+
cohortDefinitionSet,
111+
exportFolder,
112+
databaseId,
113+
cohortDatabaseSchema,
114+
cdmDatabaseSchema,
115+
tempEmulationSchema = getOption("sqlRenderTempEmulationSchema"),
116+
cohortTable = "cohort",
117+
cdmVersion = 5,
118+
minCellCount,
119+
incremental,
120+
incrementalFolder = file.path(exportFolder, "incremental")){
111121

112-
113-
executeVisitContextDiagnostics <- function(connection,
114-
tempEmulationSchema,
115-
cdmDatabaseSchema,
116-
cohortDatabaseSchema,
117-
cohortTable,
118-
cdmVersion,
119-
databaseId,
120-
exportFolder,
121-
minCellCount,
122-
cohorts,
123-
instantiatedCohorts,
124-
recordKeepingFile,
125-
incremental) {
122+
123+
if (incremental && !file.exists(incrementalFolder)) {
124+
# Create the file if it doesn't exist
125+
file.create(incrementalFolder)
126+
ParallelLogger::logInfo(
127+
sprintf(
128+
"Created record keeping file %s.",
129+
incrementalFolder
130+
)
131+
)
132+
}
133+
134+
cohortCounts <- CohortGenerator::getCohortCounts(
135+
connection = connection,
136+
cohortDatabaseSchema = cohortDatabaseSchema,
137+
cohortTable = cohortTable,
138+
cohortIds = cohortDefinitionSet$cohortId,
139+
cohortDefinitionSet = cohortDefinitionSet,
140+
databaseId = databaseId
141+
)
142+
143+
if (nrow(cohortCounts) > 0) {
144+
instantiatedCohorts <- cohortCounts %>%
145+
dplyr::filter(.data$cohortEntries > 0) %>%
146+
dplyr::pull(.data$cohortId)
147+
ParallelLogger::logInfo(
148+
sprintf(
149+
"Found %s of %s (%1.2f%%) submitted cohorts instantiated. ",
150+
length(instantiatedCohorts),
151+
nrow(cohortDefinitionSet),
152+
100 * (length(instantiatedCohorts) / nrow(cohortDefinitionSet))
153+
),
154+
"Beginning cohort diagnostics for instantiated cohorts. "
155+
)
156+
} else {
157+
stop("All cohorts were either not instantiated or all have 0 records.")
158+
}
159+
126160
ParallelLogger::logInfo("Retrieving visit context for index dates")
127161
subset <- subsetToRequiredCohorts(
128-
cohorts = cohorts %>%
162+
cohorts = cohortDefinitionSet %>%
129163
dplyr::filter(.data$cohortId %in% instantiatedCohorts),
130164
task = "runVisitContext",
131165
incremental = incremental,
132-
recordKeepingFile = recordKeepingFile
166+
recordKeepingFile = incrementalFolder
133167
)
134-
168+
135169
if (incremental &&
136170
(length(instantiatedCohorts) - nrow(subset)) > 0) {
137171
ParallelLogger::logInfo(sprintf(
@@ -166,7 +200,7 @@ executeVisitContextDiagnostics <- function(connection,
166200
cohortId = subset$cohortId,
167201
task = "runVisitContext",
168202
checksum = subset$checksum,
169-
recordKeepingFile = recordKeepingFile,
203+
recordKeepingFile = incrementalFolder,
170204
incremental = incremental
171205
)
172206
}

inst/doc/RunningCohortDiagnostics.pdf

-220 KB
Binary file not shown.
Binary file not shown.

inst/doc/WhatIsCohortDiagnostics.pdf

-127 KB
Binary file not shown.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
{
2+
"visit_occurrence": [
3+
{
4+
"visit_occurrence_id": 1,
5+
"person_id": 1,
6+
"visit_concept_id": 9201,
7+
"visit_start_date": "2015-01-01",
8+
"visit_start_datetime": "2015-01-01 08:00:00",
9+
"visit_end_date": "2015-01-01",
10+
"visit_end_datetime": "2015-01-01 18:00:00",
11+
"visit_type_concept_id": 32817,
12+
"provider_id": 1,
13+
"care_site_id": 1,
14+
"visit_source_value": 0,
15+
"visit_source_concept_id": 0,
16+
"admitting_source_concept_id": 8870,
17+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
18+
"discharge_to_concept_id": 581476,
19+
"discharge_to_source_value": "HOME HEALTH CARE",
20+
"preceding_visit_occurrence_id": 0
21+
},
22+
{
23+
"visit_occurrence_id": 2,
24+
"person_id": 2,
25+
"visit_concept_id": 262,
26+
"visit_start_date": "2015-01-09",
27+
"visit_start_datetime": "2015-01-09 08:00:00",
28+
"visit_end_date": "2015-01-10",
29+
"visit_end_datetime": "2015-01-10 18:00:00",
30+
"visit_type_concept_id": 32817,
31+
"provider_id": 1,
32+
"care_site_id": 1,
33+
"visit_source_value": 0,
34+
"visit_source_concept_id": 0,
35+
"admitting_source_concept_id": 8870,
36+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
37+
"discharge_to_concept_id": 581476,
38+
"discharge_to_source_value": "HOME HEALTH CARE",
39+
"preceding_visit_occurrence_id": 0
40+
},
41+
{
42+
"visit_occurrence_id": 3,
43+
"person_id": 1,
44+
"visit_concept_id": 262,
45+
"visit_start_date": "2015-01-10",
46+
"visit_start_datetime": "2015-01-10 08:00:00",
47+
"visit_end_date": "2015-01-10",
48+
"visit_end_datetime": "2015-01-10 18:00:00",
49+
"visit_type_concept_id": 32817,
50+
"provider_id": 1,
51+
"care_site_id": 1,
52+
"visit_source_value": 0,
53+
"visit_source_concept_id": 0,
54+
"admitting_source_concept_id": 8870,
55+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
56+
"discharge_to_concept_id": 581476,
57+
"discharge_to_source_value": "HOME HEALTH CARE",
58+
"preceding_visit_occurrence_id": 0
59+
},
60+
{
61+
"visit_occurrence_id": 4,
62+
"person_id": 2,
63+
"visit_concept_id": 262,
64+
"visit_start_date": "2015-01-10",
65+
"visit_start_datetime": "2015-01-10 08:00:00",
66+
"visit_end_date": "2015-01-10",
67+
"visit_end_datetime": "2015-01-10 18:00:00",
68+
"visit_type_concept_id": 32817,
69+
"provider_id": 1,
70+
"care_site_id": 1,
71+
"visit_source_value": 0,
72+
"visit_source_concept_id": 0,
73+
"admitting_source_concept_id": 8870,
74+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
75+
"discharge_to_concept_id": 581476,
76+
"discharge_to_source_value": "HOME HEALTH CARE",
77+
"preceding_visit_occurrence_id": 0
78+
}
79+
]
80+
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
{
2+
"visit_occurrence": [
3+
{
4+
"visit_occurrence_id": 1,
5+
"person_id": 1,
6+
"visit_concept_id": 9201,
7+
"visit_start_date": "2015-01-01",
8+
"visit_start_datetime": "2015-01-01 08:00:00",
9+
"visit_end_date": "2015-01-01",
10+
"visit_end_datetime": "2015-01-01 18:00:00",
11+
"visit_type_concept_id": 32817,
12+
"provider_id": 1,
13+
"care_site_id": 1,
14+
"visit_source_value": 0,
15+
"visit_source_concept_id": 0,
16+
"admitting_source_concept_id": 8870,
17+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
18+
"discharge_to_concept_id": 581476,
19+
"discharge_to_source_value": "HOME HEALTH CARE",
20+
"preceding_visit_occurrence_id": 0
21+
},
22+
{
23+
"visit_occurrence_id": 2,
24+
"person_id": 2,
25+
"visit_concept_id": 262,
26+
"visit_start_date": "2015-01-09",
27+
"visit_start_datetime": "2015-01-09 08:00:00",
28+
"visit_end_date": "2015-01-10",
29+
"visit_end_datetime": "2015-01-10 18:00:00",
30+
"visit_type_concept_id": 32817,
31+
"provider_id": 1,
32+
"care_site_id": 1,
33+
"visit_source_value": 0,
34+
"visit_source_concept_id": 0,
35+
"admitting_source_concept_id": 8870,
36+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
37+
"discharge_to_concept_id": 581476,
38+
"discharge_to_source_value": "HOME HEALTH CARE",
39+
"preceding_visit_occurrence_id": 0
40+
},
41+
{
42+
"visit_occurrence_id": 3,
43+
"person_id": 1,
44+
"visit_concept_id": 262,
45+
"visit_start_date": "2015-01-10",
46+
"visit_start_datetime": "2015-01-10 08:00:00",
47+
"visit_end_date": "2015-01-10",
48+
"visit_end_datetime": "2015-01-10 18:00:00",
49+
"visit_type_concept_id": 32817,
50+
"provider_id": 1,
51+
"care_site_id": 1,
52+
"visit_source_value": 0,
53+
"visit_source_concept_id": 0,
54+
"admitting_source_concept_id": 8870,
55+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
56+
"discharge_to_concept_id": 581476,
57+
"discharge_to_source_value": "HOME HEALTH CARE",
58+
"preceding_visit_occurrence_id": 0
59+
},
60+
{
61+
"visit_occurrence_id": 4,
62+
"person_id": 2,
63+
"visit_concept_id": 262,
64+
"visit_start_date": "2015-01-10",
65+
"visit_start_datetime": "2015-01-10 08:00:00",
66+
"visit_end_date": "2015-01-10",
67+
"visit_end_datetime": "2015-01-10 18:00:00",
68+
"visit_type_concept_id": 32817,
69+
"provider_id": 1,
70+
"care_site_id": 1,
71+
"visit_source_value": 0,
72+
"visit_source_concept_id": 0,
73+
"admitting_source_concept_id": 8870,
74+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
75+
"discharge_to_concept_id": 581476,
76+
"discharge_to_source_value": "HOME HEALTH CARE",
77+
"preceding_visit_occurrence_id": 0
78+
},
79+
{
80+
"visit_occurrence_id": 5,
81+
"person_id": 2,
82+
"visit_concept_id": 262,
83+
"visit_start_date": "2015-03-10",
84+
"visit_start_datetime": "2015-03-10 08:00:00",
85+
"visit_end_date": "2015-03-10",
86+
"visit_end_datetime": "2015-03-10 18:00:00",
87+
"visit_type_concept_id": 32817,
88+
"provider_id": 1,
89+
"care_site_id": 1,
90+
"visit_source_value": 0,
91+
"visit_source_concept_id": 0,
92+
"admitting_source_concept_id": 8870,
93+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
94+
"discharge_to_concept_id": 581476,
95+
"discharge_to_source_value": "HOME HEALTH CARE",
96+
"preceding_visit_occurrence_id": 0
97+
},
98+
{
99+
"visit_occurrence_id": 6,
100+
"person_id": 2,
101+
"visit_concept_id": 262,
102+
"visit_start_date": "2014-03-10",
103+
"visit_start_datetime": "2014-03-10 08:00:00",
104+
"visit_end_date": "2014-03-10",
105+
"visit_end_datetime": "2014-03-10 18:00:00",
106+
"visit_type_concept_id": 32817,
107+
"provider_id": 1,
108+
"care_site_id": 1,
109+
"visit_source_value": 0,
110+
"visit_source_concept_id": 0,
111+
"admitting_source_concept_id": 8870,
112+
"admitting_source_value": "TRANSFER FROM HOSPITAL",
113+
"discharge_to_concept_id": 581476,
114+
"discharge_to_source_value": "HOME HEALTH CARE",
115+
"preceding_visit_occurrence_id": 0
116+
}
117+
]
118+
}
Binary file not shown.

0 commit comments

Comments
 (0)