|
| 1 | +#' Process the summary data table for an individual itis |
| 2 | +#' |
| 3 | +#' @description Relabel and combine fields |
| 4 | +#' |
| 5 | +#' @param url String. The url of the stocksmart API |
| 6 | +#' @param stockids Vector. The Stock ID numbers by which data are referenced |
| 7 | +#' |
| 8 | +#' @return A data frame |
| 9 | +#' |
| 10 | +#' @family processing |
| 11 | +#'@noRd |
| 12 | + |
| 13 | +process_stock_summary_data <- function(url, stockids) { |
| 14 | + ## Now get summary data |
| 15 | + |
| 16 | + ## Get summary data using assessment id's (asmtids) |
| 17 | + # create object to convert to JSON for url parameter |
| 18 | + summary <- list() |
| 19 | + ssummary <- list() |
| 20 | + summary$dataType <- "" |
| 21 | + summary$scName <- "- Science Center -" |
| 22 | + summary$ecoName <- "- Reg. Ecosystem -" |
| 23 | + summary$jurName <- "- Jurisdiction -" |
| 24 | + summary$rgnName <- "" |
| 25 | + summary$fmpName <- "- Fish Mgmt Plan -" |
| 26 | + summary$monName <- "" |
| 27 | + summary$entityIdList <- paste(stockids, collapse = ",") |
| 28 | + summary$outputFieldList <- "as_year,as_month,as_last_data_year,as_update_type,as_review_type,as_model,as_model_version,as_lead_lab,as_citation,as_files,as_point_of_contact,as_life_history,as_abundance,as_catch,as_level,as_frequency,as_type,as_model_cat,as_catch_data,as_abundance_data,as_biological_data,as_ecosystem_data,as_comp_data,as_f_year,as_f_best,as_f_unit,as_f_basis,as_flimit,as_flimit_basis,as_fmsy,as_fmsy_basis,as_f_flimit_ratio,as_f_fmsy_ratio,as_ftarget,as_ftarget_basis,as_f_ftarget_ratio,as_b_year,as_b_best,as_b_unit,as_b_basis,as_blimit,as_blimit_basis,as_bmsy,as_bmsy_basis,as_b_blimit_ratio,as_b_bmsy_ratio,as_msy,as_msy_unit" |
| 29 | + summary$outputLabelList <- "Assessment Year,Assessment Month,Last Data Year,Update Type,Review Result,Assessment Model,Model Version,Lead Lab,Citation,Final Assessment Report,Point of Contact,Life History Data,Abundance Data,Catch Data,Assessment Level,Assessment Frequency,Assessment Type,Model Category,Catch Input Data,Abundance Input Data,Biological Input Data,Ecosystem Linkage,Composition Input Data,F Year,Estimated F,F Unit,F Basis,Flimit,Flimit Basis,Fmsy,Fmsy Basis,F/Flimit,F/Fmsy,Ftarget,Ftarget Basis,F/Ftarget,B Year,Estimated B,B Unit,B Basis,Blimit,Blimit Basis,Bmsy,Bmsy Basis,B/Blimit,B/Bmsy,MSY,MSY Unit" |
| 30 | + summary$entityAttrList <- "ent_name,jur_name,fmp_name,sc_name,eco_name,ent_fssi_flag,tsn,sn,cn,sa" |
| 31 | + summary$entityAttrLabelList <- "Stock Name,Jurisdiction,FMP,Science Center,Regional Ecosystem,FSSI Stock?,ITIS Taxon Serial Number,Scientific Name,Common Name,Stock Area" |
| 32 | + summary$fileTypeList <- "" |
| 33 | + summary$DownloadTool_includeNoAsmt <- "N" |
| 34 | + summary$segIndex <- "0" |
| 35 | + summary$DownloadTool_carryForward <- "N" |
| 36 | + summary$DownloadTool_ent_name <- "" |
| 37 | + summary$DownloadTool_jur_select <- "%" |
| 38 | + summary$DownloadTool_fmp_select <- "%" |
| 39 | + summary$DownloadTool_sc_select <- "%" |
| 40 | + summary$DownloadTool_eco_select <- "%" |
| 41 | + summary$DownloadTool_fssi_select <- "" |
| 42 | + summary$startYear <- "1800" |
| 43 | + summary$endYear <- format(Sys.Date(), "%Y") #current year |
| 44 | + summary$asmtYears <- "" |
| 45 | + ssummary$crit <- summary |
| 46 | + ssummary$dataType <- "Assessment Summary Data" |
| 47 | + ssummary$dataFormat <- "excel" |
| 48 | + |
| 49 | + # convert to JSON |
| 50 | + jsonquery <- jsonlite::toJSON(ssummary, pretty = TRUE, auto_unbox = TRUE) |
| 51 | + |
| 52 | + # make url request |
| 53 | + file <- httr::GET( |
| 54 | + paste0(url, "data-export-servlet"), |
| 55 | + query = list(fileTypeList = "", jsonParam = jsonquery) |
| 56 | + ) |
| 57 | + |
| 58 | + # The following is hacky but needed since the only output format is xlsx |
| 59 | + # would be better if API returned data in JSON format |
| 60 | + # pull data and download in temporary file |
| 61 | + summary_api_data <- httr::GET(file$url) |
| 62 | + # create a temporary file to store download |
| 63 | + tmp <- tempfile(fileext = ".xlsx") |
| 64 | + # Write the binary content to the temp file |
| 65 | + writeBin(httr::content(summary_api_data, as = "raw"), tmp) |
| 66 | + # read the temporary file |
| 67 | + summary_data_itis <- suppressMessages(readxl::read_xlsx( |
| 68 | + tmp, |
| 69 | + col_names = TRUE |
| 70 | + )) |
| 71 | + |
| 72 | + summary_data <- summary_data_itis |> |
| 73 | + dplyr::mutate( |
| 74 | + Type = dplyr::case_when( |
| 75 | + is.na(`Update Type`) ~ `Assessment Type`, |
| 76 | + TRUE ~ `Update Type` |
| 77 | + ) |
| 78 | + ) |> |
| 79 | + dplyr::select(-`Assessment Type`, -`Update Type`) |> |
| 80 | + dplyr::rename(`Assessment Type` = Type) |
| 81 | + |
| 82 | + return(summary_data) |
| 83 | +} |
0 commit comments