#' Ingest New Concept
#' @description
#' An observation in the new concept relationship dataframe is not appended to the HemOnc Concept table if the same concept_name, is found. Such cases are returned as `qaIngestConceptTable` and `qaIngestConceptTable2` is the result of a followup qa where any of the rows in the input are not found in the refreshed Concept Table.
#' @import purrr
#' @import rubix
#' @import pg13
#' @import dplyr
#' @export
ingestConceptTable <-
        function(.input,
                 conn) {
                qaIngestConceptTable <- list()
                while (nrow(.input) > 0) {
                        new_concept <-
                                .input %>%
                                rubix::filter_first_row()
                        qa <-
                                pg13::query(conn = conn,
                                            pg13::buildQuery(schema = "hemonc_extension",
                                                             tableName = "concept",
                                                             whereInField = "concept_name",
                                                             whereInVector = new_concept$concept_name))
                        if (nrow(qa)) {
                                qaIngestConceptTable[[1+length(qaIngestConceptTable)]] <- list(Input = new_concept,
                                                                                         Existing = qa)
                                names(qaIngestConceptTable)[length(qaIngestConceptTable)] <- new_concept$concept_name
                        } else {
                                pg13::appendTable(conn = conn,
                                                  schema = "hemonc_extension",
                                                  tableName = "concept",
                                                  .data = new_concept %>%
                                                          chariot::ids_to_integer() %>%
                                                          as.data.frame())
                        }
                        .input <-
                                .input %>%
                                rubix::filter_first_row(invert = TRUE)
                }
                if (length(qaIngestConceptTable)) {
                        warning(length(qaIngestConceptTable), " duplicates found. See qaIngestConceptTable.")
                        qaIngestConceptTable <<- qaIngestConceptTable
                }
                qa <-
                        .input$concept_name %>%
                        rubix::map_names_set(function(x) pg13::query(conn = conn,
                                                                     pg13::buildQuery(schema = "hemonc_extension",
                                                                                      tableName = "concept",
                                                                                      whereInField = "concept_name",
                                                                                      whereInVector = x))) %>%
                        purrr::keep(~nrow(.)==0)
                if (length(qa)) {
                        qaIngestConceptTable2 <<- qa
                        warning(length(qa), " concepts where not found in hemonc_extension.concept. See qaIngestConceptTable2")
                }
        }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.