diff --git a/.gitignore b/.gitignore index ada13ca7..48e1c6fb 100644 --- a/.gitignore +++ b/.gitignore @@ -4,14 +4,19 @@ .Ruserdata priority-pathogens.Rproj src/*.csv -src/*/*.csv -src/*/*/*.csv src/*/*.png +src/*/*.rds src/*/lassa_functions.R pathway src/db_extraction/utils.R .Renviron Renviron +src/*/*/.shp +src/*/*/.shx +src/*/*/.cpg +src/*/*/.dbf +src/*/*/.prj +src/zika_serop/shapefile/* # ---VVV--- added by orderly ---VVV---------------- # Don't manually edit content between these markers diff --git a/DESCRIPTION b/DESCRIPTION index 80920e06..543081c6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -13,6 +13,7 @@ Authors@R: c( person("Gina", "Cuomo-Dannenburg", role = "aut", comment = c(ORCID = "0000-0001-6821-0352")), person("Ruth", "McCabe", role = "aut", comment = c(ORCID = "0000-0002-6368-9103")), person("Kelly", "McCain", role = "aut", comment = c(ORCID = "0000-0003-2393-2217")), + person("Anna", "Vicco", role = "aut", comment = c(ORCID = "0000-0002-6555-3090")), person("Patrick", "Doohan", role = "aut", comment = c(ORCID = "0000-0001-8076-1106")), person("Tristan", "Naidoo", role = "aut", comment = c(ORCID = 0000-0001-9970-2421))) Description: A live view of a the systematic literature reviews conducted by the Pathogen Epidemiology Review Group (PERG). The data in these plots come from PERG's epireview package, which contains the latest available open access pathogen data from the group. @@ -22,14 +23,17 @@ Imports: estmeansd, flextable, ggforce, + ggpattern, ggplot2, ggrepel, ggsci, ggspatial, + gpkg, gt, grid, gridExtra, harrypotter, + maps, meta, metafor, mixdist, @@ -42,9 +46,11 @@ Imports: rmarkdown, rnaturalearth, rnaturalearthdata, + RSQLite, scales, sf, stringr, + tidygeocoder, tidyverse, tm, webshot2 diff --git a/R/zika_maps.R b/R/zika_maps.R new file mode 100644 index 00000000..417dce8b --- /dev/null +++ b/R/zika_maps.R @@ -0,0 +1,114 @@ +library(ggplot2) +library(sf) +library(rnaturalearth) +library(gpkg) +library(RSQLite) +library(ggrepel) + +parameters <- readRDS("P:/Zika/priority-pathogens/archive/db_compilation/20250205-144757-57dcf554/parameters.rds") +outbreaks <- readRDS("P:/Zika/priority-pathogens/archive/db_compilation/20250205-144757-57dcf554/outbreaks.rds") + +world <- ne_countries(scale = 'medium', returnclass = 'sf') +# +# world <- geopackage('data/gadm_410-levels.gpkg') +# +outbreaks_agg <- outbreaks %>% + mutate(outbreak_country = case_when( + outbreak_country == 'France (Martinique)' ~ "France", + TRUE ~ outbreak_country + )) %>% + group_by(covidence_id, outbreak_country) %>% + count() %>% + group_by(outbreak_country) %>% + count() + +out_sf <- world %>% + left_join(outbreaks_agg, by = c('admin' = 'outbreak_country')) %>%# by.y ="outbreak_country", by.x = 'sovereignt') + mutate(admin = case_when( + admin == 'Federated States of Micronesia' ~ "Micronesia", + TRUE ~ admin + )) + +out_plt <- ggplot() + + geom_sf(data = out_sf, lwd = 0.3, col = "grey30", aes(fill = n)) + + scale_fill_viridis_c(option = 'plasma', direction = -1, na.value = 'grey80') + + theme_light() + + theme(axis.text = element_blank()) + + labs(fill = 'Number of papers\nreporting outbreaks', + x = '', + y = '') + + geom_label_repel(data = out_sf %>% filter(!is.na(n)), + aes(x=label_x,y=label_y,label=paste0(admin,": ",n), + fontface = "bold"), size = 2, + max.overlaps = 50, + label.padding = 0.2) + + coord_sf(xlim=c(-180,180), ylim=c(-60,90)) # cut out antarctica + + + +# Sero plot +sero_all <- parameters %>% + filter(parameter_type =='Seroprevalence - IgG' | grepl("PRNT", parameter_type))%>% + group_by(covidence_id, population_country) %>% + count() %>% + group_by(population_country) %>% + count() %>% + mutate(population_country = case_when( + population_country == 'DRC' ~ "Democratic Republic of the Congo", + TRUE ~ population_country + )) + +sero_all_sf <- world %>% + left_join(sero_all, by = c('admin' = 'population_country')) %>%# by.y ="outbreak_country", by.x = 'sovereignt') + mutate(admin = case_when( + admin == 'Federated States of Micronesia' ~ "Micronesia", + admin == 'Democratic Republic of the Congo' ~ "DRC", + TRUE ~ admin + )) + +sero_all <- ggplot() + + geom_sf(data = sero_all_sf, lwd = 0.3, col = "grey30", aes(fill = n)) + + scale_fill_viridis_c(option = 'plasma', direction = -1, na.value = 'grey80') + + theme_light() + + labs(fill = 'Number of papers\nreporting IgG or PRNT', + x = '', + y = '') + + theme(axis.text = element_blank()) + + coord_sf(xlim=c(-180,180), ylim=c(-60,90)) + + +# general pop only +sero_gen <- parameters %>% + filter(parameter_type =='Seroprevalence - IgG' | grepl("PRNT", parameter_type))%>% + filter(population_group == 'General population' & population_sample_type == "Population based") %>% + group_by(covidence_id, population_country) %>% + count() %>% + group_by(population_country) %>% + count() %>% + mutate(population_country = case_when( + population_country == 'DRC' ~ "Democratic Republic of the Congo", + TRUE ~ population_country + )) + +sero_gen_sf <- world %>% + left_join(sero_gen, by = c('admin' = 'population_country')) %>%# by.y ="outbreak_country", by.x = 'sovereignt') + mutate(admin = case_when( + admin == 'Federated States of Micronesia' ~ "Micronesia", + admin == 'Democratic Republic of the Congo' ~ "DRC", + TRUE ~ admin + )) + +sero_gen <- ggplot() + + geom_sf(data = sero_gen_sf, lwd = 0.3, col = "grey30", aes(fill = n)) + + scale_fill_viridis_c(option = 'plasma', direction = -1, na.value = 'grey80') + + theme_light() + + labs(fill = 'Number of papers\nreporting IgG or PRNT', + x = '', + y = '') + + theme(axis.text = element_blank()) + + coord_sf(xlim=c(-180,180), ylim=c(-60,90)) + + +ggsave("data/zika_plots/outbreaks.png", out_plt) +ggsave("data/zika_plots/sero_all.png", sero_all) +ggsave("data/zika_plots/sero_general.png", sero_gen) diff --git a/data/Nipah_excluded_studies.csv b/data/Nipah_excluded_studies.csv new file mode 100644 index 00000000..4006acd3 --- /dev/null +++ b/data/Nipah_excluded_studies.csv @@ -0,0 +1,299 @@ +Title,Authors,Abstract,Published Year,Published Month,Journal,Volume,Issue,Pages,Accession Number,DOI,Ref,Covidence #,Study,Notes,Tags +A threat from the newly discovered viruses: Nipah viral encephalitis,"Zeng, ZhiLei; Chen, Xiao; Xie, Peng",,2007,2007,Chinese Journal of Zoonoses,23,12,1265-1268,CABI:20083063589,,,#3,Zeng 2007,Exclusion reason: Not in English; ,"" +New zoonotic paramyxoviruses: The nipah experience in Malaysia,"Yong, J. M.",,2001,June,International Journal of Antimicrobial Agents,17,Supplement 1,S105-S105,BCI:BCI200100455329,,,#6,Yong 2001,Exclusion reason: Not peer-reviewed paper; ,Seroprevalence in animals +Hendra and Nipah viruses,"Rollin, P. E.; Rota, P.; Zaki, S.; Ksiazek, T. G.; Murray, P. R.; Baron, E. J.; Jorgensen, J. H.; Landry, M. L.; Pfaller, M. A.",,2006,,,,Ed.9,1478-1485,CABI:20073141676,,,#12,Rollin 2006,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 18:41:56)(Select): book; ,"" +"Nipah virus in lyle's flying foxes, Cambodia","Reynes, J. M.; Counor, D.; Ong, S.; Faure, C.; Seng, V.; Molia, S.; Walston, J.; Georges-Courbot, M. C.; Deubel, V.; Sarthou, J. L.",,2005,Jul,Emerging Infectious Diseases,11,7,1042-1047,WOS:000230106600009,10.3201/eid1107.041350,,#16,Reynes 2005,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Nipah virus strain variation,"Pulliam, J. R. C.; Field, H. E.; Olival, K. J.; Henipavirus Ecology Res, Grp",,2005,Dec,Emerging Infectious Diseases,11,12,1978-1979,WOS:000233768300037,,,#19,Pulliam 2005,Exclusion reason: Not peer-reviewed paper; ,"" +"Nipah virus outbreak in Malaysia, 1999","Okabe, N.; Morita, K.",,2000,2000-Jun,Uirusu,50,1,27-33,MEDLINE:10998976,,,#49,Okabe 2000,Exclusion reason: Not in English; ,"" +Effects of intensification of the traditional farming system on the environment and bio-safety of the human population: Nipah virus outbreak in Malaysia,"Muniandy, N.; Aziz, J. A.; Furukawa, H.; Mitsuaki, N.; Yasuyuki, K.; Yoshihiro, K.",,2004,,,8,,303-317,WOS:000225833200016,,,#63,Muniandy 2004,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Nipah disease in Malaysia,"Mohd Nordin Mohd, Nor",,1999,1999,Disease Information - Office International des Epizooties,12,20,67-70,CABI:20002206037,,,#69,MohdNordinMohd 1999,Exclusion reason: No full-text found; ,"" +Hendra and Nipah viruses: new zoonotically-acquired human pathogens,"McCormack, Joseph G.",,2005,2005-Mar,Respiratory care clinics of North America,11,1,59-66,MEDLINE:15763222,10.1016/j.rcc.2004.10.006,,#81,McCormack 2005,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper; paper-copy +Review: Hendra virus and Nipah virus infection,"Liu, Chen-Hsuan; Tsai, Ching-Ping; Yang, Pin-Cheng; Chu, Redman",,1999,June,Journal of the Chinese Society of Veterinary Science,25,2,83-87,BCI:BCI200000004749,,,#108,Liu 1999,Exclusion reason: Not in English; ,"" +Lessons to be learnt from the Nipah virus outbreak in Singapore,"Ling, A. E.",,1999,1999-May,Singapore medical journal,40,5,331-2,MEDLINE:10489489,,,#109,Ling 1999,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Nipah virus encephalitis outbreak in Malaysia,"Lam, S. K.; Chua, K. B.",,2002,May 1,Clinical Infectious Diseases,34,,S48-S51,WOS:000175120200002,10.1086/338818,,#123,Lam 2002,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-08-29 21:33:59)(Select): I feel like this might be a duplicate. In any case, it has no parameters of interest.; ","" +The Nipah outbreak and control response in Malaysia,"Kit, L. S.; Bing, C. K.; Dodet, B.; Vicari, M.",,2001,,,,,199-203,WOS:000176156200021,,,#135,Kit 2001,Exclusion reason: Not peer-reviewed paper; ,Seroprevalence in animals +Nipah virus the newly discovered paramyxovirus infection in Malaysia: Pathological findings of 9 fatal cases from Ipoh,"Karim, Norain; Zaki, Sherif R.; Ksiazek, Thomas G.",,2001,September,Virchows Archiv,439,3,314-314,BCI:BCI200200432405,,,#144,Karim 2001,Exclusion reason: No full-text found; ,"" +Nipah and Hendra Viruses Encephalitis,"Goh, Khean Jin; Wong, Kum Thong; Tan, Chong Tin; Fong, I. W.; Alibek, K.",,2007,,,,,279-293,BCI:BCI200800699559,10.1007/978-0-387-32830-0_7,,#206,Goh 2007,Exclusion reason: Not peer-reviewed paper; ,Book Chapter +Nipah-virus encephalitis - investigation of a new infection,"Farrar, J. J.",,1999,Oct 9,Lancet,354,9186,1222-1223,WOS:000083010400002,10.1016/s0140-6736(99)90124-1,,#223,Farrar 1999,Exclusion reason: Not peer-reviewed paper; ,Editorial +Emerging infectious diseases - Nipah virus (or a cousin) strikes again,"Enserink, M.",,2004,Feb 20,Science,303,5661,1121-1121,WOS:000189074700007,,,#228,Enserink 2004,Exclusion reason: Not peer-reviewed paper; ,news item +Emerging diseases - Malaysian researchers trace Nipah virus outbreak to bats,"Enserink, M.",,2000,Jul 28,Science,289,5479,518-519,WOS:000088447800001,10.1126/science.289.5479.518,,#229,Enserink 2000,Exclusion reason: Not peer-reviewed paper; ,news item +Epidemiology - New virus fingered in Malaysian epidemic,"Enserink, M.",,1999,Apr 16,Science,284,5413,407-+,WOS:000079792200002,10.1126/science.284.5413.407,,#230,Enserink 1999,Exclusion reason: Not peer-reviewed paper; ,news item +The emergence of Nipah and Hendra virus: pathogen dynamics across a wildlife-livestock-human continuum,"Daszak, P.; Plowright, R. K.; Epstein, J. H.; Pulliam, J.; Rahman, S. A.; Field, H. E.; Jamaluddin, A.; Sharifah, S. H.; Smith, C. S.; Olival, K. J.; Luby, S.; Halpin, K.; Hyatt, A. D.; Cunningham, A. A.; Usa, Henipavirus Ecology Research Group; Collinge, S. K.; Ray, C.",,2006,,,,,186-201,CABI:20083000194,,,#245,Daszak 2006,Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-08-28 21:32:58)(Select): Book chapter; ,"" +Fatal encephalitis due to Nipah virus among pig-farmers in Malaysia,"Chua, K. B.; Goh, K. J.; Wong, K. T.; Kamarulzaman, A.; Tan, P. S. K.; Ksiazek, T. G.; Zaki, S. R.; Paul, G.; Lam, S. K.; Tan, C. T.",,1999,Oct 9,Lancet,354,9186,1257-1259,WOS:000083010400012,10.1016/s0140-6736(99)04299-3,,#268,Chua 1999,Exclusion reason: Case report or case study; Lorenzo Cattarino (2019-03-20 20:44:04)(Screen): sequelae; ,clinical +Quantitative estimation of Nipah virus replication kinetics in vitro,"Chang, LiYen; Mohd Ali, A. R.; Sharifah Syed, Hassan; Sazaly, Abubakar",,2006,2006,Virology Journal,3,47,(19 June 2007)-(19 June 2007),CABI:20073195025,,,#287,Chang 2006,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Animal model +"Update: Outbreak of Nipah virus: Malaysia and Singapore, 1999","Centers for Disease, Control",,1999,April 30,Morbidity and Mortality Weekly Report,48,16,335-337,BCI:BCI199900414128,,,#293,CentersforDisease 1999,Exclusion reason: Not peer-reviewed paper; ,"" +"Emergence and control of zoonotic viral encephalitis, Les Pensieres, France, 6-8 April 2003","Calisher, C. H.; Griffin, D. E.; Calisher, C. H.; Griffin, D. E.",,2004,,,,,x + 244 pp.-x + 244 pp.,CABI:20043115893,,,#296,Calisher 2004,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Fatal fruit bat virus sparks epidemics in southern Asia,"Butler, D.",,2004,May 6,Nature,429,6987,7-7,WOS:000221222100011,10.1038/429007b,,#298,Butler 2004,Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-08-28 21:07:17)(Select): nature news; ,"" +"Nipah virus outbreak in Malaysia, 1998-1999","Bunning, M.",,2001,Nov-Dec,Journal of Swine Health and Production,9,6,295-299,WOS:000171659700010,,,#299,Bunning 2001,Exclusion reason: Not peer-reviewed paper; ,Seroprevalence in animals +"Nipah virus infection, an emerging paramyxoviral zoonosis","Wong, K. T.; Shieh, W. J.; Zaki, S. R.; Tan, C. T.",,2002,Nov,Springer Seminars in Immunopathology,24,2,215-228,WOS:000179545400008,10.1007/s00281-002-0106-y,,#305,Wong 2002,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-08-05 19:15:11)(Select): We have decided to include reviews. Hence yes vote from me.; ,Review paper +"Bat Nipah virus, Thailand","Wacharapluesadee, S.; Lumlertdacha, B.; Boongird, K.; Wanghongsa, S.; Chanhome, L.; Rollin, P.; Stockton, P.; Rupprecht, C. E.; Ksiazek, T. G.; Hemachudha, T.",,2005,Dec,Emerging Infectious Diseases,11,12,1949-1951,WOS:000233768300025,10.3201/eid1112.050613,,#328,Wacharapluesadee 2005,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Drinking bat blood may be hazardous to your health,"Wacharapluesadee, Supaporn; Boongird, Kalyanee; Wanghongsa, Sawai; Phumesin, Patta; Hemachudha, Thiravat",,2006,Jul 15,Clinical Infectious Diseases,43,2,269-269,WOS:000238338000029,10.1086/505311,,#329,Wacharapluesadee 2006,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-04-03 03:27:59)(Screen): Including for refs.; ,Seroprevalence in animals +Foreward: Molecular epidemiology of viral infection in Asia,"Ushijima, H.; Eshita, Y.",,2004,Apr,Pediatrics International,46,2,202-206,WOS:000220521900020,10.1046/j.1442-200x.2004.01865.x,,#333,Ushijima 2004,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-04-03 03:42:16)(Screen): Included for refs.; ,Review paper +Nipah virus infection,"Usa, Center for Food Security; Public, Health; Usa, Institute for International Cooperation in Animal Biologics",,2007,2007,Nipah virus infection,,,7 pp.-7 pp.,CABI:20083301629,,,#334,Usa 2007,Exclusion reason: No full-text found; ,"" +Emergence of Nipah virus in Malaysia,"Uppal, P. K.",,2000,,,916,,354-357,BCI:BCI200100228621,,,#335,Uppal 2000,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Nipah encephalitis outbreak in Malaysia,"Tan, C. T.; Wong, K. T.",,2003,Jan,Annals Academy of Medicine Singapore,32,1,112-117,WOS:000181138700020,,,#343,Tan 2003,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nosocomial transmissibility of Nipah virus,"Tan, C. T.; Tan, K. S.",,2001,Nov 15,Journal of Infectious Diseases,184,10,1367-1367,WOS:000171883300024,10.1086/323996,,#344,Tan 2001,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Nipah encephalitis,"Tan, ChongTin; Wong, K. T.; Chua, KawBing; Power, C.; Johnson, R. T.",,2005,,,,,59-75,CABI:20063039883,,,#347,Tan 2005,Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-10-17 21:03:37)(Screen): outbreak report. paper on my desk; ,paper-copy +First case of Nipah virus encephalitis in Singapore,"Tambyah, P. A.; Tan, J. H.; Ong, B. K. C.; Ho, K. H.; Chan, K. P.",,2001,Mar,Internal Medicine Journal,31,2,132-133,WOS:000168730100014,,,#350,Tambyah 2001,Exclusion reason: Case report or case study; ,Seroprevalence in animals +The Nipah virus outbreak--a reminder,"Tambyah, P. A.",,1999,1999-May,Singapore medical journal,40,5,329-30,MEDLINE:10489488,,,#352,Tambyah 1999,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 18:45:43)(Select): editorial - not pr; ,"" +Outbreak of encephalitis associated with an emerging paramyxovirus: Malaysia 1999,"Shieh, W. J.; Wong, K. T.; Kumar, S.; Karim, N.; Guarner, J.; Goldsmith, C.; Morken, T.; Greer, P.; Montague, J.; Rollin, P.; Ksiazek, T.; Zaki, S. R.",,2000,Jan.,Laboratory Investigation,80,1,172A-172A,BCI:BCI200000163534,,,#364,Shieh 2000,Exclusion reason: No full-text found; Sangeeta Bhatia (2019-10-17 21:01:00)(Select): conference abstarct; ,paper-copy +"Nipah virus infection among military personnel involved in pig culling during an outbreak of encephalitis in Malaysia, 1998-1999","Ali, R.; Mounts, A. W.; Parashar, U. D.; Sahani, M.; Lye, M. S.; Isa, M. M.; Balathevan, K.; Arif, M. T.; Ksiazek, T. G.",,2001,Jul-Aug,Emerging Infectious Diseases,7,4,759-761,WOS:000170763300033,,,#381,Ali 2001,Exclusion reason: Not peer-reviewed paper; Christian Morgenstern (2025-02-05 20:23:26)(Select): Letter to the editor; ,Seroprevelance in humans +Serological examination for evidence of infection with Hendra and Nipah viruses in Queensland piggeries,"Black, P. F.; Cronin, J. P.; Morrissy, C. J.; Westbury, H. A.",,2001,Jun,Australian Veterinary Journal,79,6,424-426,WOS:000169535300035,10.1111/j.1751-0813.2001.tb12989.x,,#395,Black 2001,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Nipah virus: An emergent paramyxovirus causing severe encephalitis in humans,"Bellini, W. J.; Harcourt, B. H.; Bowden, N.; Rota, P. A.",,2005,Oct,Journal of Neurovirology,11,5,481-487,WOS:000233334500010,10.1080/13550280500187435,,#399,Bellini 2005,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Lorenzo Cattarino (2019-09-17 18:10:22)(Select): include for refs; Lorenzo Cattarino (2019-09-17 18:08:40)(Select): review; ,Review paper +"Commentary: Paramyxoviruses, pigs and abattoirs","Bellini, W. J.",,2001,Oct,International Journal of Epidemiology,30,5,1020-1021,WOS:000172147100021,10.1093/ije/30.5.1020,,#400,Bellini 2001,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 18:08:06)(Select): however this is a commentary - not pr; Lorenzo Cattarino (2019-09-17 18:07:44)(Select): OK; Sangeeta Bhatia (2019-04-03 01:45:08)(Screen): included for refs; ,commentary +An outbreak of Nipah virus infections among abattoir workers in Singapore,"Arguin, P. M.; Chew, M. H. L.; Shay, D. K.; Rollin, P.; Anderson, L. J.; Goh, K. T.",,1999,Sept.,American Journal of Tropical Medicine and Hygiene,61,3 SUPPL.,171-171,BCI:BCI199900478728,,,#404,Arguin 1999,Exclusion reason: No full-text found; ,"" +Malaysia culls pigs as Nipah virus strikes again,"Ahmad, K.",,2000,Jul 15,Lancet,356,9225,230-230,WOS:000088179100028,10.1016/s0140-6736(05)74483-4,,#410,Ahmad 2000,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 17:49:45)(Select): not pr; Sangeeta Bhatia (2019-07-17 21:47:31)(Select): not sure if this is peer-reviewed ; Sangeeta Bhatia (2019-03-19 06:20:41)(Screen): intervention; ,"" +"Nipah virus outbreak(s) in Bangladesh, January-April 2004","",,2004,2004-Apr-23,Releve epidemiologique hebdomadaire,79,17,168-71,MEDLINE:15132054,,,#420,,Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-08-29 22:02:19)(Select): WER; ,Seroprevalence in animals; Useful +Animal models for some important RNA viruses of public health concern in SEARO countries: viral hemorrhagic fever.,Badole SL.; Yadav PD.; Patil DR.; Mourya DT.,"Viral hemorrhagic fevers (VHFs) are major public health problems in the South-East Asia Regional (SEAR) countries. VHFs are a group of illnesses; that are caused by four families of viruses, viz. Arenaviridae, Bunyaviridae, Filoviridae and Flaviviridae. All VHFs have common features: they affect several organs and damage the blood vessels. These symptoms are often accompanied by hemorrhage. To understand pathogenesis, genetic and environmental influence that increase the risk of VHFs, efficacy and safety studies on candidate vaccines and testing of various therapeutic agents, appropriate animal models are essential tools in public and animals health. In the current review, the suitable animal models for Flavivirus [Dengue hemorhagic fever (DHF), Kyasanur forest disease (KFD)]; Bunyavirus [Crimean-Congo hemorrhagic fever (CCHF), Hantavirus fever (HF)]; and Paramyxovirus [Nipah virus fever (NiV)] have been reviewed with specific emphasis on emerging and reemerging viruses in SEAR countries.",2015,Mar,Journal of vector borne diseases,52,1,1-10,,,25815861,#467,Badole 2015,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +[Emerging viral infections in South East Asia and the Pacific region].,Barboza P.; Tarantola A.; Lassel L.; Mollet T.; Quatresous I.; Paquet C.,"The epidemiology of several viral diseases underwent profound changes in South-East Asia and Oceania over the past decades. This was due to several factors, including the geographical distribution of vectors and the viruses they transmit; increasing traveling and trade; increasing ecological and demographic pressure. We reviewed the current state of knowledge based on published sources and available epidemiological data. The review was limited to potentially emerging viruses in Southeast Asia and the Pacific reported in human cases. Dengue, Chikungunya, and Japanese Encephalitis viruses have recurred on a yearly basis with a steady increase in these regions. Ross River and Barmah viruses now appear regularly in Australia, in an increasing number of cases. Nipah virus strikes regularly with limited but deadly epidemics in Southeast Asia. Finally, infections by lyssaviruses, Kunjin, Murray Valley, or Zika viruses were also reviewed.",2008,Oct,Medecine et maladies infectieuses,38,10,513-23,,10.1016/j.medmal.2008.06.011,18771865,#490,Barboza 2008,Exclusion reason: Not in English; ,"" +A Review of the Current Status of Relevant Zoonotic Pathogens in Wild Swine (Sus scrofa) Populations: Changes Modulating the Risk of Transmission to Humans.,Ruiz-Fons F.,"Many wild swine populations in different parts of the World have experienced an unprecedented demographic explosion that may result in increased exposure of humans to wild swine zoonotic pathogens. Interactions between humans and wild swine leading to pathogen transmission could come from different ways, being hunters and game professionals the most exposed to acquiring infections from wild swine. However, increasing human settlements in semi-natural areas, outdoor activities, socio-economic changes and food habits may increase the rate of exposure to wild swine zoonotic pathogens and to potentially emerging pathogens from wild swine. Frequent and increasing contact rate between humans and wild swine points to an increasing chance of zoonotic pathogens arising from wild swine to be transmitted to humans. Whether this frequent contact could lead to new zoonotic pathogens emerging from wild swine to cause human epidemics or emerging disease outbreaks is difficult to predict, and assessment should be based on thorough epidemiologic surveillance. Additionally, several gaps in knowledge on wild swine global population dynamics trends and wild swine-zoonotic pathogen interactions should be addressed to correctly assess the potential role of wild swine in the emergence of diseases in humans. In this work, viruses such as hepatitis E virus, Japanese encephalitis virus, Influenza virus and Nipah virus, and bacteria such as Salmonella spp., Shiga toxin-producing Escherichia coli, Campylobacter spp. and Leptospira spp. have been identified as the most prone to be transmitted from wild swine to humans on the basis of geographic spread in wild swine populations worldwide, pathogen circulation rates in wild swine populations, wild swine population trends in endemic areas, susceptibility of humans to infection, transmissibility from wild swine to humans and existing evidence of wild swine-human transmission events.",2017,Feb,Transboundary and emerging diseases,64,1,68-88,,10.1111/tbed.12369,25953392,#499,Ruiz-Fons 2017,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +Using network theory to identify the causes of disease outbreaks of unknown origin.,Bogich TL.; Funk S.; Malcolm TR.; Chhun N.; Epstein JH.; Chmura AA.; Kilpatrick AM.; Brownstein JS.; Hutchison OC.; Doyle-Capitman C.; Deaville R.; Morse SS.; Cunningham AA.; Daszak P.,"The identification of undiagnosed disease outbreaks is critical for mobilizing efforts to prevent widespread transmission of novel virulent pathogens. Recent developments in online surveillance systems allow for the rapid communication of the earliest reports of emerging infectious diseases and tracking of their spread. The efficacy of these programs, however, is inhibited by the anecdotal nature of informal reporting and uncertainty of pathogen identity in the early stages of emergence. We developed theory to connect disease outbreaks of known aetiology in a network using an array of properties including symptoms, seasonality and case-fatality ratio. We tested the method with 125 reports of outbreaks of 10 known infectious diseases causing encephalitis in South Asia, and showed that different diseases frequently form distinct clusters within the networks. The approach correctly identified unknown disease outbreaks with an average sensitivity of 76 per cent and specificity of 88 per cent. Outbreaks of some diseases, such as Nipah virus encephalitis, were well identified (sensitivity = 100%, positive predictive values = 80%), whereas others (e.g. Chandipura encephalitis) were more difficult to distinguish. These results suggest that unknown outbreaks in resource-poor settings could be evaluated in real time, potentially leading to more rapid responses and reducing the risk of an outbreak becoming a pandemic.",2013,Apr,"Journal of the Royal Society, Interface",10,81,20120904,,10.1098/rsif.2012.0904,23389893,#501,Bogich 2013,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"Nipah virus among military personnel involved in pig culling during an outbreak of encephalitis in Malaysia, 1998-1999.",Ali R.; Mounts AW.; Parashar UD.; Sahani M.; Lye MS.; Isa MM.; Balathevan K.; Arif MT.; Ksiazek TG.,,,,Emerging infectious diseases,7,4,759-61,,10.3201/eid0704.010433,11592256,#519,,Exclusion reason: Duplicate; Lorenzo Cattarino (2019-09-17 17:53:32)(Select): duplicate of #381; ,"" +"Serologic evidence of nipah virus infection in bats, Vietnam.",Hasebe F.; Thuy NT.; Inoue S.; Yu F.; Kaku Y.; Watanabe S.; Akashi H.; Dat DT.; Mai le TQ.; Morita K.,,2012,Mar,Emerging infectious diseases,18,3,536-7,,10.3201/eid1803.111121,22377109,#582,Hasebe 2012,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Human-Bat Interactions in Rural West Africa.,Anti P.; Owusu M.; Agbenyega O.; Annan A.; Badu EK.; Nkrumah EE.; Tschapka M.; Oppong S.; Adu-Sarkodie Y.; Drosten C.,"Because some bats host viruses with zoonotic potential, we investigated human-bat interactions in rural Ghana during 2011-2012. Nearly half (46.6%) of respondents regularly visited bat caves; 37.4% had been bitten, scratched, or exposed to bat urine; and 45.6% ate bat meat. Human-bat interactions in rural Ghana are frequent and diverse.",2015,Aug,Emerging infectious diseases,21,8,1418-21,,10.3201/eid2108.142015,26177344,#609,Anti 2015,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Deadly Nipah Outbreak in Kerala: Lessons Learned for the Future.,Ajith Kumar AK.; Anoop Kumar AS.,,2018,Jul,"Indian journal of critical care medicine : peer-reviewed, official publication of Indian Society of Critical Care Medicine",22,7,475-476,,10.4103/ijccm.IJCCM_282_18,30111920,#612,AjithKumar 2018,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 17:50:20)(Select): we exclude editorials; ,"" +Epidemiology. Breaking the chain in Bangladesh.,Stone R.,,2011,Mar,"Science (New York, N.Y.)",331,6021,1128-31,,10.1126/science.331.6021.1128,21385693,#635,Stone 2011,Exclusion reason: Not peer-reviewed paper; ,"" +Nipah virus encephalitis.,Tan CT.; Chua KB.,"Nipah virus was first discovered in 1999, after a severe outbreak of viral encephalitis among pig farm workers in Malaysia. The disease is thought to spread from Pteropus bats to pigs and then to humans following close contact. The reported mortality rate in this outbreak was 40%. The main necropsy finding in patients with Nipah virus encephalitis was disseminated microinfarction associated with vasculitis and direct neuronal involvement. Relapse of encephalitis was seen in 10% of those who survived the initial illness. Since that initial report, recurrent outbreaks of Nipah virus encephalitis have been seen in Bangladesh and West Bengal, India. These outbreaks occurred between January and May, with Pteropus giganteus as a reservoir of the virus. In Bangladesh, the virus probably spread directly from bats to humans-with human to human spread as another important mode of infection-and the mortality rate was 70%.",2008,Jul,Current infectious disease reports,10,4,315-20,,,18765105,#658,Tan 2008,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A longitudinal study of the prevalence of Nipah virus in Pteropus lylei bats in Thailand: evidence for seasonal preference in disease transmission.,Wacharapluesadee S.; Boongird K.; Wanghongsa S.; Ratanasetyuth N.; Supavonwong P.; Saengsen D.; Gongal GN.; Hemachudha T.,"After 12 serial Nipah virus outbreaks in humans since 1998, it has been noted that all except the initial event in Malaysia occurred during the first 5 months of the year. Increasingly higher morbidity and mortality have been observed in subsequent outbreaks in India and Bangladesh. This may have been related to different virus strains and transmission capability from bat to human without the need for an amplifying host and direct human-to-human transmission. A survey of virus strains in Pteropus lylei and seasonal preference for spillover of these viruses was completed in seven provinces of Central Thailand between May 2005 and June 2007. Nipah virus RNA sequences, which belonged to those of the Malaysian and Bangladesh strains, were detected in the urine of these bats, with the Bangladesh strain being dominant. Highest recovery of Nipah virus RNA was observed in May. Of two provincial sites where monthly surveys were done, the Bangladesh strain was almost exclusively detected during April to June. The Malaysian strain was found dispersed during December to June. Although direct contact during breeding (in December to April) was believed to be an important transmission factor, our results may not entirely support the role of breeding activities in spillage of virus. Greater virus shedding over extended periods in the case of the Malaysian strain and the highest peak of virus detection in May in the case of the Bangladesh strain when offspring started to separate may suggest that there may be responsible mechanisms other than direct contact during breeding in the same roost. Knowledge of seasonal preferences of Nipah virus shedding in P. lylei will help us to better understand the dynamics of Nipah virus transmission and have implications for disease management.",2010,Mar,"Vector borne and zoonotic diseases (Larchmont, N.Y.)",10,2,183-90,,10.1089/vbz.2008.0105,19402762,#746,Wacharapluesadee 2010,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Thomas Rawson (2025-02-13 23:27:31)(Included): Good paper but nothing to extract. Genomic info without parameters, and PCR but only in bats; ",Seasonality; Seroprevalence in animals +Domesticated animals as hosts of henipaviruses and filoviruses: A systematic review.,Glennon EE.; Restif O.; Sbarbaro SR.; Garnier R.; Cunningham AA.; Suu-Ire RD.; Osei-Amponsah R.; Wood JLN.; Peel AJ.,"Bat-borne viruses carry undeniable risks to the health of human beings and animals, and there is growing recognition of the need for a 'One Health' approach to understand their frequently complex spill-over routes. While domesticated animals can play central roles in major spill-over events of zoonotic bat-borne viruses, for example during the pig-amplified Malaysian Nipah virus outbreak of 1998-1999, the extent of their potential to act as bridging or amplifying species for these viruses has not been characterised systematically. This review aims to compile current knowledge on the role of domesticated animals as hosts of two types of bat-borne viruses, henipaviruses and filoviruses. A systematic literature search of these virus-host interactions in domesticated animals identified 72 relevant studies, which were categorised by year, location, design and type of evidence generated. The review then focusses on Africa as a case study, comparing research efforts in domesticated animals and bats with the distributions of documented human cases. Major gaps remain in our knowledge of the potential ability of domesticated animals to contract or spread these zoonoses. Closing these gaps will be necessary to fully evaluate and mitigate spill-over risks of these viruses, especially with global agricultural intensification.",2018,03,"Veterinary journal (London, England : 1997)",233,,25-34,,10.1016/j.tvjl.2017.12.024,29486875,#809,Glennon 2018,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +Henipaviruses: a new family of emerging Paramyxoviruses.,Wild TF.,"Paramyxoviruses have been implicated in both animal and human infections. Some viruses, such as Morbilliviruses are responsible for large-scale epidemics. However, there are limited observations of these viruses crossing the host species barrier in nature. In 1994, in Australia a fatal infection in horses and humans was identified to be caused by a new Paramyxovirus, Hendra virus (HeV), and in 1998 in Malaysia, a closely related virus, Nipah virus (NiV) was responsible for fatal infections in pigs and humans. These two viruses were sufficiently different from previously described Paramyxoviruses to create a new genus, Henipaviruses. The natural reservoir of these viruses was the fruit bat (Pteropus), which is found in regions extending from the western Pacific to the eastern coast of Africa. Serological studies have established that as many as half the fruit bats in colonies throughout these regions may have antibodies against this family of viruses. The availability of diagnostic reagents for Nipah virus in humans have identified infections in several countries including, Bangladesh, India and Indonesia. In some of these epidemics, mortality in humans exceeds 75%. Deforestation is probably responsible for fruit bats leaving their ecological niches and approaching farms and villages. The infection of humans and animals may occur via contaminated foods or in certain cases by animals to man. At present, only within close families has human-to-human transmission been proposed. Henipavirus infections are probably more widespread than it is at presently known and so it is important to have an intense monitoring for these diseases, especially in countries where large-scale deforestation is happening.",2009,Mar,Pathologie-biologie,57,2,188-96,,10.1016/j.patbio.2008.04.006,18511217,#865,Wild 2009,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +In-depth assessment of an outbreak of Nipah encephalitis with person-to-person transmission in Bangladesh: implications for prevention and control strategies.,Blum LS.; Khan R.; Nahar N.; Breiman RF.,"Continued Nipah encephalitis outbreaks in Bangladesh highlight the need for preventative and control measures to reduce transmission from bats to humans and human-to-human spread. Qualitative research was conducted at the end of an encephalitis outbreak in Faridpur, Bangladesh in May 2004 and continued through December 2004. Methods included in-depth interviews with caretakers of cases, case survivors, neighbors of cases, and health providers. Results show contrasts between local and biomedical views on causal explanations and appropriate care. Social norms demanded that family members maintain physical contact with sick patients, potentially increasing the risk of human-to-human transmission. Initial treatment strategies by community members involved home remedies, and public health officials encouraged patient hospitalization. Over time, communities linked the outbreak to supernatural powers and sought care with spiritual healers. Differing popular and medical views of illness caused conflict and rejection of biomedical recommendations. Future investigators should consider local perceptions of disease and treatment when developing outbreak strategies.",2009,Jan,The American journal of tropical medicine and hygiene,80,1,96-102,,,19141846,#884,Blum 2009,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Nipah virus encephalitis outbreak in Malaysia.,Lam SK.; Chua KB.,"Emerging infectious diseases involving zoonosis have become important global health problems. The 1998 outbreak of severe febrile encephalitis among pig farmers in Malaysia caused by a newly emergent paramyxovirus, Nipah virus, is a good example. This disease has the potential to spread to other countries through infected animals and can cause considerable economic loss. The clinical presentation includes segmental myoclonus, areflexia, hypertension, and tachycardia, and histologic evidence includes endothelial damage and vasculitis of the brain and other major organs. Magnetic resonance imaging has demonstrated the presence of discrete high-signal-intensity lesions disseminated throughout the brain. Nipah virus causes syncytial formation in Vero cells and is antigenically related to Hendra virus. The Island flying fox (Pteropus hypomelanus; the fruit bat) is a likely reservoir of this virus. The outbreak in Malaysia was controlled through the culling of >1 million pigs.",2002,May,Clinical infectious diseases : an official publication of the Infectious Diseases Society of America,34 Suppl 2,,S48-51,,10.1086/338818,11938496,#893,Lam 2002,Exclusion reason: Duplicate; Lorenzo Cattarino (2019-09-17 17:42:34)(Select): review; ,"" +"Update: outbreak of Nipah virus--Malaysia and Singapore, 1999.", .,"During March 1999, health officials in Malaysia and Singapore, in collaboration with Australian researchers and CDC, investigated reports of febrile encephalitic and respiratory illnesses among workers who had exposure to pigs. A previously unrecognized paramyxovirus (formerly known as Hendra-like virus), now called Nipah virus, was implicated by laboratory testing in many of these cases. Febrile encephalitis continues to be reported in Malaysia but has decreased coincident with mass culling of pigs in outbreak areas. No new cases of febrile illness associated with Nipah virus infection have been identified in Singapore since March 19, 1999, when abattoirs were closed. This report summarizes interim findings from ongoing epidemiologic and laboratory investigations in Malaysia and Singapore.",1999,Apr,MMWR. Morbidity and mortality weekly report,48,16,335-7,,,10366143,#894,,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 19:00:06)(Select): MMWR are not pr; ,"" +"Spatial characterization of colonies of the flying fox bat, a carrier of Nipah virus in Thailand.",Thanapongtharm W.; Linard C.; Wiriyarat W.; Chinsorn P.; Kanchanasaka B.; Xiao X.; Biradar C.; Wallace RG.; Gilbert M.,"A major reservoir of Nipah virus is believed to be the flying fox genus Pteropus, a fruit bat distributed across many of the world's tropical and sub-tropical areas. The emergence of the virus and its zoonotic transmission to livestock and humans have been linked to losses in the bat's habitat. Nipah has been identified in a number of indigenous flying fox populations in Thailand. While no evidence of infection in domestic pigs or people has been found to date, pig farming is an active agricultural sector in Thailand and therefore could be a potential pathway for zoonotic disease transmission from the bat reservoirs. The disease, then, represents a potential zoonotic risk. To characterize the spatial habitat of flying fox populations along Thailand's Central Plain, and to map potential contact zones between flying fox habitats, pig farms and human settlements, we conducted field observation, remote sensing, and ecological niche modeling to characterize flying fox colonies and their ecological neighborhoods. A Potential Surface Analysis was applied to map contact zones among local epizootic actors. Flying fox colonies are found mainly on Thailand's Central Plain, particularly in locations surrounded by bodies of water, vegetation, and safe havens such as Buddhist temples. High-risk areas for Nipah zoonosis in pigs include the agricultural ring around the Bangkok metropolitan region where the density of pig farms is high. Passive and active surveillance programs should be prioritized around Bangkok, particularly on farms with low biosecurity, close to water, and/or on which orchards are concomitantly grown. Integration of human and animal health surveillance should be pursued in these same areas. Such proactive planning would help conserve flying fox colonies and should help prevent zoonotic transmission of Nipah and other pathogens.",2015,Mar,BMC veterinary research,11,,81,,10.1186/s12917-015-0390-0,25880385,#902,Thanapongtharm 2015,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-08-29 21:51:46)(Select): Nice paper, table 3 could be useful. Other stuff might be difficult to extract though.; ","" +Nipah strikes in India; an urgent call for outbreak preparedness in Pakistan.,Mallhi TH.; Khan YH.; Khan TM.,,,,Travel medicine and infectious disease,25,,10,,10.1016/j.tmaid.2018.08.001,30081100,#921,,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Evidence of exposure to henipaviruses in domestic pigs in Uganda.,Atherstone C.; Diederich S.; Weingartl HM.; Fischer K.; Balkema-Buschmann A.; Grace D.; Alonso S.; Dhand NK.; Ward MP.; Mor SM.,"Hendra virus (HeV) and Nipah virus (NiV), belonging to the genus Henipavirus, are among the most pathogenic of viruses in humans. Old World fruit bats (family Pteropodidae) are the natural reservoir hosts. Molecular and serological studies found evidence of henipavirus infection in fruit bats from several African countries. However, little is known about the potential for spillover into domestic animals in East Africa, particularly pigs, which served as amplifying hosts during the first outbreak of NiV in Malaysia and Singapore. We collected sera from 661 pigs presented for slaughter in Uganda between December 2015 and October 2016. Using HeV G and NiV G indirect ELISAs, 14 pigs (2%) were seroreactive in at least one ELISA. Seroprevalence increased to 5.4% in October 2016, when pigs were 9.5 times more likely to be seroreactive than pigs sampled in December 2015 (p = 0.04). Eight of the 14 ELISA-positive samples reacted with HeV N antigen in Western blot. None of the sera neutralized HeV or NiV in plaque reduction neutralization tests. Although we did not detect neutralizing antibodies, our results suggest that pigs in Uganda are exposed to henipaviruses or henipa-like viruses. Pigs in this study were sourced from many farms throughout Uganda, suggesting multiple (albeit rare) introductions of henipaviruses into the pig population. We postulate that given the widespread distribution of Old World fruit bats in Africa, spillover of henipaviruses from fruit bats to pigs in Uganda could result in exposure of pigs at multiple locations. A higher risk of a spillover event at the end of the dry season might be explained by higher densities of bats and contact with pigs at this time of the year, exacerbated by nutritional stress in bat populations and their reproductive cycle. Future studies should prioritize determining the risk of spillover of henipaviruses from pigs to people, so that potential risks can be mitigated.",2018,Dec,Transboundary and emerging diseases,,,,,10.1111/tbed.13105,30576076,#926,Atherstone 2018,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Emerging viral infections.,Bale JF.,"Unique disorders appear episodically in human populations and cause life-threatening systemic or neurological disease. Historical examples of such disorders include von Economo encephalitis, a disorder of presumed viral etiology; acquired immune deficiency syndrome, caused by the human immunodeficiency virus; and severe acute respiratory syndrome, caused by a member of the coronavirus family. This article describes the factors that contribute to the emergence of infectious diseases and focuses on selected recent examples of emerging viral infections that can affect the nervous system of infants, children, and adolescents.",2012,Sep,Seminars in pediatric neurology,19,3,152-7,,10.1016/j.spen.2012.02.001,22889544,#932,Bale 2012,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-08-20 23:58:43)(Select): Including for refs; ,"" +Bats and their virome: an important source of emerging viruses capable of infecting humans.,Smith I.; Wang LF.,"Bats are being increasingly recognized as an important reservoir of zoonotic viruses of different families, including SARS coronavirus, Nipah virus, Hendra virus and Ebola virus. Several recent studies hypothesized that bats, an ancient group of flying mammals, are the major reservoir of several important RNA virus families from which other mammalian viruses of livestock and humans were derived. Although this hypothesis needs further investigation, the premise that bats carry a large number of viruses is commonly accepted. The question of whether bats have unique biological features making them ideal reservoir hosts has been the subject of several recent reviews. In this review, we will focus on the public health implications of bat derived zoonotic viral disease outbreaks, examine the drivers and risk factors of past disease outbreaks and outline research directions for better control of future disease events.",2013,Feb,Current opinion in virology,3,1,84-91,,10.1016/j.coviro.2012.11.006,23265969,#933,Smith 2013,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Lorenzo Cattarino (2019-09-17 18:48:27)(Select): too baty ; ,Review paper +In utero transmission of Nipah virus: role played by pregnancy and vertical transmission in Henipavirus epidemiology.,Dimitrov DS.; Wang LF.,,2007,Sep,The Journal of infectious diseases,196,6,807-9,,10.1086/520822,17703408,#945,Dimitrov 2007,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 18:25:31)(Select): editorial - not pr; Lorenzo Cattarino (2019-03-20 21:13:43)(Screen): vertical transmission of nipah; ,Editorial +Nipah virus outbreaks: still small but extremely lethal.,Spiropoulou CF.,,2018,Oct,The Journal of infectious diseases,,,,,10.1093/infdis/jiy611,30365002,#955,Spiropoulou 2018,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Sangeeta Bhatia (2019-08-29 22:14:56)(Select): We have included the paper this commentary refers to.; ,Editorial; commentary +Nipah encephalitis - an update.,Sherrini BA.; Chong TT.,"Between September 1998 to May 1999, Malaysia and Singapore were hit by an outbreak of fatal encephalitis caused by a novel virus from the paramyxovirus family. This virus was subsequently named as Nipah virus, after the Sungei Nipah village in Negeri Sembilan, where the virus was first isolated. The means of transmission was thought to be from bats-topigs and subsequently pigs-to-human. Since 2001, almost yearly outbreak of Nipah encephalitis has been reported from Bangladesh and West Bengal, India. These outbreaks were characterized by direct bats-to-human, and human-to-human spread of infection. Nipah virus shares many similar characteristics to Hendra virus, first isolated in an outbreak of respiratory illness involving horses in Australia in 1994. Because of their homology, a new genus called Henipavirus (Hendra + Nipah) was introduced. Henipavirus infection is a human disease manifesting most often as acute encephalitis (which may be relapsing or late-onset) or pneumonia, with a high mortality rate. Pteropus bats act as reservoir for the virus, which subsequently lead to human spread. Transmission may be from consumption of food contaminated by bats secretion, contact with infected animals, or human-to-human spread. With wide geographical distribution of Pteropus bats, Henipavirus infection has become an important emerging human infection with worldwide implication.",2014,Aug,The Medical journal of Malaysia,69 Suppl A,,103-11,,,25417957,#958,Sherrini 2014,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +"Nipah virus infection in dogs, Malaysia, 1999.",Mills JN.; Alim AN.; Bunning ML.; Lee OB.; Wagoner KD.; Amman BR.; Stockton PC.; Ksiazek TG.,"The 1999 outbreak of Nipah virus encephalitis in humans and pigs in Peninsular Malaysia ended with the evacuation of humans and culling of pigs in the epidemic area. Serologic screening showed that, in the absence of infected pigs, dogs were not a secondary reservoir for Nipah virus.",2009,Jun,Emerging infectious diseases,15,6,950-2,,10.3201/eid1506.080453,19523300,#965,Mills 2009,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +The pandemic potential of Nipah virus.,Luby SP.,"Nipah virus, a paramyxovirus whose wildlife reservoir is Pteropus bats, was first discovered in a large outbreak of acute encephalitis in Malaysia in 1998 among persons who had contact with sick pigs. Apparently, one or more pigs was infected from bats, and the virus then spread efficiently from pig to pig, then from pigs to people. Nipah virus outbreaks have been recognized nearly every year in Bangladesh since 2001 and occasionally in neighboring India. Outbreaks in Bangladesh and India have been characterized by frequent person-to-person transmission and the death of over 70% of infected people. Characteristics of Nipah virus that increase its risk of becoming a global pandemic include: humans are already susceptible; many strains are capable of limited person-to-person transmission; as an RNA virus, it has an exceptionally high rate of mutation: and that if a human-adapted strain were to infect communities in South Asia, high population densities and global interconnectedness would rapidly spread the infection. Appropriate steps to estimate and manage this risk include studies to explore the molecular and genetic basis of respiratory transmission of henipaviruses, improved surveillance for human infections, support from high-income countries to reduce the risk of person-to-person transmission of infectious agents in low-income health care settings, and consideration of vaccination in communities at ongoing risk of exposure to the secretions and excretions of Pteropus bats.",2013,Oct,Antiviral research,100,1,38-43,,10.1016/j.antiviral.2013.07.011,23911335,#972,Luby 2013,Exclusion reason: Not peer-reviewed paper; Lorenzo Cattarino (2019-09-17 18:34:26)(Select): commentary - not pr; ,"" +"Phylogeography, Transmission, and Viral Proteins of Nipah Virus.",Sun B.; Jia L.; Liang B.; Chen Q.; Liu D.,"Nipah virus (NiV), a zoonotic paramyxovirus belonging to the genus Henipavirus, is classified as a Biosafety Level-4 pathogen based on its high pathogenicity in humans and the lack of available vaccines or therapeutics. Since its initial emergence in 1998 in Malaysia, this virus has become a great threat to domestic animals and humans. Sporadic outbreaks and person-to-person transmission over the past two decades have resulted in hundreds of human fatalities. Epidemiological surveys have shown that NiV is distributed in Asia, Africa, and the South Pacific Ocean, and is transmitted by its natural reservoir, Pteropid bats. Numerous efforts have been made to analyze viral protein function and structure to develop feasible strategies for drug design. Increasing surveillance and preventative measures for the viral infectious disease are urgently needed.",2018,Oct,Virologica Sinica,33,5,385-393,,10.1007/s12250-018-0050-1,30311101,#978,Sun 2018,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Lorenzo Cattarino (2019-09-17 17:43:49)(Select): review; ,Review paper +"Epidemiology, surveillance and control of Nipah virus infections in Malaysia.",Chua KB.,"The outbreak of Nipah virus, affecting pigs and pig-farm workers, was first noted in September 1998 in the north-western part of peninsular Malaysia. By March 1999, the outbreak had spread to other pig-farming areas of the country, inclusive of the neighbouring country, Singapore. A total of 283 human cases of viral encephalitis with 109 deaths were recorded in Malaysia from 29 September 1998 to December 1999. During the outbreak period, a number of surveillances under three broad groups; Surveillance in Human Health Sector, Surveillance in Animal Health Sector, and Surveillance for the Reservoir Hosts, were carried out to determine the prevalence, risk of virus infections and transmission in human and swine populations as well as the source and reservoir hosts of Nipah virus. Surveillance data showed that the virus spread rapidly among pigs within infected farms and transmission was attributed to direct contact with infective excretions and secretions. The spread of the virus among pig farms within and between states of peninsular Malaysia was due to movement of pigs. The transmission of the virus to humans was through close contact with infected pigs. Human to human transmission was considered a rare event though the Nipah virus could be isolated from saliva, urine, nasal and pharyngeal secretions of patients. Field investigations identified fruitbats of the Pteropid species as the natural reservoir hosts of the viruses. The outbreak was effectively brought under control following the discovery of the virus and institution of correct control measures through a combined effort of multi-ministerial and multidisciplinary teams working in close co-operation and collaboration with other international agencies.",2010,Dec,The Malaysian journal of pathology,32,2,69-73,,,21329176,#980,Chua 2010,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Molecular epidemiology and phylogeny of Nipah virus infection: A mini review.,Angeletti S.; Lo Presti A.; Cella E.; Ciccozzi M.,"Nipah virus (NiV) is a member of the genus Henipavirus of the family Paramyxoviridae, characterized by high pathogenicity and endemic in South Asia. It is classified as a Biosafety Level-4 (BSL-4) agent. The case-fatality varies from 40% to 70% depending on the severity of the disease and on the availability of adequate healthcare facilities. At present no antiviral drugs are available for NiV disease and the treatment is just supportive. Phylogenetic and evolutionary analyses can be used to help in understanding the epidemiology and the temporal origin of this virus. This review provides an overview of evolutionary studies performed on Nipah viruses circulating in different countries. Thirty phylogenetic studies have been published from 2000 to 2015 years, searching on pub-med using the key words 'Nipah virus AND phylogeny' and twenty-eight molecular epidemiological studies from 2006 to 2015 have been performed, typing the key words 'Nipah virus AND molecular epidemiology'. Overall data from the published study demonstrated as phylogenetic and evolutionary analysis represent promising tools to evidence NiV epidemics, to study their origin and evolution and finally to act with effective preventive measure.",2016,Jul,Asian Pacific journal of tropical medicine,9,7,630-4,,10.1016/j.apjtm.2016.05.012,27393089,#998,Angeletti 2016,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper; phylogenetic +"Risk factors, prevention and communication strategy during Nipah virus outbreak in Malaysia.",Chua KB.,"An outbreak of acute febrile encephalitis affecting pig-farm workers and owners was recognized in peninsular Malaysia as early as September 1998. The outbreak was initially thought to be due to Japanese encephalitis (JE) virus and thus very intensive prevention, control and communication strategies directed at JE virus were undertaken by the Ministry of Health and Ministry of Agriculture of Malaysia. There was an immediate change in the prevention, control and communication strategies with focus and strategies on infected pigs as the source of infections for humans and other animals following the discovery of Nipah virus. Information and understanding the risks of Nipah virus infections and modes of transmission strengthened the directions of prevention, control and communication strategies. A number of epidemiological surveillances and field investigations which were broadly divided into 3 groups covering human health sector, animal health sector and reservoir hosts were carried out as forms of risk assessment to determine and assess the factors and degree of risk of infections by the virus. Data showed that there was significant association between Nipah virus infection and performing activities involving close contact with pigs, such as processing of piglets, administering injection or medication to pigs, assisting in the birth of piglets, assisting in pig breeding, and handling of dead pigs in the affected farms. A complex process of anthropogenic driven deforestation, climatic changes brought on by El Niño-related drought, forest fire and severe haze, and ecological factors of mixed agro-pig farming practices and design of pig-sties led to the spillovers of the virus from its wildlife reservoir into pig population.",2010,Dec,The Malaysian journal of pathology,32,2,75-80,,,21329177,#1002,Chua 2010,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +Emerging trends of Nipah virus: A review.,Sharma V.; Kaushik S.; Kumar R.; Yadav JP.; Kaushik S.,"Since emergence of the Nipah virus (NiV) in 1998 from Malaysia, the NiV virus has reappeared on different occasions causing severe infections in human population associated with high rate of mortality. NiV has been placed along with Hendra virus in genus Henipavirus of family Paramyxoviridae. Fruit bats (Genus Pteropus) are known to be natural host and reservoir of NiV. During the outbreaks from Malaysia and Singapore, the roles of pigs as intermediate host were confirmed. The infection transmitted from bats to pigs and subsequently from pigs to humans. Severe encephalitis was reported in NiV infection often associated with neurological disorders. First NiV outbreak in India occurred in Siliguri district of West Bengal in 2001, where direct transmission of the NiV virus from bats-to-human and human-to-human was reported in contrast to the role of pigs in the Malaysian NiV outbreak. Regular NiV outbreaks have been reported from Bangladesh since 2001 to 2015. The latest outbreak of NiV has been recorded in May, 2018 from Kerala, India which resulted in the death of 17 individuals. Due to lack of vaccines and effective antivirals, Nipah encephalitis poses a great threat to public health. Routine surveillance studies in the infected areas can be useful in detecting early signs of infection and help in containment of these outbreaks.",2019,Jan,Reviews in medical virology,29,1,e2010,,10.1002/rmv.2010,30251294,#1003,Sharma 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Lorenzo Cattarino (2019-09-17 18:43:51)(Select): parameters in table 1; ,Review paper +Nipah virus outbreaks in Bangladesh: a deadly infectious disease.,Rahman M.; Chakraborty A.,"During 2001-2011, multidisciplinary teams from the Institute of Epidemiology, Disease Control and Research (IEDCR) and International Centre for Diarrhoeal Disease Research, Bangladesh(icddr,b) identified sporadic cases and 11 outbreaks of Nipah encephalitis. Three outbreaks were detected through sentinel surveillance; others were identified through event-based surveillance. A total of 196 cases of Nipah encephalitis, in outbreaks, clusters and as isolated cases were detected from 20 districts of Bangladesh; out of them 150 (77%) cases died. Drinking raw date palm sap and contact with a case were identified as the major risk factors for acquiring the disease. Combination of surveillance systems and multidisciplinary outbreak investigations can be an effective strategy not only for detection of emerging infectious diseases but also for identification of novel characteristics and risk factors for these diseases in resource-poor settings.",,,WHO South-East Asia journal of public health,1,2,208-212,,10.4103/2224-3151.206933,28612796,#1004,,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Lorenzo Cattarino (2019-09-17 18:39:34)(Select): nice table 2; ,Review paper +"The emergence of Nipah virus, a highly pathogenic paramyxovirus.",Lo MK.; Rota PA.,"Nipah virus first emerged in Malaysia and Singapore between 1998 and 1999, causing severe febrile encephalitis in humans with a mortality rate of close to 40%. In addition, a significant portion of those recovering from acute infection had relapse encephalitis and long-term neurological defects. Since its initial outbreak, there have been numerous outbreaks in Bangladesh and India, in which the mortality rate rose to approximately 70%. These subsequent outbreaks were distinct from the initial outbreak, both in their epidemiology and in their clinical presentations. Recent developments in diagnostics may expedite disease diagnosis and outbreak containment, while progress in understanding the molecular biology of Nipah virus could lead to novel therapeutics and vaccines for this deadly pathogen.",2008,Dec,Journal of clinical virology : the official publication of the Pan American Society for Clinical Virology,43,4,396-400,,10.1016/j.jcv.2008.08.007,18835214,#1005,Lo 2008,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper; Seroprevalence in animals +"A spatial association between a Nipah virus outbreak in Kozhikode, Kerala, India and Nipah virus infection in Pteropus bats.",Mourya DT.; Yadav P.; Sudeep AB.; Gokhale MD.; Gupta N.; Gangakhedkar RR.; Bhargava B.,,2018,Dec,Clinical infectious diseases : an official publication of the Infectious Diseases Society of America,,,,,10.1093/cid/ciy1093,30590538,#1019,Mourya 2018,Exclusion reason: Duplicate; ,"" +"Henipaviruses and fruit bats, Papua New Guinea.",Field H.; de Jong CE.; Halpin K.; Smith CS.,,2013,Apr,Emerging infectious diseases,19,4,670-1,,10.3201/eid1904.111912,23750833,#1032,Field 2013,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Seroprevalence in animals +Transmission of human infection with Nipah virus.,Luby SP.; Gurley ES.; Hossain MJ.,"Nipah virus (NiV) is a paramyxovirus whose reservoir host is fruit bats of the genus Pteropus. Occasionally the virus is introduced into human populations and causes severe illness characterized by encephalitis or respiratory disease. The first outbreak of NiV was recognized in Malaysia, but 8 outbreaks have been reported from Bangladesh since 2001. The primary pathways of transmission from bats to people in Bangladesh are through contamination of raw date palm sap by bats with subsequent consumption by humans and through infection of domestic animals (cattle, pigs, and goats), presumably from consumption of food contaminated with bat saliva or urine with subsequent transmission to people. Approximately one-half of recognized Nipah case patients in Bangladesh developed their disease following person-to-person transmission of the virus. Efforts to prevent transmission should focus on decreasing bat access to date palm sap and reducing family members' and friends' exposure to infected patients' saliva.",2009,Dec,Clinical infectious diseases : an official publication of the Infectious Diseases Society of America,49,11,1743-8,,10.1086/647951,19886791,#1042,Luby 2009,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Joseph Hicks (2025-03-11 03:04:08)(Select): Review paper; ,"" +Henipaviruses-unanswered questions of lethal zoonoses.,Field H.; Kung N.,"The highly lethal Hendra and Nipah viruses have been described for little more than a decade, yet within that time have been aetiologically associated with major livestock and human health impacts, albeit on a limited scale. Do these emerging pathogens pose a broader threat, or are they inconsequential 'viral chatter'. Given their lethality, and the evident multi-generational human-to-human transmission associated with Nipah virus in Bangladesh, it seems prudent to apply the precautionary principle. While much is known of their clinical, pathogenic and epidemiologic features in livestock species and humans, a number of fundamental questions regarding the relationship between the viruses, their natural fruit-bat host and the environment remain unanswered. In this paper, we pose and probe these questions in context, and offer perspectives based primarily on our experience with Hendra virus in Australia, augmented with Nipah virus parallels.",2011,Dec,Current opinion in virology,1,6,658-61,,10.1016/j.coviro.2011.10.025,22440924,#1058,Field 2011,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +Henipaviruses: an updated review focusing on the pteropid reservoir and features of transmission.,Clayton BA.; Wang LF.; Marsh GA.,"The henipaviruses, Hendra virus and Nipah virus, are pathogens that have emerged from flying foxes in Australia and South-east Asia to infect both livestock and humans, often fatally. Since the emergence of Hendra virus in Australia in 1994 and the identification of Australian flying foxes as hosts to this virus, our appreciation of bats as reservoir hosts of henipaviruses has expanded globally to include much of Asia and areas of Africa. Despite this, little is currently known of the mechanisms by which bats harbour viruses capable of causing such severe disease in other terrestrial mammals. Pteropid bat ecology, henipavirus virology, therapeutic developments and features of henipavirus infection, pathology and disease in humans and other mammals are reviewed elsewhere in detail. This review focuses on bats as reservoir hosts to henipaviruses and features of transmission of Hendra virus and Nipah virus following spillover from these reservoir hosts.",2013,Feb,Zoonoses and public health,60,1,69-83,,10.1111/j.1863-2378.2012.01501.x,22709528,#1062,Clayton 2013,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Sangeeta Bhatia (2019-04-03 02:45:20)(Screen): nipah focused.; Lorenzo Cattarino (2019-03-20 21:03:15)(Screen): review; ,Review paper +Re-emergence Nipah - a review.,Arif SM.; Basher A.; Quddus MR.; Faiz MA.,"There was an outbreak of new emergence viral encephalitis caused by Nipah virus among humans in some areas of Bangladesh during 2001 - till to date. The disease affected mainly the young, had increased suspicion to spread from bat to man through eating of the same fruits. The risk of human-to-human transmission is thought to be low though many of the affected individuals belonged to the same family. The disease presented mainly as acute encephalitis with usually a short incubation period of less than two weeks, with the main symptoms of fever, headache, and giddiness followed by coma. Distinctive clinical signs include areflexia, hypotonia, hypertension, tachycardia and segmental myoclonus. Serology was helpful in confirming the diagnosis. Magnetic resonance imaging (MRI) showed distinctive changes of multiple, discrete or confluent small high signal lesions, best seen with fluid-attenuated inversion recovery (FLAIR) sequences. Mortality was as high as 32-92% and death was probably due to severe brainstem involvement. Relapse encephalitis was seen in those who recovered from acute encephalitis, and late-onset encephalitis was seen in those with initial non-encephalitic or asymptomatic diseases. Both these manifested as focal encephalitis arising from recurrent infection.",2012,Oct,Mymensingh medical journal : MMJ,21,4,772-9,,,23134935,#1063,Arif 2012,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +Nipah virus: A review on epidemiological characteristics and outbreaks to inform public health decision making.,Ambat AS.; Zubair SM.; Prasad N.; Pundir P.; Rajwar E.; Patil DS.; Mangad P.,"The objectives of this review were to understand the epidemiology and outbreak of NiV infection and to discuss the preventive and control measures across different regions. We searched PubMed and Scopus for relevant articles from January 1999 to July 2018 and identified 927 articles which were screened for titles, abstracts and full texts by two review authors independently. The screening process resulted in 44 articles which were used to extract relevant information. Information on epidemiology of NiV, outbreaks in Malaysia, Singapore, Bangladesh, India and Philippines, including diagnosis, prevention, treatment, vaccines, control, surveillance and economic burden due to NiV were discussed. Interdisciplinary and multi sectoral approach is vital in preventing the emergence of NiV. It is necessary to undertake rigorous research for developing vaccines and medicines to prevent and treat NiV.",2019,Feb,Journal of infection and public health,,,,,10.1016/j.jiph.2019.02.013,30808593,#1084,Ambat 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Lorenzo Cattarino (2019-09-17 17:56:18)(Select): review; ,Review paper +"Towards global health security: response to the May 2018 Nipah virus outbreak linked to Pteropus bats in Kerala, India.",Sadanadan R.; Arunkumar G.; Laserson KF.; Heretik KH.; Singh S.; Mourya DT.; Gangakhedkar RR.; Gupta N.; Sharma R.; Dhuria M.; Jain SK.; Nichol S.; Gupta P.; Bhargava B.,,2018,,BMJ global health,3,6,e001086,,10.1136/bmjgh-2018-001086,30483413,#1092,Sadanadan 2018,Exclusion reason: Not peer-reviewed paper; ,commentary +Molecular virology of the henipaviruses.,Rota PA.; Lo MK.,"Nipah (NiV) and Hendra (HeV) viruses comprise the genus Henipavirus and are highly pathogenic paramyxoviruses, which cause fatal encephalitis and respiratory disease in humans. Since their respective initial outbreaks in 1998 and 1994, they have continued to cause sporadic outbreaks resulting in fatal disease. Due to their designation as Biosafety Level 4 pathogens, the level of containment required to work with live henipaviruses is available only to select laboratories around the world. This chapter provides an overview of the molecular virology of NiV and HeV including comparisons to other, well-characterized paramyxoviruses. This chapter also describes the sequence diversity present among the henipaviruses.",2012,,Current topics in microbiology and immunology,359,,41-58,,10.1007/82_2012_211,22552699,#1112,Rota 2012,Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-04-03 02:59:05)(Screen): Might have info about sequence diversity; ,Useful +The immune response to Nipah virus infection.,Prescott J.; de Wit E.; Feldmann H.; Munster VJ.,"Nipah virus has recently emerged as a zoonotic agent that is highly pathogenic in humans. Outbreaks have occurred regularly over the last two decades in South and Southeast Asia, where mortality rates reach as high as 100 %. The natural reservoir of Nipah virus has been identified as bats from the Pteropus family, where infection is largely asymptomatic. Human disease is characterized by both respiratory and encephalitic components, and thus far, no effective vaccine or intervention strategies are available. Little is know about how the immune response of either the reservoir host or incidental hosts responds to infection, and how this immune response is either inadequate or might contribute to disease in the dead-end host. Experimental vaccines strategies have given us some insight into the immunological requirements for protection. This review summarizes our current understanding of the immune response to Nipah virus infection and emphasizes the need for further research.",2012,Sep,Archives of virology,157,9,1635-41,,10.1007/s00705-012-1352-5,22669317,#1116,Prescott 2012,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper; Seroprevalence in animals; immunology +Hendra and Nipah infection: emerging paramyxoviruses.,Aljofan M.,"Since their first emergence in mid 1990s henipaviruses continued to re emerge in Australia and South East Asia almost every year. In total there has been more than 12 Nipah and 48 Hendra virus outbreaks reported in South East Asia and Australia, respectively. These outbreaks are associated with significant economic and health damages that most high risks countries (particularly in South East Asia) cannot bear the burden of such economical threats. Up until recently, there were no actual therapeutics available to treat or prevent these lethal infections. However, an international collaborative research has resulted in the identification of a potential equine Hendra vaccine capable of providing antibody protection against Hendra virus infections. Consequently, with the current findings and after nearly 2 decades since their first detection, are we there yet? This review recaps the chronicle of the henipavirus emergence and briefly evaluates potential anti-henipavirus vaccines and antivirals.",2013,Nov,Virus research,177,2,119-26,,10.1016/j.virusres.2013.08.002,23954578,#1119,Aljofan 2013,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Lorenzo Cattarino (2019-09-17 17:55:13)(Select): review; ,Review paper +Nipah and Hendra virus infectious diseases.,Yoneda M.,"Nipah and Hendra virus were first identified in mid 1990s in Australia and Malaysia, caus- ing epidemics with high mortality rate in affected animals and humans. Since their first emer- gence, they continued to re-emerge in Australia and South East Asia almost every year. Nipah and Hendra virus were classified in the new genus Henipavirus because of their un- common features amongst Paramyxoviridae. Henipaviruses are zoonotic paramyxoviruses with a broad tropism, and cause severe acute respiratory disease and encephalitis. Their high virulence and wide host range make them to be given Biosecurity Level 4 status. This review summarizes details of Henipavirus emergence, reservoir hosts and pathology, and introduce recent progress in vaccines and antivirals.",2016,12,Nihon rinsho. Japanese journal of clinical medicine,74,12,1973-1978,,,30550652,#1125,Yoneda 2016,Exclusion reason: Not in English; ,"" +Lessons from the Nipah virus outbreak in Malaysia.,Looi LM.; Chua KB.,"The Nipah virus outbreak in Malaysia (September 1998 to May 1999) resulted in 265 cases of acute encephalitis with 105 deaths, and near collapse of the billion-dollar pig-farming industry. Because it was initially attributed to Japanese encephalitis, early control measures were ineffective, and the outbreak spread to other parts of Malaysia and nearby Singapore. The isolation of the novel aetiological agent, the Nipah virus (NiV), from the cerebrospinal fluid of an outbreak victim was the turning point which led to outbreak control 2 months later. Together with the Hendra virus, NiV is now recognised as a new genus, Henipavirus (Hendra + Nipah), in the Paramyxoviridae family. Efforts of the local and international scientific community have since elucidated the epidemiology, clinico-pathophysiology and pathogenesis of this new disease. Humans contracted the infection from close contact with infected pigs, and formed the basis for pig-culling that eventually stopped the outbreak. NiV targeted medium-sized and small blood vessels resulting in endothelial multinucleated syncytia and fibrinoid necrosis. Autopsies revealed disseminated cerebral microinfarctions resulting from vasculitis-induced thrombosis and direct neuronal involvement. The discovery of NiV in the urine and saliva of Malaysian Island flying foxes (Pteropus hypomelanus and Petropus vampyrus) implicated these as natural reservoir hosts of NiV. It is probable that initial transmission of NiV from bats to pigs occurred in late 1997/early 1998 through contamination of pig swill by bat excretions, as a result of migration of these forest fruitbats to cultivated orchards and pig-farms, driven by fruiting failure of forest trees during the El Nino-related drought and anthropogenic fires in Indonesia in 1997-1998. This outbreak emphasizes the need for sharing information of any unusual illnesses in animals and humans, an open-minded approach and close collaboration and co-ordination between the medical profession, veterinarians and wildlife specialists in the investigation of such illnesses. Environmental mismanagement (such as deforestation and haze) has far-reaching effects, including encroachment of wildlife into human habitats and the introduction of zoonotic infections into domestic animals and humans.",2007,Dec,The Malaysian journal of pathology,29,2,63-7,,,19108397,#1127,Looi 2007,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Joseph Hicks (2025-03-14 02:43:58)(Included): Review; outbreak numbers cited from other peer-reviewed papers; Sangeeta Bhatia (2019-08-28 21:49:35)(Select): Malaysian outbreak summarised; ,"" +Epidemiology of henipavirus disease in humans.,Luby SP.; Gurley ES.,"All seven recognized human cases of Hendra virus (HeV) infection have occurred in Queensland, Australia. Recognized human infections have all resulted from a HeV infected horse that was unusually efficient in transmitting the virus and a person with a high exposure to infectious secretions. In the large outbreak in Malaysia where Nipah virus (NiV) was first identified, most human infections resulted from close contact with NiV infected pigs. Outbreak investigations in Bangladesh have identified drinking raw date palm sap as the most common pathway of NiV transmission from Pteropus bats to people, but person-to-person transmission of NiV has been repeatedly identified in Bangladesh and India. Although henipaviruses are not easily transmitted to people, these newly recognized, high mortality agents warrant continued scientific attention.",2012,,Current topics in microbiology and immunology,359,,25-40,,10.1007/82_2012_207,22752412,#1128,Luby 2012,"Exclusion reason: Not peer-reviewed paper; Tristan Naidoo (2025-03-10 21:16:11)(Select): Book chapter +; ","" +Mapping risk of Nipah virus transmission across Asia and across Bangladesh.,Peterson AT.,"Nipah virus is a highly pathogenic but poorly known paramyxovirus from South and Southeast Asia. In spite of the risks that it poses to human health, the geography and ecology of its occurrence remain little understood-the virus is basically known from Bangladesh and peninsular Malaysia, and little in between. In this contribution, I use documented occurrences of the virus to develop ecological niche-based maps summarizing its likely broader occurrence-although rangewide maps could not be developed that had significant predictive abilities, reflecting minimal sample sizes available, maps within Bangladesh were quite successful in identifying areas in which the virus is predictably present and likely transmitted.",2015,Mar,Asia-Pacific journal of public health,27,2,NP824-32,,10.1177/1010539512471965,23343646,#1132,Peterson 2015,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"Nipah virus epidemic in southern India and emphasizing ""One Health"" approach to ensure global health security.",Chattu VK.; Kumar R.; Kumary S.; Kajal F.; David JK.,"Nipah virus (NiV) encephalitis first reported in ""Sungai Nipah"" in Malaysia in 1999 has emerged as a global public health threat in the Southeast Asia region. From 1998 to 2018, more than 630 cases of NiV human infections were reported. NiV is transmitted by zoonotic (from bats to humans, or from bats to pigs, and then to humans) as well as human-to-human routes. Deforestation and urbanization of some areas have contributed to greater overlap between human and bat habitats resulting in NiV outbreaks. Common symptoms of NiV infection in humans are similar to that of influenza such as fever and muscle pain and in some cases, the inflammation of the brain occurs leading to encephalitis. The recent epidemic in May 2018 in Kerala for the first time has killed over 17 people in 7 days with high case fatality and highlighted the importance of One Health approach. The diagnosis is often not suspected at the time of presentation and creates challenges in outbreak detection, timely control measures, and outbreak response activities. Currently, there are no drugs or vaccines specific for NiV infection although this is a priority disease on the World Health Organization's agenda. Antivirals (Ribavirin, HR2-based fusion inhibitor), biologicals (convalescent plasma, monoclonal antibodies), immunomodulators, and intensive supportive care are the mainstay to treat severe respiratory and neurologic complications. There is a great need for strengthening animal health surveillance system, using a One Health approach, to detect new cases and provide early warning for veterinary and human public health authorities.",,,Journal of family medicine and primary care,7,2,275-283,,10.4103/jfmpc.jfmpc_137_18,30090764,#1147,,"Exclusion reason: Not peer-reviewed paper; Sangeeta Bhatia (2019-08-28 21:11:09)(Select): Nice table of previous outbreaks, but it is from another paper.; ",Editorial; Review paper +Nipah Virus Infection.,Ang BSP.; Lim TCC.; Wang L.,"Nipah virus, a paramyxovirus related to Hendra virus, first emerged in Malaysia in 1998. Clinical presentation ranges from asymptomatic infection to fatal encephalitis. Malaysia has had no more cases since 1999, but outbreaks continue to occur in Bangladesh and India. In the Malaysia-Singapore outbreak, transmission occurred primarily through contact with pigs, whereas in Bangladesh and India, it is associated with ingestion of contaminated date palm sap and human-to-human transmission. Bats are the main reservoir for this virus, which can cause disease in humans and animals. There are currently no effective therapeutics, and supportive care and prevention are the mainstays of management.",2018,06,Journal of clinical microbiology,56,6,,,10.1128/JCM.01875-17,29643201,#1156,AngBSP 2018,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Lorenzo Cattarino (2019-09-17 17:57:01)(Select): review; ,Review paper +The Killer Virus Called Nipah: A Review.,Ramphul K.; Mejias SG.; Agumadu VC.; Sombans S.; Sonaye R.; Lohana P.,"Nipah virus (NiV) is a deadly virus with a high mortality rate that has affected many developing countries in the past. According to the Centers for Disease Control and Prevention (CDC), many economically deprived countries such as Madagascar, Cambodia, and Thailand are also at high risk for future outbreaks. The first case of NiV was reported in 1998 and almost two decades later, little scientific progress has been made in finding a proper treatment and prevention vaccine. As many developing countries are not properly equipped to fight the infection, it is vital to properly educate the health systems. The aim of this review is to provide an epidemiological background as well as to understand the transmission routes, presentation, and the diagnosis and prevention of this deadly virus.",2018,Aug,Cureus,10,8,e3168,,10.7759/cureus.3168,30416895,#1160,Ramphul 2018,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,Review paper +The Main Risk Factors of Nipah Disease and Its Risk Analysis in China.,Yu J.; Lv X.; Yang Z.; Gao S.; Li C.; Cai Y.; Li J.,"Nipah disease is a highly fatal zoonosis which is caused by the Nipah virus. The Nipah virus is a BSL-4 virus with fruit bats being its natural host. It is mainly prevalent in Southeast Asia. The virus was first discovered in 1997 in Negeri Sembilan, Malaysia. Currently, it is mainly harmful to pigs and humans with a high mortality rate. This study describes the route of transmission of the Nipah virus in different countries and analyzes the possibility of the primary disease being in China and the method of its transmission to China. The risk factors are analyzed for different susceptible populations to Nipah disease. The aim is to improve people's risk awareness and prevention and control of the disease and reduce its risk of occurring and spreading in China.",2018,10,Viruses,10,10,,,10.3390/v10100572,30347642,#1163,Yu 2018,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper; Useful +Animal models of disease shed light on Nipah virus pathogenesis and transmission.,de Wit E.; Munster VJ.,"Nipah virus is an emerging virus infection that causes yearly disease outbreaks with high case fatality rates in Bangladesh. Nipah virus causes encephalitis and systemic vasculitis, sometimes in combination with respiratory disease. Pteropus species fruit bats are the natural reservoir of Nipah virus and zoonotic transmission can occur directly or via an intermediate host; human-to-human transmission occurs regularly. In this review we discuss the current state of knowledge on the pathogenesis and transmission of Nipah virus, focusing on dissemination of the virus through its host, known determinants of pathogenicity and routes of zoonotic and human-to-human transmission. Since data from human cases are sparse, this knowledge is largely based on the results of studies performed in animal models that recapitulate Nipah virus disease in humans.",2015,Jan,The Journal of pathology,235,2,196-205,,10.1002/path.4444,25229234,#1169,deWit 2015,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Lorenzo Cattarino (2019-03-20 21:05:26)(Screen): review; ,Animal model; Review paper +Nipah virus: transmission of a zoonotic paramyxovirus.,Clayton BA.,"Nipah virus is a recently-recognised, zoonotic paramyxovirus that causes severe disease and high fatality rates in people. Outbreaks have occurred in Malaysia, Singapore, India and Bangladesh, and a putative Nipah virus was also recently associated with human disease in the Philippines. Worryingly, human-to-human transmission is common in Bangladesh, where outbreaks occur with near-annual frequency. Onward human transmission of Nipah virus in Bangladesh is associated with close contact with clinically-unwell patients or their infectious secretions. While Nipah virus isolates associated with outbreaks of human infection have not resulted in sustained transmission to date, specific exposures carry a high risk of person-to-person transmission, an observation which is supported by recent findings in animal models. Novel paramyxoviruses continue to emerge from wildlife hosts, and represent an ongoing threat to human health globally.",2017,02,Current opinion in virology,22,,97-104,,10.1016/j.coviro.2016.12.003,28088124,#1172,Clayton 2017,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Sangeeta Bhatia (2019-04-03 02:42:29)(Screen): Including as review nipah focused.; Lorenzo Cattarino (2019-03-20 20:58:47)(Screen): review; ,Review paper +Transmission of henipaviruses.,Weatherman S.; Feldmann H.; de Wit E.,"The genus Henipavirus has expanded rapidly in geographic range, number of species, and host range. Hendra and Nipah virus are two henipaviruses known to cause severe disease in humans with a high case-fatality rate. Pteropid spp. bats are the natural reservoir of Hendra and Nipah virus. From these bats, virus can be transmitted to an amplifying host, horses and pigs, and from these hosts to humans, or the virus can be transmitted directly to humans. Although the main route of shedding varies between host species, close contact is required for transmission in all hosts. Understanding the transmission routes of Hendra and Nipah virus in their respective hosts is essential for devising strategies to block zoonotic transmission.",2018,02,Current opinion in virology,28,,7-11,,10.1016/j.coviro.2017.09.004,29035743,#1173,Weatherman 2018,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus infection: A review.,Aditi; Shariff M,"Nipah virus (NiV) is an emerging bat-borne pathogen. It was first identified 20 years ago in Malaysia and has since caused outbreaks in other parts of South and Southeast Asia. It causes severe neurological and respiratory disease which is highly lethal. It is highly infectious and spreads in the community through infected animals or other infected people. Different strains of the virus show differing clinical and epidemiological features. Rapid diagnosis and implementation of infection control measures are essential to contain outbreaks. A number of serological and molecular diagnostic techniques have been developed for diagnosis and surveillance. Difficulties in diagnosis and management arise when a new area is affected. The high mortality associated with infection and the possibility of spread to new areas has underscored the need for effective management and control. However, no effective treatment or prophylaxis is readily available, though several approaches show promise. Given the common chains of transmission from bats to humans, a One Health approach is necessary for the prevention and control of NiV infection.",2019,Jan,Epidemiol Infect,147,,e95,,10.1017/S0950268819000086,30869046,#2676,Aditi 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus: Past Outbreaks and Future Containment.,Soman Pillai V; Krishna G; Valiya Veettil M,"Viral outbreaks of varying frequencies and severities have caused panic and havoc across the globe throughout history. Influenza, small pox, measles, and yellow fever reverberated for centuries, causing huge burden for economies. The twenty-first century witnessed the most pathogenic and contagious virus outbreaks of zoonotic origin including severe acute respiratory syndrome coronavirus (SARS-CoV), Ebola virus, Middle East respiratory syndrome coronavirus (MERS-CoV) and Nipah virus. Nipah is considered one of the world's deadliest viruses with the heaviest mortality rates in some instances. It is known to cause encephalitis, with cases of acute respiratory distress turning fatal. Various factors contribute to the onset and spread of the virus. All through the infected zone, various strategies to tackle and enhance the surveillance and awareness with greater emphasis on personal hygiene has been formulated. This review discusses the recent outbreaks of Nipah virus in Malaysia, Bangladesh and India, the routes of transmission, prevention and control measures employed along with possible reasons behind the outbreaks, and the precautionary measures to be ensured by private-public undertakings to contain and ensure a lower incidence in the future.",2020,Apr,Viruses,12,4,,,10.3390/v12040465,32325930,#2677,SomanPillai 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah virus: epidemiology, pathology, immunobiology and advances in diagnosis, vaccine designing and control strategies - a comprehensive review.",Singh RK; Dhama K; Chakraborty S; Tiwari R; Natesan S; Khandia R; Munjal A; Vora KS; Latheef SK; Karthik K; Singh Malik Y; Singh R; Chaicumpa W; Mourya DT,"Nipah (Nee-pa) viral disease is a zoonotic infection caused by Nipah virus (NiV), a paramyxovirus belonging to the genus Henipavirus of the family Paramyxoviridae. It is a biosafety level-4 pathogen, which is transmitted by specific types of fruit bats, mainly Pteropus spp. which are natural reservoir host. The disease was reported for the first time from the Kampung Sungai Nipah village of Malaysia in 1998. Human-to-human transmission also occurs. Outbreaks have been reported also from other countries in South and Southeast Asia. Phylogenetic analysis affirmed the circulation of two major clades of NiV as based on currently available complete N and G gene sequences. NiV isolates from Malaysia and Cambodia clustered together in NiV-MY clade, whereas isolates from Bangladesh and India clusterered within NiV-BD clade. NiV isolates from Thailand harboured mixed population of sequences. In humans, the virus is responsible for causing rapidly progressing severe illness which might be characterized by severe respiratory illness and/or deadly encephalitis. In pigs below six months of age, respiratory illness along with nervous symptoms may develop. Different types of enzyme-linked immunosorbent assays along with molecular methods based on polymerase chain reaction have been developed for diagnostic purposes. Due to the expensive nature of the antibody drugs, identification of broad-spectrum antivirals is essential along with focusing on small interfering RNAs (siRNAs). High pathogenicity of NiV in humans, and lack of vaccines or therapeutics to counter this disease have attracted attention of researchers worldwide for developing effective NiV vaccine and treatment regimens.",2019,Dec,Vet Q,39,1,26-55,,10.1080/01652176.2019.1580827,31006350,#2678,Singh 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +The pathogenesis of Nipah virus: A review.,Devnath P; Wajed S; Chandra Das R; Kar S; Islam I; Masud HMAA,"Nipah virus (NiV), an emerging zoonotic virus, has been associated with several outbreaks with high death rates, mainly in South and Southeast Asia. NiV is responsible for Encephalitis and systemic vasculitis, and occasionally respiratory diseases accompanied by it. Though fruit bats are the natural source of NiV, it can be transmitted in a zoonotic manner directly or via an intermediate host (e.g., a pig or horse). Several studies explore the viral mechanism of disease progressions and its overall pathogenesis. However, understanding the pathogenesis and disease dynamics is necessary to develop therapeutic options and vaccines. Thus, in this review, we provide a comprehensive update on the emerging understanding of the pathogenesis of NiV.",2022,Sep,Microb Pathog,170,,105693,,10.1016/j.micpath.2022.105693,35940443,#2679,Devnath 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Bat-borne virus diversity, spillover and emergence.",Letko M; Seifert SN; Olival KJ; Plowright RK; Munster VJ,"Most viral pathogens in humans have animal origins and arose through cross-species transmission. Over the past 50 years, several viruses, including Ebola virus, Marburg virus, Nipah virus, Hendra virus, severe acute respiratory syndrome coronavirus (SARS-CoV), Middle East respiratory coronavirus (MERS-CoV) and SARS-CoV-2, have been linked back to various bat species. Despite decades of research into bats and the pathogens they carry, the fields of bat virus ecology and molecular biology are still nascent, with many questions largely unexplored, thus hindering our ability to anticipate and prepare for the next viral outbreak. In this Review, we discuss the latest advancements and understanding of bat-borne viruses, reflecting on current knowledge gaps and outlining the potential routes for future research as well as for outbreak response and prevention efforts.",2020,Aug,Nat Rev Microbiol,18,8,461-471,,10.1038/s41579-020-0394-z,32528128,#2680,Letko 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Molecular Pathogenesis of Nipah Virus.,Talukdar P; Dutta D; Ghosh E; Bose I; Bhattacharjee S,"Viral diseases are causing mayhem throughout the world. One of the zoonotic viruses that have emerged as a potent threat to community health in the past few decades is Nipah virus. Nipah viral sickness is a zoonotic disease whose main carrier is bat. This disease is caused by Nipah virus (NiV). It belongs to the henipavirous group and of the family paramyxoviridae. Predominantly Pteropus spp. is the carrier of this virus. It was first reported from the Kampung Sungai Nipah town of Malaysia in 1998. Human-to-human transmission can also occur. Several repeated outbreaks were reported from South and Southeast Asia in the recent past. In humans, the disease is responsible for rapid development of acute illness, which can result in severe respiratory illness and serious encephalitis. Therefore, this calls for an urgent need for health authorities to conduct clinical trials to establish possible treatment regimens to prevent any further outbreaks.",2023,Apr,Appl Biochem Biotechnol,195,4,2451-2462,,10.1007/s12010-022-04300-0,36656534,#2682,Talukdar 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah virus, an emerging zoonotic disease causing fatal encephalitis.",Alam AM,"Nipah virus is an acute febrile illness that can cause fatal encephalitis. It is an emerging zoonotic paramyxovirus endemic to south-east Asia and the western Pacific, and can be transmitted by its primary reservoir of fruit bats, through intermediate animal vectors and by human-to-human spread. Outbreaks of Nipah virus encephalitis have occurred in Malaysia, Singapore, Philippines, India and Bangladesh, with the most recent outbreak occurring in Kerala, India in late 2021. Extremely high case fatality rates have been reported from these outbreaks, and to date no vaccines or therapeutic management options are available. Combining this with its propensity to present non-specifically, Nipah virus encephalitis presents a challenging diagnosis that should not be missed in patients returning from endemic regions. Raising awareness of the epidemiology, clinical presentation and risk factors of contracting Nipah virus is vital to recognise and manage potential outbreaks of this disease in the UK.",2022,Jul,Clin Med (Lond),22,4,348-352,,10.7861/clinmed.2022-0166,35760448,#2683,Alam 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Emerging viruses: Cross-species transmission of coronaviruses, filoviruses, henipaviruses, and rotaviruses from bats.",Tian J; Sun J; Li D; Wang N; Wang L; Zhang C; Meng X; Ji X; Suchard MA; Zhang X; Lai A; Su S; Veit M,"Emerging infectious diseases, especially if caused by bat-borne viruses, significantly affect public health and the global economy. There is an urgent need to understand the mechanism of interspecies transmission, particularly to humans. Viral genetics; host factors, including polymorphisms in the receptors; and ecological, environmental, and population dynamics are major parameters to consider. Here, we describe the taxonomy, geographic distribution, and unique traits of bats associated with their importance as virus reservoirs. Then, we summarize the origin, intermediate hosts, and the current understanding of interspecies transmission of Middle East respiratory syndrome coronavirus (MERS-CoV), severe acute respiratory syndrome coronavirus (SARS-CoV), SARS-CoV-2, Nipah, Hendra, Ebola, Marburg virus, and rotaviruses. Finally, the molecular interactions of viral surface proteins with host cell receptors are examined, and a comparison of these interactions in humans, intermediate hosts, and bats is conducted. This uncovers adaptive mutations in virus spike protein that facilitate cross-species transmission and risk factors associated with the emergence of novel viruses from bats.",2022,Jun,Cell Rep,39,11,110969,,10.1016/j.celrep.2022.110969,35679864,#2687,Tian 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Pathogenicity and virulence of henipaviruses.,Kaza B; Aguilar HC,"Paramyxoviruses are a family of single-stranded negative-sense RNA viruses, many of which are responsible for a range of respiratory and neurological diseases in humans and animals. Among the most notable are the henipaviruses, which include the deadly Nipah (NiV) and Hendra (HeV) viruses, the causative agents of outbreaks of severe disease and high case fatality rates in humans and animals. NiV and HeV are maintained in fruit bat reservoirs primarily in the family Pteropus and spillover into humans directly or by an intermediate amplifying host such as swine or horses. Recently, non-chiropteran associated Langya (LayV), Gamak (GAKV), and Mojiang (MojV) viruses have been discovered with confirmed or suspected ability to cause disease in humans or animals. These viruses are less genetically related to HeV and NiV yet share many features with their better-known counterparts. Recent advances in surveillance of wild animal reservoir viruses have revealed a high number of henipaviral genome sequences distributed across most continents, and mammalian orders previously unknown to harbour henipaviruses. In this review, we summarize the current knowledge on the range of pathogenesis observed for the henipaviruses as well as their replication cycle, epidemiology, genomics, and host responses. We focus on the most pathogenic viruses, including NiV, HeV, LayV, and GAKV, as well as the experimentally non-pathogenic CedV. We also highlight the emerging threats posed by these and potentially other closely related viruses.",2023,Dec,Virulence,14,1,2273684,,10.1080/21505594.2023.2273684,37948320,#2689,Kaza 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Advancements in Nipah virus treatment: Analysis of current progress in vaccines, antivirals, and therapeutics.",Mishra G; Prajapat V; Nayak D,"Nipah virus (NiV) causes severe encephalitis in humans. Three NiV strains NiV-Malaysia (NiV(M) ), NiV Bangladesh (NiV(B) ), and NiV India (NiV(I) reported in 2019) have been circulating in South-Asian nations. Sporadic outbreak observed in South-East Asian countries but human to human transmission raises the concern about its pandemic potential. The presence of the viral genome in reservoir bats has further confirmed that NiV has spread to the African and Australian continents. NiV research activities have gained momentum to achieve specific preparedness goals to meet any future emergency-as a result, several potential vaccine candidates have been developed and tested in a variety of animal models. Some of these candidate vaccines have entered further clinical trials. Research activities related to the discovery of therapeutic monoclonal antibodies (mAbs) have resulted in the identification of a handful of candidates capable of neutralizing the virion. However, progress in discovering potential antiviral drugs has been limited. Thus, considering NiV's pandemic potential, it is crucial to fast-track ongoing projects related to vaccine clinical trials, anti-NiV therapeutics. Here, we discuss the current progress in NiV-vaccine research and therapeutic options, including mAbs and antiviral medications.",2024,Feb,Immunology,171,2,155-169,,10.1111/imm.13695,37712243,#2690,Mishra 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Outcome and Sequelae of Infectious Encephalitis.,Kvam KA; Stahl JP; Chow FC; Soldatos A; Tattevin P; Sejvar J; Mailles A,"Acute infectious encephalitis is a widely studied clinical syndrome. Although identified almost 100 years ago, its immediate and delayed consequences are still neglected despite their high frequency and possible severity. We reviewed the available data on sequelae and persisting symptoms following infectious encephalitis with the aim of characterizing the clinical picture of these patients at months to years after hospitalization. We searched PubMed for case series involving sequelae after infectious encephalitis. We carried out a narrative review of the literature on encephalitis caused by members of the Herpesviridae family (herpes simplex virus, varicella zoster virus, and human herpesvirus-6), members of the Flaviviridae family (West Nile virus, tick-borne encephalitis virus, and Japanese encephalitis virus), alphaviruses, and Nipah virus. We retrieved 41 studies that yielded original data involving 3,072 adult patients evaluated after infectious encephalitis. At least one of the five domains of cognitive outcome, psychiatric disorders, neurological deficits, global functioning, and quality of life was investigated in the reviewed studies. Various tests were used in the 41 studies and the investigation took place at different times after hospital discharge. The results showed that most patients are discharged with impairments, with frequent deficits in cognitive function such as memory loss or attention disorders. Sequelae tend to improve within several years following flavivirus or Nipah virus infection, but long-term data are scarce for other pathogens. Further research is needed to better understand the extent of sequelae after infectious encephalitis, and to propose a standardized assessment method and assess the rehabilitation efficacy in these patients.",2024,Jan,J Clin Neurol,20,1,23-36,,10.3988/jcn.2023.0240,38179629,#2698,Kvam 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Paramyxoviruses: Pathogenesis, Vaccines, Antivirals, and Prototypes for Pandemic Preparedness.",Duprex WP; Dutch RE,"The Paramyxoviridae family includes established human pathogens such as measles virus, mumps virus, and the human parainfluenza viruses; highly lethal zoonotic pathogens such as Nipah virus; and a number of recently identified agents, such as Sosuga virus, which remain poorly understood. The high human-to-human transmission rate of paramyxoviruses such as measles virus, high case fatality rate associated with other family members such as Nipah virus, and the existence of poorly characterized zoonotic pathogens raise concern that known and unknown paramyxoviruses have significant pandemic potential. In this review, the general life cycle, taxonomic relationships, and viral pathogenesis are described for paramyxoviruses that cause both systemic and respiratory system-restricted infections. Next, key gaps in critical areas are presented, following detailed conversations with subject matter experts and based on the current literature. Finally, we present an assessment of potential prototype pathogen candidates that could be used as models to study this important virus family, including assessment of the strengths and weaknesses of each potential prototype.",2023,Oct,J Infect Dis,228,Suppl 6,S390-S397,,10.1093/infdis/jiad123,37849400,#2700,Duprex 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus: A Multidimensional Update.,Faus-Cotino J; Reina G; Pueyo J,"Nipah virus (NiV) is an emerging zoonotic paramyxovirus to which is attributed numerous high mortality outbreaks in South and South-East Asia; Bangladesh's Nipah belt accounts for the vast majority of human outbreaks, reporting regular viral emergency events. The natural reservoir of NiV is the Pteropus bat species, which covers a wide geographical distribution extending over Asia, Oceania, and Africa. Occasionally, human outbreaks have required the presence of an intermediate amplification mammal host between bat and humans. However, in Bangladesh, the viral transmission occurs directly from bat to human mainly by ingestion of contaminated fresh date palm sap. Human infection manifests as a rapidly progressive encephalitis accounting for extremely high mortality rates. Despite that, no therapeutic agents or vaccines have been approved for human use. An updated review of the main NiV infection determinants and current potential therapeutic and preventive strategies is exposed.",2024,Jan,Viruses,16,2,,,10.3390/v16020179,38399954,#2701,Faus-Cotino 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Severe zoonotic viruses carried by different species of bats and their regional distribution.,Liu Z; Liu Q; Wang H; Yao X,"BACKGROUND: Bats have garnered increased attention in the field of life sciences for their typical biological characteristics of carrying a variety of zoonotic viruses without disease, long lifespans, low tumorigenesis rates, and high metabolism. When it was found that bats can carry the rabies virus, over 60 years of research revealed that bats host over 4100 distinct viruses, including Ebola virus and SARS-CoV. OBJECTIVES: This paper primarily reviews the profiles of zoonotic viruses carried by bats across various regions globally. The review aims to provide a foundation and reference for future research on monitoring zoonotic viruses in diverse global regions and bat species, exploring the coevolutionary relationship between bats and viruses, understanding the tolerance mechanisms of bat B cells, prevention, and treatment of zoonotic diseases caused by bats. SOURCES: The search used 'bat', 'bats', 'rabies virus', 'Dengue virus', 'West Nile virus', 'Zika virus', 'St. Louis encephalitis virus', 'Japanese encephalitis virus', 'Hantavirus', 'Novel hantavirus', 'Rift Valley fever virus', 'Crimean Congo hemorrhagic fever virus', 'Paramyxovirus', 'Nipah virus', 'Hendra virus', 'Menangle virus', 'Tioman virus', 'Marburg Virus', 'Bombali virus', 'Ebola virus', 'Influenza A virus', 'coronavirus', 'Hepatitis B virus', and 'Hepatitis E virus' as text in PubMed. CONTENT: A total of 147 references were obtained. Surveys on severe zoonotic virus carriage have been limited to only 83 bat species belonging to nine families, which are distributed all over the world. We also briefly describe the antibody responses and B-cell molecules in bats. IMPLICATIONS: Several viruses have been found in different species of bats. This suggests that bats may be important hosts for future viral infectious diseases. Particularly in recent years, the close correlation between human infection pandemics caused by coronaviruses and bats highlights the pressing need to comprehend the species, tolerance, and coevolutionary mechanisms of zoonotic viruses carried by different bat species.",2024,Feb,Clin Microbiol Infect,30,2,206-210,,10.1016/j.cmi.2023.09.025,37805032,#2702,Liu 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +The Immunobiology of Nipah Virus.,Liew YJM; Ibrahim PAS; Ong HM; Chong CN; Tan CT; Schee JP; Gómez Román R; Cherian NG; Wong WF; Chang LY,"Nipah virus (NiV) is a highly lethal zoonotic paramyxovirus that emerged in Malaysia in 1998. It is a human pathogen capable of causing severe respiratory infection and encephalitis. The natural reservoir of NiV, Pteropus fruit bats, remains a continuous virus source for future outbreaks, although infection in the bats is largely asymptomatic. NiV provokes serious disease in various mammalian species. In the recent human NiV outbreaks in Bangladesh and India, both bats-to-human and human-to-human transmissions have been observed. NiV has been demonstrated to interfere with the innate immune response via interferon type I signaling, promoting viral dissemination and preventing antiviral response. Studies of humoral immunity in infected NiV patients and animal models have shown that NiV-specific antibodies were produced upon infection and were protective. Studies on cellular immunity response to NiV infection in human and animal models also found that the adaptive immune response, specifically CD4+ and CD8+ T cells, was stimulated upon NiV infection. The experimental vaccines and therapeutic strategies developed have provided insights into the immunological requirements for the development of successful medical countermeasures against NiV. This review summarizes the current understanding of NiV pathogenesis and innate and adaptive immune responses induced upon infection.",2022,Jun,Microorganisms,10,6,,,10.3390/microorganisms10061162,35744680,#2705,LiewYJM 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Recently Emerged Novel Henipa-like Viruses: Shining a Spotlight on the Shrew.,Caruso S; Edwards SJ,"Henipaviruses are zoonotic viruses, including some highly pathogenic and capable of serious disease and high fatality rates in both animals and humans. Hendra virus and Nipah virus are the most notable henipaviruses, resulting in significant outbreaks across South Asia, South-East Asia, and Australia. Pteropid fruit bats have been identified as key zoonotic reservoirs; however, the increased discovery of henipaviruses outside the geographic distribution of Pteropid fruit bats and the detection of novel henipa-like viruses in other species such as the shrew, rat, and opossum suggest that Pteropid bats are not the sole reservoir for henipaviruses. In this review, we provide an update on henipavirus spillover events and describe the recent detection of novel unclassified henipaviruses, with a strong focus on the shrew and its emerging role as a key host of henipaviruses.",2023,Dec,Viruses,15,12,,,10.3390/v15122407,38140648,#2706,Caruso 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Recent advances in combating Nipah virus.,Johnson K; Vu M; Freiberg AN,"Over the past 20 years, Nipah virus (NiV) has emerged as a significant, highly pathogenic bat-borne paramyxovirus causing severe respiratory disease and encephalitis in humans, and human-to-human transmission has been demonstrated in multiple outbreaks. In addition to causing serious illness in humans, NiV is a zoonotic pathogen capable of infecting a wide range of other mammalian species, including pigs and horses. While NiV has caused less than 700 human cases since its discovery in 1998/1999, the involvement of intermediate agricultural hosts can result in significant economic consequences. Owing to the severity of disease, capacity for human-to-human transmission, zoonotic potential, and lack of available approved therapeutic treatment options, NiV has been listed by the World Health Organization in their Blueprint list of priority pathogens as one of the eight most dangerous pathogens to monitor and prepare countermeasures to prevent a pandemic. Here, we discuss progress towards the development of therapeutic measures for the treatment of NiV infection and disease.",2021,,Fac Rev,10,,74,,10.12703/r/10-74,34632460,#2711,Johnson 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Evolution of Nipah Virus Infection: Past, Present, and Future Considerations.",Hauser N; Gushiken AC; Narayanan S; Kottilil S; Chua JV,"Nipah virus (NiV) is a zoonotic paramyxovirus of the Henipavirus genus first identified in Malaysia in 1998. Henipaviruses have bat reservoir hosts and have been isolated from fruit bats found across Oceania, Asia, and Africa. Bat-to-human transmission is thought to be the primary mode of human NiV infection, although multiple intermediate hosts are described. Human infections with NiV were originally described as a syndrome of fever and rapid neurological decline following contact with swine. More recent outbreaks describe a syndrome with prominent respiratory symptoms and human-to-human transmission. Nearly annual outbreaks have been described since 1998 with case fatality rates reaching greater than 90%. The ubiquitous nature of the reservoir host, increasing deforestation, multiple mode of transmission, high case fatality rate, and lack of effective therapy or vaccines make NiV's pandemic potential increasingly significant. Here we review the epidemiology and microbiology of NiV as well as the therapeutic agents and vaccines in development.",2021,Feb,Trop Med Infect Dis,6,1,,,10.3390/tropicalmed6010024,33672796,#2712,Hauser 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Henipavirus zoonosis: outbreaks, animal hosts and potential new emergence.",Li H; Kim JV; Pickering BS,"Hendra virus (HeV) and Nipah virus (NiV) are biosafety level 4 zoonotic pathogens causing severe and often fatal neurological and respiratory disease. These agents have been recognized by the World Health Organization as top priority pathogens expected to result in severe future outbreaks. HeV has caused sporadic infections in horses and a small number of human cases in Australia since 1994. The NiV Malaysia genotype (NiV-M) was responsible for the 1998-1999 epizootic outbreak in pigs with spillover to humans in Malaysia and Singapore. Since 2001, the NiV Bangladesh genotype (NiV-B) has been the predominant strain leading to outbreaks almost every year in Bangladesh and India, with hundreds of infections in humans. The natural reservoir hosts of HeV and NiV are fruit bats, which carry the viruses without clinical manifestation. The transmission pathways of henipaviruses from bats to humans remain poorly understood. Transmissions are often bridged by an intermediate animal host, which amplifies and spreads the viruses to humans. Horses and pigs are known intermediate hosts for the HeV outbreaks in Australia and NiV-M epidemic in Malaysia and Singapore, respectively. During the NiV-B outbreaks in Bangladesh, following initial spillover thought to be through the consumption of date palm sap, the spread of infection was largely human-to-human transmission. Spillover of NiV-B in recent outbreaks in India is less understood, with the primary route of transmission from bat reservoir to the initial human infection case(s) unknown and no intermediate host established. This review aims to provide a concise update on the epidemiology of henipaviruses covering their previous and current outbreaks with emphasis on the known and potential role of livestock as intermediate hosts in disease transmission. Also included is an up-to-date summary of newly emerging henipa-like viruses and animal hosts. In these contexts we discuss knowledge gaps and new challenges in the field and propose potential future directions.",2023,,Front Microbiol,14,,1167085,,10.3389/fmicb.2023.1167085,37529329,#2719,Li 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-13 02:34:02)(Screen): useful review; ,Review paper +Henipaviruses-A constant threat to livestock and humans.,Kummer S; Kranz DC,"In this review, we highlight the risk to livestock and humans from infections with henipaviruses, which belong to the virus family Paramyxoviridae. We provide a comprehensive overview of documented outbreaks of Nipah and Hendra virus infections affecting livestock and humans and assess the burden on the economy and health systems. In an increasingly globalized and interconnected world, attention must be paid to emerging viruses and infectious diseases, as transmission routes can be rapid and worldwide.",2022,Feb,PLoS Negl Trop Dis,16,2,e0010157,,10.1371/journal.pntd.0010157,35180217,#2721,Kummer 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Host-Pathogen Interactions Influencing Zoonotic Spillover Potential and Transmission in Humans.,Escudero-Pérez B; Lalande A; Mathieu C; Lawrence P,"Emerging infectious diseases of zoonotic origin are an ever-increasing public health risk and economic burden. The factors that determine if and when an animal virus is able to spill over into the human population with sufficient success to achieve ongoing transmission in humans are complex and dynamic. We are currently unable to fully predict which pathogens may appear in humans, where and with what impact. In this review, we highlight current knowledge of the key host-pathogen interactions known to influence zoonotic spillover potential and transmission in humans, with a particular focus on two important human viruses of zoonotic origin, the Nipah virus and the Ebola virus. Namely, key factors determining spillover potential include cellular and tissue tropism, as well as the virulence and pathogenic characteristics of the pathogen and the capacity of the pathogen to adapt and evolve within a novel host environment. We also detail our emerging understanding of the importance of steric hindrance of host cell factors by viral proteins using a ""flytrap""-type mechanism of protein amyloidogenesis that could be crucial in developing future antiviral therapies against emerging pathogens. Finally, we discuss strategies to prepare for and to reduce the frequency of zoonotic spillover occurrences in order to minimize the risk of new outbreaks.",2023,Feb,Viruses,15,3,,,10.3390/v15030599,36992308,#2722,Escudero-Pérez 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Serological evidence of virus infection in Eidolon helvum fruit bats: implications for bushmeat consumption in Nigeria.,Cantoni D; Mayora-Neto M; Derveni M; da Costa K; Del Rosario J; Ameh VO; Sabeta CT; Auld B; Hamlet A; Jones IM; Wright E; Scott SD; Giotis ES; Banyard AC; Temperton N,"INTRODUCTION: The Eidolon helvum fruit bat is one of the most widely distributed fruit bats in Africa and known to be a reservoir for several pathogenic viruses that can cause disease in animals and humans. To assess the risk of zoonotic spillover, we conducted a serological survey of 304 serum samples from E. helvum bats that were captured for human consumption in Makurdi, Nigeria. METHODS: Using pseudotyped viruses, we screened 304 serum samples for neutralizing antibodies against viruses from the Coronaviridae, Filoviridae, Orthomyxoviridae and Paramyxoviridae families. RESULTS: We report the presence of neutralizing antibodies against henipavirus lineage GH-M74a virus (odds ratio 6.23; p < 0.001), Nipah virus (odds ratio 4.04; p = 0.00031), bat influenza H17N10 virus (odds ratio 7.25; p < 0.001) and no significant association with Ebola virus (odds ratio 0.56; p = 0.375) in this bat cohort. CONCLUSION: The data suggest a potential risk of zoonotic spillover including the possible circulation of highly pathogenic viruses in E. helvum populations. These findings highlight the importance of maintaining sero-surveillance of E. helvum, and the necessity for further, more comprehensive investigations to monitor changes in virus prevalence, distribution over time, and across different geographic locations.",2023,,Front Public Health,11,,1283113,,10.3389/fpubh.2023.1283113,38106901,#2733,Cantoni 2023,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-26 20:32:14)(Screen): Worth capturing spillover risk?; ,"" +"Immune correlates of protection for SARS-CoV-2, Ebola and Nipah virus infection.",Escudero-Pérez B; Lawrence P; Castillo-Olivares J,"Correlates of protection (CoP) are biological parameters that predict a certain level of protection against an infectious disease. Well-established correlates of protection facilitate the development and licensing of vaccines by assessing protective efficacy without the need to expose clinical trial participants to the infectious agent against which the vaccine aims to protect. Despite the fact that viruses have many features in common, correlates of protection can vary considerably amongst the same virus family and even amongst a same virus depending on the infection phase that is under consideration. Moreover, the complex interplay between the various immune cell populations that interact during infection and the high degree of genetic variation of certain pathogens, renders the identification of immune correlates of protection difficult. Some emerging and re-emerging viruses of high consequence for public health such as SARS-CoV-2, Nipah virus (NiV) and Ebola virus (EBOV) are especially challenging with regards to the identification of CoP since these pathogens have been shown to dysregulate the immune response during infection. Whereas, virus neutralising antibodies and polyfunctional T-cell responses have been shown to correlate with certain levels of protection against SARS-CoV-2, EBOV and NiV, other effector mechanisms of immunity play important roles in shaping the immune response against these pathogens, which in turn might serve as alternative correlates of protection. This review describes the different components of the adaptive and innate immune system that are activated during SARS-CoV-2, EBOV and NiV infections and that may contribute to protection and virus clearance. Overall, we highlight the immune signatures that are associated with protection against these pathogens in humans and could be used as CoP.",2023,,Front Immunol,14,,1156758,,10.3389/fimmu.2023.1156758,37153606,#2737,Escudero-Pérez 2023,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Infection and transmission of henipavirus in animals.,Qiu X; Wang F; Sha A,"Henipavirus (HNV) is well known for two zoonotic viruses in the genus, Hendra virus (HeV) and Nipah virus (NiV), which pose serious threat to human and animal health. In August 2022, a third zoonotic virus in the genus Henipavirus, Langya virus (LayV), was discovered in China. The emergence of HeV, NiV, and LayV highlights the persistent threat of HNV to human and animal health. In addition to the above three HNVs, new species within this genus are still being discovered. Although they have not yet caused a pandemic in humans or livestock, they still have the risk of spillover as a potential threat to the health of humans and animals. It's important to understand the infection and transmission of different HNV in animals for the prevention and control of current or future HNV epidemics. Therefore, this review mainly summarizes the animal origin, animal infection and transmission of HNV that have been found worldwide, and further analyzes and summarizes the rules of infection and transmission, so as to provide a reference for relevant scientific researchers. Furthermore, it can provide a direction for epidemic prevention and control, and animal surveillance to reduce the risk of the global pandemic of HNV.",2024,Jun,Comp Immunol Microbiol Infect Dis,109,,102183,,10.1016/j.cimid.2024.102183,38640700,#2739,Qiu 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Molecular, ecological, and behavioral drivers of the bat-virus relationship.",Gonzalez V; Banerjee A,"Bats perform important ecological roles in our ecosystem. However, recent studies have demonstrated that bats are reservoirs of emerging viruses that have spilled over into humans and agricultural animals to cause severe diseases. These viruses include Hendra and Nipah paramyxoviruses, Ebola and Marburg filoviruses, and coronaviruses that are closely related to severe acute respiratory syndrome coronavirus (SARS-CoV), Middle East respiratory syndrome coronavirus (MERS-CoV), and the recently emerged SARS-CoV-2. Intriguingly, bats that are naturally or experimentally infected with these viruses do not show clinical signs of disease. Here we have reviewed ecological, behavioral, and molecular factors that may influence the ability of bats to harbor viruses. We have summarized known zoonotic potential of bat-borne viruses and stress on the need for further studies to better understand the evolutionary relationship between bats and their viruses, along with discovering the intrinsic and external factors that facilitate the successful spillover of viruses from bats.",2022,Aug,iScience,25,8,104779,,10.1016/j.isci.2022.104779,35875684,#2740,Gonzalez 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Henipavirus infection of the central nervous system.,Dawes BE; Freiberg AN,"Nipah virus (NiV) and Hendra virus are highly pathogenic zoonotic viruses of the genus Henipavirus, family Paramyxoviridae. These viruses were first identified as the causative agents of severe respiratory and encephalitic disease in the 1990s across Australia and Southern Asia with mortality rates reaching up to 75%. While outbreaks of Nipah and Hendra virus infections remain rare and sporadic, there is concern that NiV has pandemic potential. Despite increased attention, little is understood about the neuropathogenesis of henipavirus infection. Neuropathogenesis appears to arise from dual mechanisms of vascular disease and direct parenchymal brain infection, but the relative contributions remain unknown while respiratory disease arises from vasculitis and respiratory epithelial cell infection. This review will address NiV basic clinical disease, pathology and pathogenesis with a particular focus on central nervous system (CNS) infection and address the necessity of a model of relapsed CNS infection. Additionally, the innate immune responses to NiV infection in vitro and in the CNS are reviewed as it is likely linked to any persistent CNS infection.",2019,Mar,Pathog Dis,77,2,,,10.1093/femspd/ftz023,30985897,#2742,Dawes 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Outbreak: Is it the beginning of another pandemic in the era of COVID-19 and Zika.,Thakur V; Thakur P; Ratho RK,,2022,Jan,Brain Behav Immun,99,,25-26,,10.1016/j.bbi.2021.09.015,34562598,#2744,Thakur 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +Ocular manifestations of emerging viral diseases.,Venkatesh A; Patel R; Goyal S; Rajaratnam T; Sharma A; Hossain P,"Emerging infectious diseases (EIDs) are an increasing threat to public health on a global scale. In recent times, the most prominent outbreaks have constituted RNA viruses, spreading via droplets (COVID-19 and Influenza A H1N1), directly between humans (Ebola and Marburg), via arthropod vectors (Dengue, Zika, West Nile, Chikungunya, Crimean Congo) and zoonotically (Lassa fever, Nipah, Rift Valley fever, Hantaviruses). However, specific approved antiviral therapies and vaccine availability are scarce, and public health measures remain critical. Patients can present with a spectrum of ocular manifestations. Emerging infectious diseases should therefore be considered in the differential diagnosis of ocular inflammatory conditions in patients inhabiting or returning from endemic territories, and more general vigilance is advisable in the context of a global pandemic. Eye specialists are in a position to facilitate swift diagnosis, improve clinical outcomes, and contribute to wider public health efforts during outbreaks. This article reviews those emerging viral diseases associated with reports of ocular manifestations and summarizes details pertinent to practicing eye specialists.",2021,Apr,Eye (Lond),35,4,1117-1139,,10.1038/s41433-020-01376-y,33514902,#2745,Venkatesh 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus: An Overview of the Current Status of Diagnostics and Their Role in Preparedness in Endemic Countries.,Garbuglia AR; Lapa D; Pauciullo S; Raoul H; Pannetier D,"Nipah virus (NiV) is a paramyxovirus responsible for a high mortality rate zoonosis. As a result, it has been included in the list of Blueprint priority pathogens. Bats are the main reservoirs of the virus, and different clinical courses have been described in humans. The Bangladesh strain (NiV-B) is often associated with severe respiratory disease, whereas the Malaysian strain (NiV-M) is often associated with severe encephalitis. An early diagnosis of NiV infection is crucial to limit the outbreak and to provide appropriate care to the patient. Due to high specificity and sensitivity, qRT-PCR is currently considered to be the optimum method in acute NiV infection assessment. Nasal swabs, cerebrospinal fluid, urine, and blood are used for RT-PCR testing. N gene represents the main target used in molecular assays. Different sensitivities have been observed depending on the platform used: real-time PCR showed a sensitivity of about 103 equivalent copies/reaction, SYBRGREEN technology's sensitivity was about 20 equivalent copies/reaction, and in multiple pathogen card arrays, the lowest limit of detection (LOD) was estimated to be 54 equivalent copies/reaction. An international standard for NiV is yet to be established, making it difficult to compare the sensitivity of the different methods. Serological assays are for the most part used in seroprevalence studies owing to their lower sensitivity in acute infection. Due to the high epidemic and pandemic potential of this virus, the diagnosis of NiV should be included in a more global One Health approach to improve surveillance and preparedness for the benefit of public health. Some steps need to be conducted in the diagnostic field in order to become more efficient in epidemic management, such as development of point-of-care (PoC) assays for the rapid diagnosis of NiV.",2023,Oct,Viruses,15,10,,,10.3390/v15102062,37896839,#2747,Garbuglia 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Henipaviruses: an expanding global public health concern?,Quarleri J; Galvan V; Delpino MV,"Nipah virus (NiV) and Hendra virus (HeV) are highly pathogenic zoonotic viruses of the genus Henipavirus, family Paramyxoviridae that cause severe disease outbreaks in humans and also can infect and cause lethal disease across a broad range of mammalian species. Another related Henipavirus has been very recently identified in China in febrile patients with pneumonia, the Langya virus (LayV) of probable animal origin in shrews. NiV and HeV were first identified as the causative agents of severe respiratory and encephalitic disease in the 1990s across Australia and Southern Asia with mortality rates reaching up to 90%. They are responsible for rare and sporadic outbreaks with no approved treatment modalities. NiV and HeV have wide cellular tropism that contributes to their high pathogenicity. From their natural hosts bats, different scenarios propitiate their spillover to pigs, horses, and humans. Henipavirus-associated respiratory disease arises from vasculitis and respiratory epithelial cell infection while the neuropathogenesis of Henipavirus infection is still not completely understood but appears to arise from dual mechanisms of vascular disease and direct parenchymal brain infection. This brief review offers an overview of direct and indirect mechanisms of HeV and NiV pathogenicity and their interaction with the human immune system, as well as the main viral strategies to subvert such responses.",2022,Oct,Geroscience,44,5,2447-2459,,10.1007/s11357-022-00670-9,36219280,#2748,Quarleri 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Advancing the frontiers: Revolutionary control and prevention paradigms against Nipah virus.,Orosco FL,"Nipah Virus (NiV) is a highly virulent pathogen that poses a significant threat to human and animal populations. This review provides a comprehensive overview of the latest control and prevention strategies against NiV, focusing on vaccine development, antiviral drug discovery, early diagnosis, surveillance, and high-level biosecurity measures. Advancements in vaccine research, including live-attenuated vaccines, virus-like particles, and mRNA-based vaccines, hold promise for preventing NiV infections. In addition, antiviral drugs, such as remdesivir, ribavirin, and favipiravir, have the potential to inhibit NiV replication. Early diagnosis through molecular and serological assays, immunohistochemistry, and real-time reverse transcription polymerase chain reaction plays a crucial role in timely detection. Surveillance efforts encompassing cluster-based and case-based systems enhance outbreak identification and provide valuable insights into transmission dynamics. Furthermore, the implementation of high-level biosecurity measures in agriculture, livestock practices, and healthcare settings is essential to minimize transmission risks. Collaboration among researchers, public health agencies, and policymakers is pivotal in refining and implementing these strategies to effectively control and prevent NiV outbreaks and safeguard public health on a global scale.",2023,Sep,Open Vet J,13,9,1056-1070,,10.5455/OVJ.2023.v13.i9.1,37842102,#2749,Orosco 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Major zoonotic diseases of public health importance in Bangladesh.,Chowdhury S; Aleem MA; Khan MSI; Hossain ME; Ghosh S; Rahman MZ,"Zoonotic diseases cause repeated outbreaks in humans globally. The majority of emerging infections in humans are zoonotic. COVID-19 is an ideal example of a recently identified emerging zoonotic disease, causing a global pandemic. Anthropogenic factors such as modernisation of agriculture and livestock farming, wildlife hunting, the destruction of wild animal habitats, mixing wild and domestic animals, wildlife trading, changing food habits and urbanisation could drive the emergence of zoonotic diseases in humans. Since 2001, Bangladesh has been reporting many emerging zoonotic disease outbreaks such as nipah, highly pathogenic avian influenza, pandemic H1N1, and COVID-19. There are many other potential zoonotic pathogens such as Ebola, Middle East respiratory syndrome coronavirus, Kyasanur forest disease virus and Crimean-Congo haemorrhagic fever that may emerge in the future. However, we have a limited understanding of zoonotic diseases' overall risk in humans and associated factors that drive the emergence of zoonotic pathogens. This narrative review summarised the major emerging, re-emerging, neglected and other potential zoonotic diseases in Bangladesh and their associated risk factors. Nipah virus and Bacillus anthracis caused repeated outbreaks in humans. More than 300 human cases with Nipah virus infection were reported since the first outbreak in 2001. The highly pathogenic avian influenza virus (H5N1) caused more than 550 outbreaks in poultry, and eight human cases were reported so far since 2007. People of Bangladesh are frequently exposed to zoonotic pathogens due to close interaction with domestic and peri-domestic animals. The rapidly changing intensified animal-human-ecosystem interfaces and risky practices increase the risk of zoonotic disease transmission. The narrative review's findings are useful to draw attention to the risk and emergence of zoonotic diseases to public health policymakers in Bangladesh and the application of one-health approach to address this public health threat.",2021,Jul,Vet Med Sci,7,4,1199-1210,,10.1002/vms3.465,33650812,#2756,Chowdhury 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Medical countermeasures against henipaviruses: a review and public health perspective.,Gómez Román R; Tornieporth N; Cherian NG; Shurtleff AC; L'Azou Jackson M; Yeskey D; Hacker A; Mungai E; Le TT,"Henipaviruses, including Nipah virus, are regarded as pathogens of notable epidemic potential because of their high pathogenicity and the paucity of specific medical countermeasures to control infections in humans. We review the evidence of medical countermeasures against henipaviruses and project their cost in a post-COVID-19 era. Given the sporadic and unpredictable nature of henipavirus outbreaks, innovative strategies will be needed to circumvent the infeasibility of traditional phase 3 clinical trial regulatory pathways. Stronger partnerships with scientific institutions and regulatory authorities in low-income and middle-income countries can inform coordination of appropriate investments and development of strategies and normative guidelines for the deployment and equitable use of multiple medical countermeasures. Accessible measures should include global, regional, and endemic in-country stockpiles of reasonably priced small molecules, monoclonal antibodies, and vaccines as part of a combined collection of products that could help to control henipavirus outbreaks and prevent future pandemics.",2022,Jan,Lancet Infect Dis,22,1,e13-e27,,10.1016/S1473-3099(21)00400-X,34735799,#2758,GómezRomán 2022,"Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-18 22:56:10)(Screen): Good review paper, written by CEPI; ",Review paper +Potential for Person-to-Person Transmission of Henipaviruses: A Systematic Review of the Literature.,Hegde ST; Lee KH; Styczynski A; Jones FK; Gomes I; Das P; Gurley ES,"Nipah virus Bangladesh (NiVB) is a bat-borne zoonosis transmitted between people through the respiratory route. The risk posed by related henipaviruses, including Hendra virus (HeV) and Nipah virus Malaysia (NiVM), is less clear. We conducted a broad search of the literature encompassing both human infections and animal models to synthesize evidence about potential for person-to-person spread. More than 600 human infections have been reported in the literature, but information on viral shedding was only available for 40 case-patients. There is substantial evidence demonstrating person-to-person transmission of NiVB, and some evidence for NiVM. Less direct evidence is available about the risk for person-to-person transmission of HeV, but animals infected with HeV shed more virus in the respiratory tract than those infected with NiVM, suggesting potential for transmission. As the group of known henipaviruses continues to grow, shared protocols for conducting and reporting from human investigations and animal experiments are urgently needed.",2024,Mar,J Infect Dis,229,3,733-742,,10.1093/infdis/jiad467,37925626,#2759,Hegde 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah and Hendra Viruses: Deadly Zoonotic Paramyxoviruses with the Potential to Cause the Next Pandemic.,Gazal S; Sharma N; Tikoo M; Shikha D; Badroo GA; Rashid M; Lee SJ,"Nipah and Hendra viruses are deadly zoonotic paramyxoviruses with a case fatality rate of upto 75%. The viruses belong to the genus henipavirus in the family Paramyxoviridae, a family of negative-sense single-stranded RNA viruses. The natural reservoirs of NiV and HeV are bats (flying foxes) in which the virus infection is asymptomatic. The intermediate hosts for NiV and HeV are swine and equine, respectively. In humans, NiV infections result in severe and often fatal respiratory and neurological manifestations. The Nipah virus was first identified in Malaysia and Singapore following an outbreak of encephalitis in pig farmers and subsequent outbreaks have been reported in Bangladesh and India almost every year. Due to its extreme pathogenicity, pandemic potential, and lack of established antiviral therapeutics and vaccines, research on henipaviruses is highly warranted so as to develop antivirals or vaccines that could aid in the prevention and control of future outbreaks.",2022,Nov,Pathogens,11,12,,,10.3390/pathogens11121419,36558753,#2762,Gazal 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus disease: what can we do to improve patient care?,Hassan MZ; Shirin T; Satter SM; Rahman MZ; Bourner J; Cheyne A; Torreele E; Horby P; Olliaro P,"The year 2023 marked the 25th anniversary of the first detected outbreak of Nipah virus disease. Despite Nipah virus being a priority pathogen in the WHO Research and Development blueprint, the disease it causes still carries high mortality, unchanged since the first reported outbreaks. Although candidate vaccines for Nipah virus disease exist, developing new therapeutics has been underinvested. Nipah virus disease illustrates the typical market failure of medicine development for a high-consequence pathogen. The unpredictability of outbreaks and low number of infections affecting populations in low-income countries does not make an attractive business case for developing treatments for Nipah virus disease-a situation compounded by methodological challenges in clinical trial design. Nipah virus therapeutics development is not motivated by commercial interest. Therefore, we propose a regionally led, patient-centred, and public health-centred, end-to-end framework that articulates a public health vision and a roadmap for research, development, manufacturing, and access towards the goal of improving patient outcomes. This framework includes co-creating a regulatory-compliant, clinically meaningful, and context-specific clinical development plan and establishing quality standards in clinical care and research capabilities at sites where the disease occurs. The success of this approach will be measured by the availability and accessibility of improved Nipah virus treatments in affected communities and reduced mortality.",2024,Jul,Lancet Infect Dis,24,7,e463-e471,,10.1016/S1473-3099(23)00707-7,38185127,#2769,Hassan 2024,Exclusion reason: Not peer-reviewed paper; Christian Morgenstern (2024-10-27 22:01:43)(Select): wrong article type; ,"" +Nipah Virus: An Updated Review and Emerging Challenges.,Gabra MD; Ghaith HS; Ebada MA,"Many hospitals are teetering on the edge of being overwhelmed, with many already there because of the COVID-19 pandemic. Moreover, a recent report has also warned about the Nipah virus (NiV). NiV is a pleomorphic enveloped virus that belongs to the Paramyxoviridae family (genus Henipavirus); it affects both the respiratory and central nervous systems, with a fatality rate ranging from 40% to 75%, as documented by the World Health Organization. The first reported NiV outbreak was in early 1999 in Malaysia among people who contacted infected pigs. NiV also affected Bangladesh and India, where the main infection route was the consumption of raw date palm sap contaminated by bats. The World Health Organization has listed NiV as one of the emerging pathogens that can lead to severe outbreaks at any moment in the future with limited medical preparations and only a few projects in pharmaceutical firms. There is no licensed treatment for human use against NiV until now, and the management is limited to supportive care and symptomatic treatment. In severe cases with neurologic and respiratory complications, intensive care is needed. This article reviews the published literature and highlights the latest updates about this emerging pathogen and the methods to avoid the spread of this disease during this critical period.",2022,,Infect Disord Drug Targets,22,4,e170122200296,,10.2174/1871526522666220117120859,35078400,#2771,Gabra 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Measures to prevent and treat Nipah virus disease: research priorities for 2024-29.,Moore KA; Mehr AJ; Ostrowsky JT; Ulrich AK; Moua NM; Fay PC; Hart PJ; Golding JP; Benassi V; Preziosi MP; Broder CC; de Wit E; Formenty PBH; Freiberg AN; Gurley ES; Halpin K; Luby SP; Mazzola LT; Montgomery JM; Spiropoulou CF; Mourya DT; Parveen S; Rahman M; Roth C; Wang LF; Osterholm MT,"Nipah virus causes highly lethal disease, with case-fatality rates ranging from 40% to 100% in recognised outbreaks. No treatments or licensed vaccines are currently available for the prevention and control of Nipah virus infection. In 2019, WHO published an advanced draft of a research and development roadmap for accelerating development of medical countermeasures, including diagnostics, therapeutics, and vaccines, to enable effective and timely emergency response to Nipah virus outbreaks. This Personal View provides an update to the WHO roadmap by defining current research priorities for development of Nipah virus medical countermeasures, based primarily on literature published in the last 5 years and consensus opinion of 15 subject matter experts with broad experience in development of medical countermeasures for Nipah virus or experience in the epidemiology, ecology, or public health control of outbreaks of Nipah virus. The research priorities are organised into four main sections: cross-cutting issues (for those that apply to more than one category of medical countermeasures), diagnostics, therapeutics, and vaccines. The strategic goals and milestones identified in each section focus on key achievements that are needed over the next 6 years to ensure that the necessary tools are available for rapid response to future outbreaks of Nipah virus or related henipaviruses.",2024,Jul,Lancet Infect Dis,,,,,10.1016/S1473-3099(24)00262-7,38964362,#2774,Moore 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +"Dose-response and transmission: the nexus between reservoir hosts, environment and recipient hosts.",Lunn TJ; Restif O; Peel AJ; Munster VJ; de Wit E; Sokolow S; van Doremalen N; Hudson P; McCallum H,"Dose is the nexus between exposure and all upstream processes that determine pathogen pressure, and is thereby an important element underlying disease dynamics. Understanding the relationship between dose and disease is particularly important in the context of spillover, where nonlinearities in the dose-response could determine the likelihood of transmission. There is a need to explore dose-response models for directly transmitted and zoonotic pathogens, and how these interactions integrate within-host factors to consider, for example, heterogeneity in host susceptibility and dose-dependent antagonism. Here, we review the dose-response literature and discuss the unique role dose-response models have to play in understanding and predicting spillover events. We present a re-analysis of dose-response experiments for two important zoonotic pathogens (Middle East respiratory syndrome coronavirus and Nipah virus), to exemplify potential difficulties in differentiating between appropriate models with small exposure experiment datasets. We also discuss the data requirements needed for robust selection between dose-response models. We then suggest how these processes could be modelled to gain more realistic predictions of zoonotic transmission outcomes and highlight the exciting opportunities that could arise with increased collaboration between the virology and epidemiology disciplines. This article is part of the theme issue 'Dynamic and integrative approaches to understanding pathogen spillover'.",2019,Sep,Philos Trans R Soc Lond B Biol Sci,374,1782,20190016,,10.1098/rstb.2019.0016,31401955,#2778,Lunn 2019,"Exclusion reason: Not peer-reviewed paper; Tristan Naidoo (2024-11-27 19:53:24)(Select): Possibly a model in section 6?; Tristan Naidoo (2024-11-19 06:09:26)(Select): Opinion piece +; ","" +Nipah Virus-Another Threat From the World of Zoonotic Viruses.,Skowron K; Bauza-Kaszewska J; Grudlewska-Buda K; Wiktorczyk-Kapischke N; Zacharski M; Bernaciak Z; Gospodarek-Komkowska E,"Among the diseases that pose a serious threat to public health, those caused by viruses are of great importance. The Nipah virus (NiV) belonging to the Paramyxoviridae family was reported in Malaysia in 1998/1999. Due to its high mortality in humans, its zoonotic nature, the possibility of human-to-human transmission, and the lack of an available vaccine, the World Health Organization (WHO) has recognized it as a global health problem. Depending on strain specificity, neurological symptoms and severe respiratory disorders are observed in NiV infection. In most confirmed cases of NiV epidemics, the appearance of the virus in humans was associated with the presence of various animal species, but generally, bats of Pteropus species are considered the most important natural animal NiV reservoir and vector. Consumption of contaminated food, contact with animals, and ""human-to-human"" direct contact were identified as NiV transmission routes. Due to the lack of vaccines and drugs with proven effectiveness against NiV, treatment of patients is limited to supportive and prophylactic.",2021,,Front Microbiol,12,,811157,,10.3389/fmicb.2021.811157,35145498,#2779,Skowron 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Mapping the distribution of Nipah virus infections: a geospatial modelling analysis.,Sun YQ; Zhang YY; Liu MC; Chen JJ; Li TT; Liu YN; Zhang LY; Wang T; Yu LJ; Che TL; Tang T; Xu Q; Lv CL; Jiang BG; Golding N; Mehlman ML; Hay SI; Fang LQ; Liu W,"BACKGROUND: Nipah virus is a zoonotic paramyxovirus responsible for disease outbreaks with high fatality rates in south and southeast Asia. However, knowledge of the potential geographical extent and risk patterns of the virus is poor. We aimed to establish an integrated spatiotemporal and phylogenetic database of Nipah virus infections in humans and animals across south and southeast Asia. METHODS: In this geospatial modelling analysis, we developed an integrated database containing information on the distribution of Nipah virus infections in humans and animals from 1998 to 2021. We conducted phylodynamic analysis to examine the evolution and migration pathways of the virus and meta-analyses to estimate the adjusted case-fatality rate. We used two boosted regression tree models to identify the potential ecological drivers of Nipah virus occurrences in spillover events and endemic areas, and mapped potential risk areas for Nipah virus endemicity. FINDINGS: 749 people and eight bat species across nine countries were documented as being infected with Nipah virus. On the basis of 66 complete genomes of the virus, we identified two clades-the Bangladesh clade and the Malaysia clade-with the time of the most recent common ancestor estimated to be 1863. Adjusted case-fatality rates varied widely between countries and were higher for the Bangladesh clade than for the Malaysia clade. Multivariable meta-regression analysis revealed significant relationships between case-fatality rate estimates and viral clade (p=0·0021), source country (p=0·016), proportion of male patients (p=0·036), and travel time to health-care facilities (p=0·036). Temperature-related bioclimate variables and the probability of occurrence of Pteropus medius were important contributors to both the spillover and the endemic infection models. INTERPRETATION: The suitable niches for Nipah virus are more extensive than previously reported. Future surveillance efforts should focus on high-risk areas informed by updated projections. Specifically, intensifying zoonotic surveillance efforts, enhancing laboratory testing capacity, and implementing public health education in projected high-risk areas where no human cases have been reported to date will be crucial. Additionally, strengthening wildlife surveillance and investigating potential modes of transmission in regions with documented human cases is needed. FUNDING: The Key Research and Development Program of China.",2024,Jul,Lancet Planet Health,8,7,e463-e475,,10.1016/S2542-5196(24)00119-0,38969474,#2784,Sun 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-11-19 00:55:36)(Select): Potential spillover risk - NB CFR is from a meta analysis; ,"" +Possible high risk of transmission of the Nipah virus in South and South East Asia: a review.,Joshi J; Shah Y; Pandey K; Ojha RP; Joshi CR; Bhatt LR; Dumre SP; Acharya PR; Joshi HR; Rimal S; Shahi R; Pokharel D; Khadka KS; Dahal B; Nepal S; Dhami RS; Pant KP; Basnet R; Pandey BD,"Nipah virus (NiV) is a zoonotic, single-stranded RNA virus from the family Paramyxoviridae, genus Henipavirus. NiV is a biosafety-level-4 pathogen that is mostly spread by Pteropus species, which serve as its natural reservoir host. NiV is one of the major public health challenges in South and South East Asia. However, few molecular studies have been conducted to characterise NiV in a specific region. The main objective of this review is to understand the epidemiology, pathogenesis, molecular surveillance, transmission dynamics, genetic diversity, reservoir host, clinical characteristics, and phylogenetics of NiV. South and South East Asian nations have experienced NiV outbreaks. Phylogenetic analysis confirmed that two primary clades of NiV are in circulation. In humans, NiV causes severe respiratory illness and/or deadly encephalitis. NiV is mainly diagnosed by ELISA along with PCR. Therefore, we recommend that the governments of the region support the One Health approach to reducing the risk of zoonotic disease transmission in their respective countries.",2023,Aug,Trop Med Health,51,1,44,,10.1186/s41182-023-00535-7,37559114,#2785,Joshi 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-13 02:42:19)(Screen): lists outbreaks ; ,Review paper +Nipah Virus Disease: Recent Perspective and One Health Approach.,Singhai M; Jain R; Jain S; Bala M; Singh S; Goyal R,"BACKGROUND: Nipah virus (NiV) first emerged in 1998 in Malaysia, causing an outbreak of respiratory illness and encephalitis in pigs. Pig-to-human transmission of NiV associated with severe febrile encephalitis was described, and it was thought to occur through close contact with infected animals. The first outbreak was reported in India in Siliguri, West Bengal in 2001 followed by Nadia, West Bengal and adjoining areas of Bangladesh in 2007, where an intermediate animal host was not identified, suggesting bat-to-human and human-to-human transmissions. Although it is extremely difficult to document the spillover event and ascertain crossing of trans-natural boundaries by bats and bringing new viruses in an unexposed population, efforts for source identification are important to understand the epidemiology of disease. As the disease transcends beyond one species and has shown to infect humans, it therefore requires the 'One Health approach' in which multiple sectors coordinate and work together to achieve better public health outcomes. OBJECTIVE: We summarize the re-emergence and response of the Nipah virus outbreaks (NiVD) in Kerala, India, about 1800 kms away, a decade later in 2018 and 2019. The paper recapitulates involvement of various stakeholders from the Ministry of Health and Family Welfare, Directorate of Health Research, Indian Council of Agricultural Research, State Health Department, State Animal Husbandry, District Administration, and multidisciplinary response mechanism during the NiVD outbreaks of 2018 and 2019. METHODS: Information was collected from the Press Information Bureau (PIB), media/weekly alerts from the Integrated Disease Surveillance Programme (IDSP), news articles from print and electronic media, newsletters, advisories from the National Centre for Disease Control (NCDC), Disease Outbreak News (DON), World Health Organization (WHO), and published papers from various stakeholders. FINDINGS & CONCLUSION: The evidence of NiV in humans and bats, with samples collected from the outbreak sites, was laboratory confirmed. The multidisciplinary response mechanisms during the 2018 outbreak helped in further understanding the importance of the One Health approach for systemic and streamlined response utilizing existing surveillance systems. This was of utmost help in the subsequent outbreak of the disease that occurred during 2019, wherein there was no documented spread of disease from the index case and no mortality was observed. This success reiterates the need for institutionalizing the involvement and cooperation of various departments and organizations during public health emergencies, especially of Zoonotic diseases, using the One Health approach.",2021,,Ann Glob Health,87,1,102,,10.5334/aogh.3431,34712599,#2793,Singhai 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,One health; Review paper +Nipah virus: a narrative review of viral characteristics and epidemiological determinants.,Sayed A; Bottu A; Qaisar M; Mane MP; Acharya Y,"OBJECTIVES: The objectives of this article are to highlight the properties of the Nipah virus (NiV) and discuss its epidemiological determinants. STUDY DESIGN: A review of conjectures, epidemiological and clinically related studies, and identification and discussion of preventive approaches is conducted. METHODS: A review of the current literature is performed going through online search engines: PubMed and Google Scholar. The search strategy was focused on two main components, first on the NiV ('Nipah' OR 'Nipah Virus') and subsequently on its epidemiology, including determinants and preventive measures ('Epidemiology/determinants' OR 'Epidemiology/prevention'). RESULTS: NiV infection is an emerging zoonotic infectious disease causing sporadic outbursts in many developing countries within Asia, Africa, and South America. Pteroid bats are the natural reservoirs, but human-to-human transmission is possible. Clinical course ranges from non-specific influenza-like symptoms to rapidly progressive respiratory and neurologic complications. Vector control has been challenging because of its widely distributed ecological niche. Currently, no definitive treatment protocols are available in humans, but profound breakthrough in vaccine technology and successful equine vaccines has shown the way for the development of NiV vaccine and immunization in the near future. CONCLUSIONS: The NiV poses a significant public health risk because of its intricate transmission cycle, unpredictable viral course, murky management protocol, and unavailability of vaccine. Complicated by emergence and subsequent reemergence, prevention and containment are the two most important public health promotion strategies. Early anticipation, intergovernmental preparedness and cooperation, and surveillance of zoonotic infections still remain the key to mitigate the risk.",2019,Aug,Public Health,173,,97-104,,10.1016/j.puhe.2019.05.019,31261032,#2795,Sayed 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah amidst Covid-19 Pandemic, another Re-Emerging Infectious Disease of Pandemic Potential - a Narrative Review.",Kaliappan A; Kaliappan V; Lakshmi JT; Raja S; Nikhat SS; Vidya MS; Saranya M; Sagar T; Chenna KD,"Introduction: Nipah virus (NiV) was reported for the first time from the Kampung Sungai Nipah village of Malaysia in 1998. Since then, there have been multiple outbreaks, all of them in South- and South-East Asia. According to the World Health Organization (WHO), up to 75% of Nipah infections were proven to be fatal. Nipah virus belongs to the group of Biosafety Level-4 pathogen associated with high case fatality rate (40-75%). Methodology:According to the PRISMA guidelines for 2020, we searched in four medical databases (PubMed, Google Scholar, EMBASE and Scopus) and selected relevant studies from the past twenty years till November 2021. Review:Nipah virus was first detected in Malaysia's Kampung Sungai Nipah in 1998. By May 1999, the Malaysia Ministry of Health in association with the Centers for Disease Control (CDC) reported a total of 258 cases with a case fatality rate of almost 40%. Nipah in Kozhikode:Experts from the Pune Institute and Bhopal's National Institute of High Security Animal Diseases had collected Bat samples from Pazhoor in Chathamangalam gram panchayat (where a 12-year-old died due to Nipah infection on September 5 carried antibodies of the virus). All Indian outbreaks have seen person-to-person transmission. The virus found in Kerala differed from those two variants in terms of genetic structure. It also differed by 1.96% from the Bangladesh variant. The difference with the Malaysian variant was 8.42%. While PCR is the most sensitive technique for diagnosing active NiV infection, NiV-specific IgM ELISA offers a serological option when PCR is not available. Conclusions:Understanding the fruit bat ecology, NiV illness seasonality, and the transmission risk of various intermediate species requires a One Health approach. The danger of reintroduction into animal or human populations cannot be handled without a thorough understanding of the wildlife reservoir.",2022,Jun,Maedica (Bucur),17,2,464-470,,10.26574/maedica.2022.17.2.464,36032603,#2797,Kaliappan 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A Survey of Henipavirus Tropism-Our Current Understanding from a Species/Organ and Cellular Level.,Diederich S; Babiuk S; Boshra H,"Henipaviruses are single-stranded RNA viruses that have been shown to be virulent in several species, including humans, pigs, horses, and rodents. Isolated nearly 30 years ago, these viruses have been shown to be of particular concern to public health, as at least two members (Nipah and Hendra viruses) are highly virulent, as well as zoonotic, and are thus classified as BSL4 pathogens. Although only 5 members of this genus have been isolated and characterized, metagenomics analysis using animal fluids and tissues has demonstrated the existence of other novel henipaviruses, suggesting a far greater degree of phylogenetic diversity than is currently known. Using a variety of molecular biology techniques, it has been shown that these viruses exhibit varying degrees of tropism on a species, organ/tissue, and cellular level. This review will attempt to provide a general overview of our current understanding of henipaviruses, with a particular emphasis on viral tropism.",2023,Oct,Viruses,15,10,,,10.3390/v15102048,37896825,#2802,Diederich 2023,"Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-10-27 01:02:29)(Screen): Has a review of the ""currently Well-Characterized Henipaviruses""; ",Review paper +Disease control tools to secure animal and public health in a densely populated world.,Charlier J; Barkema HW; Becher P; De Benedictis P; Hansson I; Hennig-Pauka I; La Ragione R; Larsen LE; Madoroba E; Maes D; Marín CM; Mutinelli F; Nisbet AJ; Podgórska K; Vercruysse J; Vitale F; Williams DJL; Zadoks RN,"Animal health is a prerequisite for global health, economic development, food security, food quality, and poverty reduction, while mitigating against climate change and biodiversity loss. We did a qualitative review of 53 infectious diseases in terrestrial animals with data from DISCONTOOLS, a specialist database and prioritisation model focusing on research gaps for improving infectious disease control in animals. Many diseases do not have any appropriate control tools, but the prioritisation model suggests that we should focus international efforts on Nipah virus infection, African swine fever, contagious bovine pleuropneumonia, peste des petits ruminants, sheeppox and goatpox, avian influenza, Rift Valley fever, foot and mouth disease, and bovine tuberculosis, for the greatest impact on the UN's Sustainable Development Goals. Easy to use and accurate diagnostics are available for many animal diseases. However, there is an urgent need for the development of stable and durable diagnostics that can differentiate infected animals from vaccinated animals, to exploit rapid technological advances, and to make diagnostics widely available and affordable. Veterinary vaccines are important for dealing with endemic, new, and emerging diseases. However, fundamental research is needed to improve the convenience of use and duration of immunity, and to establish performant marker vaccines. The largest gap in animal pharmaceuticals is the threat of pathogens developing resistance to available drugs, in particular for bacterial and parasitic (protozoal, helminth, and arthropod) pathogens. We propose and discuss five research priorities for animal health that will help to deliver a sustainable and healthy planet: vaccinology, antimicrobial resistance, climate mitigation and adaptation, digital health, and epidemic preparedness.",2022,Oct,Lancet Planet Health,6,10,e812-e824,,10.1016/S2542-5196(22)00147-4,36208644,#2805,Charlier 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Vaccines to Emerging Viruses: Nipah and Hendra.,Amaya M; Broder CC,"Hendra virus (HeV) and Nipah virus (NiV) are bat-borne zoonotic para-myxoviruses identified in the mid- to late 1990s in outbreaks of severe disease in livestock and people in Australia and Malaysia, respectively. HeV repeatedly re-emerges in Australia while NiV continues to cause outbreaks in South Asia (Bangladesh and India), and these viruses have remained transboundary threats. In people and several mammalian species, HeV and NiV infections present as a severe systemic and often fatal neurologic and/or respiratory disease. NiV stands out as a potential pandemic threat because of its associated high case-fatality rates and capacity for human-to-human transmission. The development of effective vaccines, suitable for people and livestock, against HeV and NiV has been a research focus. Here, we review the progress made in NiV and HeV vaccine development, with an emphasis on those approaches that have been tested in established animal challenge models of NiV and HeV infection and disease.",2020,Sep,Annu Rev Virol,7,1,447-473,,10.1146/annurev-virology-021920-113833,32991264,#2809,Amaya 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Etiology of Meningoencephalitis in children aged less than 5 years.,Mishra VK; Khan T; Jeet A; Prakash O; Chandrakanta; Srivastava AK; Singh S; Pathak N; Jain A,"BACKGROUND: The incidence of meningoencephalitis (ME) in India is poorly understood, and the exact etiological diagnosis is often not possible. This study was planned to elucidate the bacterial and viral etiological diagnosis of ME in children less than 5 years of age. MATERIALS AND METHODS: The present study was conducted in Virus Research and Diagnostic Laboratory (VRDL), Department of Microbiology, King George's Medical University, Lucknow, from July 2020 to June 2022. Serum, cerebrospinal fluid (CSF), and nose/throat swabs were collected from all the enrolled cases of meningoencephalitis in children below 5 years of age and tested for various etiological agents by ELISA and/or real-time PCR. RESULTS: Of 130 enrolled cases, 50 (38.5%) cases tested positive for one or more etiological agents. Etiological agents of ME detected were Japanese encephalitis virus (JEV) (8.46%), adenovirus (6.92%), influenza virus (5.38%), dengue virus (3.85%), Parvo B-19 virus (3.08%), Orientia tsutsugamushi (3.08%), Herpes Simplex Virus-1 (HSV-1) (1.54%), measles virus (1.54%), and Varicella-Zoster Virus (VZV) (1.54%). Rubella virus, Chikungunya virus (CHKV), Mumps virus, Enteroviruses, Parecho virus, John Cunningham virus (JC), BK virus, Nipah virus, Kyasanur Forest Disease virus (KFD), Chandipura virus, Herpes Simplex Virus (HSV-2), SARS CoV-2, N. Meningitides , and H. Influenzae were tested but not detected in any of the cases. CONCLUSION: We identified the etiological agents in 50/130 (38.5%) suspected ME cases in children less than 5 years of age, using molecular and ELISA-based diagnostic methods. The four most common pathogens detected were JEV, adenovirus, influenza virus, and dengue virus.",2024,Jul,Indian J Pathol Microbiol,67,3,576-580,,10.4103/ijpm.ijpm_60_23,38394398,#2822,Mishra 2024,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2024-10-27 22:53:49)(Select): for nipah only pcr used ; Tristan Naidoo (2024-10-26 21:31:58)(Screen): Possible 0% sero param (not sure if ELISA or PCR) +; ","" +Henipavirus Immune Evasion and Pathogenesis Mechanisms: Lessons Learnt from Natural Infection and Animal Models.,Lawrence P; Escudero-Pérez B,"Nipah henipavirus (NiV) and Hendra henipavirus (HeV) are zoonotic emerging paramyxoviruses causing severe disease outbreaks in humans and livestock, mostly in Australia, India, Malaysia, Singapore and Bangladesh. Both are bat-borne viruses and in humans, their mortality rates can reach 60% in the case of HeV and 92% for NiV, thus being two of the deadliest viruses known for humans. Several factors, including a large cellular tropism and a wide zoonotic potential, con-tribute to their high pathogenicity. This review provides an overview of HeV and NiV pathogenicity mechanisms and provides a summary of their interactions with the immune systems of their different host species, including their natural hosts bats, spillover-hosts pigs, horses, and humans, as well as in experimental animal models. A better understanding of the interactions between henipaviruses and their hosts could facilitate the development of new therapeutic strategies and vaccine measures against these re-emerging viruses.",2022,Apr,Viruses,14,5,,,10.3390/v14050936,35632678,#2829,Lawrence 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Case fatality rate and risk factors for Nipah virus encephalitis: A systematic review and meta-analysis.,Kenmoe S; Demanou M; Bigna JJ; Nde Kengne C; Fatawou Modiyinji A; Simo FBN; Eyangoh S; Sadeuh-Mba SA; Njouom R,"BACKGROUND: A wide range of Nipah virus (NiV) encephalitis case fatality rates (CFR) have been reported. Data on the involvement of several potential risk factors in Nipah virus transmission remain controversial. We performed a systematic review and meta-analysis to estimate the pooled CFR of NiV encephalitis and to assess the risk factors for NiV infection. METHODS: Articles published up to the 27(th)of November 2018 in MedLine, Embase and Web of knowledge databases were considered for this study. We included cross-sectional, cohort, and case-control studies that have reported NiV CFR and/or risk factors. Data were pooled with random-effects model. This review was registered in the PROSPERO, CRD42018116242. FINDINGS: This global review included 22 citations (25 studies) including 2156, 1682, and 474 suspected, probable, and confirmed cases of NiV encephalitis, respectively. We determined a pooled CFR for NiV encephalitis at 61.0% (95% CI, 45.7-75.4; I² = 96.8%). Climbing trees (OR = 1.4; 95% CI; 1.0-1.9), male gender (OR = 1.5; 95% CI; 1.1-2.0), travel outside their own sub-district (OR = 2.0; 95% CI; 1.4-2.9), and exposure to date palm sap (DPS) (OR = 5.7; 95% CI; 3.8-8.6) or pigs (OR = 7.6; 95% CI; 1.2-45.4) were significantly associated with NiV infection. CONCLUSION: Findings from this study suggest that NiV Encephalitis is associated with a high CFR and that male gender, travel outside their sub-district, climbing trees, and exposure to pigs and DPS are associated with an increased risk of NiV encephalitis.",2019,Aug,J Clin Virol,117,,19-26,,10.1016/j.jcv.2019.05.009,31132674,#2833,Kenmoe 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +World Health Organization High Priority Pathogens: Ophthalmic Disease Findings and Vision Health Perspectives.,Kuthyar S; Anthony CL; Fashina T; Yeh S; Shantha JG,"Recent Ebola epidemics, the ongoing COVID-19 pandemic, and emerging infectious disease threats have highlighted the importance of global infectious diseases and responses to public health emergencies. Ophthalmologists are essential health care workers who provide urgent and emergent vision care services during outbreaks and address the ocular consequences of epidemic and pandemic infectious diseases. In 2017, the World Health Organization (WHO) identified high priority pathogens likely to cause a future epidemic with the goal of guiding research and development to improve diagnostic tests, vaccines, and medicines. These measures were necessary to better inform and respond to public health emergencies. Given the ocular complications associated with emerging infectious diseases, there is a need to recognize the ophthalmic sequelae for future vision health preparedness for potential future outbreaks. The WHO High Priority pathogens list provides a roadmap for ophthalmologists and subspecialty providers that will guide strategic areas of research for clinical care and preparedness for future pandemic threats. This review summarizes these key viral pathogens, summarizes major systemic disease findings, and delineates relevant ocular complications of the WHO High Priority pathogens list, including Crimean-Congo hemorrhagic fever, Filovirus diseases (Ebola virus disease and Marburg hemorrhagic fever), human Coronaviruses, Lassa Fever, Nipah virus infection, Zika, and Rift Valley fever.",2021,Apr,Pathogens,10,4,,,10.3390/pathogens10040442,33917710,#2834,Kuthyar 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah shell disorder, modes of infection, and virulence.",Goh GK; Dunker AK; Foster JA; Uversky VN,"The Nipah Virus (NiV) was first isolated during a 1998-9 outbreak in Malaysia. The outbreak initially infected farm pigs and then moved to humans from pigs with a case-fatality rate (CFR) of about 40%. After 2001, regular outbreaks occurred with higher CFRs (~71%, 2001-5, ~93%, 2008-12). The spread arose from drinking virus-laden palm date sap and human-to-human transmission. Intrinsic disorder analysis revealed strong correlation between the percentage of disorder in the N protein and CFR (Regression: r(2) = 0.93, p < 0.01, ANOVA: p < 0.01). Distinct disorder and, therefore, genetic differences can be found in all three group of strains. The fact that the transmission modes of the Malaysia strain are different from those of the Bangladesh strains suggests that the correlations may also be linked to the modes of viral transmission. Analysis of the NiV and related viruses suggests links between modes of transmission and disorder of not just the N protein but, also, of M shell protein. The links among shell disorder, transmission modes, and virulence suggest mechanisms by which viruses are attenuated as they passed through different cell hosts from different animal species. These have implications for development of vaccines and epidemiological molecular analytical tools to contain outbreaks.",2020,Apr,Microb Pathog,141,,103976,,10.1016/j.micpath.2020.103976,31940461,#2839,Goh 2020,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Global and regional mortality statistics of nipah virus from 1994 to 2023: a comprehensive systematic review and meta-analysis.,Vasudevan SS; Subash A; Mehta F; Kandrikar TY; Desai R; Khan K; Khanduja S; Pitliya A; Raavi L; Kanagala SG; Gondaliya P,"The mortality rate of Nipah virus (NiV) can vary in different regions, and its pattern across timelines has yet to be assessed. The primary objective is to perform a comparative analysis of mortality rates across different timelines and countries. Articles reporting NiV mortality from inception to November 2023 were analyzed in PubMed, Ovid Embase, Scopus, and Web of Science databases. A meta-analysis utilizing random-effects models determined the mortality rate secondary to NiV complications. The initial search strategy yielded 1213 records, of which 36 articles met the inclusion criteria, comprising 2736 NiV patients. The Global mortality rate of the Nipah virus in the 2014-2023 decade was 80.1% (CI: 68.7-88.1%), indicating a significant 24% increase compared to the preceding decade (2004-2013) with a mortality rate of 54.1% (CI: 35.5-71.6%). Among the countries analyzed for overall mortality from 1994-2023, India experienced the highest mortality rate at 82.7% (CI: 74.6-88.6%), followed by Bangladesh at 62.1% (CI: 45.6-76.2%), Philippines at 52.9% (CI: 30-74.5%), Malaysia at 28.9% (CI: 21.4-37.9%), and Singapore at 21% (CI: 8-45%). Subgroup analysis revealed that India consistently had the highest mortality rate for the past two decades (91.7% and 89.3%). The primary complication leading to mortality was encephalitis, accounting for 95% of cases. This systematic review and meta-analysis revealed a noteworthy surge in NiV mortality rates, particularly in the current decade (2014-2023). The escalation, with India reporting a concerning level of mortality of 89.3-91.7% in the past decades, signifies a pressing public health challenge.",2024,Sep,Pathog Glob Health,118,6,471-480,,10.1080/20477724.2024.2380131,39030703,#2846,Vasudevan 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Major bat-borne zoonotic viral epidemics in Asia and Africa: A systematic review and meta-analysis.,Khan SA; Imtiaz MA; Islam MM; Tanzin AZ; Islam A; Hassan MM,"Bats are the natural reservoir host for many pathogenic and non-pathogenic viruses, potentially spilling over to humans and domestic animals directly or via an intermediate host. The ongoing COVID-19 pandemic is the continuation of virus spillover events that have taken place over the last few decades, particularly in Asia and Africa. Therefore, these bat-associated epidemics provide a significant number of hints, including respiratory cellular tropism, more intense susceptibility to these cell types, and overall likely to become a pandemic for the next spillover. In this systematic review, we analysed data to insight, through bat-originated spillover in Asia and Africa. We used STATA/IC-13 software for descriptive statistics and meta-analysis. The random effect of meta-analysis showed that the pooled estimates of case fatality rates of bat-originated viral zoonotic diseases were higher in Africa (61.06%, 95%CI: 50.26 to 71.85, l(2) % = 97.3, p < 0.001). Moreover, estimates of case fatality rates were higher in Ebola (61.06%; 95%CI: 50.26 to 71.85, l(2) % = 97.3, p < 0.001) followed by Nipah (55.19%; 95%CI: 39.29 to 71.09, l(2) % = 94.2, p < 0.001), MERS (18.49%; 95%CI: 8.19 to 28.76, l(2) % = 95.4, p < 0.001) and SARS (10.86%; 95%CI: 6.02 to 15.71, l(2) % = 85.7, p < 0.001) with the overall case fatality rates of 29.86 (95%CI: 29.97 to 48.58, l(2) % = 99.0, p < 0.001). Bat-originated viruses have caused several outbreaks of deadly diseases, including Nipah, Ebola, SARS and MERS in Asia and Africa in a sequential fashion. Nipah virus emerged first in Malaysia, but later, periodic outbreaks were noticed in Bangladesh and India. Similarly, the Ebola virus was detected in the African continent with neurological disorders in humans, like Nipah, seen in the Asian region. Two important coronaviruses, MERS and SARS, were introduced, both with the potential to infect respiratory passages. This paper explores the dimension of spillover events within and/or between bat-human and the epidemiological risk factors, which may lead to another pandemic occurring. Further, these processes enhance the bat-originated virus, which utilises an intermediate host to jump into human species.",2022,Jul,Vet Med Sci,8,4,1787-1801,,10.1002/vms3.835,35537080,#2852,Khan 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Recent advances in the understanding of Nipah virus immunopathogenesis and anti-viral approaches.,Pelissier R; Iampietro M; Horvat B,"Nipah virus (NiV) is a highly lethal zoonotic paramyxovirus that emerged at the end of last century as a human pathogen capable of causing severe acute respiratory infection and encephalitis. Although NiV provokes serious diseases in numerous mammalian species, the infection seems to be asymptomatic in NiV natural hosts, the fruit bats, which provide a continuous virus source for further outbreaks. Consecutive human-to-human transmission has been frequently observed during outbreaks in Bangladesh and India. NiV was shown to interfere with the innate immune response and interferon type I signaling, restraining the anti-viral response and permitting viral spread. Studies of adaptive immunity in infected patients and animal models have suggested an unbalanced immune response during NiV infection. Here, we summarize some of the recent studies of NiV pathogenesis and NiV-induced modulation of both innate and adaptive immune responses, as well as the development of novel prophylactic and therapeutic approaches, necessary to control this highly lethal emerging infection.",2019,,F1000Res,8,,,,10.12688/f1000research.19975.1,31656582,#2857,Pelissier 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Prioritizing surveillance of Nipah virus in India.,Plowright RK; Becker DJ; Crowley DE; Washburne AD; Huang T; Nameer PO; Gurley ES; Han BA,"The 2018 outbreak of Nipah virus in Kerala, India, highlights the need for global surveillance of henipaviruses in bats, which are the reservoir hosts for this and other viruses. Nipah virus, an emerging paramyxovirus in the genus Henipavirus, causes severe disease and stuttering chains of transmission in humans and is considered a potential pandemic threat. In May 2018, an outbreak of Nipah virus began in Kerala, > 1800 km from the sites of previous outbreaks in eastern India in 2001 and 2007. Twenty-three people were infected and 21 people died (16 deaths and 18 cases were laboratory confirmed). Initial surveillance focused on insectivorous bats (Megaderma spasma), whereas follow-up surveys within Kerala found evidence of Nipah virus in fruit bats (Pteropus medius). P. medius is the confirmed host in Bangladesh and is now a confirmed host in India. However, other bat species may also serve as reservoir hosts of henipaviruses. To inform surveillance of Nipah virus in bats, we reviewed and analyzed the published records of Nipah virus surveillance globally. We applied a trait-based machine learning approach to a subset of species that occur in Asia, Australia, and Oceana. In addition to seven species in Kerala that were previously identified as Nipah virus seropositive, we identified at least four bat species that, on the basis of trait similarity with known Nipah virus-seropositive species, have a relatively high likelihood of exposure to Nipah or Nipah-like viruses in India. These machine-learning approaches provide the first step in the sequence of studies required to assess the risk of Nipah virus spillover in India. Nipah virus surveillance not only within Kerala but also elsewhere in India would benefit from a research pipeline that included surveys of known and predicted reservoirs for serological evidence of past infection with Nipah virus (or cross reacting henipaviruses). Serosurveys should then be followed by longitudinal spatial and temporal studies to detect shedding and isolate virus from species with evidence of infection. Ecological studies will then be required to understand the dynamics governing prevalence and shedding in bats and the contacts that could pose a risk to public health.",2019,Jun,PLoS Negl Trop Dis,13,6,e0007393,,10.1371/journal.pntd.0007393,31246966,#2858,Plowright 2019,"Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-27 22:46:15)(Select): prisma flow chart in SI; Tristan Naidoo (2024-10-13 02:47:38)(Screen): Possibly also a review paper? +; ",Review paper +Neurologic Manifestations of the World Health Organization's List of Pandemic and Epidemic Diseases.,McEntire CRS; Song KW; McInnis RP; Rhee JY; Young M; Williams E; Wibecan LL; Nolan N; Nagy AM; Gluckstein J; Mukerji SS; Mateen FJ,"The World Health Organization (WHO) monitors the spread of diseases globally and maintains a list of diseases with epidemic or pandemic potential. Currently listed diseases include Chikungunya, cholera, Crimean-Congo hemorrhagic fever, Ebola virus disease, Hendra virus infection, influenza, Lassa fever, Marburg virus disease, Neisseria meningitis, MERS-CoV, monkeypox, Nipah virus infection, novel coronavirus (COVID-19), plague, Rift Valley fever, SARS, smallpox, tularemia, yellow fever, and Zika virus disease. The associated pathogens are increasingly important on the global stage. The majority of these diseases have neurological manifestations. Those with less frequent neurological manifestations may also have important consequences. This is highlighted now in particular through the ongoing COVID-19 pandemic and reinforces that pathogens with the potential to spread rapidly and widely, in spite of concerted global efforts, may affect the nervous system. We searched the scientific literature, dating from 1934 to August 2020, to compile data on the cause, epidemiology, clinical presentation, neuroimaging features, and treatment of each of the diseases of epidemic or pandemic potential as viewed through a neurologist's lens. We included articles with an abstract or full text in English in this topical and scoping review. Diseases with epidemic and pandemic potential can be spread directly from human to human, animal to human, via mosquitoes or other insects, or via environmental contamination. Manifestations include central neurologic conditions (meningitis, encephalitis, intraparenchymal hemorrhage, seizures), peripheral and cranial nerve syndromes (sensory neuropathy, sensorineural hearing loss, ophthalmoplegia), post-infectious syndromes (acute inflammatory polyneuropathy), and congenital syndromes (fetal microcephaly), among others. Some diseases have not been well-characterized from a neurological standpoint, but all have at least scattered case reports of neurological features. Some of the diseases have curative treatments available while in other cases, supportive care remains the only management option. Regardless of the pathogen, prompt, and aggressive measures to control the spread of these agents are the most important factors in lowering the overall morbidity and mortality they can cause.",2021,,Front Neurol,12,,634827,,10.3389/fneur.2021.634827,33692745,#2860,McEntireCRS 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Current progress towards prevention of Nipah and Hendra disease in humans: A scoping review of vaccine and monoclonal antibody candidates being evaluated in clinical trials.,Rodrigue V; Gravagna K; Yao J; Nafade V; Basta NE,"OBJECTIVES: Nipah and Hendra are deadly zoonotic diseases with pandemic potential. To date, no human vaccine or monoclonal antibody (mAb) has been licensed to prevent disease caused by these pathogens. The aim of this scoping review was to identify and describe all Phase I, II, and III clinical trials of vaccine candidates or mAbs candidates designed to prevent Nipah and Hendra in humans and to compare the characteristics of the vaccine candidates to characteristics outlined in the Target Product Profile drafted by the World Health Organisation as part of the WHO Research & Development Blueprint for Action to Prevent Epidemics. METHODS: We searched 23 clinical trial registries, the Cochrane Central Register of Clinical Trials, and grey literature up to June 2023 to identify vaccine and mAb candidates being evaluated in registered clinical trials. Vaccine candidate and trial characteristics were double-extracted for evaluation and the vaccine candidate characteristics were compared with the preferred and critical criteria of the World Health Organisation's Target Product Profile for Nipah virus vaccine. RESULTS: Three vaccine candidates (Hendra Virus Soluble Glycoprotein Vaccine [HeV-sG-V], PHV02, and mRNA-1215) and one mAb (m102.4) had a registered human clinical trial by June 2023. All trials were phase 1, dose-ranging trials taking place in the United States of America or Australia and enrolling healthy adults. Although all vaccine candidates meet the dose regimen and route of administration criteria of the Target Product Profile, other criteria such as measures of efficacy and reactogenicity will need to be evaluated in the future as evidence becomes available. CONCLUSION: Multiple vaccine candidates and one mAb candidate have reached the stage of human clinical trials and are reviewed here. Monitoring progress during evaluation of these candidates and candidates entering clinical trials in the future can help highlight many of the challenges that remain.",2024,May,Trop Med Int Health,29,5,354-364,,10.1111/tmi.13979,38415314,#2868,Rodrigue 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Vertical Transfer of Humoral Immunity against Nipah Virus: A Novel Evidence from Bangladesh.,Satter SM; Nazneen A; Aquib WR; Sultana S; Rahman MZ; Klena JD; Montgomery JM; Shirin T,"A major obstacle to in-depth investigation of the immune response against Nipah virus (NiV) infection is its rapid progression and high mortality rate. This paper described novel information on the vertical transfer of immune properties. In January 2020, a female aged below five years and her mother from Faridpur district of Bangladesh were infected. Both had a history of raw date palm sap consumption and were diagnosed as confirmed NiV cases. The daughter passed away, and the mother survived with significant residual neurological impairment. She conceived one and a half year later and was under thorough antenatal follow-up by the surveillance authority. A healthy male baby was born. As part of routine survivor follow-up, specimens were collected from the newborn and tested for NiV infection at the reference laboratory to exclude vertical transmission. Although testing negative for anti-Nipah IgM and PCR for NiV, a high titre of anti-Nipah IgG was observed. The transfer of humoral immunity against NiV from mother to neonate was confirmed for the first time. The article will serve as a reference for further exploration regarding NiV-specific antibodies that are transferred through the placenta, their potential to protect newborns, and how this may influence vaccine recommendations.",2022,Dec,Trop Med Infect Dis,8,1,,,10.3390/tropicalmed8010016,36668923,#2871,Satter 2022,Exclusion reason: Case report or case study; ,"" +Public health threat of novel zoonotic diseases: literature review.,Fiegler-Rudol J; Lau DNMK; Kasperczyk DHNMJ,"Zoonoses, diseases transmitted from animals to humans, continue to challenge public health despite advancements in controlling infectious diseases. The intricate link between human, animal, and environmental health is emphasised by the fact that zoonoses contribute to 60% of emerging human infections. Wet markets, wildlife hunting, intensive wildlife farming, and interactions between domestic animals and humans are key transmission sources. Historical examples like the bubonic plague and English Sweats illustrate the longstanding impact of zoonotic diseases. With new transmission patterns emerging, it is necessary to use new techniques to predict disease spread. This article delves into the emergence of new zoonoses, such as the Nipah virus and the SARS-CoV-2 pandemic, emphasizing the importance of understanding zoonotic aspects for outbreak prevention. Re-emerging zoonoses, like tuberculosis and vaccine-preventable diseases, present challenges, exacerbated by factors like globalized human activities and disruptions caused by the COVID-19 pandemic. Public health implications are explored, including economic losses, antibiotic resistance, and the disruption of international trade.",2024,Jun,Przegl Epidemiol,78,1,69-80,,10.32394/pe/188161,38904313,#2877,Fiegler-Rudol 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Overview of Experimental Vaccines and Antiviral Therapeutics for Henipavirus Infection.,Satterfield BA; Mire CE; Geisbert TW,"Hendra virus (HeV) and Nipah virus (NiV) are highly pathogenic paramyxoviruses, which have emerged in recent decades and cause sporadic outbreaks of respiratory and encephalitic disease in Australia and Southeast Asia, respectively. Over two billion people currently live in regions potentially at risk due to the wide range of the Pteropus fruit bat reservoir, yet there are no approved vaccines or therapeutics to protect against or treat henipavirus disease. In recent years, significant progress has been made toward developing various experimental vaccine platforms and therapeutics. Here, we describe these advances for both human and livestock vaccine candidates and discuss the numerous preclinical studies and the few that have progressed to human phase 1 clinical trial and the one approved veterinary vaccine.",2023,,Methods Mol Biol,2682,,1-22,,10.1007/978-1-0716-3283-3_1,37610570,#2882,Satterfield 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +From Protein to Pandemic: The Transdisciplinary Approach Needed to Prevent Spillover and the Next Pandemic.,Plowright RK; Hudson PJ,"Pandemics are a consequence of a series of processes that span scales from viral biology at 10(-9) m to global transmission at 10(6) m. The pathogen passes from one host species to another through a sequence of events that starts with an infected reservoir host and entails interspecific contact, innate immune responses, receptor protein structure within the potential host, and the global spread of the novel pathogen through the naive host population. Each event presents a potential barrier to the onward passage of the virus and should be characterized with an integrated transdisciplinary approach. Epidemic control is based on the prevention of exposure, infection, and disease. However, the ultimate pandemic prevention is prevention of the spillover event itself. Here, we focus on the potential for preventing the spillover of henipaviruses, a group of viruses derived from bats that frequently cross species barriers, incur high human mortality, and are transmitted among humans via stuttering chains. We outline the transdisciplinary approach needed to prevent the spillover process and, therefore, future pandemics.",2021,Jul,Viruses,13,7,,,10.3390/v13071298,34372504,#2887,Plowright 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Current status of diagnostic assays for emerging zoonotic viruses: Nipah and Hendra.,Sharma N; Jamwal VL; Nagial S; Ranjan M; Rath D; Gandhi SG,"INTRODUCTION: Nipah and Hendra viruses belong to the Paramyxoviridae family, which pose a significant threat to human health, with sporadic outbreaks causing severe morbidity and mortality. Early symptoms include fever, cough, sore throat, and headache, which offer little in terms of differential diagnosis. There are no specific therapeutics and vaccines for these viruses. AREAS COVERED: This review comprehensively covers a spectrum of diagnostic techniques for Nipah and Hendra virus infections, discussed in conjunction with appropriate type of samples during the progression of infection. Serological assays, reverse transcriptase Real-Time PCR assays, and isothermal amplification assays are discussed in detail, along with a listing of few commercially available detection kits. Patents protecting inventions in Nipah and Hendra virus detection are also covered. EXPERT OPINION: Despite several outbreaks of Nipah and Hendra infections in the past decade, in-depth research into their pathogenesis, Point-of-Care diagnostics, specific therapies, and human vaccines is lacking. A prompt and accurate diagnosis is pivotal for efficient outbreak management, patient treatment, and the adoption of preventative measures. The emergence of rapid point-of-care tests holds promise in enhancing diagnostic capabilities in real-world settings. The patent landscape emphasizes the importance of innovation and collaboration within the legal and business realms.",2024,Jun,Expert Rev Mol Diagn,24,6,473-485,,10.1080/14737159.2024.2368591,38924448,#2889,Sharma 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Recent Advances of Nipah Virus Disease: Pathobiology to Treatment and Vaccine Advancement.,Saha S; Bhattacharya M; Lee SS; Chakraborty C,"The zoonotic infection of the Nipah virus (NiV) has yet again appeared in 2023 in Kerala state, India. The virus, which has a mortality rate ranging from about 40 to 70%, has already infected India five times, the first being in 2001. The current infection is the sixth virus outbreak in the Indian population. In 1998, the first NiV infection was noted in one village in Malaysia. After that, outbreaks from other South and Southeast Asian countries have been reported periodically. It can spread between humans through contact with body fluids. Therefore, it is unlikely to generate a new pandemic. However, there is a considerable knowledge gap in the different areas of NiV. To date, no approved vaccines or treatments have been available. To fulfil the knowledge gap, the review article provided a detailed overview of the genome and genome-encoded proteins, epidemiology, transmission, pathobiology, immunobiology, diagnosis, prevention and control measures, therapeutics (monoclonal antibodies and drug molecules), and vaccine advancement of the emerging and deadly pathogen. The advanced information will help researchers to develop safe and effective NiV vaccine and treatment regimens worldwide.",2024,Sep,J Microbiol,,,,,10.1007/s12275-024-00168-3,39292378,#2890,Saha 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Hendra virus: Epidemiology dynamics in relation to climate change, diagnostic tests and control measures.",Yuen KY; Fraser NS; Henning J; Halpin K; Gibson JS; Betzien L; Stewart AJ,"Hendra virus (HeV) continues to pose a serious public health concern as spillover events occur sporadically. Terminally ill horses can exhibit a range of clinical signs including frothy nasal discharge, ataxia or forebrain signs. Early signs, if detected, can include depression, inappetence, colic or mild respiratory signs. All unvaccinated ill horses in areas where flying foxes exist, may potentially be infected with HeV, posing a significant risk to the veterinary community. Equivac® HeV vaccine has been fully registered in Australia since 2015 (and under an Australian Pesticides and Veterinary Medicines Authority special permit since 2012) for immunization of horses against HeV and is the most effective and direct solution to prevent disease transmission to horses and protect humans. No HeV vaccinated horse has tested positive for HeV infection. There is no registered vaccine to prevent, or therapeutics to treat, HeV infection in humans. Previous equine HeV outbreaks tended to cluster in winter overlapping with the foaling season (August to December), when veterinarians and horse owners have frequent close contact with horses and their bodily fluids, increasing the chance of zoonotic disease transmission. The most southerly case was detected in 2019 in the Upper Hunter region in New South Wales, which is Australia's Thoroughbred horse breeding capital. Future spillover events are predicted to move further south and inland in Queensland and New South Wales, aligning with the moving distribution of the main reservoir hosts. Here we (1) review HeV epidemiology and climate change predicted infection dynamics, (2) present a biosecurity protocol for veterinary clinics and hospitals to adopt, and (3) describe diagnostic tests currently available and those under development. Major knowledge and research gaps have been identified, including evaluation of vaccine efficacy in foals to assess current vaccination protocol recommendations.",2021,Jun,One Health,12,,100207,,10.1016/j.onehlt.2020.100207,33363250,#2893,Yuen 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-12 19:52:53)(Screen): useful review; ,Review paper +Nipah virus dynamics in bats and implications for spillover to humans.,Epstein JH; Anthony SJ; Islam A; Kilpatrick AM; Ali Khan S; Balkey MD; Ross N; Smith I; Zambrana-Torrelio C; Tao Y; Quan PL; Olival KJ; Khan MSU; Gurley ES; Hossein MJ; Field HE; Fielder MD; Briese T; Rahman M; Broder CC; Crameri G; Wang LF; Luby SP; Lipkin WI; Daszak P,"Nipah virus (NiV) is an emerging bat-borne zoonotic virus that causes near-annual outbreaks of fatal encephalitis in South Asia-one of the most populous regions on Earth. In Bangladesh, infection occurs when people drink date-palm sap contaminated with bat excreta. Outbreaks are sporadic, and the influence of viral dynamics in bats on their temporal and spatial distribution is poorly understood. We analyzed data on host ecology, molecular epidemiology, serological dynamics, and viral genetics to characterize spatiotemporal patterns of NiV dynamics in its wildlife reservoir, Pteropus medius bats, in Bangladesh. We found that NiV transmission occurred throughout the country and throughout the year. Model results indicated that local transmission dynamics were modulated by density-dependent transmission, acquired immunity that is lost over time, and recrudescence. Increased transmission followed multiyear periods of declining seroprevalence due to bat-population turnover and individual loss of humoral immunity. Individual bats had smaller host ranges than other Pteropus species (spp.), although movement data and the discovery of a Malaysia-clade NiV strain in eastern Bangladesh suggest connectivity with bats east of Bangladesh. These data suggest that discrete multiannual local epizootics in bat populations contribute to the sporadic nature of NiV outbreaks in South Asia. At the same time, the broad spatial and temporal extent of NiV transmission, including the recent outbreak in Kerala, India, highlights the continued risk of spillover to humans wherever they may interact with pteropid bats and the importance of limiting opportunities for spillover throughout Pteropus's range.",2020,Nov,Proc Natl Acad Sci U S A,117,46,29190-29201,,10.1073/pnas.2000429117,33139552,#2899,Epstein 2020,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2025-03-19 22:45:06)(Select): Animal model; Tristan Naidoo (2024-11-17 05:18:21)(Select): Spillover risk; ,Animal model +A Review on Emerging Infectious Diseases Prioritized Under the 2018 WHO Research and Development Blueprint: Lessons from the Indian Context.,Kojom LP; Singh V,"Objective: This review describes the current scenario of a priority group of emerging infectious diseases (EIDs) listed by World Health Organization (WHO), and their main determinants and drivers for the emergence/spread of the diseases. The gaps and strategies developed by India to meet the WHO guidelines on the effective control of epidemic-prone diseases and outbreaks are also presented in the review. Methods: Epidemiologic information of EIDs, namely Crimean-Congo hemorrhagic fever (CCHF), Ebola and Marburg viruses (EboV and MarV), Zika virus (ZIKAV), Rift Valley fever (RVF), Middle East respiratory syndrome, severe acute respiratory syndrome (SARS), Nipah and Hendra virus (NiV and HeV), and Lassa fever virus (LASV), was drawn from international and national electronic databases to assess the situation. A brief view on the novel coronavirus disease 2019 (COVID-19) in India is also included. Results: There are no reports for human infection of EboV, MarV, RVF, and LASV in India. CCHF, SARS, ZIKAV, and NiV have been involved in outbreaks in eight states of India, while COVID-19 is currently reported from majority of states. India has deeply strengthened its surveillance and response system of outbreaks and epidemic-prone diseases. Conclusions: Despite its enormous improvements made in the anticipation of such threats, still more efforts are needed in sensitization of populations as well as hospital management in the context to EIDs, as addressed in the review. Furthermore, there is still a need for more research and development activities to efficiently control EIDs.",2021,Mar,Vector Borne Zoonotic Dis,21,3,149-159,,10.1089/vbz.2020.2661,33316200,#2901,Kojom 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus - the rising epidemic: a review.,Ochani RK; Batra S; Shaikh A; Asad A,"The Nipah virus was discovered twenty years ago, and there is considerable information available regarding the specificities surrounding this virus such as transmission, pathogenesis and genome. Belonging to the Henipavirus genus, this virus can cause fever, encephalitis and respiratory disorders. The first cases were reported in Malaysia and Singapore in 1998, when affected individuals presented with severe febrile encephalitis. Since then, much has been identified about this virus. These single-stranded RNA viruses gain entry into target cells via a process known as macropinocytosis. The viral genome is released into the cell cytoplasm via a cascade of processes that involves conformational changes in G and F proteins which allow for attachment of the viral membrane to the cell membrane. In addition to this, the natural reservoirs of this virus have been identified to be fruit bats from the genus Pteropus. Five of the 14 species of bats in Malaysia have been identified as carriers, and this virus affects horses, cats, dogs, pigs and humans. Various mechanisms of transmission have been proposed such as contamination of date palm saps by bat feces and saliva, nosocomial and human-to-human transmissions. Physical contact was identified as the strongest risk factor for developing an infection in the 2004 Faridpur outbreak. Geographically, the virus seems to favor the Indian sub-continent, Indonesia, Southeast Asia, Pakistan, southern China, northern Australia and the Philippines, as demonstrated by the multiple outbreaks in 2001, 2004, 2007, 2012 in Bangladesh, India and Pakistan as well as the initial outbreaks in Malaysia and Singapore. Multiple routes of the viremic spread in the human body have been identified such as the central nervous system (CNS) and respiratory system, while virus levels in the body remain low, detection in the cerebrospinal fluid is comparatively high. The virus follows an incubation period of 4 days to 2 weeks which is followed by the development of symptoms. The primary clinical signs include fever, headache, vomiting and dizziness, while the characteristic symptoms consist of segmental myoclonus, tachycardia, areflexia, hypotonia, abnormal pupillary reflexes and hypertension. The serum neutralization test (SNT) is the gold standard of diagnosis followed by ELISA if SNT cannot be carried out. On the other hand, treatment is supportive since there a lack of effective pharmacological therapy and only one equine vaccine is currently licensed for use. Prevention of outbreaks seems to be a more viable approach until specific therapeutic strategies are devised.",2019,Jun,Infez Med,27,2,117-127,,,31205033,#2902,Ochani 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Risk of Viral Infectious Diseases from Live Bats, Primates, Rodents and Carnivores for Sale in Indonesian Wildlife Markets.",Morcatty TQ; Pereyra PER; Ardiansyah A; Imron MA; Hedger K; Campera M; Nekaris KA; Nijman V,"Southeast Asia is considered a global hotspot of emerging zoonotic diseases. There, wildlife is commonly traded under poor sanitary conditions in open markets; these markets have been considered 'the perfect storm' for zoonotic disease transmission. We assessed the potential of wildlife trade in spreading viral diseases by quantifying the number of wild animals of four mammalian orders (Rodentia, Chiroptera, Carnivora and Primates) on sale in 14 Indonesian wildlife markets and identifying zoonotic viruses potentially hosted by these animals. We constructed a network analysis to visualize the animals that are traded alongside each other that may carry similar viruses. We recorded 6725 wild animals of at least 15 species on sale. Cities and markets with larger human population and number of stalls, respectively, offered more individuals for sale. Eight out of 15 animal taxa recorded are hosts of 17 zoonotic virus species, nine of which can infect more than one species as a host. The network analysis showed that long-tailed macaque has the greatest potential for spreading viral diseases, since it is simultaneously the most traded species, sold in 13/14 markets, and a potential host for nine viruses. It is traded alongside pig-tailed macaques in three markets, with which it shares six viruses in common (Cowpox, Dengue, Hepatitis E, Herpes B, Simian foamy, and Simian retrovirus type D). Short-nosed fruit bats and large flying foxes are potential hosts of Nipah virus and are also sold in large quantities in 10/14 markets. This study highlights the need for better surveillance and sanitary conditions to avoid the negative health impacts of unregulated wildlife markets.",2022,Dec,Viruses,14,12,,,10.3390/v14122756,36560762,#2907,Morcatty 2022,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-26 20:49:58)(Screen): Risk factors??; ,"" +Recent Advances in Immunological Landscape and Immunotherapeutic Agent of Nipah Virus Infection.,Chakraborty C; Saha S; Bhattacharya M,"Over the last two decades, the Nipah virus (NiV) emerged as a highly lethal zoonotic pathogen to humans. Outbreaks occurred occasionally in South and Southeast Asia. Therefore, a safe and effective vaccine against the virus is needed to fight against the deadly virus. Understanding the immunological landscape during this lethal virus infection is necessary in this direction. However, we found scattered information on the immunological landscape of the virus's reservoir, as well as hosts such as humans and livestock. The review provides a recent understanding of the immunological landscape of the virus's reservoir, human hosts, monoclonal antibodies, and vaccines for NiV infection. To describe the immunological landscape, we divided our review article into some points. Firstly, we illustrated bats' immune response as a reservoir during the NiV infection. Secondly, we illustrated an overview of the molecular mechanisms underlying the immune response to the NiV infection, various immune cells, humans' innate immune response, adaptive immunity, and the landscape of cytokines and chemokines. We also discussed INF escape, NET evasion, the T cell landscape, and the B cell landscape during virus infection. Thirdly, we also demonstrated the potential monoclonal antibody therapeutics, and vaccines. Finally, neutralizing antibodies (nAbs) of NiV and potentially other therapeutic strategies were discussed. The review will help researchers for better understanding the immunological landscape, mAbs, and vaccines, enabling them to develop their next-generation versions.",2024,Jul,Cell Biochem Biophys,,,,,10.1007/s12013-024-01424-4,39052192,#2913,Chakraborty 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A review of mechanistic models of viral dynamics in bat reservoirs for zoonotic disease.,Gentles AD; Guth S; Rozins C; Brook CE,"The emergence of SARS-CoV-2, a coronavirus with suspected bat origins, highlights a critical need for heightened understanding of the mechanisms by which bats maintain potentially zoonotic viruses at the population level and transmit these pathogens across species. We review mechanistic models, which test hypotheses of the transmission dynamics that underpin viral maintenance in bat systems. A search of the literature identified only twenty-five mechanistic models of bat-virus systems published to date, derived from twenty-three original studies. Most models focused on rabies and related lyssaviruses (eleven), followed by Ebola-like filoviruses (seven), Hendra and Nipah-like henipaviruses (five), and coronaviruses (two). The vast majority of studies has modelled bat virus transmission dynamics at the population level, though a few nested within-host models of viral pathogenesis in population-level frameworks, and one study focused on purely within-host dynamics. Population-level studies described bat virus systems from every continent but Antarctica, though most were concentrated in North America and Africa; indeed, only one simulation model with no associated data was derived from an Asian bat-virus system. In fact, of the twenty-five models identified, only ten population-level models were fitted to data - emphasizing an overall dearth of empirically derived epidemiological inference in bat virus systems. Within the data fitted subset, the vast majority of models were fitted to serological data only, highlighting extensive uncertainty in our understanding of the transmission status of a wild bat. Here, we discuss similarities and differences in the approach and findings of previously published bat virus models and make recommendations for improvement in future work.",2020,Dec,Pathog Glob Health,114,8,407-425,,10.1080/20477724.2020.1833161,33185145,#2921,Gentles 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A short communication of Nipah virus outbreak in India: An urgent rising concern.,Uwishema O; Wellington J; Berjaoui C; Muoka KO; Onyeaka CVP; Onyeaka H,"In the past two decades, countries like Malaysia, Singapore, Bangladesh, and India have recorded several cases of Nipah virus (NiV) infection. Following the 2018 NiV outbreak in the Kozhikode district of Kerala, India that claimed 17 lives, there has been a recent re-emergence of the virus in the same district, causing the recently reported death of a 12-year-old boy. Accordingly, population panic has heightened as inhabitants of these areas try to together combat the existing COVID-19 pandemic alongside the emerging NiV infection. Although the rate of transmission of NiV is low as compared to coronavirus disease 2019 (COVID-19), scientists suggest a higher mortality rate from NiV infection. In this manuscript, we aim to discuss the NiV infection in India as well as suggest recommendations to contain and ameliorate the severe impact of the virus on affected populations.",2022,Oct,Ann Med Surg (Lond),82,,104599,,10.1016/j.amsu.2022.104599,36268453,#2924,Uwishema 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-10-25 23:01:08)(Screen): Possibly an outbreak?; ,"" +[Progress in prevention and control of Nipah virus disease].,Shu HF; Wang KY; Liu SL; Zhang M; Song T,"Nipah virus disease (NVD) is a newly emerged zoonosis with a case fatality rate of 40%-75%. NVD is a severe threat to human health and the development of livestock farming. NVD has become one of the emerging infectious diseases with great concern globally during more than 20 years. Nipah virus (NiV) is a pathogen for NVD, the natural host of which is Fruit bats of the Pteropodidae family. The clinical spectrum of NiV infection is broad, including asymptomatic infection, acute respiratory infection, fatal encephalitis, and even death. Since NiV was first identified in Malaysia in 1999, it has been prevalent mainly in Southeast Asia and South Asia. NiV is primarily transmitted to humans through bat-pig-human, contaminated food. Currently, there are no specific therapeutic drugs and vaccines for NVD. Although there are no cases of NVD reported in China, which has close personnel and trade exchanges with major NVD-endemic countries, and NiV antibody has also been detected in relevant bats. There is a potential risk of importing NVD and domestic outbreaks in the future in this country. This paper provides a systematic review of the research progress in the prevention and control of NVD etiology, epidemiology, clinical manifestations and laboratory diagnosis to help relevant staff to understand NVD more comprehensively and systematically.",2022,Feb,Zhonghua Liu Xing Bing Xue Za Zhi,43,2,286-291,,10.3760/cma.j.cn112338-20210706-00529,35184498,#2925,Shu 2022,Exclusion reason: Not in English; Christian Morgenstern (2024-10-15 06:29:35)(Screen): Can get Stanford to read / review; Christian Morgenstern (2024-10-15 06:29:13)(Screen): Systematic review but in Chinese.; ,Review paper +The recent Nipah virus outbreak in Bangladesh could be a threat for global public health: A brief report.,Nazmunnahar; Ahmed I; Roknuzzaman ASM; Islam MR,"The Nipah virus is a zoonotic infection that can potentially be transmitted from person to person as well as through ingesting contaminated food. It has a high fatality rate, and no treatment or cure at present. Several nations in South Asia have reported Nipah virus outbreaks occurred during a particular season of the year. Since it was first found in Bangladesh in 2001, there have been a total of 335 people infected with it, and 237 of those people have passed away as a result of their infection. With increased public awareness, community engagement, and preventative measures, this potentially fatal virus has been suppressed. Yet, following a pandemic and a considerable increase in the health burden, the transmission rate continuously increased over a few years, indicating that there is a growing possibility to become a global public health concern. Without effective vaccines and reliable treatment options, its capacity for human-to-human transmission and potential to spread throughout the area could result in a disastrous public health emergency worldwide.",2023,Jul,Health Sci Rep,6,7,e1423,,10.1002/hsr2.1423,37448729,#2936,Nazmunnahar 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-10-13 02:54:41)(Screen): Perspective piece; ,"" +Response of the health system in Nipah outbreak in Ernakulam district: A qualitative analysis.,Menon VB; George LS,"BACKGROUND: Nipah is an emerging zoonotic disease that is transmitted through contaminated food or directly between people. Recently, Nipah virus infection was confirmed in Kochi, Kerala, making it the fourth outbreak reported in India. However, due to its good epidemic response, the health system of Kerala was able to control it in a timely manner. OBJECTIVE: To qualitatively analyse the response of the health system of Kerala in controlling the Nipah outbreak (2019) by identifying the enabling factors and the challenges faced by it. METHODS: A qualitative study was conducted using grounded theory approach. Key informant interviews were conducted till data saturation was reached. The audio recorded data was translated, transcribed and was manually coded and thematically analysed. RESULTS: The major enablers for its apt response were identified to be effective communication, good line of control, effective division of work, intersectorial coordination, strong leadership, political commitment, resilient public private partnership and support groups, past experiences in disaster management, quick procurement of medicines and availability of lab facilities. On the other hand, the challenges identified were initial confusions, lack of standard operating procedures/guidelines for epidemic management, complacency, lack of effective zoonotic surveillance, media management and community participation. CONCLUSION: This study attributes the success of the outbreak response to the strong leadership and political commitment. In order to prevent recurrences in the future, there is a need to build a resilient health system through capacity building and further strengthening of the surveillance system.",2021,Sep,J Family Med Prim Care,10,9,3355-3360,,10.4103/jfmpc.jfmpc_801_21,34760757,#2945,Menon 2021,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Disentangling serology to elucidate henipa- and filovirus transmission in Madagascar fruit bats.,Brook CE; Ranaivoson HC; Broder CC; Cunningham AA; Héraud JM; Peel AJ; Gibson L; Wood JLN; Metcalf CJ; Dobson AP,"Bats are reservoirs for emerging human pathogens, including Hendra and Nipah henipaviruses and Ebola and Marburg filoviruses. These viruses demonstrate predictable patterns in seasonality and age structure across multiple systems; previous work suggests that they may circulate in Madagascar's endemic fruit bats, which are widely consumed as human food. We aimed to (a) document the extent of henipa- and filovirus exposure among Malagasy fruit bats, (b) explore seasonality in seroprevalence and serostatus in these bat populations and (c) compare mechanistic hypotheses for possible transmission dynamics underlying these data. To this end, we amassed and analysed a unique dataset documenting longitudinal serological henipa- and filovirus dynamics in three Madagascar fruit bat species. We uncovered serological evidence of exposure to Hendra-/Nipah-related henipaviruses in Eidolon dupreanum, Pteropus rufus and Rousettus madagascariensis, to Cedar-related henipaviruses in E. dupreanum and R. madagascariensis and to Ebola-related filoviruses in P. rufus and R. madagascariensis. We demonstrated significant seasonality in population-level seroprevalence and individual serostatus for multiple viruses across these species, linked to the female reproductive calendar. An age-structured subset of the data highlighted evidence of waning maternal antibodies in neonates, increasing seroprevalence in young and decreasing seroprevalence late in life. Comparison of mechanistic epidemiological models fit to these data offered support for transmission hypotheses permitting waning antibodies but retained immunity in adult-age bats. Our findings suggest that bats may seasonally modulate mechanisms of pathogen control, with consequences for population-level transmission. Additionally, we narrow the field of candidate transmission hypotheses by which bats are presumed to host and transmit potentially zoonotic viruses globally.",2019,Jul,J Anim Ecol,88,7,1001-1016,Dryad/10.5061/dryad.61tc3hd,10.1111/1365-2656.12985,30908623,#2946,Brook 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Assessing the feasibility of Nipah vaccine efficacy trials based on previous outbreaks in Bangladesh.,Nikolay B; Ribeiro Dos Santos G; Lipsitch M; Rahman M; Luby SP; Salje H; Gurley ES; Cauchemez S,"BACKGROUND: Nipah virus (NiV) is an emerging, bat-borne pathogen that can be transmitted from person-to-person. Vaccines are currently being developed for NiV, and studies have been funded to evaluate their safety and immunogenicity. An important unanswered question is whether it will be possible to evaluate the efficacy of vaccine candidates in phase III clinical trials in a context where spillovers from the zoonotic reservoir are infrequent and associated with small outbreaks. The objective of this study was to investigate the feasibility of conducting a phase III vaccine trial in Bangladesh, the only country regularly reporting NiV cases. METHODS: We used simulations based on previously observed NiV cases from Bangladesh, an assumed vaccine efficacy of 90% and other NiV vaccine target characteristics, to compare three vaccination study designs: (i) cluster randomized ring vaccination, (ii) cluster randomized mass vaccination, and (iii) an observational case-control study design. RESULTS: The simulations showed that, assuming a ramp-up period of 10 days and a mean hospitalization delay of 4 days,a cluster-randomized ring vaccination trial would require 516 years and over 163,000 vaccine doses to run a ring vaccination trial under current epidemic conditions. A cluster-randomized mass vaccination trial in the two most affected districts would take 43 years and 1.83 million vaccine doses. An observational case-control design in these two districts would require seven years and 2.5 million vaccine doses. DISCUSSION: Without a change in the epidemiology of NiV, ring vaccination or mass vaccination trials are unlikely to be completed within a reasonable time window. In this light, the remaining options are: (i) not conducting a phase III trial until the epidemiology of NiV changes, (ii) identifying alternative ways to licensure such as observational studies or controlled studies in animals such as in the US Food and Drug Administration's (FDA) Animal Rule.",2021,Sep,Vaccine,39,39,5600-5606,,10.1016/j.vaccine.2021.08.027,34426025,#2947,Nikolay 2021,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"NIPAH Virus Encephalitis: Unveiling the Epidemiology, Risk Factors, and Clinical Outcomes - A Systematic Review and Meta-Analysis.",Suman N; Khandelwal E; Chiluvuri P; Rami DS; Chansoria S; Jerry A; Tiwari R,"OBJECTIVE: This study assessed Nipah virus (NiV) encephalitis epidemiology, clinical outcomes, and risk variables to inform treatment and prevention. METHODOLOGY: In a PubMed systematic search, 929 citations were found. After screening and eligibility, 22 studies were included. This study obtained age, gender, geographic regions, diagnostic methods, data collection methods, and bias risk. The case fatality rate (CFR) and NiV infection risk variables were evaluated by meta-analysis. RESULTS: Southeast Asia, especially Bangladesh and Malaysia, had the most NiV cases. The major diagnostic method was blood and cerebrospinal fluid IgM and IgG antibody tests, and males predominated. Proxy respondents and matched controls were utilized for risk factor analyses when patients could not answer. The pooled CFR for NiV encephalitis was 61.0%, indicating severity. Risk factors included pigs, nighttime bats near homes, tree climbing, and male gender. CONCLUSION: Southeast Asian public health is plagued by NiV encephalitis. The high CFR calls for better diagnosis, treatment, and prevention. NiV's multiple risk factors must be understood for targeted therapy. Future research should fill knowledge gaps and improve NiV infection prevention.",2024,Feb,J Pharm Bioallied Sci,16,Suppl 1,S102-S105,,10.4103/jpbs.jpbs_935_23,38595585,#2950,Suman 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Scoping future outbreaks: a scoping review on the outbreak prediction of the WHO Blueprint list of priority diseases.,Jonkmans N; D'Acremont V; Flahault A,"BACKGROUND: The WHO's Research and Development Blueprint priority list designates emerging diseases with the potential to generate public health emergencies for which insufficient preventive solutions exist. The list aims to reduce the time to the availability of resources that can avert public health crises. The current SARS-CoV-2 pandemic illustrates that an effective method of mitigating such crises is the pre-emptive prediction of outbreaks. This scoping review thus aimed to map and identify the evidence available to predict future outbreaks of the Blueprint diseases. METHODS: We conducted a scoping review of PubMed, Embase and Web of Science related to the evidence predicting future outbreaks of Ebola and Marburg virus, Zika virus, Lassa fever, Nipah and Henipaviral disease, Rift Valley fever, Crimean-Congo haemorrhagic fever, Severe acute respiratory syndrome, Middle East respiratory syndrome and Disease X. Prediction methods, outbreak features predicted and implementation of predictions were evaluated. We conducted a narrative and quantitative evidence synthesis to highlight prediction methods that could be further investigated for the prevention of Blueprint diseases and COVID-19 outbreaks. RESULTS: Out of 3959 articles identified, we included 58 articles based on inclusion criteria. 5 major prediction methods emerged; the most frequent being spatio-temporal risk maps predicting outbreak risk periods and locations through vector and climate data. Stochastic models were predominant. Rift Valley fever was the most predicted disease. Diseases with complex sociocultural factors such as Ebola were often predicted through multifactorial risk-based estimations. 10% of models were implemented by health authorities. No article predicted Disease X outbreaks. CONCLUSIONS: Spatiotemporal models for diseases with strong climatic and vectorial components, as in River Valley fever prediction, may currently best reduce the time to the availability of resources. A wide literature gap exists in the prediction of zoonoses with complex sociocultural and ecological dynamics such as Ebola, COVID-19 and especially Disease X.",2021,Sep,BMJ Glob Health,6,9,,,10.1136/bmjgh-2021-006623,34531189,#2951,Jonkmans 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Are we ready to fight the Nipah virus pandemic? An overview of drug targets, current medications, and potential leads.",Yang S; Kar S,"Nipah virus (NiV) is a high-lethality RNA virus from the family of Paramyxoviridae and genus Henipavirus, classified under Biosafety Level-4 (BSL-4) pathogen due to the severity of pathogenicity and lack of medications and vaccines. Direct contacts or the body fluids of infected animals are the major factor of transmission of NiV. As it is not an airborne infection, the transmission rate is relatively low. Still, mutations of the NiV in the animal reservoir over the years, followed by zoonotic transfer, can make the deadliness of the virus manifold in upcoming years. Therefore, there is no denial of the possibility of a pandemic after COVID-19 considering the severe pathogenicity of NiV, and that is why we need to be prepared with possible drugs in upcoming days. Considering the time constraints, computational aided drug design (CADD) is an efficient way to study the virus and perform the drug design and test the HITs to lead experimentally. Therefore, this review focuses primarily on NiV target proteins (covering NiV and human), experimentally tested repurposed drug details, and latest computational studies on potential lead molecules, which can be explored as potential drug candidates. Computationally identified drug candidates, including their chemical structures, docking scores, amino acid level interaction with corresponding protein, and the platform used for the studies, are thoroughly discussed. The review will offer a one-stop study to access what had been performed and what can be performed in the CADD of NiV.",2023,Mar,Struct Chem,,,1-19,,10.1007/s11224-023-02148-6,37363045,#2958,Yang 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Spatial Association Between a Nipah Virus Outbreak in India and Nipah Virus Infection in Pteropus Bats.,Mourya DT; Yadav P; Sudeep AB; Gokhale MD; Gupta N; Gangakhedkar RR; Bhargava B,,2019,Jul,Clin Infect Dis,69,2,378-379,,10.1093/cid/ciy1093,30590538,#2960,Mourya 2019,Exclusion reason: Not peer-reviewed paper; ,letter to the editor +Outbreak of an emerging zoonotic Nipah virus: An emerging concern.,Paul D; Mohanty A; Shah A; Kumar Padhi B; Sah R,"The Nipah virus (NiV) infection is one of the newly emerging deadly zoonotic diseases which carries a significant weightage of mortality among its victims. Due to the relatively recent history of its emergence and only a few known outbreaks, we cannot predict but foresee its potential to create havoc, which can be far more dreadful than the current ongoing COVID-19 pandemic. Here we have tried to depict the fatal potential of the virus and the increased propensity with which it can spread to rest of the world.",2023,Jun,J Biosaf Biosecur,5,2,57-59,,10.1016/j.jobb.2023.04.002,37131986,#2963,Paul 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +A 'what-if' scenario: Nipah virus attacks pig trade chains in Thailand.,Wongnak P; Thanapongtharm W; Kusakunniran W; Karnjanapreechakorn S; Sutassananon K; Kalpravidh W; Wongsathapornchai K; Wiratsudakul A,"BACKGROUND: Nipah virus (NiV) is a fatal zoonotic agent that was first identified amongst pig farmers in Malaysia in 1998, in an outbreak that resulted in 105 fatal human cases. That epidemic arose from a chain of infection, initiating from bats to pigs, and which then spilled over from pigs to humans. In Thailand, bat-pig-human communities can be observed across the country, particularly in the central plain. The present study therefore aimed to identify high-risk areas for potential NiV outbreaks and to model how the virus is likely to spread. Multi-criteria decision analysis (MCDA) and weighted linear combination (WLC) were employed to produce the NiV risk map. The map was then overlaid with the nationwide pig movement network to identify the index subdistricts in which NiV may emerge. Subsequently, susceptible-exposed-infectious-removed (SEIR) modeling was used to simulate NiV spread within each subdistrict, and network modeling was used to illustrate how the virus disperses across subdistricts. RESULTS: Based on the MCDA and pig movement data, 14 index subdistricts with a high-risk of NiV emergence were identified. We found in our infectious network modeling that the infected subdistricts clustered in, or close to the central plain, within a range of 171 km from the source subdistricts. However, the virus may travel as far as 528.5 km (R(0) = 5). CONCLUSIONS: In conclusion, the risk of NiV dissemination through pig movement networks in Thailand is low but not negligible. The risk areas identified in our study can help the veterinary authority to allocate financial and human resources to where preventive strategies, such as pig farm regionalization, are required and to contain outbreaks in a timely fashion once they occur.",2020,Aug,BMC Vet Res,16,1,300,,10.1186/s12917-020-02502-4,32838786,#2969,Wongnak 2020,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; ,Animal model +Emerging zoonotic diseases in Southeast Asia in the period 2011-2022: a systematic literature review.,Nguyen TT; Mai TN; Dang-Xuan S; Nguyen-Viet H; Unger F; Lee HS,"As COVID-19 has shown, pandemics and outbreaks of emerging infections such as Zika, Nipah, monkeypox and antimicrobial-resistant pathogens, especially emerging zoonotic diseases, continue to occur and may even be increasing in Southeast Asia. In addition, these infections often result from environmental changes and human behaviour. Overall, public health surveillance to identify gaps in the literature and early warning signs are essential in this region. A systematic review investigated the prevalence of emerging zoonotic diseases over 11 years from 2011 to 2022 in Southeast Asia to understand the status of emerging zoonotic diseases, as well as to provide necessary actions for disease control and prevention in the region. During the 2011-2022 period, studies on pigs, poultry, ruminants, companion animals and wildlife in Southeast Asia were reviewed thoroughly to assess the quality of reporting items for inclusion in the systematic review. The review was performed on 26 studies of pigs, 6 studies of poultry, 21 studies of ruminants, 28 studies of companion animals and 25 studies of wildlife in Southeast Asia, which provide a snapshot of the prevalence of the emerging zoonotic disease across the country. The findings from the review showed that emerging zoonotic diseases were prevalent across the region and identified a few zoonotic diseases associated with poultry, mainly stemming from Cambodia and Vietnam, as high priority in Southeast Asia.Clinical relevance: Appropriate prevention and control measures should be taken to mitigate the emerging zoonotic diseases in Southeast Asia.",2024,Dec,Vet Q,44,1,1-15,,10.1080/01652176.2023.2300965,38229485,#2973,Nguyen 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Isolation and Full-Genome Characterization of Nipah Viruses from Bats, Bangladesh.",Anderson DE; Islam A; Crameri G; Todd S; Khan SU; Foord A; Rahman MZ; Mendenhall IH; Luby SP; Gurley ES; Daszak P; Epstein JH; Wang LF,"Despite molecular and serologic evidence of Nipah virus in bats from various locations, attempts to isolate live virus have been largely unsuccessful. We report isolation and full-genome characterization of 10 Nipah virus isolates from Pteropus medius bats sampled in Bangladesh during 2013 and 2014.",2019,Jan,Emerg Infect Dis,25,1,166-170,,10.3201/eid2501.180267,30561301,#2993,Anderson 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Nipah outbreak in North Kerala - What worked? Insights for future response and recovery based on examination of various existing frameworks.,Rahim AA; Chacko TV,"Asia Pacific region has been witnessing numerous public health emergencies in recent years with the Nipah outbreak in North Kerala (2018), India, needs special mention. Threats posed and experiences gained have compelled health systems to draft frameworks nationally and internationally for preparedness, outbreak response, and recovery. Our failure to obtain comprehensive guiding frameworks for application in the Indian context for Ebola, Severe Acute Respiratory Syndrome, Influenza A (H1N1), and Nipah outbreaks led us to the search outside India for frameworks that have worked in the past. A thorough review of the WHO, Centers for Disease Control and Prevention, and Malaysian framework was done to identify explicit components and replicable objectives to the national context. In the absence of a specific framework, Nipah recovery and response experience that worked in Kerala outbreak (2018) was compared against novel H1N1 (2015) guidelines at national level. This article provides the groundwork and insights as a value addition toward an India-specific framework of action for response and recovery for Nipah outbreaks in future.",2019,Jul-Sep,Indian J Public Health,63,3,261-264,,10.4103/ijph.IJPH_117_19,31552860,#3000,Rahim 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"Human Exposure to Bats, Rodents and Monkeys in Bangladesh.",Shanta IS; Luby SP; Hossain K; Heffelfinger JD; Kilpatrick AM; Haider N; Rahman T; Chakma S; Ahmed SSU; Sharker Y; Pulliam JRC; Kennedy ED; Gurley ES,"Bats, rodents and monkeys are reservoirs for emerging zoonotic infections. We sought to describe the frequency of human exposure to these animals and the seasonal and geographic variation of these exposures in Bangladesh. During 2013-2016, we conducted a cross-sectional survey in a nationally representative sample of 10,002 households from 1001 randomly selected communities. We interviewed household members about exposures to bats, rodents and monkeys, including a key human-bat interface-raw date palm sap consumption. Respondents reported observing rodents (90%), bats (52%) and monkeys (2%) in or around their households, although fewer reported direct contact. The presence of monkeys around the household was reported more often in Sylhet division (7%) compared to other divisions. Households in Khulna (17%) and Rajshahi (13%) were more likely to report drinking date palm sap than in other divisions (1.5-5.6%). Date palm sap was mostly consumed during winter with higher frequencies in January (16%) and February (12%) than in other months (0-5.6%). There was a decreasing trend in drinking sap over the three years. Overall, we observed substantial geographic and seasonal patterns in human exposure to animals that could be sources of zoonotic disease. These findings could facilitate targeting emerging zoonoses surveillance, research and prevention efforts to areas and seasons with the highest levels of exposure.",2023,Mar,Ecohealth,20,1,53-64,,10.1007/s10393-023-01628-9,37099204,#3004,Shanta 2023,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-26 20:50:47)(Screen): Risk factors??; ,"" +Detailed Molecular Biochemistry for Novel Therapeutic Design Against Nipah and Hendra Virus: A Systematic Review.,Bhattacharya S; Dhar S; Banerjee A; Ray S,"BACKGROUND: Nipah virus (NiV) and Hendra virus (HeV) of genus Henipavirus are the deadliest zoonotic viruses, which cause severe respiratory ailments and fatal encephalitis in humans and other susceptible animals. The fatality rate for these infections had been alarmingly high with no approved treatment available to date. Viral attachment and fusion with host cell membrane is essential for viral entry and is the most essential event of viral infection. Viral attachment is mediated by interaction of Henipavirus attachment glycoprotein (G) with the host cell receptor: Ephrin B2/B3, while viral fusion and endocytosis are mediated by the combined action of both viral glycoprotein (G) and fusion protein (F). CONCLUSION: This review highlights the mechanism of viral attachment, fusion and also explains the basic mechanism and pathobiology of this infection in humans. The drugs and therapeutics used either experimentally or clinically against NiV and HeV infection have been documented and classified in detail. Some amino acid residues essential for the functionality of G and F proteins were also emphasized. Therapeutic designing to target and block these residues can serve as a promising approach in future drug development against NiV and HeV.",2020,,Curr Mol Pharmacol,13,2,108-125,,10.2174/1874467212666191023123732,31657692,#3029,Bhattacharya 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Neuronal infection is a major pathogenetic mechanism and cause of fatalities in human acute Nipah virus encephalitis.,Ong KC; Ng KY; Ng CW; Tan SH; Teo WL; Karim N; Kumar S; Wong KT,"OBJECTIVES: Acute Nipah (NiV) encephalitis is characterised by a dual pathogenetic mechanism of neuroglial infection and ischaemia-microinfarction associated with vasculitis-induced thrombotic occlusion. We investigated the contributions of these two mechanisms in fatal cases. MATERIALS AND METHODS: We analysed brain tissues (cerebrum, brainstem and cerebellum) from 15 autopsies using light microscopy, immunohistochemistry (IHC), in situ hybridisation and quantitative methods. RESULTS: Three types of discrete plaque-like parenchymal lesions were identified: Type 1 with neuroglial IHC positivity for viral antigens and minimal or no necrosis; Type 2 with neuroglial immunopositivity and necrosis; and Type 3 with necrosis but no viral antigens. Most viral antigen/RNA-positive cells were neurons. Cerebral glial immunopositivity was rare, suggesting that microinfarction played a more important role in white matter injury. Type 1 lesions were also detected in the brainstem and cerebellum, but the differences between cerebral cortex and these two regions were not statistically significant. In the cerebral cortex, Type 1 lesions overwhelmingly predominated, and only 14% Type 1 vs 69% Type 2 lesions were associated with thrombosis. This suggests that neuronal infection as a mechanism of pathogenesis was more important than microinfarction, both in general and in Type 1 lesions in particular. Between the 'early' group (<8-day fever) and the 'late' group (≥8-day fever), there was a decrease of Type 1 and Type 2 lesions with a concomitant increase of Type 3 lesions, suggesting the latter possibly represented late-stage microinfarction and/or neuronal infection. CONCLUSION: Neuronal infection appears to play a more important role than vasculopathy-induced microinfarction in acute NiV encephalitis.",2022,Oct,Neuropathol Appl Neurobiol,48,6,e12828,,10.1111/nan.12828,35689364,#3034,Ong 2022,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-26 21:35:09)(Screen): Potentially a CFR if 15 autopsies relate to a larger sample - worth checking full text to be sure; ,"" +Twenty-five years of Nipah outbreaks in Southeast Asia: A persistent threat to global health.,Khan S; Akbar SMF; Mahtab MA; Uddin MN; Rashid MM; Yahiro T; Hashimoto T; Kimitsuki K; Nishizono A,"OBJECTIVES: Nipah virus (NiV), a bat-borne zoonotic pathogen, poses persistent threats to global public health due to severe clinical manifestation and high case fatality rate (CFR). A critical examination of NiV outbreaks is essential for refining strategies and mitigating the impact of future infections. In this study, we provide a concise update on global NiV outbreaks that occurred during the past 25 years. METHODS: In this geospatial study, we conducted an in-depth examination of the epidemiological characteristics of human NiV cases and deaths from 1998 to 2024 through multiple analyses of public data and official reports. RESULTS: NiV emerged in 1998 in Malaysia during an outbreak among pig farmers. Since then, NiV outbreaks have been documented in five countries of South and Southeast Asia (Bangladesh, India, Malaysia, Philippines, and Singapore). As of May 2024, there have been 754 confirmed human NiV cases with 435 deaths (CFR: 58%) reported in these five countries. Bangladesh records the highest incidence (341 cases and 241 deaths; CFR: 71%) followed by Malaysia (283 cases and 109 deaths; CFR: 39%), India (102 cases and 74 deaths; CFR: 73%), the Philippines (17 cases and nine deaths; CFR: 53%), and Singapore (11 cases and one death; CFR: 9%). CONCLUSIONS: The clinical outcomes of NiV have been underscoring constant global public health threats as no effective therapies and vaccines are available. Strong global understandings, with an eye on developing vaccines and therapeutics, are required to minimize clinical outcomes and future threats of NiV.",2024,Dec,IJID Reg,13,,100434,,10.1016/j.ijregi.2024.100434,39308784,#3036,Khan 2024,"Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-15 06:26:30)(Screen): Classified as short communication but really it's a review. + +Has some useful outbreak and CFR data; ",Review paper +"Non-malarial febrile illness: a systematic review of published aetiological studies and case reports from Southern Asia and South-eastern Asia, 1980-2015.",Shrestha P; Dahal P; Ogbonnaa-Njoku C; Das D; Stepniewska K; Thomas NV; Hopkins H; Crump JA; Bell D; Newton PN; Ashley EA; Guérin PJ,"BACKGROUND: In the absence of definitive diagnosis, healthcare providers are likely to prescribe empirical antibacterials to those who test negative for malaria. This problem is of critical importance in Southern Asia (SA) and South-eastern Asia (SEA) where high levels of antimicrobial consumption and high prevalence of antimicrobial resistance have been reported. To improve management and guide further diagnostic test development, better understanding is needed of the true causative agents of fever and their geographical variability. METHODS: We conducted a systematic review of published literature (1980-2015) to characterise the spectrum of pathogens causing non-malarial febrile illness in SA and SEA. We searched six databases in English and French languages: MEDLINE, EMBASE, Global Health (CABI) database, WHO Global Health Library, PASCAL, and Bulletin de la Société Française de Parasitologie (BDSP). Selection criteria included reporting on an infection or infections with a confirmed diagnosis, defined as pathogens detected in or cultured from samples from normally sterile sites, or serological evidence of current or past infection. RESULTS: A total of 29,558 records from 19 countries in SA and SEA were screened, of which 2410 (8.1%) met the selection criteria. Bacterial aetiologies were reported in 1235 (51.2%) articles, viral in 846 (35.1%), parasitic in 132 (5.5%), and fungal in 54 (2.2%), and 143 (6.0%) articles reported more than one pathogen group. In descending order of frequency, Salmonella Typhi, Escherichia coli, Staphylococcus aureus, Klebsiella pneumoniae, and coagulase negative Staphylococcus were the commonly reported bacteria, while dengue virus, chikungunya virus, Japanese encephalitis virus, hepatitis B virus, and hepatitis C virus were common viral pathogens reported. Reports of rarely reported or emerging pathogens included a case report of Borrelia burgdorferi (Lyme disease) in India in 2010 and reports of Nipah virus in Singapore and India. CONCLUSIONS: This review summarises the reported non-malaria pathogens that may cause febrile illness in SA and SEA. The findings emphasise the need of standardising the reporting of aetiological studies to develop effective, evidence-based fever management and improved surveillance. Research and development of diagnostic tools would benefit from up-to-date epidemiological reporting of the regional diversities of non-malaria fever aetiologies. TRIAL REGISTRATION: PROSPERO registration, CRD42016049281.",2020,Sep,BMC Med,18,1,299,,10.1186/s12916-020-01745-0,32951591,#3037,Shrestha 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Outbreak prone communicable diseases of public health importance in the northern districts of West Bengal - Current status & the way forward.,Sharma PK; Tilak R,"India is perilously poised on the threshold of an explosion of infectious diseases, some of which have witnessed re-emergence while others await apposite opportunity to do so. The State of West Bengal is uniquely positioned with its innate geographical vulnerabilities that favour outbreaks of a host of infectious diseases. The northern districts of this State are well known endemic areas for many outbreak prone communicable diseases like malaria, Japanese encephalitis, scrub typhus, dengue and kala-azar. An outbreak of Nipah virus in the recent past is a pointer towards the emerging and re-emerging threat in these regions and warrants urgent prioritization for surveillance and monitoring of these diseases. Identification of risk factors, challenges in delivery of primary healthcare, implementation of intervention strategies along with strengthening of healthcare setup are also the need of the hour. Multisectoral initiatives with emphasis on understanding the complex and rapidly evolving human-animal-vector dynamics as envisaged under the 'One Health' concept are indubitably important pillars in the effective management of these emerging public health challenges.",2021,Mar,Indian J Med Res,153,3,358-366,,10.4103/ijmr.IJMR_607_21,33906999,#3039,Sharma 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus: a potential pandemic agent in the context of the current severe acute respiratory syndrome coronavirus 2 pandemic.,Devnath P; Masud HMAA,"For centuries, zoonotic diseases have been responsible for various outbreaks resulting in the deaths of millions of people. The best example of this is the current coronavirus disease 2019 (COVID-19) pandemic. Like severe acute respiratory syndrome coronavirus, Nipah virus is another deadly virus which has caused several outbreaks in the last few years. Though it causes a low number of infections, disease severity results in a higher death rate. In the context of the recent COVID-19 pandemic, we speculate that many countries will be unable to deal with the sudden onset of such a viral outbreak. Thus, further research and attention to the virus are needed to address future outbreaks.",2021,May,New Microbes New Infect,41,,100873,,10.1016/j.nmni.2021.100873,33758670,#3041,Devnath 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Experiential learnings from the Nipah virus outbreaks in Kerala towards containment of infectious public health emergencies in India.,Sahay RR; Yadav PD; Gupta N; Shete AM; Radhakrishnan C; Mohan G; Menon N; Bhatnagar T; Suma K; Kadam AV; Ullas PT; Anu Kumar B; Sugunan AP; Sreekala VK; Khobragade R; Gangakhedkar RR; Mourya DT,"Nipah virus (NiV) outbreak occurred in Kozhikode district, Kerala, India in 2018 with a case fatality rate of 91% (21/23). In 2019, a single case with full recovery occurred in Ernakulam district. We described the response and control measures by the Indian Council of Medical Research and Kerala State Government for the 2019 NiV outbreak. The establishment of Point of Care assays and monoclonal antibodies administration facility for early diagnosis, response and treatment, intensified contact tracing activities, bio-risk management and hospital infection control training of healthcare workers contributed to effective control and containment of NiV outbreak in Ernakulam.",2020,Apr,Epidemiol Infect,148,,e90,,10.1017/S0950268820000825,32321607,#3050,Sahay 2020,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2025-03-16 03:53:03)(Select): SB did in depth review, nothing to extract; Tristan Naidoo (2024-11-20 03:42:25)(Select): 0% sero ; ","" +"Updated Insights into the Phylogenetics, Phylodynamics, and Genetic Diversity of Nipah Virus (NiV).",de Campos GM; Cella E; Kashima S; Alcântara LCJ; Sampaio SC; Elias MC; Giovanetti M; Slavov SN,"Nipah virus (NiV), a biosafety level 4 agent, was first identified in human clinical cases during an outbreak in 1998 in Malaysia and Singapore. While flying foxes are the primary host and viral vector, the infection is associated with a severe clinical presentation in humans, resulting in a high mortality rate. Therefore, NiV is considered a virus with an elevated epidemic potential which is further underscored by its recent emergence (September 2023) as an outbreak in India. Given the situation, it is paramount to understand the molecular dynamics of the virus to shed more light on its evolution and prevent potential future outbreaks. In this study, we conducted Bayesian phylogenetic analysis on all available NiV complete genomes, including partial N-gene NiV sequences (≥1000 bp) in public databases since the first human case, registered in 1998. We observed the distribution of genomes into three main clades corresponding to the genotypes Malaysia, Bangladesh and India, with the Malaysian clade being the oldest in evolutionary terms. The Bayesian skyline plot showed a recent increase in the viral population size since 2019. Protein analysis showed the presence of specific protein families (Hendra_C) in bats that might keep the infection in an asymptomatic state in bats, which also serve as viral vectors. Our results further indicate a shortage of complete NiV genomes, which would be instrumental in gaining a better understanding of NiV's molecular evolution and preventing future outbreaks. Our investigation also underscores the critical need to strengthen genomic surveillance based on complete NiV genomes that will aid thorough genetic characterization of the circulating NiV strains and the phylogenetic relationships between the henipaviruses. This approach will better prepare us to tackle the challenges posed by the NiV virus and other emerging viruses.",2024,Jan,Viruses,16,2,,,10.3390/v16020171,38399947,#3060,deCampos 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +A systematic review on Nipah virus: global molecular epidemiology and medical countermeasures development.,Tan FH; Sukri A; Idris N; Ong KC; Schee JP; Tan CT; Tan SH; Wong KT; Wong LP; Tee KK; Chang LY,"Nipah virus (NiV) is an emerging pathogen that causes encephalitis and a high mortality rate in infected subjects. This systematic review aimed to comprehensively analyze the global epidemiology and research advancements of NiV to identify the key knowledge gaps in the literature. Articles searched using literature databases, namely PubMed, Scopus, Web of Science, and Science Direct yielded 5,596 articles. After article screening, 97 articles were included in this systematic review, comprising 41 epidemiological studies and 56 research developments on NiV. The majority of the NiV epidemiological studies were conducted in Bangladesh, reflecting the country's significant burden of NiV outbreaks. The initial NiV outbreak was identified in Malaysia in 1998, with subsequent outbreaks reported in Bangladesh, India, and the Philippines. Transmission routes vary by country, primarily through pigs in Malaysia, consumption of date palm juice in Bangladesh, and human-to-human in India. However, the availability of NiV genome sequences remains limited, particularly from Malaysia and India. Mortality rates also vary according to the country, exceeding 70% in Bangladesh, India, and the Philippines, and less than 40% in Malaysia. Understanding these differences in mortality rate among countries is crucial for informing NiV epidemiology and enhancing outbreak prevention and management strategies. In terms of research developments, the majority of studies focused on vaccine development, followed by phylogenetic analysis and antiviral research. While many vaccines and antivirals have demonstrated complete protection in animal models, only two vaccines have progressed to clinical trials. Phylogenetic analyses have revealed distinct clades between NiV Malaysia, NiV Bangladesh, and NiV India, with proposals to classify NiV India as a separate strain from NiV Bangladesh. Taken together, comprehensive OneHealth approaches integrating disease surveillance and research are imperative for future NiV studies. Expanding the dataset of NiV genome sequences, particularly from Malaysia, Bangladesh, and India will be pivotal. These research efforts are essential for advancing our understanding of NiV pathogenicity and for developing robust diagnostic assays, vaccines and therapeutics necessary for effective preparedness and response to future NiV outbreaks.",2024,,Virus Evol,10,1,veae048,,10.1093/ve/veae048,39119137,#3067,Tan 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Phylogenetic and genetic analyses of the emerging Nipah virus from bats to humans.,Shi J; Sun J; Hu N; Hu Y,"Little is known about the genetic features of Nipah virus (NiV) associated with virulence and transmission. Herein, phylogenetic and genetic analyses for all available NiV strains revealed sequence variations between the two genetic lineages of NiV with pathogenic differences, as well as among different strains within Bangladesh lineage. A total of 143 conserved amino acid differences, distributed among viral nucleocapsid (N), phosphoprotein (P), matrix protein (M), fusion protein (F) and glycoprotein (G), were revealed. Structural modeling revealed one key substitution (S3554N) in the viral G protein that might mediate a 12-amino-acid structural change from a loop into a β sheet. Multiple key amino acids substitutions in viral G protein were observed, which may alter viral fitness and transmissibility from bats to humans.",2020,Nov,Infect Genet Evol,85,,104442,,10.1016/j.meegid.2020.104442,32622923,#3069,Shi 2020,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-26 20:53:46)(Screen): Possibly a phylo param? +; ","" +Etiology of Central Nervous System Infections in a Rural Area of Nepal Using Molecular Approaches.,Säll O; Thulin Hedberg S; Neander M; Tiwari S; Dornon L; Bom R; Lagerqvist N; Sundqvist M; Mölling P,"The etiology of infections of the central nervous system (CNS) in Nepal often remains unrecognized because of underdeveloped laboratory facilities. The aim of this study was to investigate the etiology of CNS infections in a rural area of Nepal using molecular methods. From November 2014 to February 2016, cerebrospinal fluid (CSF) was collected from 176 consecutive patients presenting at United Mission Hospital in Tansen, Nepal, with symptoms of possible CNS infection. After the CSF samples were stored and transported frozen, polymerase chain reaction (PCR) was performed in Sweden, targeting a total of 26 pathogens using the FilmArray(®) ME panel (BioFire, bioMerieux, Salt Lake City, UT), the MeningoFinder(®) 2SMART (PathoFinder, Maastricht, The Netherlands), and an in-house PCR test for dengue virus (DENV), Japanese encephalitis virus (JEV), and Nipah virus (NiV). The etiology could be determined in 23%. The bacteria detected were Haemophilus influenzae (n = 5), Streptococcus pneumoniae (n = 4), and Neisseria meningitidis (n = 1). The most common virus was enterovirus detected in eight samples, all during the monsoon season. Other viruses detected were cytomegalovirus (n = 6), varicella zoster virus (n = 5), Epstein-Barr virus (n = 3), herpes simplex virus (HSV) type 1 (HSV-1) (n = 3), HSV-2 (n = 3), human herpes virus (HHV) type 6 (HHV-6) (n = 3), and HHV-7 (n = 2). Cryptococcus neoformans/gatti was found in four samples. None of the samples were positive for DENV, JEV, or NiV. Of the patients, 67% had been exposed to antibiotics before lumbar puncture. In conclusion, the etiology could not be found in 77% of the samples, indicating that the commercial PCR panels used are not suitable in this setting. Future studies on the etiology of CNS infections in Nepal could include metagenomic techniques.",2019,Jul,Am J Trop Med Hyg,101,1,253-259,,10.4269/ajtmh.18-0434,31162021,#3074,Säll 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Divergent Viruses Discovered in Swine Alter the Understanding of Evolutionary History and Genetic Diversity of the Respirovirus Genus and Related Porcine Parainfluenza Viruses.,Zhao J; Sun J; Li X; Xing G; Zhang Y; Lai A; Baele G; Ji X; Su S,"Paramyxoviridae is a rapidly growing family of viruses, whose potential for cross-species transmission makes it difficult to predict the harm of newly emerging viruses to humans and animals. To better understand their diversity, evolutionary history, and co-evolution with their hosts, we analyzed a collection of porcine parainfluenza virus (PPIV) genomes to reconstruct the species classification basis and evolutionary history of the Respirovirus genus. We sequenced 17 complete genomes of porcine respirovirus 1 (also known as porcine parainfluenza virus 1; PPIV-1), thereby nearly tripling the number of currently available PPIV-1 genomes. We found that PPIV-1 was widely prevalent in China with two divergent lineages, PPIV-1a and PPIV-1b. We further provided evidence that a new species, porcine parainfluenza virus 2 (PPIV-2), had recently emerged in China. Our results pointed to a need for revising the current species demarcation criteria of the Respirovirus genus. In addition, we used PPIV-1 as an example to explore recombination and diversity of the Respirovirus genus. Interestingly, we only detected heterosubtypic recombination events between PPIV-1a and PPIV-1b with no intrasubtypic recombination events. The recombination hotspots highlighted a diverse geography-dependent genome structure of paramyxovirus infecting swine in China. Furthermore, we found no evidence of co-evolution between respirovirus and its host, indicating frequent cross-species transmission. In summary, our analyses showed that swine can be infected with a broad range of respiroviruses and recombination may serve as an important evolutionary mechanism for the Respirovirus genus' greater diversity in genome structure than previously anticipated. IMPORTANCE Livestock have emerged as critically underrecognized sources of paramyxovirus diversity, including pigs serving as the source of Nipah virus (NiV) and swine parainfluenza virus type 3, and goats and bovines harboring highly divergent viral lineages. Here, we identified a new species of Respirovirus genus named PPIV-2 in swine and proposed to revise the species demarcation criteria of the Respirovirus genus. We found heterosubtypic recombination events and high genetic diversity in PPIV-1. Further, we showed that genetic recombination may have occurred in the Respirovirus genus which may be associated with host range expansion. The continued expansion of Respirovirus genus diversity in livestock with relatively high human contact rates requires enhanced surveillance and ongoing evaluation of emerging cross-species transmission threats.",2022,Jun,Microbiol Spectr,10,3,e0024222,,10.1128/spectrum.00242-22,35647875,#3083,Zhao 2022,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2024-10-16 02:29:48)(Select): Substitution rate in Figure S1 in appendix; Tristan Naidoo (2024-10-12 21:42:18)(Screen): Evolutionary rate or mutations??; ,"" +"Knowledge, attitude and health seeking practice on bats-borne diseases among residents of Tioman Island, Malaysia.",Mohamed NA; Said MH; Mohd Rani MD; Ramli S; Isahak I,"Bats are slowly gaining recognition as a potential reservoir for viruses harmful to human (Smith and Wang, 2013). Bats are reservoir to viruses causing Ebola virus diseases (EBV) (Leroy et al., 2005), Nipah Encephalitis (NiV) (Chua et al., 2002), SARS(Li et al., 2005) and MERS-CoV (Yang et al., 2015) being the latest one making headlines. About 18 years ago, a major outbreak of Nipah virus encephalitis occurred in Peninsular Malaysia resulted in the deaths of 105 persons and the slaughter of approximately 1.1 million pigs. In 2006, a novel bat orthoreovirus was found to be associated with acute respiratory syndrome in Malaysia. Following that incidents, many studies have been done on bats, particularly to determine their species, behaviour, and antibody level and there were also studies in human on antibody prevalence to batsrelated viruses e.g. Nipah and Hendra and PRV. Humans may become infected with viruses from bats through intermediate host (swine, horse) or through aerosol or direct contact with bats. Communities living adjacent to bat roosts should aware of possible risk of infection transmission from bats. An earlier study in Guatemala demonstrated that risk of exposure to bats in communities near bats roosts was common, but recognition of the potential for disease transmission from bats was low (Moran et al., 2015). Surprisingly, there is no local published data on public awareness towards bats-related infection despite potential risk of getting the infection. This study aimed to determine knowledge and awareness on bat-related infections, attitudes towards bats and practices related to health-seeking behaviours following exposure to bats.",2019,Sep,Trop Biomed,36,3,709-717,,,33597493,#3089,Mohamed 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2024-10-27 21:36:37)(Select): requested from library; Christian Morgenstern (2024-10-17 06:14:59)(Screen): risk factors?; ,"" +Twenty Years of Nipah Virus Research: Where Do We Go From Here?,Gurley ES; Spiropoulou CF; de Wit E,,2020,May,J Infect Dis,221,Suppl 4,S359-S362,,10.1093/infdis/jiaa078,32392321,#3111,Gurley 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +"Comparative immune profiling in survivors of the 2023 Nipah outbreak in Kerala state, India.",Sahay RR; Palav HC; Shete AM; Patil DY; Mohandas S; Radhakrishnan C; Shihabudheen P; Kumar A; Moorkoth AP; Mohite N; Gurav P; Pullor NK; Jain R; Joshi Y; Ramakrishnan LV; Gupta N; Patel V; Yadav PD,"Immune profiling of Nipah virus (NiV) infection survivors is essential for advancing our understanding of NiV pathogenesis, improving diagnostic and therapeutic strategies, and guiding public health efforts to prevent future outbreaks. There is currently limited data available on the immune response to NiV infection. We aimed to elucidate the specific immune mechanisms involved in protection against NiV infection by analyzing the immune profiles of survivors of the Nipah outbreak in Kerala, India 2023. Immune cell populations were quantified and compared between survivors (up to 4 months post onset day of illness) and healthy controls. Statistical analysis was performed to explore associations between immune profiles and clinical outcomes. Immune signatures common to all three cases were: a heretofore undescribed persistent lymphopenia including the CD4+ Treg compartment with the relative expansion of memory Tregs; trends indicative of global leukopenic modulation were observed in monocytes and granulocytes including an expansion of putatively immunosuppressive low-density granulocytes described recently in the context of severe COVID-19; altered mucosal homing with respect to integrin beta-7 (ITGB7) expressing subsets; increased mobilization of activated T-cells (CD4+ and CD8+) and plasmablasts in the early phase of infection. Comparative analysis based on clinical presentation and outcome yielded lower initial viremia, increased activated T-cell responses, expanded plasmablasts, and restoration of ITGB7 expressing CD8+ T-cells as possible protective signatures. This longitudinal study delineates putative protective signatures associated with milder NiV disease. It emphasizes the need for the development of immunotherapeutic interventions such as monoclonal antibodies to blunt early viremia and ameliorate pathogenesis.",2024,Sep,J Med Virol,96,9,e29920,,10.1002/jmv.29920,39283000,#3140,Sahay 2024,Exclusion reason: Case report or case study; ,"" +Persistence of Nipah Virus RNA in Semen of Survivor.,Arunkumar G; Abdulmajeed J; Santhosha D; Aswathyraj S; Robin S; Jayaram A; Radhakrishnan C; Sajeeth KKG; Sakeena K; Jayasree V; Reena JK; Sarita LR,,2019,Jul,Clin Infect Dis,69,2,377-378,,10.1093/cid/ciy1092,30590474,#3154,Arunkumar 2019,Exclusion reason: Not peer-reviewed paper; ,letter to the editor +Emerging zoonotic diseases and COVID-19 pandemic: global Perspective and Indian Scenario.,Bardhan M; Ray I; Roy S; Bhatt P; Patel S; Asri S; Shariff S; Shree A; Mitra S; Roy P; Anand A,"The current coronavirus disease 2019 (COVID-19) pandemic is one example of the scores of zoonotic diseases responsible for various outbreaks resulting in the deaths of millions of people for centuries. The COVID-19 pandemic has broken the age-old healthcare infrastructure and led to utter chaos. In the shadow of this pandemic, other zoonotic infections like the nipah virus, monkeypox, and langya virus, to name a few, have been neglected. Hence, outbreaks caused by such zoonotic viruses are rising in their endemic areas, like the Indian subcontinent. The mortality and morbidity due to such zoonoses are greater than usual due to the shortage of healthcare professionals caused by the COVID-19 crisis. Due to the lack of vaccines and therapeutics directed against this viral infection, treatment of patients is limited to supportive management and prevention, making preparedness for these potential zoonotic viral outbreaks essential. This paper highlights some of these zoonotic infections, which perpetuated and wreaked havoc while the world was occupied with containing the COVID-19 pandemic.",2023,Aug,Ann Med Surg (Lond),85,8,3997-4004,,10.1097/MS9.0000000000001057,37554903,#3179,Bardhan 2023,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; ,Review paper +Knowledge and attitude among Bangladeshi healthcare workers regarding the management and infection prevention and control of Nipah virus.,Islam T; Meem NE; Hasan M; Mutsuddi A; Shifat AA; Goutam A; Bari MR; Eva FN; Rozars MFK; Sultana S; Sarker NE; Nabi MH; Hawlader MDH,"BACKGROUND: The Nipah virus (NiV) is a zoonotic pathogen that belongs to the Paramyxoviridae family. It can cause severe respiratory and neurological diseases in humans, with varying clinical symptoms. Recognized as a critical public health concern by the World Health Organization, it requires concerted efforts in research and development to prevent outbreaks. METHODOLOGY: An analytical cross-sectional study was conducted on 455 healthcare workers across four major regions in Bangladesh from April 2022 to May 2023. Using multistage convenient sampling and face-to-face interviews with a semi-structured questionnaire, we have examined the level of knowledge, attitudes, and individual perceptions of the preparedness for NiV. Data analysis included univariate and bivariate analyses, followed by binary logistic regression to ascertain the association with demographic factors. RESULTS: The study identified a gender disparity favoring female healthcare workers (HCWs). Approximately 46.15 % of participants demonstrated a good knowledge about NiV, with doctors showing significantly higher knowledge odds (OR = 5.197, p < 0.001). Interestingly, graduate and post-graduate education levels did not yield a statistically significant correlation with knowledge. Specific training received was positively associated with knowledge levels (OR = 1.832, p = 0.014), highlighting the gap in routine infection prevention education. Regional differences were notable, with participants from Chittagong having a lower level of knowledge compared to Dhaka (OR = 0.307, p = 0.004). Attitudes towards NiV were predominantly positive, although higher education inversely correlated with positive attitudes, suggesting a potential gap between theoretical knowledge and practical attitudes. CONCLUSION: While the attitude towards NiV is generally positive among Bangladeshi HCWs, there is a need to enhance knowledge levels, especially in primary care settings and certain regions. To effectively prepare for NiV outbreaks, it is crucial to prioritize continuous education and practical training. The study underscores the importance of implementing uniform educational strategies to equip HCWs across all categories and regions with adequate NiV knowledge and preparedness.",2024,Sep,J Virus Erad,10,3,100389,,10.1016/j.jve.2024.100389,39310288,#3181,Islam 2024,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; ,"" +"Knowledge, Attitudes, Risk Perception, Preparedness and Vaccine Intent of Health Care Providers towards the Nipah Virus in South India.",Himes L; Shetty V; Prabhu S; Shetty AK,"Nipah virus (NiV) disease (NVD) remains a re-emerging public health threat in India. We assessed the knowledge, attitudes, and risk perception of NVD and future vaccine intent among a convenience sample of health care providers (HCP). The primary outcome measures were the knowledge, attitudes, and risk perception scores. Of 261 participants surveyed, 203 (77.8%) had heard of NiV and associated symptoms. The majority (248, 95%) identified the fruit bat as a primary NiV reservoir and 205 (79.8%) were aware of human-to-human transmission via droplets. Only 101 (38.7%) participants were aware that drinking date palm sap is a risk factor for transmission. Most HCP either agreed (117 (44.8%)) or strongly agreed (131 (50.2%)) that NiV is a serious illness. Less than half (121 (46.4%)) were aware of any institutional protocol for NiV; 235 (90.7%) of HCP stated that they need more information about prevention and treatment options. Knowledge scores were significantly higher among physicians compared to nurses whereas nurses and academic providers were more likely to have higher attitudes scores. A majority of respondents (20,779.9%) were willing to be vaccinated and willing to recommend the NiV vaccine to their patients (21,682.8%). Future strategies include education of HCP to bridge the knowledge gaps and enhance preparedness through disease-specific training for NiV infection.",2022,Apr,Trop Med Infect Dis,7,4,,,10.3390/tropicalmed7040056,35448831,#3183,Himes 2022,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; Tristan Naidoo (2024-11-19 05:24:42)(Select): Risk perception - a similar paper was excluded with wrong pathogen tag...; ,"" +Nipah virus disease: A rare and intractable disease.,Banerjee S; Gupta N; Kodan P; Mittal A; Ray Y; Nischal N; Soneja M; Biswas A; Wig N,"Nipah virus, an enveloped ribonucleic acid virus, has been a major cause of encephalitis out-breaks with high mortality, primarily in the Indo-Bangladesh regions. Except for the first outbreak in Malaysia-Singapore, which was related to contact with pigs and the outbreak in Philippines associated with horse slaughter, most other outbreaks have affected the Indo- Bangladesh regions. The Indo-Bangladesh outbreaks were associated with consumption of raw date palm sap contaminated by fruit bats and had a very high secondary attack rate. The patient usually presents with fever, encephalitis and/or respiratory involvement with or without thrombocytopenia, leukopenia and transaminitis. Diagnosis can be confirmed by isolation and nucleic acid amplification in the acute phase or antibody detection during the convalescent phase. Treatment is mostly limited to supportive care and syndromic management of acute encephalitis syndrome. Ribavirin, m102.4 monoclonal antibody and favipiravir are the only anti-virals with some activity against Nipah virus. Standard precautions, hand hygiene and personal protective equipments are the cornerstone of comprehensive infection prevention and control strategy. With the recent outbreaks affecting newer geographical areas, there is a need for physicians to be aware of this disease and keep abreast of its current detection and management strategies.",2019,Feb,Intractable Rare Dis Res,8,1,1-8,,10.5582/irdr.2018.01130,30881850,#3199,Banerjee 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A Comparative Assessment of the Pathogenic Potential of Newly Discovered Henipaviruses.,Meier K; Olejnik J; Hume AJ; Mühlberger E,"Recent advances in high-throughput sequencing technologies have led to the discovery of a plethora of previously unknown viruses in animal samples. Some of these newly detected viruses are closely related to human pathogens. A prime example are the henipaviruses. Both Nipah (NiV) and Hendra virus (HeV) cause severe disease in humans. Henipaviruses are of zoonotic origin, and animal hosts, including intermediate hosts, play a critical role in viral transmission to humans. The natural reservoir hosts of NiV and HeV seem to be restricted to a few fruit bat species of the Pteropus genus in distinct geographic areas. However, the recent discovery of novel henipa- and henipa-like viruses suggests that these viruses are far more widespread than was originally thought. To date, these new viruses have been found in a wide range of animal hosts, including bats, shrews, and rodents in Asia, Africa, Europe, and South America. Since these viruses are closely related to human pathogens, it is important to learn whether they pose a threat to human health. In this article, we summarize what is known about the newly discovered henipaviruses, highlight differences to NiV and HeV, and discuss their pathogenic potential.",2024,Jul,Pathogens,13,7,,,10.3390/pathogens13070587,39057814,#3204,Meier 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Ingrained: Rice farming and the risk of zoonotic spillover, examples from Cambodia.",Sievers BL; Hyder S; Claes F; Karlsson EA,"Rice cultivation in Southeast Asia is a One Health interface intersecting human, animal, and environmental health. This complexity creates a potential for zoonotic transmission between diverse reservoirs. Bats harbor viruses like Nipah; mosquitoes transmit arboviruses; rodents spread hantaviruses. Domestic animals- including pigs with influenza and dogs with rabies and aquatic animals can also transmit pathogens. Climate change and urbanization may further disrupt rice agro-ecologies. This paper explores animal viral reservoirs, vectors, and historical practices associated with risk in rice farming. Climate and land use changes could enhance spillover. Solutions are proposed, including surveillance of animals, vectors, water, and air to detect threats before major outbreaks, such as improved biosecurity, hygiene, and livestock vaccinations. Ecological viral surveillance and agricultural interventions together can reduce zoonotic transmission from rice farming.",2024,Jun,One Health,18,,100696,,10.1016/j.onehlt.2024.100696,39010950,#3208,Sievers 2024,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-25 23:14:09)(Screen): Possible risk factor based on occupation? +; ","" +A comparative genomic approach to decipher the mutations associated with Nipah viral human isolates from southeast Asia.,Dsouza NN; Chellasamy SK,"BACKGROUND AND OBJECTIVES: Multiple outbreaks over two decades and a high mortality rate have emphasized the Nipah virus (NiV) as a priority research area. The study focuses on identifying the mutational landscape in sequences from NiV human isolates from different geographical regions. MATERIALS AND METHODS: Thirty-seven NiV genomes of human samples from Malaysia, Bangladesh, and India were subjected to phylogeny and metagenomic analysis to decipher the genome variability using MEGA11 software and the meta-CATS web server. Using the Single-Likelihood Ancestor Counting method, the synonymous and nonsynonymous mutations among NiV genes were identified. Further, the nonsynonymous variations were used to identify mutations in all the NiV proteins. RESULTS: The NiV isolates were categorized into NiV-M, NiV-B, and NiV-I clades based on phylogenetic analysis. Metagenomic analysis revealed 1636 variations in the noncoding and coding regions of the genomes of the three clades of NiV. Further analysis of nonsynonymous mutations showed the phosphoprotein to be highly mutating, whereas the matrix protein was stable. CONCLUSION: Deciphering the mutation pattern using a comparative genomics approach for human isolates provided valuable insight into the stability of NiV proteins which can be further used for understanding variations in host-pathogen interaction and developing effective therapeutic measures.",2024,Feb,Iran J Microbiol,16,1,104-113,,10.18502/ijm.v16i1.14879,38682059,#3221,Dsouza 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Drivers of zoonotic disease risk in the Indian subcontinent: A scoping review.,Durrance-Bagale A; Rudge JW; Singh NB; Belmain SR; Howard N,"Literature on potential anthropogenic drivers of zoonotic disease risk in the Indian subcontinent is sparse. We conducted a scoping review to identify primary sources, published 2000-2020, to clarify what research exists and on which areas future research should focus. We summarised findings thematically by disease. Of 80 sources included, 78 (98%) were original research articles and two were conference abstracts. Study designs and methods were not always clearly described, but 74 (93%) were quantitative (including one randomised trial), five (6%) were mixed-methods, and one was qualitative. Most sources reported research from India (39%) or Bangladesh (31%), followed by Pakistan (9%), Nepal (9%), Bhutan and Sri Lanka (6% each). Topically, most focused on rabies (18; 23%), Nipah virus (16; 20%) or leptospirosis (11; 14%), while 12 (15%) did not focus on a disease but instead on knowledge in communities. People generally did not seek post-exposure prophylaxis for rabies even when vaccination programmes were available and they understood that rabies was fatal, instead often relying on traditional medicines. Similarly, people did not take precautions to protect themselves from leptospirosis infection, even when they were aware of the link with rice cultivation. Nipah was correlated with presence of bats near human habitation. Official information on diseases, modes of transmission and prevention was lacking, or shared informally between friends, relatives, and neighbours. Behaviour did not correspond to disease knowledge. This review identifies various human behaviours which may drive zoonotic disease risk in the Indian subcontinent. Increasing community knowledge and awareness alone is unlikely to be sufficient to successfully change these behaviours. Further research, using interdisciplinary and participatory methods, would improve understanding of risks and risk perceptions and thus help in co-designing context-specific, relevant interventions.",2021,Dec,One Health,13,,100310,,10.1016/j.onehlt.2021.100310,34458546,#3246,Durrance-Bagale 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus and implications for the nursing workforce and public health: A rapid review.,Cubelo F; Kohanová D; Turunen H; Solgajová A; Berdida DJ,"BACKGROUND: The Nipah virus has raised significant concerns in global health security. During the COVID-19 pandemic, the nursing workforce continues to face numerous challenges, including inadequate preparedness for pandemics, a shortage of nursing personnel, physical, and mental exhaustion. OBJECTIVE: This rapid review aimed to synthesize existing literature on the Nipah virus and its implications for the nursing workforce. DESIGN: A rapid review was conducted to synthesize the available literature on the Nipah virus, facilitating the provision of timely and pertinent information to policymakers and decision influencers. A systematic search strategy was implemented between January 22 and February 9, 2024, from PubMed, CINAHL (EBSCO), Scopus, and Google Scholar without year limitation. Out of 149 studies, six studies were evaluated using the Joanna Briggs Institute Critical Appraisal Checklists, and one study was excluded based on this evaluation, resulting in five studies being included. Then these were reviewed using narrative synthesis. The study adhered to the preferred reporting items for systematic reviews and meta-analyses (PRISMA) guidelines. RESULTS: The selected research indicated that the virus was transmitted throughout the community and during hospital admissions, resulting in unexpected mortality. The healthcare staff, especially nurses, had a limited understanding of the infection. Although there is a lack of confidence in policy and decision-makers, many public health initiatives have been implemented such as providing education on infection prevention and control methods to healthcare personnel, including nurses and support staff. CONCLUSION: There is a need to integrate continuing professional development programs in both primary health care and specialized medical care to strengthen the preparedness of healthcare personnel for future pandemics. Support systems not only for healthcare staff members, especially nurses, but also for allied personnel working with them to create conducive working environments.",2024,Sep,Public Health Nurs,,,,,10.1111/phn.13413,39238435,#3250,Cubelo 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A cross-sectional survey on fruit bat-human interaction in Pakistan; one health perspective.,Ahmed T; Amjad OB; Ahmed H; Ahmed S; Ansari JA; Ricketson R; Tahir MF,"OBJECTIVE: Several factors, such as residential area topography, population density, and lack of infrastructure, were hypothesized to contribute toward respondents' knowledge, attitude, and practice regarding disease transmission. The present study was designed to investigate the knowledge, attitudes, and perception of human-fruit bat interaction by student respondents located in ten districts within the Punjab and Khyber Pakhtunkhwa provinces in Pakistan. METHOD: A cross-sectional survey was conducted by trained enumerators in academic institutions using a structured questionnaire among student respondents (n = 1466), living in two topographically distinct (Mountainous and Plain) residential regions of the Punjab and Khyber Pakhtunkhwa (KPK) provinces in Pakistan regarding their history of bat encounters. RESULTS: Our study revealed that 71.4% of the 1466 respondents had observed bats in their geographic region. 21% of our survey respondents reported bat bites incidents over their lifetime, but only 40% actively sought medical care for wound management despite reporting they had a close family member that had contracted rabies (27-35%). Our generalized linear models (GLMs) highlighted that a respondent residing in a residential region had a greater association with reporting a suspected bat bite over their lifetime and reported rabies victims in both near and extended family members (OR = -0,85, p-value = 0.03, 95% CI). This appeared to be due to delaying consulting a doctor or medical facility for treatment following a suspected bat bite in the topographic residential group as compared to the respondents in the provincial residential group (OR 1.12, p-value = 0.04, 95% CI). CONCLUSION: Our findings indicate the necessity of a One Health comprehensive surveillance system in Pakistan for emerging and re-emerging zoonotic pathogens in Pteropodidae.",2023,Feb,One Health Outlook,5,1,3,,10.1186/s42522-023-00078-1,36855213,#3288,Ahmed 2023,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; Tristan Naidoo (2024-11-19 05:24:18)(Select): Rabies; ,"" +An Overview of Anthropogenic Actions as Drivers for Emerging and Re-Emerging Zoonotic Diseases.,Tazerji SS; Nardini R; Safdar M; Shehata AA; Duarte PM,"Population growth and industrialization have led to a race for greater food and supply productivity. As a result, the occupation and population of forest areas, contact with wildlife and their respective parasites and vectors, the trafficking and consumption of wildlife, the pollution of water sources, and the accumulation of waste occur more frequently. Concurrently, the agricultural and livestock production for human consumption has accelerated, often in a disorderly way, leading to the deforestation of areas that are essential for the planet's climatic and ecological balance. The effects of human actions on other ecosystems such as the marine ecosystem cause equally serious damage, such as the pollution of this habitat, and the reduction of the supply of fish and other animals, causing the coastal population to move to the continent. The sum of these factors leads to an increase in the demands such as housing, basic sanitation, and medical assistance, making these populations underserved and vulnerable to the effects of global warming and to the emergence of emerging and re-emerging diseases. In this article, we discuss the anthropic actions such as climate changes, urbanization, deforestation, the trafficking and eating of wild animals, as well as unsustainable agricultural intensification which are drivers for emerging and re-emerging of zoonotic pathogens such as viral (Ebola virus, hantaviruses, Hendravirus, Nipah virus, rabies, and severe acute respiratory syndrome coronavirus disease-2), bacterial (leptospirosis, Lyme borreliosis, and tuberculosis), parasitic (leishmaniasis) and fungal pathogens, which pose a substantial threat to the global community. Finally, we shed light on the urgent demand for the implementation of the One Health concept as a collaborative global approach to raise awareness and educate people about the science behind and the battle against zoonotic pathogens to mitigate the threat for both humans and animals.",2022,Nov,Pathogens,11,11,,,10.3390/pathogens11111376,36422627,#3332,Tazerji 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus Mystery: Insight into Transmission and Mechanism of Disease Progression,"Hassan, D; Ravindran, R; Hossain, A","Nipah virus (NiV) belongs to the biosafety level four (BSL-4) group of human pathogens of zoonotic origin. It is an emerging pathogen capable of causing a variety of clinical presentations, including encephalitis and severe acute respiratory illness, which can be fatal. Interestingly, it can also cause asymptomatic infections, which can relapse after a long period of time ranging from months to years following initial infection. Zoonotic transmission involves bats or pigs. In addition, transmission via contaminated food and occasional human to human direct transmission may also occur. It can have diverse epidemiological features and can have a very high case fatality ratio. Although a variety of immunological and molecular assays have been developed and epidemiological monitoring procedures for this disease have been introduced, there are no drugs available for this virus. Vaccines are at different stages of development. In this mini-review, we present the latest information on the Nipah virus; primarily focusing on emergence, transmission, pathogenic mechanisms and possible prophylactic and treatment options.",2022,,JOURNAL OF PURE AND APPLIED MICROBIOLOGY,16,1,26-34,WOS:000766786800005,10.22207/JPAM.16.1.72,,#3349,Hassan 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +What is stirring in the reservoir? Modelling mechanisms of henipavirus circulation in fruit bat hosts,"Glennon, EE; Becker, DJ; Peel, AJ; Garnier, R; Suu-Ire, RD; Gibson, L; Hayman, DTS; Wood, JLN; Cunningham, AA; Plowright, RK; Restif, O","Pathogen circulation among reservoir hosts is a precondition for zoonotic spillover. Unlike the acute, high morbidity infections typical in spillover hosts, infected reservoir hosts often exhibit low morbidity and mortality. Although it has been proposed that reservoir host infections may be persistent with recurrent episodes of shedding, direct evidence is often lacking. We construct a generalized SEIR (susceptible, exposed, infectious, recovered) framework encompassing 46 sub-models representing the full range of possible transitions among those four states of infection and immunity. We then use likelihood-based methods to fit these models to nine years of longitudinal data on henipavirus serology from a captive colony of Eidolon helvum bats in Ghana. We find that reinfection is necessary to explain observed dynamics; that acute infectious periods may be very short (hours to days); that immunity, if present, lasts about 1-2 years; and that recurring latent infection is likely. Although quantitative inference is sensitive to assumptions about serology, qualitative predictions are robust. Our novel approach helps clarify mechanisms of viral persistence and circulation in wild bats, including estimated ranges for key parameters such as the basic reproduction number and the duration of the infectious period. Our results inform how future field-based and experimental work could differentiate the processes of viral recurrence and reinfection in reservoir hosts.This article is part of the theme issue 'Dynamic and integrative approaches to understanding pathogen spillover'.",2019,,PHILOSOPHICAL TRANSACTIONS OF THE ROYAL SOCIETY B-BIOLOGICAL SCIENCES,374,1782,,WOS:000480715600017,10.1098/rstb.2019.0021,,#3351,Glennon 2019,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Ruth McCabe (2025-03-21 02:46:56)(Select): bat only model; Christian Morgenstern (2024-10-14 20:24:09)(Screen): has R0 estimates in reservoir hosts; ,Animal model +Behavioral-biological surveillance of emerging infectious diseases among a dynamic cohort in Thailand,"Yadana, S; Cheun-Arom, T; Li, HY; Hagan, E; Mendelsohn, E; Latinne, A; Martinez, S; Putcharoen, O; Homvijitkul, J; Sathaporntheera, O; Rattanapreeda, N; Chartpituck, P; Yamsakul, S; Sutham, K; Komolsiri, S; Pornphatthananikhom, S; Petcharat, S; Ampoot, W; Francisco, L; Hemachudha, T; Daszak, P; Olival, KJ; Wacharapluesadee, S","Background Interactions between humans and animals are the key elements of zoonotic spillover leading to zoonotic disease emergence. Research to understand the high-risk behaviors associated with disease transmission at the human-animal interface is limited, and few consider regional and local contexts. Objective This study employed an integrated behavioral-biological surveillance approach for the early detection of novel and known zoonotic viruses in potentially high-risk populations, in an effort to identify risk factors for spillover and to determine potential foci for risk-mitigation measures. Method Participants were enrolled at two community-based sites (n = 472) in eastern and western Thailand and two hospital (clinical) sites (n = 206) in northeastern and central Thailand. A behavioral questionnaire was administered to understand participants' demographics, living conditions, health history, and animal-contact behaviors and attitudes. Biological specimens were tested for coronaviruses, filoviruses, flaviviruses, influenza viruses, and paramyxoviruses using pan (consensus) RNA Virus assays. Results Overall 61/678 (9%) of participants tested positive for the viral families screened which included influenza viruses (75%), paramyxoviruses (15%), human coronaviruses (3%), flaviviruses (3%), and enteroviruses (3%). The most salient predictors of reporting unusual symptoms (i.e., any illness or sickness that is not known or recognized in the community or diagnosed by medical providers) in the past year were having other household members who had unusual symptoms and being scratched or bitten by animals in the same year. Many participants reported raising and handling poultry (10.3% and 24.2%), swine (2%, 14.6%), and cattle (4.9%, 7.8%) and several participants also reported eating raw or undercooked meat of these animals (2.2%, 5.5%, 10.3% respectively). Twenty four participants (3.5%) reported handling bats or having bats in the house roof. Gender, age, and livelihood activities were shown to be significantly associated with participants' interactions with animals. Participants' knowledge of risks influenced their health-seeking behavior. Conclusion The results suggest that there is a high level of interaction between humans, livestock, and wild animals in communities at sites we investigated in Thailand. This study highlights important differences among demographic and occupational risk factors as they relate to animal contact and zoonotic disease risk, which can be used by policymakers and local public health programs to build more effective surveillance strategies and behavior-focused interventions.",2022,,BMC INFECTIOUS DISEASES,22,1,,WOS:000796526700005,10.1186/s12879-022-07439-7,,#3370,Yadana 2022,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-11-20 03:30:54)(Select): Risk factors based on PCR results; ,"" +Nipah Virus: A Threatening Outbreak,"Al-Askari, MR; Menezes, GA; Omran, HH; Ejaz, A; Ejaz, H; Hameed, SS","Nipah Virus (NiV) first identified in Malaysia in 1998, was found to be a highly pathogenic re-emerging paramyxovirus able to produce febrile encephalitis and respiratory sickness for which there are no vaccinations or approved therapies present. Pteropus species bats act as the main natural reservoir. NiV comes under level-4 in biosafety and most commonly spreads through Pteropus fruit bat saliva or excrement, or through close contact with intermediate hosts such as pigs. This virus is predominantly common in Southeast Asia and is considered one of the deadliest viruses in the world with the highest mortality rates. Different strains of the virus were found to display different epidemiological and clinical features. In order to contain outbreaks, quick diagnosis and infection control measures are needed. For diagnosis and surveillance, varieties of serological and molecular diagnostic approaches have been developed. Here, the authors review the current concepts in NiV genome, structure, replication, epidemiology, different viral strains, pathogenesis, clinical signs and symptoms, diagnosis, treatment, vaccines and prevention in human beings.",2023,,JOURNAL OF CLINICAL AND DIAGNOSTIC RESEARCH,-17,2,DE1-DE7,WOS:000946468900002,10.7860/JCDR/2023/52734.17504,,#3436,Al-Askari 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Enhanced accuracy and reliability in predicting Nipah virus outbreaks with Type-1 and Type-2 fuzzy sets,"Leelavathi, N; Dhavamani, M","Nipah virus (NiV) is a zoonotic pathogen with high mortality rates, posing significant public health threats in South and Southeast Asia. Traditional outbreak prediction models often fall short in handling the complexities and uncertainties inherent in epidemiological data. This research introduces a novel predictive model that integrates Type-1 and Type-2 fuzzy sets within a hierarchical fuzzy inference system (FIS) to enhance the accuracy and reliability of Nipah virus outbreak predictions. The model leverages enriched sequencing techniques to achieve higher and more consistent genomic coverage, leading to precise variant detection and robust genomic analysis. Comprehensive geographical and temporal data integration allows for the identification of outbreak hotspots and virus evolution patterns. Our results demonstrate that the proposed model significantly improves predictive accuracy, with a mean squared error (MSE) of 512, compared to traditional models. The enriched sequencing method reduced variability in minor variant detection, ensuring a comprehensive understanding of the virus's genetic diversity. This approach provides valuable insights for targeted public health interventions and resource allocation, highlighting the importance of adaptive surveillance strategies. The proposed model's enhanced uncertainty handling and greater interpretability offer a significant advancement over existing methodologies, contributing to more effective outbreak management.",2024,,BIOMEDICAL SIGNAL PROCESSING AND CONTROL,98,,,WOS:001297546800001,10.1016/j.bspc.2024.106675,,#3439,Leelavathi 2024,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; ,"" +Pandemic potential of henipaviruses,"Wojtkiewicz, A; Szota, M; Kedziora-Kornatowska, K","Introduction and purpose. Hendra and Nipah are two highly dangerous zoonotic viruses belonging to the group of henipaviruses. Although they have been known for over 20 years, no human drug or vaccine has been invented. This paper aims to to describe the epidemiology of the reported paramyxoviruses, the pandemic potential of henipaviruses, and a standardised action plan to counter their spread. This paper reviews scientifi c articles from 2012-2023 published in scientifi c databases such as Pubmed, Researchgate, and Google Scholar. The keywords used were pandemic potential of henipaviruses, Hendra virus, Nipah virus, and henipavirus epidemics. State of knowledge description. The mortality rate of henipaviruses varies between 50 and 100%. The Nipah virus is particularly dangerous, with epidemics recurring virtually every year in Asia since 1998. The Hendra virus situation may be manageable because there is an effective vaccine for horses most vulnerable to infection. Due to human activity, the habitats and climate of the animals serving as virus reservoirs are changing. Because of frequent henipavirus outbreaks in Asia and Australia, extensive efforts are being made to contain and neutralise them rapidly. Conclusions. As henipaviruses pose a high pandemic threat, more research into drugs and vaccines is required. It is also essential to develop effective bio-assurance plans, introduce controls on their operation and educate the population on the issue. Reservoir animals, through anthropogenic environmental changes, are changing habitats and feeding sites, making more and more territories vulnerable to the disease. New species of henipaviruses constantly emerge and pose an epizootic challenge to public health. Hence, an essential action is to increase the amount of research into the virus's epidemic development and conduct it as widely as possible.",2024,,JOURNAL OF MEDICAL SCIENCE,93,1,50-56,WOS:001222769400005,10.20883/medical.e929,,#3453,Wojtkiewicz 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus strikes Kerala: recent cases and implications,"Srivastava, S; Sharma, PK; Gurjar, S; Kumar, S; Pandey, Y; Rustagi, S; Mohanty, A; Sah, R","The Nipah virus, a highly pathogenic zoonotic pathogen, has once again surfaced in the state of Kerala, India, with recent cases reported in 2023. This article delves into the epidemiological details of these cases, shedding light on the two fatalities that occurred in September 2023 and August 2023 as well as the suspected cases that have undergone testing. Nipah virus, known for its severe neurological and respiratory disease manifestations, remains a formidable health threat due to the lack of specific treatments or vaccines. The government's response to these recent cases, including mass testing and quarantine measures, is discussed, drawing lessons from past outbreaks in the region. Kerala has experienced multiple Nipah virus outbreaks since 2018, prompting a closer examination of environmental factors, such as deforestation and urbanization, which increase the risk of zoonotic transmission. This article underscores the global implications of Nipah virus resurgence in Kerala and emphasizes the importance of preparedness and vigilance in the face of emerging infectious diseases. The lessons learned from Kerala's experience with Nipah virus outbreaks provide valuable insights for public health professionals and policymakers worldwide.",2024,,EGYPTIAN JOURNAL OF INTERNAL MEDICINE,36,1,,WOS:001151058500002,10.1186/s43162-024-00276-x,,#3468,Srivastava 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus-Another Threat From the World of Zoonotic Viruses,"Skowron, K; Bauza-Kaszewska, J; Grudlewska-Buda, K; Wiktorczyk-Kapischke, N; Zacharski, M; Bernaciak, Z; Gospodarek-Komkowska, E","Among the diseases that pose a serious threat to public health, those caused by viruses are of great importance. The Nipah virus (NiV) belonging to the Paramyxoviridae family was reported in Malaysia in 1998/1999. Due to its high mortality in humans, its zoonotic nature, the possibility of human-to-human transmission, and the lack of an available vaccine, the World Health Organization (WHO) has recognized it as a global health problem. Depending on strain specificity, neurological symptoms and severe respiratory disorders are observed in NiV infection. In most confirmed cases of NiV epidemics, the appearance of the virus in humans was associated with the presence of various animal species, but generally, bats of Pteropus species are considered the most important natural animal NiV reservoir and vector. Consumption of contaminated food, contact with animals, and ""human-to-human"" direct contact were identified as NiV transmission routes. Due to the lack of vaccines and drugs with proven effectiveness against NiV, treatment of patients is limited to supportive and prophylactic.",2022,,FRONTIERS IN MICROBIOLOGY,12,,,WOS:000752589200001,10.3389/fmicb.2021.811157,,#3478,Skowron 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah Virus Disease: Epidemiological, Clinical, Diagnostic and Legislative Aspects of This Unpredictable Emerging Zoonosis","Bruno, L; Nappo, MA; Ferrari, L; Di Lecce, R; Guarnieri, C; Cantoni, AM; Corradi, A","Nipah virus (NiV) infection is a viral disease caused by a Henipavirus, belonging to the Paramyxoviridae family, responsible for a zoonosis. The course of the disease can be very serious and lead to death. NiV natural hosts are fruit bats (also known as megabats) belonging to the Pteropodidae family, especially those of the Pteropus genus. Natural infection in domestic animals has been described in farming pigs, horses, domestic and feral dogs and cats. Natural NiV transmission is possible intra-species (pig-to-pig, human-to-human) and inter-species (flying bat-to-human, pig-to-human, horse-to-human). The infection can be spread by humans or animals in different ways. It is peculiar how the viral transmission modes among different hosts also change depending on the geographical area for different reasons, including different breeding methods, eating habits and the recently identified genetic traits/molecular features of main virus proteins related to virulence. Outbreaks have been described in Malaysia, Singapore, Bangladesh, India and the Philippines with, in some cases, severe respiratory and neurological disease and high mortality in both humans and pigs. Diagnosis can be made using different methods including serological, molecular, virological and immunohistochemical methods. The cornerstones for control of the disease are biosecurity (via the correct management of reservoir and intermediate/amplifying hosts) and potential vaccines which are still under development. However, the evaluation of the potential influence of climate and anthropogenic changes on the NiV reservoir bats and their habitat as well as on disease spread and inter-specific infections is of great importance. Bats, as natural reservoirs of the virus, are responsible for the viral spread and, therefore, for the outbreaks of the disease in humans and animals. Due to the worldwide distribution of bats, potential new reports and spillovers are not to be dismissed in the future.",2023,,ANIMALS,13,1,,WOS:000909769000001,10.3390/ani13010159,,#3482,Bruno 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +NIPAH -Virus: A review,"Mahavir, J; Sukhminderjit, K; Vipin, D; Aastha, M","Zoonotic diseases have the potential to cause an epidemic in a short time period and due to changing ecological and environmental conditions, zoonoses have been on the rise posing a threat to human health. The emergence of Nipah virus in Malaysia in 1998-99 is a classical example of emerging zoonosis. Following the outbreak in Malaysia, there were major cases of NIPAH in India and Bangladesh throughout the past two decades with high fatality rate. The natural host of the virus was found to be a species of fruit eating bats i.e. Pteropus bat also known as flying fox. The major sources of infection amongst humans were raw date palm sap and pigs which were infected by fluids present inside Pteropus bats. The most affected were Asian countries but similar virus was also found in bats across African subcontinent. Nipah infection can be diagnosed in laboratory throughout the critical and rejuvenating stages of the infection by appointing various test combinations. NiV infections in humans and animals are diagnosed by various tests such as virus isolation, serological tests and nucleic acid amplification tests. Since Nipah is highly dangerous and potentially pathogenic contaminant, appropriate cautions have to be appointed while assorting, submitting and handling the sample.All the work related to Nipah has to be carried out in physical contaminant level. Till date no vaccine has been produced against Nipah virus due to limited experimental conditions, so certain measures could only be taken to prevent against Nipah virus, however the studies are in progress. A vaccine has been developed in Australia for protection of horses against the similar virus i.e. Hendra virus. The vaccine uses Hendra G protein and produces cross protective antibodies against HeV and NiV. Due to no licensed antibodies, only precautions can be taken to prevent infection by Nipah virus.",2020,,RESEARCH JOURNAL OF BIOTECHNOLOGY,15,5,143-153,WOS:000529376100020,,,#3488,Mahavir 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus outbreak: A comparative study from Southeast Asia,"Sachan, D; Verma, MK; Jain, PK; Kumar, S; Kharya, P","Nipah Virus is a recently emerging zoonotic virus with disease causing potential in both animals and humans. Nipah virus belongs to the family of paramyxovirida, genus Henipavirus along with Hendra virus. (1) The knowledge of human infection with Henipavirus was limited to a very small number of cases infected with Hendra virus in Australia during 1994-1999 which was responsible for deaths of two humans and seventeen horses. (2) Nipah virus was first identified and isolated in 1999 in Malaysia during an outbreak of febrile illness among pig farmers and people who were in close contacts with pigs. (3) In 2001, Nipah virus was identified as the causative agent of outbreak in Bangladesh. Since then number of outbreaks has been reported in various districts of Bangladesh. (4) In India, a total of three outbreaks of Nipah have been reported, latest being on 19th May 2018, from Kozhikode district of Kerala. (5) With a fatality rate of 58%, Nipah virus is primarily seen to cause encephalitis and severe respiratory distress. Despite of the severe pathogenicity and high pandemic potential there is no specific treatment for Nipah virus encephalitis except for supportive and symptomatic treatment.",2019,,INDIAN JOURNAL OF COMMUNITY HEALTH,31,2,157-163,WOS:000484863700002,,,#3494,Sachan 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Christian Morgenstern (2024-10-13 02:17:19)(Select): requested from library; ,Review paper +"Henipaviruses at the Interface Between Bats, Livestock and Human Population in Africa: A Review","Mbu'u, CM; Mbacham, WF; Gontao, P; Kamdem, SLS; Nlôga, AMN; Groschup, MH; Wade, A; Fischer, K; Balkema-Buschmann, A","Nipah virus (NiV) and Hendra virus (HeV) are closely related members within the genus Henipavirus, family Paramyxoviridae, for which fruit bats serve as the reservoir. The initial emergence of NiV infections in pigs and humans in Malaysia, and HeV infections in horses and humans in Australia, posed severe impacts on human and animal health, and continues threatening lives of humans and livestock within Southeast Asia and Australia. Recently, henipavirus-specific antibodies have also been detected in fruit bats in a number of sub-Saharan African countries and in Brazil, thereby considerably increasing the known geographic distribution of henipaviruses. Africa is progressively being recognized as a new high prevalence zone for henipaviruses, as deduced from serological and molecular evidence of past infections in Madagascar, Ghana, Republic of Congo, Gulf of Guinea, Zambia, Tanzania, Cameroon, and Nigeria lately. Serological data suggest henipavirus spillover from bats to livestock and human populations in Africa without reported clinical disease in any of these species. All virus isolation attempts have been abortive, highlighting the need for further investigations. The genome of the Ghanaian bat henipavirus designated Ghana virus (GhV), which was detected in a pteropid Eidolon helvum bat, is the only African henipavirus that has been completely sequenced limiting our current knowledge on the genetic diversity and pathogenesis of African henipaviruses. In this review, we summarize the available data on the circulation of henipaviruses in Africa, discuss potential sources for virus spillover, and highlight existing research gaps.",2019,,VECTOR-BORNE AND ZOONOTIC DISEASES,19,7,455-465,WOS:000464566000001,10.1089/vbz.2018.2365,,#3498,Mbu'u 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Potential pandemic pathogens series: Nipah virus,"Evers, S; Nederstigt, C; van Paassen, J; van Westerloo, DJ","In the last two years we have experienced the effects of the COVID-19 pandemic in our lives and hospitals. Pandemics are part of the history of humanity and we can be certain that in the future new pandemics will appear. In fact, due to the growth in the human population, increased travel and global warming, it is to be expected that new pandemic pathogens will arise more frequently than before. Additionally, decreased barriers between animals and humans will give rise to spillover events which may result in the introduction of new zoonotic pathogens in humans. In each of the parts of this series we will, in a short format, highlight a potential pandemic pathogen and describe its characteristics, history and potential for global pandemics. In this part of the series we focus on the Nipah virus. Nipah virus is currently on the WHO's list of global priority pathogens as it possesses pandemic properties, is highly infectious and potentially fatal. Here we explore the past, present and future of Nipah virus.",2022,,NETHERLANDS JOURNAL OF CRITICAL CARE,30,3,94-97,WOS:000803763600003,,,#3499,Evers 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Immunopathogenesis of Nipah Virus Infection and Associated Immune Responses,"Brown, B; Gravier, T; Fricke, I; Al-Sheboul, SA; Carp, TN; Leow, CY; Imarogbe, C; Arabpour, J","Pandemics in the last two centuries have been initiated by causal pathogens that include Severe Acute Coronavirus 2 (SARS-CoV-2) and Influenza (e.g., the H1N1 pandemic of 2009). The latter is considered to have initiated two prior pandemics in 1918 and 1977, known as the ""Spanish Flu"" and ""Russian Flu"", respectively. Here, we discuss other emerging infections that could be potential public health threats. These include Henipaviruses, which are members of the family Paramyxoviridae that infect bats and other mammals. Paramyxoviridae also include Parainfluenza and Mumps viruses (Rubulavirus) but also Respiratory Syncytial virus (RSV) (Pneumovirus). Additionally included is the Measles virus, recorded for the first time in writing in 1657 (Morbillivirus). In humans and animals, these may cause encephalitis or respiratory diseases. Recently, two more highly pathogenic class 4 viral pathogens emerged. These were named Hendra Henipavirus (HeV) and Nipah Henipavirus (NiV). Nipah virus is a negative-sense single-stranded ribonucleic acid ((-) ssRNA) virus within the family Paramyxoviridae. There are currently no known therapeutics or treatment regimens licensed as effective in humans, with development ongoing. Nipah virus is a lethal emerging zoonotic disease that has been neglected since its characterization in 1999 until recently. Nipah virus infection occurs predominantly in isolated regions of Malaysia, Bangladesh, and India in small outbreaks. Factors that affect animal-human disease transmission include viral mutation, direct contact, amplifying reservoirs, food, close contact, and host cell mutations. There are different strains of Nipah virus, and small outbreaks in humans limit known research and surveillance on this pathogen. The small size of outbreaks in rural areas is suggestive of low transmission. Person-to-person transmission may occur. The role that zoonotic (animal-human) or host immune system cellular factors perform therefore requires analysis. Mortality estimates for NiV infection range from 38-100% (averaging 58.2% in early 2019). It is therefore critical to outline treatments and prevention for NiV disease in future research. The final stages of the disease severely affect key organ systems, particularly the central nervous system and brain. Therefore, here we clarify the pathogenesis, biochemical mechanisms, and all research in context with known immune cell proteins and genetic factors.",2023,,IMMUNO,3,2,160-181,WOS:001119914400001,10.3390/immuno3020011,,#3507,Brown 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Scientometric analyses and visualization of scientific outcome on Nipah virus,"Singh, N; Brar, RS; Chavan, SB; Singh, J","This study presents scientometric analysis and network visualization of journal articles on Nipah virus for a better understanding of research trends on the subject. Metadata of journal articles were retrieved from Scopus database in 2018. After filtration of irrelevant and incomplete records, 1007 records were analysed to examine the publishing trends on Nipah virus. The network visualization was accomplished using 'VOSviewer', 'Gephi' and 'Sciencescape' software. Results revealed inconsistent growth of articles on the subject. There were only few productive authors with >= 15 records, but others contributed on the subject occasionally. The United States (as a country) and North America (as continent) led the world in terms of contribution to the number of articles (n = 469 and 522 records respectively). Six leading institutes contributed >= 50 to records each. Out of 373 journals, ten core journals published 31% of the total journal articles. Predominant topics discussed in the articles included: characterization, pathogenesis, clinical symptoms, transmission, outbreaks and vaccine development. A great degree of inter-country and inter-continent collaboration was detected among the US, Australia, Malaysia, United Kingdom and Bangladesh, depicting that the developed world is working in association with the developing nations to tackle the problem.",2019,,CURRENT SCIENCE,117,10,1574-1584,WOS:000501478100025,10.18520/cs/v117/i10/1574-1584,,#3517,Singh 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-10-26 21:49:16)(Screen): Same as before not sure if scientometric analysis should be considered a review/is useful for contextualizing the quantity of research related to Nipah. ; ,Review paper +Henipaviruses-A constant threat to livestock and humans,"Kummer, S; Kranz, DC","In this review, we highlight the risk to livestock and humans from infections with henipaviruses, which belong to the virus family Paramyxoviridae. We provide a comprehensive overview of documented outbreaks of Nipah and Hendra virus infections affecting livestock and humans and assess the burden on the economy and health systems. In an increasingly globalized and interconnected world, attention must be paid to emerging viruses and infectious diseases, as transmission routes can be rapid and worldwide.",2022,,PLOS NEGLECTED TROPICAL DISEASES,16,2,,WOS:000759920600002,10.1371/journal.pntd.0010157,,#3519,Kummer 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +A Comprehensive Review of Nipah Virus: From Epidemics to Approaches of Management,"Pandey, H; Pandey, P; Jakhmola, V; Semwal, A; Deorari, M; Ansori, ANM; Zainul, R","Nipah virus (NiV) continues to remain a significant threat to health of the public, characterized by its ability to cause respiratory and neurological complications. The World Health Organization (WHO) has identified NiV as a priority disease for its R and D Blueprint. However, despite extensive research efforts, specific antiviral therapies for NiV infection are currently unavailable. This highlights the crucial need to focus on supportive care for patients affected by the NiV. Therapies Prompt medical attention, including mechanical ventilation and intensive care, is crucial in case of NiV infection. Preventive measures such as avoiding consumption of raw date palm sap and implementing control of infection practices, gives a major role in halting the spread of NiV. This review provides a comprehensive overview of NiV, and preventive measures. The article also provides details on vaccines currently undergoing clinical trials, including ChAdOx1, PHV02, mRNA-1215, HeV-sG-V, and CD40.NiV. In addition, it highlights that the m102.4 monoclonal antibody and nucleotide analogue remdesivir has shown effective in the NonHuman Primate (NHP) model was also reviewed.",2024,,JOURNAL OF PURE AND APPLIED MICROBIOLOGY,18,3,1502-1514,WOS:001303200100001,10.22207/JPAM.18.3.33,,#3544,Pandey 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +The 'One Health' Approach to an Epidemic Response,"Cherian, V; Philip, J","The concept of 'one health' recognizes that there is an inextricable link between the health of people, animals, and the shared environment. With the rapid growth in population and the destruction of natural habitats, humans are coming into closer contact with wild and domesticated animals. This, in turn, creates ripe conditions for the movement of viruses and diseases between animals and people. The world is seeing frequent occurrences of epidemics caused by new pathogens, to which humans have little immunity, owing to this phenomenon. 'One Health' assumes global significance today when the world is in the grip of the COVID-19 pandemic.The response of the state of Kerala to the COVID-19 crisis is guided by its prior experience with curbing the Nipah virus epidemic in 2018. The same core philosophy of 'one health' that was at the heart of the campaign to rein in the Nipah outbreak has spearheaded the state response to the COVID-19 pandemic. A review of available literature in Pubmed/Medline & Google scholar databases was carried out to study the impact of 'one health' on the epidemic response of Kerala state to the Nipah virus, and how it has been extrapolated in managing the current COVID-19 pandemic. The articles obtained were screened by title, abstract and full text to obtain the most relevant papers. Recommendations have also been proposed regarding the incorporation of `one health' in public health strategy.",2020,,INDIAN JOURNAL OF COMMUNITY HEALTH,32,3,472-478,WOS:000582802000003,,,#3672,Cherian 2020,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2024-10-28 00:29:17)(Select): requested from library; Tristan Naidoo (2024-10-26 21:45:45)(Screen): Has a section which reviews a one health response to Nipah in Kerala ; ,One health; Review paper +Emerging and re-emerging pediatric viral diseases: a continuing global challenge,"Hoffman, SA; Maldonado, YA","The twenty-first century has been marked by a surge in viral epidemics and pandemics, highlighting the global health challenge posed by emerging and re-emerging pediatric viral diseases. This review article explores the complex dynamics contributing to this challenge, including climate change, globalization, socio-economic interconnectedness, geopolitical tensions, vaccine hesitancy, misinformation, and disparities in access to healthcare resources. Understanding the interactions between the environment, socioeconomics, and health is crucial for effectively addressing current and future outbreaks. This scoping review focuses on emerging and re-emerging viral infectious diseases, with an emphasis on pediatric vulnerability. It highlights the urgent need for prevention, preparedness, and response efforts, particularly in resource-limited communities disproportionately affected by climate change and spillover events. Adopting a One Health/Planetary Health approach, which integrates human, animal, and ecosystem health, can enhance equity and resilience in global communities.ImpactWe provide a scoping review of emerging and re-emerging viral threats to global pediatric populationsThis review provides an update on current pediatric viral threats in the context of the COVID-19 pandemicThis review aims to sensitize clinicians, epidemiologists, public health practitioners, and policy stakeholders/decision-makers to the role these viral diseases have in persistent pediatric morbidity and mortality",2024,,PEDIATRIC RESEARCH,95,2,480-487,WOS:001098720800001,10.1038/s41390-023-02878-7,,#3720,Hoffman 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"A COMPREHENSIVE REVIEW ON VIRAL ZOONOSIS: EMPHASIZING ON PATHOGENESIS, DIAGNOSIS, TREATMENT, PREVENTION STRATEGIES AND FUTURE PERSPECTIVES","Jain, N; Saiju, P; Jain, R","Zoonoses are human diseases caused by animal pathogens or animal diseases that are transmissible to humans. They are caused by all types of pathogenic agents, including bacteria, parasites, fungi, viruses, and prions. Zoonotic diseases can be transmitted to humans by infected saliva, aerosols, contaminated urine or feces, and direct contact with the animal or pathogenic microbes. Furthermore, transmission can also occur through animal vectors (e.g., tick bite, and insects like mosquitoes or flea). The zoonotic microbes continue to evolve and adapt with tremendous acceleration and expansion of global trade, human movement, and population. Control of zoonotic diseases and protection of public health are challenging tasks as the world population is increasing proportionately. Newly emerging viruses such as the Ebola virus, severe acute respiratory syndrome (SARS)-, Middle East respiratory syndrome (MERS)-coronavirus, and the avian influenza virus, H1N1 virus, Nipah virus, Zika Virus, and now Covid-19 are serious threats to public health and have become a global concern. The prevention of these infections depends on improved diagnosis and highly effective therapeutics/prophylactics. In this review, most important zoonotic infections, along with their specific etiology, transmission (role of wild-life) manifestations and epidemiology and control/preventive measures, are described so as to create awareness of the scientific/public health community.",2020,,INTERNATIONAL JOURNAL OF PHARMACEUTICAL SCIENCES AND RESEARCH,11,10,4712-4738,WOS:000576592300001,10.13040/IJPSR.0975-8232.11(10).4712-38,,#3753,Jain 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Outbreak: Is it the beginning of another pandemic in the era of COVID-19 and Zika,"Thakur, V; Thakur, P; Ratho, RK",,2022,,BRAIN BEHAVIOR AND IMMUNITY,99,,25-26,WOS:000729654200005,10.1016/j.bbi.2021.09.015,,#3765,Thakur 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,"" +Epidemiology of epidemics in India,"Latif, RA; Nor, NHM","In the recent wake of the novel coronavirus outbreak, countries around the world have suffered greatly in terms of economy, health, and loss of lives. To date (5 July 2021), there have been more than 184,562,051 cases, with 3,993,319 deaths and around 168,907,181 recoveries. Not a single country has been spared; India included with 30.5 million cases, 402,000 deaths and 29.7 million recoveries. India is a vast country that has undergone and survived the onslaught of many viruses and epidemics. From the Black Death, Blue Death, Severe Acute Respiratory Syndrome (SARS), dengue and chikungunya fever, meningococcal disease, Japanese encephalitis (JE), avian influenza, Nipah virus and now, COVID-19, India has seen and experienced it all. The country saw the first spike of COVID-19 cases at the beginning of March 2020 with 50 cases recorded daily and by the end of March, the lockdown which was imposed by the Prime Minister, Narendra Modi had been extended five times as the country awaits the number of cases to reach its peak, and then hopefully, a plateau. This paper looks at the string of major pandemics and viruses that have hit this country, the global alerts and responses, the impacts and number of lives lost to all these catastrophes and the rise of pandemic-related misinformation.",2021,,SEARCH-JOURNAL OF MEDIA AND COMMUNICATION RESEARCH,13,2,109-121,WOS:000751269700008,,,#3790,Latif 2021,"Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; Tristan Naidoo (2024-10-26 00:23:44)(Screen): Outbreaks? +; ","" +"Bat virome research: the past, the present and the future","Tan, CW; Yang, XL; Anderson, DE; Wang, LF","Bats have been increasingly recognised as an exceptional reservoir for emerging zoonotic viruses for the past few decades. Recent studies indicate that the unique bat immune system may be partially responsible for their ability to co-exist with viruses with minimal or no clinical diseases. In this review, we discuss the history and importance of bat virome studies and contrast the vast difference between such studies before and after the introduction of next generation sequencing (NGS) in this area of research. We also discuss the role of discovery serology and high-throughput single cell RNA-seq in future bat virome research.",2021,,CURRENT OPINION IN VIROLOGY,49,,68-80,WOS:000677690700012,10.1016/j.coviro.2021.04.013,,#3891,Tan 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"One Health Surveillance Highlights Circulation of Viruses with Zoonotic Potential in Bats, Pigs, and Humans in Viet Nam","PREDICT Consortium; Latinne, A; Nga, NTT; Long, NV; Ngoc, PTB; Thuy, HB; Long, PT; Phuong, NT; Quang, LV; Tung, NY; Nam, VS; Duoc, VT; Thinh, ND; Schoepp, R; Ricks, K; Inui, K; Padungtod, P; Johnson, CK; Mazet, JAK; Walzer, C; Olson, SH; Fine, AE","A One Health cross-sectoral surveillance approach was implemented to screen biological samples from bats, pigs, and humans at high-risk interfaces for zoonotic viral spillover for five viral families with zoonotic potential in Viet Nam. Over 1600 animal and human samples from bat guano harvesting sites, natural bat roosts, and pig farming operations were tested for coronaviruses (CoVs), paramyxoviruses, influenza viruses, filoviruses and flaviviruses using consensus PCR assays. Human samples were also tested using immunoassays to detect antibodies against eight virus groups. Significant viral diversity, including CoVs closely related to ancestors of pig pathogens, was detected in bats roosting at the human-animal interfaces, illustrating the high risk for CoV spillover from bats to pigs in Viet Nam, where pig density is very high. Season and reproductive period were significantly associated with the detection of bat CoVs, with site-specific effects. Phylogeographic analysis indicated localized viral transmission among pig farms. Our limited human sampling did not detect any known zoonotic bat viruses in human communities living close to the bat cave and harvesting bat guano, but our serological assays showed possible previous exposure to Marburg virus-like (Filoviridae), Crimean-Congo hemorrhagic fever virus-like (Bunyaviridae) viruses and flaviviruses. Targeted and coordinated One Health surveillance helped uncover this viral pathogen emergence hotspot.",2023,,VIRUSES-BASEL,15,3,,WOS:000960118500001,10.3390/v15030790,,#3918,PREDICTConsortium 2023,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Transmission modelling of environmentally persistent zoonotic diseases: a systematic review,"Rees, EM; Minter, A; Edmunds, WJ; Lau, CL; Kucharski, AJ; Lowe, R","Transmission of many infectious diseases depends on interactions between humans, animals, and the environment. Incorporating these complex processes in transmission dynamic models can help inform policy and disease control interventions. We identified 20 diseases involving environmentally persistent pathogens (ie, pathogens that survive for more than 48 h in the environment and can cause subsequent human infections), of which indirect transmission can occur from animals to humans via the environment. Using a systematic approach, we critically appraised dynamic transmission models for environmentally persistent zoonotic diseases to quantify traits of models across diseases. 210 transmission modelling studies were identified and most studies considered diseases of domestic animals or high-income settings, or both. We found that less than half of studies validated their models to real-world data, and environmental data on pathogen persistence was rarely incorporated. Model structures varied, with few studies considering the animal-human-environment interface of transmission in the context of a One Health framework. This Review highlights the need for more data-driven modelling of these diseases and a holistic One Health approach to model these pathogens to inform disease prevention and control strategies.",2021,,LANCET PLANETARY HEALTH,5,7,E466-E478,WOS:000675402600012,,,#3937,Rees 2021,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; Tristan Naidoo (2024-11-20 21:59:53)(Select): No models found for Nipah; ,Review paper +Hendra Virus Infection in Horses: A Review on Emerging Mystery Paramyxovirus,"Khusro, A; Aarti, C; Pliego, AB; Cipriano-Salazar, M","Hendra virus (HeV) is a zoonotic paramyxovirus which causes acute and deadly infection in horses (Equus caballus). It is a rare and unmanaged emerging viral infection in horses which is harbored by bats of the genus Pteropus (Australian flying foxes or fruit bats). The virus is pleomorphic in shape and its genome contains nonsegmented negative-stranded RNA with 18234 nucleotides in length. The virus is transmitted from flying foxes to horses, horse to horse, and horse to humans. Human-to-human transmission of HeV infection is not reported yet. The infection of HeV in horses is highly variable and shows broad range of signs and lesions including distinct respiratory and neurological disorders. Currently, there are no specific antiviral drugs available for the treatment of HeV infection in horses. Vaccination is considered as prime option to prevent HeV infection in horses. A subunit vaccine, called as ""Equivac HeV vaccine"" has been approved recently for preventing this viral infection in horses. In addition, a plethora of common preventive strategies could help restrict the inter- and intra-species transmission of HeV. Considering the scanty but severe fatality cases of this mystery virus as well as lack of proper attention by veterinary scientists, this review article spotlights not only on the clinical signs, transmission, epidemiology, biology, pathogenesis, and diagnosis of HeV but also the preventive managements of this uncommon infection in horses by vaccination and other precautious strategies. (C) 2020 Elsevier Inc. All rights reserved.",2020,,JOURNAL OF EQUINE VETERINARY SCIENCE,91,,,WOS:000550127300024,10.1016/j.jevs.2020.103149,,#3960,Khusro 2020,Exclusion reason: Wrong pathogen or pathogen epidemiology or transmission not main focus; ,Hendra; Review paper +Bat-borne viruses in Africa: a critical review,"Markotter, W; Coertse, J; De Vries, L; Geldenhuys, M; Mortlock, M","In Africa, bat-borne zoonoses emerged in the past few decades resulting in large outbreaks or just sporadic spillovers. In addition, hundreds of more viruses are described without any information on zoonotic potential. We discuss important characteristics of bats including bat biology, evolution, distribution and ecology that not only make them unique among most mammals but also contribute to their potential as viral reservoirs. The detection of a virus in bats does not imply that spillover will occur and several biological, ecological and anthropogenic factors play a role in such an event. We summarize and critically analyse the current knowledge on African bats as reservoirs for corona-, filo-, paramyxo- and lyssaviruses. We highlight that important information on epidemiology, bat biology and ecology is often not available to make informed decisions on zoonotic spillover potential. Even if knowledge gaps exist, it is still important to recognize the role of bats in zoonotic disease outbreaks and implement mitigation strategies to prevent exposure to infectious agents including working safely with bats. Equally important is the crucial role of bats in various ecosystem services. This necessitates a multidisciplinary One Health approach to close knowledge gaps and ensure the development of responsible mitigation strategies to not only minimize risk of infection but also ensure conservation of the species.",2020,,JOURNAL OF ZOOLOGY,311,2,77-98,WOS:000514114800001,10.1111/jzo.12769,,#3971,Markotter 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Animal ecology; One health; Review paper +Viral Hyperparasitism in Bat Ectoparasites: Implications for Pathogen Maintenance and Transmission,"Tendu, A; Hughes, AC; Berthet, N; Wong, G","Humans continue to encroach on the habitats of wild animals, potentially bringing different species into contact that would not typically encounter each other under natural circumstances, and forcing them into stressful, suboptimal conditions. Stressors from unsustainable human land use changes are suspected to dramatically exacerbate the probability of zoonotic spillover of pathogens from their natural reservoir hosts to humans, both by increasing viral load (and shedding) and the interface between wildlife with livestock, pets and humans. Given their known role as reservoir hosts, bats continue to be investigated for their possible role as the origins of many viral outbreaks. However, the participation of bat-associated ectoparasites in the spread of potential pathogens requires further work to establish. Here, we conducted a comprehensive review of viruses, viral genes and other viral sequences obtained from bat ectoparasites from studies over the last four decades. This review summarizes research findings of the seven virus families in which these studies have been performed, including Paramyxoviridae, Reoviridae, Flaviviridae, Peribunyaviridae, Nairoviridae, Rhabdoviridae and Filoviridae. We highlight that bat ectoparasites, including dipterans and ticks, are often found to have medically important viruses and may have a role in the maintenance of these pathogens within bat populations.",2022,,MICROORGANISMS,10,6,,WOS:000818396700001,10.3390/microorganisms10061230,,#3974,Tendu 2022,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Animal ecology; Review paper +Temporal and spatial limitations in global surveillance for bat filoviruses and henipaviruses,"Becker, DJ; Crowley, DE; Washburne, AD; Plowright, RK","Sampling reservoir hosts over time and space is critical to detect epizootics, predict spillover and design interventions. However, because sampling is logistically difficult and expensive, researchers rarely perform spatio-temporal sampling of many reservoir hosts. Bats are reservoirs of many virulent zoonotic pathogens such as filoviruses and henipaviruses, yet the highly mobile nature of these animals has limited optimal sampling of bat populations. To quantify the frequency of temporal sampling and to characterize the geographical scope of bat virus research, we here collated data on filovirus and henipavirus prevalence and seroprevalence in wild bats. We used a phylogenetically controlled meta-analysis to next assess temporal and spatial variation in bat virus detection estimates. Our analysis shows that only one in four bat virus studies report data longitudinally, that sampling efforts cluster geographically (e.g. filovirus data are available across much of Africa and Asia but are absent from Latin America and Oceania), and that sampling designs and reporting practices may affect some viral detection estimates (e.g. filovirus seroprevalence). Within the limited number of longitudinal bat virus studies, we observed high heterogeneity in viral detection estimates that in turn reflected both spatial and temporal variation. This suggests that spatio-temporal sampling designs are important to understand how zoonotic viruses are maintained and spread within and across wild bat populations, which in turn could help predict and preempt risks of zoonotic viral spillover.",2019,,BIOLOGY LETTERS,15,12,,WOS:000502160500004,10.1098/rsbl.2019.0423,,#3978,Becker 2019,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Myotis fimbriatus Virome, a Window to Virus Diversity and Evolution in the Genus Myotis","Armero, A; Li, RY; Bienes, KM; Chen, X; Li, JH; Xu, SM; Chen, YH; Hughes, AC; Berthet, N; Wong, G","Significant efforts have been made to characterize viral diversity in bats from China. Many of these studies were prospective and focused mainly on Rhinolophus bats that could be related to zoonotic events. However, other species of bats that are part of ecosystems identified as virus diversity hotspots have not been studied in-depth. We analyzed the virome of a group of Myotis fimbriatus bats collected from the Yunnan Province during 2020. The virome of M. fimbriatus revealed the presence of families of pathogenic viruses such as Coronavirus, Astrovirus, Mastadenovirus, and Picornavirus, among others. The viral sequences identified in M. fimbriatus were characterized by significant divergence from other known viral sequences of bat origin. Complex phylogenetic landscapes implying a tendency of co-specificity and relationships with viruses from other mammals characterize these groups. The most prevalent and abundant virus in M. fimbriatus individuals was an alphacoronavirus. The genome of this virus shows evidence of recombination and is likely the product of ancestral host-switch. The close phylogenetic and ecological relationship of some species of the Myotis genus in China may have played an important role in the emergence of this alphacoronavirus.",2022,,VIRUSES-BASEL,14,9,,WOS:000856882300001,10.3390/v14091899,,#3980,Armero 2022,"Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-13 01:24:00)(Screen): Mutation or evolutionary rates?? Although, animal-based; ","" +A new Hendra virus genotype found in Australian flying foxes,"Wang, JN; Anderson, DE; Halpin, K; Hong, X; Chen, HL; Walker, S; Valdeter, S; van der Heide, B; Neave, MJ; Bingham, J; O'Brien, D; Eagles, D; Wang, LF; Williams, DT","Background Hendra virus (HeV) has caused lethal disease outbreaks in humans and horses in Australia. Flying foxes are the wildlife reservoir from which the virus was first isolated in 1996. Following a heat stress mortality event in Australian flying foxes in 2013, a novel HeV variant was discovered. This study describes the subsequent surveillance of Australian flying foxes for this novel virus over a nine year period using qRT-PCR testing of tissues from flying foxes submitted primarily for Australian bat lyssavirus diagnosis. Genome sequencing and characterisation of the novel HeV variant was also undertaken. Methods Spleen and kidney samples harvested from flying fox carcasses were initially screened with two real-time qRT-PCR assays specific for the prototype HeV. Two additional qRT-PCR assays were developed specific for the HeV variant first detected in samples from a flying fox in 2013. Next-generation sequencing and virus isolation was attempted from selected samples to further characterise the new virus. Results Since 2013, 98 flying foxes were tested and 11 were positive for the new HeV variant. No samples were positive for the original HeV. Ten of the positive samples were from grey-headed flying foxes (GHFF, Pteropus poliocephalus), however this species was over-represented in the opportunistic sampling (83% of bats tested were GHFF). The positive GHFF samples were collected from Victoria and South Australia and one positive Little red flying fox (LRFF, Pteropus scapulatus) was collected from Western Australia. Immunohistochemistry confirmed the presence of henipavirus antigen, associated with an inflammatory lesion in cardiac blood vessels of one GHFF. Positive samples were sequenced and the complete genome was obtained from three samples. When compared to published HeV genomes, there was 84% sequence identity at the nucleotide level. Based on phylogenetic analyses, the newly detected HeV belongs to the HeV species but occupies a distinct lineage. We have therefore designated this virus HeV genotype 2 (HeV-g2). Attempts to isolate virus from PCR positive samples have not been successful. Conclusions A novel HeV genotype (HeV-g2) has been identified in two flying fox species submitted from three states in Australia, indicating that the level of genetic diversity for HeV is broader than first recognised. Given its high genetic relatedness to HeV, HeV-g2 is a zoonotic pathogen.",2021,,VIROLOGY JOURNAL,18,1,,WOS:000706730800001,10.1186/s12985-021-01652-7,,#3983,Wang 2021,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2024-10-13 03:05:49)(Screen): Possibly an evolutionary rate?; ,Hendra +The dynamic landscape of bat borne zoonotic viruses in Australia,"Halpin, K; Durrheim, DN","This review discusses the history, epidemiology, diagnostics, clinical presentation in humans, as well as control and prevention measures, of the high-profile viruses Hendra virus (HeV) and Australian bat lyssavirus (ABLV). Since the discovery of HeV and ABLV in the 1990s, these viruses have only caused disease in areas where spill-over hosts, including humans, encounter the reservoir host.",2020,,MICROBIOLOGY AUSTRALIA,41,1,6-9,WOS:000526386600003,10.1071/MA20003,,#3985,Halpin 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Hendra; Review paper +Ecology of bats and their role in emerging zoonotic diseases: a review,"Biswas, R; Debnath, C; Samanta, ; Barua, R; Singh, AD","The order Chiroptera is the second largest order of mammals and shows great physiological and ecological diversity. These animals play significant ecological roles as prey and predator as well as facilitating pollination, seed dispersal, arthropod reduction and nutrient distribution and reutilisation in nature. Bats act as hosts to a range of viral, bacterial, fungal and parasitic zoonoses. Human activities increase the likelihood of exposure to bats, thereby increasing the opportunity for infections to spill over. Continuing ecological processes, emergence and spillover of novel pathogens in naive hosts, including humans, along with other complex natural phenomena require proper understanding that may help in predicting the next spillover. This review will discuss the ecology of bats and their role in the emergence of different zoonoses, particularly those of viral origin, in an organised manner to increase understanding of the factors that may play significant roles in spillover of these pathogens from bats to other animals, including humans.",2020,,REVUE SCIENTIFIQUE ET TECHNIQUE-OFFICE INTERNATIONAL DES EPIZOOTIES,39,3,1077-1090,WOS:000770919000034,10.20506/rst.39.3.3198,,#3988,Biswas 2020,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Common Themes in Zoonotic Spillover and Disease Emergence: Lessons Learned from Bat- and Rodent-Borne RNA Viruses,"Williams, EP; Spruill-Harrell, BM; Taylor, MK; Lee, J; Nywening, AV; Yang, ZM; Nichols, JH; Camp, JV; Owen, RD; Jonsson, CB","Rodents (order Rodentia), followed by bats (order Chiroptera), comprise the largest percentage of living mammals on earth. Thus, it is not surprising that these two orders account for many of the reservoirs of the zoonotic RNA viruses discovered to date. The spillover of these viruses from wildlife to human do not typically result in pandemics but rather geographically confined outbreaks of human infection and disease. While limited geographically, these viruses cause thousands of cases of human disease each year. In this review, we focus on three questions regarding zoonotic viruses that originate in bats and rodents. First, what biological strategies have evolved that allow RNA viruses to reside in bats and rodents? Second, what are the environmental and ecological causes that drive viral spillover? Third, how does virus spillover occur from bats and rodents to humans?",2021,,VIRUSES-BASEL,13,8,,WOS:000690085300001,10.3390/v13081509,,#3989,Williams 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Viral Zoonoses of National Importance in Ghana: Advancements and Opportunities for Enhancing Capacities for Early Detection and Response,"Suu-Ire, RD; Obodai, E; Bonney, JHK; Bel-Nono, SO; Ampofo, W; Kelly, TR","Zoonotic diseases have devastating impacts on human and animal health, livelihoods, and economies. Addressing the complex web of interrelated factors leading to zoonotic disease emergence and spread requires a transdisciplinary, cross-sectoral approach, One Health. The One Health approach, which considers the linkages between the health of people, animals, and their shared environment, presents opportunities to reduce these impacts through a more holistic coordinated strategy to understanding and mitigating disease risks. Understanding the linkages between animal, human, and environmental health risks and outcomes is critical for developing early detection systems and risk reduction strategies to address known and novel zoonotic disease threats. Nearly 70 countries across the world, including Ghana, have signed on to the Global Health Security Agenda (GHSA), which is facilitating multisectoral approaches to strengthen country capacities in the prevention and early detection of and respond to infectious disease threats. Currently, Ghana has not yet formalized a national One Health policy. The lack of a clearly defined multisectoral platform and limited collaboration among key Ghanaian Ministries, Departments, and Agencies has impacted the country's ability to effectively mitigate and respond to emerging and reemerging zoonoses. Many of these emerging zoonoses are caused by viruses, which, because of their diversity and evolutionary properties, are perceived to pose the greatest threat to global health security. Here, we review viral zoonoses of national importance and priority in Ghana, highlight recent advancements in One Health capacities, and discuss opportunities for implementing One Health approaches to mitigate zoonotic disease threats.",2021,,JOURNAL OF TROPICAL MEDICINE,2021,,,WOS:000613104300002,10.1155/2021/8938530,,#3994,Suu-Ire 2021,"Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2024-10-13 03:01:50)(Screen): Possibly a review? +; ",Review paper +An Update in Knowledge of Pigs as the Source of Zoonotic Pathogens,"Augustyniak, A; Pomorska-Mól, M","Simple Summary The observed trend of increasing numbers of humans living on the Earth will result in increased demand for food, especially foods of high nutritional value, such as meat. This phenomenon will result in the growth of the livestock population. One of the most commonly consumed foods worldwide is pork. Therefore, it is reasonable to suspect that the pig world population, in the near future, will increase as well. Pigs are prone to infections/invasions with numerous viral, bacterial, and parasitic aetiological factors. Such infections are referred to as zoonotic infections. In view of the growing number of pigs headage, the possible risk of human infection of zoonotic origin seems to be increased. Therefore, the purpose of this paper is to investigate the most up-to-date data regarding the epidemiology of several of the most significant porcine zoonoses, with available preventive measures to control them.Abstract The available data indicate that the human world population will constantly grow in the subsequent decades. This constant increase in the number of people on the Earth will lead to growth in food demand, especially in food of high nutritional value. Therefore, it is expected that the world livestock population will also increase. Such a phenomenon enhances the risk of transmitting pathogens to humans. As pig production is one of the most significant branches of the world's livestock production, zoonoses of porcine origins seem to be of particular importance. Therefore, in this review, we aim to introduce the latest data concerning, among other things, epidemiology and available preventive measures to control the most significant porcine zoonoses of viral, bacterial, and parasitic origin.",2023,,ANIMALS,13,20,,WOS:001095590900001,10.3390/ani13203281,,#3995,Augustyniak 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Crop protection practices and viral zoonotic risks within a One Health framework,"Ratnadass, A; Deguine, JP","Recent viral zoonotic epidemics have been attributed partially to the negative impact of human activities on ecosystem biodiversity. Agricultural activities, particularly conventional crop protection (CP) practices, are a major threat to global biodiversity, ecosystem health and human health. Here we review interactions between CP practices and viral zoonoses (VZs), the first time this has been done. It should be noted that a) VZs stand at the interface between human, animal and ecosystem health; b) some VZs involve arthropod vectors that are affected by CP practices; and c) some crop pests, or their natural enemies are vertebrate reservoirs/carriers of certain VZs, and their contact with humans or domestic animals is affected by CP practices. Our review encompasses examples highlighting interactions between VZs and CP practices, both efficiency improvement-based (i.e. conventional with agrochemical insecticides and rodenticides), substitution-based (i.e. mainly with physical/ mechanical or biopesticidal pest control), and redesign-based (i.e. mainly with conservation biological pest control, including some forms of crop-livestock integration). These CP practices mainly target arthropod and vertebrate pests. They also target, to a lesser extent, weeds and plant pathogens. Conventional and some physical/ mechanical control methods and some forms of biopesticidal and crop-livestock integration practices were found to have mixed outcomes in terms of VZ risk management. Conversely, practices based on biological control by habitat conservation of arthropod or vertebrate natural enemies, falling within the Agroecological Crop Protection (ACP) framework, result in VZ prevention at various scales (local to global, and short-term to longterm). ACP addresses major global challenges including climate resilience, biodiversity conservation and animal welfare, and helps integrate plant health within the extended ""One Health"" concept. (C) 2021 Elsevier B.V. All rights reserved.",2021,,SCIENCE OF THE TOTAL ENVIRONMENT,774,,,WOS:000641162000007,10.1016/j.scitotenv.2021.145172,,#3998,Ratnadass 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,One health; Review paper +"Bat-associated microbes: Opportunities and perils, an overview","Dhivahar, J; Parthasarathy, A; Krishnan, K; Kovi, BS; Pandian, GN","The potential biotechnological uses of bat-associated bacteria are discussed briefly, indicating avenues for biotechnological applications of bat-associated microbes. The uniqueness of bats in terms of their lifestyle, genomes and molecular immunology may predispose bats to act as disease reservoirs. Molecular phylogenetic analysis has shown several instances of bats harbouring the ancestral lineages of bacterial (Bartonella), protozoal (Plasmodium, Trypanosoma cruei) and viral (SARS-CoV2) pathogens infecting humans. Along with the transmission of viruses from bats, we also discuss the potential roles of bat-associated bacteria, fungi, and protozoan parasites in emerging diseases. Current evidence suggests that environmental changes and interactions between wildlife, livestock, and humans contribute to the spill-over of infectious agents from bats to other hosts. Domestic animals including livestock may act as intermediate amplifying hosts for bat-origin pathogens to transmit to humans. An increasing number of studies investigating bat pathogen diversity and infection dynamics have been published. However, whether or how these infectious agents are transmitted both within bat populations and to other hosts, including humans, often remains unknown. Metagenomic approaches are uncovering the dynamics and distribution of potential pathogens in bat microbiomes, which might improve the understanding of disease emergence and transmission. Here, we summarize the current knowledge on bat zoonoses of public health concern and flag the gaps in the knowledge to enable further research and allocation of resources for tackling future outbreaks.",2023,,HELIYON,9,12,,WOS:001129846300001,10.1016/j.heliyon.2023.e22351,,#4001,Dhivahar 2023,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Drivers and Distribution of Henipavirus-Induced Syncytia: What Do We Know?,"Gamble, A; Yeo, YY; Butler, AA; Tang, H; Snedden, CE; Mason, CT; Buchholz, DW; Bingham, J; Aguilar, HC; Lloyd-Smith, JO","Syncytium formation, i.e., cell-cell fusion resulting in the formation of multinucleated cells, is a hallmark of infection by paramyxoviruses and other pathogenic viruses. This natural mechanism has historically been a diagnostic marker for paramyxovirus infection in vivo and is now widely used for the study of virus-induced membrane fusion in vitro. However, the role of syncytium formation in within-host dissemination and pathogenicity of viruses remains poorly understood. The diversity of henipaviruses and their wide host range and tissue tropism make them particularly appropriate models with which to characterize the drivers of syncytium formation and the implications for virus fitness and pathogenicity. Based on the henipavirus literature, we summarized current knowledge on the mechanisms driving syncytium formation, mostly acquired from in vitro studies, and on the in vivo distribution of syncytia. While these data suggest that syncytium formation widely occurs across henipaviruses, hosts, and tissues, we identified important data gaps that undermined our understanding of the role of syncytium formation in virus pathogenesis. Based on these observations, we propose solutions of varying complexity to fill these data gaps, from better practices in data archiving and publication for in vivo studies, to experimental approaches in vitro.",2021,,VIRUSES-BASEL,13,9,,WOS:000702113700001,10.3390/v13091755,,#4003,Gamble 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Risk and Response to Biological Catastrophe in Lower Income Countries,"Luby, S; Arthur, R","Natural and intentional biological risks threaten human civilization, both through direct human fatality as well as follow-on effects from a collapse of the just-in-time delivery system that provides food, energy and critical supplies to communities globally. Human beings have multiple innate cognitive biases that systematically impair careful consideration of these risks. Residents of low-income countries, especially those who live in rural areas and are less dependent upon global trade, may be the most resilient communities to catastrophic risks, but low-income countries also present a heightened risk for biological catastrophe. Hotspots for the emergence of new zoonotic diseases are predominantly located in low-income countries. Crowded, poorly supplied healthcare facilities in low-income countries provide an optimal environment for new pathogens to transmit to a next host and adapt for more efficient person-to-person transmission. Strategies to address these risks include overcoming our natural biases and recognizing the importance of these risks, avoiding an over-reliance on developing specific biological countermeasures, developing generalized social and behavioral responses and investing in resilience.",2019,,GLOBAL CATASTROPHIC BIOLOGICAL RISKS,424,,85-105,WOS:000541133700007,10.1007/82_2019_16210.1007/978-3-030-36311-6,,#4012,Luby 2019,Exclusion reason: Not peer-reviewed paper; Christian Morgenstern (2024-10-20 18:56:07)(Select): book chapter; Tristan Naidoo (2024-10-13 01:58:48)(Screen): Maybe risk factors?; ,"" +Discovery and Genetic Characterization of Novel Paramyxoviruses Related to the Genus Henipavirus in Crocidura Species in the Republic of Korea,"Lee, SH; Kim, K; Kim, J; No, JS; Park, K; Budhathoki, S; Lee, J; Cho, SH; Cho, S; Lee, GY; Hwang, J; Kim, HC; Klein, TA; Uhm, CS; Kim, WK; Song, JW","Paramyxoviruses, negative-sense single-stranded RNA viruses, pose a critical threat to human public health. Currently, 78 species, 17 genera, and 4 subfamilies of paramyxoviruses are harbored by multiple natural reservoirs, including rodents, bats, birds, reptiles, and fish. Henipaviruses are critical zoonotic pathogens that cause severe acute respiratory distress and neurological diseases in humans. Using reverse transcription-polymerase chain reaction, 115 Crocidura species individuals were examined for the prevalence of paramyxovirus infections. Paramyxovirus RNA was observed in 26 (22.6%) shrews collected at five trapping sites, Republic of Korea. Herein, we report two genetically distinct novel paramyxoviruses (genus: Henipavirus): Gamak virus (GAKV) and Daeryong virus (DARV) isolated from C. lasiura and C. shantungensis, respectively. Two GAKVs and one DARV were nearly completely sequenced using next-generation sequencing. GAKV and DARV contain six genes (3 & PRIME;-N-P-M-F-G-L-5 & PRIME;) with genome sizes of 18,460 nucleotides and 19,471 nucleotides, respectively. The phylogenetic inference demonstrated that GAKV and DARV form independent genetic lineages of Henipavirus in Crocidura species. GAKV-infected human lung epithelial cells elicited the induction of type I/III interferons, interferon-stimulated genes, and proinflammatory cytokines. In conclusion, this study contributes further understandings of the molecular prevalence, genetic characteristics and diversity, and zoonotic potential of novel paramyxoviruses in shrews.
",2021,,VIRUSES-BASEL,13,10,,WOS:000715453900001,10.3390/v13102020,,#4016,Lee 2021,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Christian Morgenstern (2024-10-12 19:49:09)(Screen): evolutionary mutation rates???; ,"" +"Ophthalmic implications of biological threat agents according to the chemical, biological, radiological, nuclear, and explosives framework","Curran, EH; Devine, MD; Hartley, CD; Huang, Y; Conrady, CD; Debiec, MR; Justin, GA; Thomas, J; Yeh, S","As technology continues to evolve, the possibility for a wide range of dangers to people, organizations, and countries escalate globally. The United States federal government classifies types of threats with the capability of inflicting mass casualties and societal disruption as Chemical, Biological, Radiological, Nuclear, and Energetics/Explosives (CBRNE). Such incidents encompass accidental and intentional events ranging from weapons of mass destruction and bioterrorism to fires or spills involving hazardous or radiologic material. All of these have the capacity to inflict death or severe physical, neurological, and/or sensorial disabilities if injuries are not diagnosed and treated in a timely manner. Ophthalmic injury can provide important insight into understanding and treating patients impacted by CBRNE agents; however, improper ophthalmic management can result in suboptimal patient outcomes. This review specifically addresses the biological agents the Center for Disease Control and Prevention (CDC) deems to have the greatest capacity for bioterrorism. CBRNE biological agents, encompassing pathogens and organic toxins, are further subdivided into categories A, B, and C according to their national security threat level. In our compendium of these biological agents, we address their respective CDC category, systemic and ophthalmic manifestations, route of transmission and personal protective equipment considerations as well as pertinent vaccination and treatment guidelines.",2024,,FRONTIERS IN MEDICINE,10,,,WOS:001150704800001,10.3389/fmed.2023.1349571,,#4020,Curran 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Implications of Glycosaminoglycans on Viral Zoonotic Diseases,"Bauer, S; Zhang, FM; Linhardt, RJ","Zoonotic diseases are infectious diseases that pass from animals to humans. These include diseases caused by viruses, bacteria, fungi, and parasites and can be transmitted through close contact or through an intermediate insect vector. Many of the world's most problematic zoonotic diseases are viral diseases originating from animal spillovers. The Spanish influenza pandemic, Ebola outbreaks in Africa, and the current SARS-CoV-2 pandemic are thought to have started with humans interacting closely with infected animals. As the human population grows and encroaches on more and more natural habitats, these incidents will only increase in frequency. Because of this trend, new treatments and prevention strategies are being explored. Glycosaminoglycans (GAGs) are complex linear polysaccharides that are ubiquitously present on the surfaces of most human and animal cells. In many infectious diseases, the interactions between GAGs and zoonotic pathogens correspond to the first contact that results in the infection of host cells. In recent years, researchers have made progress in understanding the extraordinary roles of GAGs in the pathogenesis of zoonotic diseases, suggesting potential therapeutic avenues for using GAGs in the treatment of these diseases. This review examines the role of GAGs in the progression, prevention, and treatment of different zoonotic diseases caused by viruses.",2021,,DISEASES,9,4,,WOS:000735541100001,10.3390/diseases9040085,,#4024,Bauer 2021,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +1790. Single-Center Experience and Lessons Learnt from Management of Nipah Virus Outbreak in India,"Kumar A S, Anoop; T, Sohanlal; Prasad, Ganga; Gupta, Manisha; Gopal, Ajith","AbstractBackgroundNipah virus (NiV) is re-emerging zoonotic RNA virus belonging to Paramyxoviridae family. Suspecting Nipah virus in a NiV naive tropical area is a challenge. NiV management is further confounded by acute presentation, high mortality, broad species tropism, multiple modes of transmission, difficulty to diagnose and lack of definitive treatment.MethodsRecent NiV outbreak that lasted for approximately 1 month (2–29 May 2018) and resulted in 23 cases with a case-fatality rate of 91%. We present clinical summary and management of five cases managed at Baby Memorial Hospital, Kozhikode, India from May 17, 2018 to May 30, 2018 and were epidemiologically linked to the index case. All patients presented with initial nonspecific prodromal symptoms of fever, muscle pain, watery diarrhea. Median age was 53 years, four were males, median hospital stay was 3 days, median incubation period of was days. Further complications, included encephalitis with viral bronchopneumonia/acute respiratory distress syndrome (ARDS) in 100 %, patients, encephalitis with viral bronchopneumonia/ARDS with myocarditis in 60 %patients, despite attempted therapy with ribavirin all patients developed cardiorespiratory arrest and succumbed to the illness.ResultsHematological Investigations showed normal TLC with a mean of 7,920 cells/ mm3, mild thrombocytopenia (mean 1,57,800) high Hb 16.12(SD1.10), ESR 19 mm/hr, DLC-N 82% high relative neutrophilic cytosis. Normal liver and renal function, Na+ 133 meq/L. CSF analysis showed high opening pressure, 100% lymphocytic pleocytosis, mean CSF sugar 118 mg/100mL, CSF protein 73.6. CT chest -bilateral airspace opacities and ground glassing. Brain FLAIR sequence showed nonspecific hyperintensities in white matter and brainstem correlating with vasculitic changes. Laboratory diagnosis of NiV was made by Real-Time RT–PCR on throat swab, blood, urine and cerebrospinal fluid by Manipal virus research center and National Institute of Virology. Pathological autopsy was done in 2 cases and found noncontributory.ConclusionWe report clinical and public health management experience from one of the three hospitals managing the patients affected with NiV. Managing outbreaks of high infectivity requires persistent organized and committed healthcare interventionsDisclosuresAll authors: No reported disclosures.",2019,,Open Forum Infectious Diseases,6,Supplement_2,S659-S660,,10.1093/ofid/ofz360.1653,,#4050,KumarA 2019,Exclusion reason: Not peer-reviewed paper; Christian Morgenstern (2025-02-18 01:53:24)(Select): conference abstract; ,"" +"Long-term socioeconomic impact of the Nipah Virus encephalitis outbreak in Bukit Pelanduk, Negeri Sembilan, Malaysia: A mixed methods approach","NG, Chiu Wan; CHOO, Wan Yuen; CHONG, Heng Thay; DAHLUI, Maznah; GOH, Khean Jin; TAN, Chong Tin",,2009,,Neurology Asia,14,2,101-107,,,,#4058,NG 2009,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +Differences in epidemiologic and clinical features of Nipah virus encephalitis between the Malaysian and Bangladesh outbreaks,"CHONG, Heng Thay; HOSSAIN, M Jahangir; CHONG, Tin Tan",,2008,,Neurology Asia,13,,23-26,,,,#4059,CHONG 2008,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2025-02-18 02:45:25)(Select): A review/commentary?; ,"" +Late-onset Nipah virus encephalitis 11 years after the initial outbreak: A case report.,"Abdullah, Suhailah; Chang, Li-Yen; Rahmat, Kartini; Goh, Khean Jin; Tan, Chong Tin",,2012,,Neurology Asia,17,1,,,,,#4060,Abdullah 2012,Exclusion reason: Case report or case study; ,"" +Bat Viral Shedding: A Review of Seasonal Patterns and Risk Factors,"Niu, YN; Mckee, CD","Background: Bats act as reservoirs for a variety of zoonotic viruses, sometimes leading to spillover into humans and potential risks of global transmission. Viral shedding from bats is an essential prerequisite to bat-to-human viral transmission and understanding the timing and intensity of viral shedding from bats is critical to mitigate spillover risks. However, there are limited investigations on bats' seasonal viral shedding patterns and their related risk factors. We conducted a comprehensive review of longitudinal studies on bat viruses with spillover potential to synthesize patterns of seasonal viral shedding and explore associated risk factors.Methods: We extracted data from 60 reviewed articles and obtained 1085 longitudinal sampling events. We analyzed viral shedding events using entropy values to quantitatively assess whether they occur in a consistent, pulsed pattern in a given season.Results: We found that clear seasonal shedding patterns were common in bats. Eight out of seventeen species-level analyses presented clear seasonal patterns. Viral shedding pulses often coincide with bats' life cycles, especially in weaning and parturition seasons. Juvenile bats with waning maternal antibodies, pregnant bats undergoing immunity changes, and hibernation periods with decreased immune responses could be potential risk factors influencing seasonal shedding patterns.Conclusion: Based on our findings, we recommend future longitudinal studies on bat viruses that combine direct viral testing and serological testing, prioritize longitudinal research following young bats throughout their developmental stages, and broaden the geographical range of longitudinal studies on bat viruses based on current surveillance reports. Our review identified critical periods with heightened viral shedding for some viruses in bat species, which would help promote efforts to minimize spillovers and prevent outbreaks.",2025,,VECTOR-BORNE AND ZOONOTIC DISEASES,,,,WOS:001400938000001,10.1089/vbz.2024.0091,,#4062,Niu 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Risk of Nipah Virus Seroprevalence in Healthcare Workers: A Systematic Review with Meta-Analysis,"Riccò, M; Cascio, A; Costantino, C; Corrado, S; Zanella, I; Giuri, PG; Esposito, S","Nipah virus (NiV) is a zoonotic pathogen with the potential to cause human outbreaks with a high case fatality ratio. In this systematic review and meta-analysis, available evidence on NiV infections occurring in healthcare workers (HCWs) was collected and critically appraised. According to the PRISMA statement, four medical databases (PubMed, CINAHL, EMBASE, and Scopus) and the preprint repository medRixv were inquired through a specifically designed searching strategy. A total of 2593 entries were identified; of them, 16 studies were included in qualitative and quantitative analysis detailing the outcome of NiV infection on HCWs and estimates of seroprevalence among healthcare professions. All studies reported data from Asian countries: Malaysia, Singapore, Bangladesh, India (States of Kerala and Bengal), and Philippines. Seroprevalence was estimated from seven studies in 0.00% (95%CI 0.00 to 0.10) for IgM-class antibodies and 0.08% (95%CI 0.00 to 0.72) for IgG class-antibodies, but four of the sampled studies did not report any seropositive cases. A case fatality ratio of 73.52% (95%CI 34.01 to 99.74) was calculated from 10 studies. In conclusion, the present study shows that NiV may result in a possible occupational infection among HCWs involved in managing incident cases. As most NiV outbreaks occur in limited resources settings, it is reasonable that even basic preventive measures (i.e., mandatory use of PPE and appropriate isolation of incident cases with physical distancing) may be quite effective in avoiding the occurrence of new infections among HCWs.",2025,,VIRUSES-BASEL,17,1,,WOS:001404513500001,10.3390/v17010081,,#4066,Riccò 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Risk Evaluation and Mitigation Strategies for Potential Outbreaks of Nipah Virus Infection: Evidenced by the Recent Incidences in Southeast Asian Countries,"Rahman, MA; Shanjana, Y; Cronmiller, S; Zong, D; Davis, R; Ernest, J; Nguyen, J; Rawa, A; Thomas, MR; Islam, MR","BackgroundThe importance of studying Nipah virus (NiV) stems from its high fatality rates and potential for causing widespread outbreaks. Recent incidences in Southeast Asian countries highlight the urgent need for effective risk evaluation and mitigation strategies.JustificationStudying NiV in Southeast Asia is crucial due to the geographic and epidemiological significance that makes this region predominantly susceptible to the virus.ObjectivesThis study aims to identify the risk factors of NiV, evaluate current mitigation strategies, and suggest improvements against this virus.MethodsThis review incorporates articles from the PubMed database related to available NiV treatments, vaccines, mitigation strategies, transmission data, and mortality to comprise an extensive analysis of pertinent information.FindingsNiV warrants international attention, due to the high mortality rate and the rising number of human-to-human transmission vectors. NiV is difficult to diagnose early on in the infection due to its generic symptoms, and the two strains of NiV (B and M), pose significant challenges to healthcare institutions. Vaccines, such as the VSV-stored, virus-like particle-based, and mRNA-based NiV show promising results in both animal and human studies. Synthetic medicines, like Ribavirin, and favipiravir showed promising results in NiV-infected patients. Therapeutic infectious particles increased survival from 10% to roughly 70%-80% in animals. Phytochemicals, like serpentine and neoandrographolide are alternatives to NiV-G ligands. Griffithsin, an algae derivative has also shown efficacy in treating NiV infections. Artificial intelligence determines the NiV infection with an accuracy of 88.3%.ConclusionsThe strategies to control NiV must be one of a One Health approach, incorporating environmental and social factors. Extensive research on vaccines that showed promising results in animals needs to be tested for humans on a large scale. The major mitigation strategy available is the public awareness during the outbreak about NiV transmission vectors, quarantine protocol, and food hygiene.",2024,,HEALTH SCIENCE REPORTS,7,12,,WOS:001369948300001,10.1002/hsr2.70239,,#4069,Rahman 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Pandemic-Proofing: Intercepting Zoonotic Spillover Events,"Bhatia, B; Sonar, S; Khan, S; Bhattacharya, J","Zoonotic spillover events pose a significant and growing threat to global health. By focusing on preventing these cross-species transmissions, we can significantly mitigate pandemic risks. This review aims to analyze the mechanisms of zoonotic spillover events, identify key risk factors, and propose evidence-based prevention strategies to reduce future pandemic threats. Through a comprehensive literature review and analysis of major databases including PubMed, Web of Science, and Scopus from 1960-2024, we examined documented spillover events, their outcomes, and intervention strategies. This article emphasizes that targeting the root cause-the spillover event itself-is key to averting future pandemics. By analyzing historical and contemporary outbreaks, we extract crucial insights into the dynamics of zoonotic transmission. Factors underlying these events include increased human-animal contact due to habitat encroachment, agricultural intensification, and wildlife trade. Climate change, global travel, and inadequate healthcare infrastructure exacerbate risks. The diversity of potential viral reservoirs and rapid viral evolution present major challenges for prediction and prevention. Solutions include enhancing surveillance of wildlife populations, improving biosecurity measures, investing in diagnostic capabilities, and promoting sustainable wildlife management. A ""One Health"" approach integrating human, animal, and environmental health is crucial. Predictive modelling, international cooperation, and public education are key strategies. Developing pre-exposure prophylactics and post-exposure treatments is essential for mitigating outbreaks. While obstacles remain, advances in genomics and ecological modelling offer hope. A proactive, comprehensive approach addressing the root causes of spillover events is vital for safeguarding global health against future pandemics.",2024,,PATHOGENS,13,12,,WOS:001383935500001,10.3390/pathogens13121067,,#4072,Bhatia 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +An emerging zoonotic disease to be concerned about - a review of the nipah virus,"Paliwal, S; Shinu, S; Saha, R","The Nipah Virus (NiV) was discovered in 1999 in the Sungai Nipah region of Malaysia. It is one of many emerging bat-borne zoonotic viruses that threaten global health security. The Pteropus fruit bats are identified as the natural reservoirs for the virus. NiV belongs to the family of Paramyxoviridae and is mostly present in locations surrounded by water, vegetation, and controlled or protected religious areas. To date, cases of NiV have been identified in Southeast Asian regions, with the highest number of cases in Bangladesh, totalling 305, with a fatality rate of 65%. The highest mortality has been observed in the Indian region, at 73%. NiV is an emerging zoonotic disease that needs to be focused on. The median incubation period is 9.5 days and the clinical features primarily lead to either progressive encephalitis or Acute Respiratory Distress Syndrome.The diagnosis is conducted in Bio-safety level 3 or level 4 labs through Polymerase chain reaction. Human nasal swabs, throat swabs, urine, blood, and cerebrospinal fluid (CSF) are collected for diagnostic purposes. At present, there is no approved treatment or vaccine for the prevention of the disease. However, research on a vaccine against NiV is being investigated, and a subunit vaccine with NiV-G protein is found to produce potential efficacy. An outbreak in Kerala, a state in India, led to the implementation of an action plan involving lead agencies to combat the sudden surge of the virus. In the current scenario, appropriate preventive strategies are more effective in controlling the virus. However, emphasis should be placed on affordable and efficient diagnostic methods, treatment options, and vaccines to better manage the virus, considering the highest fatality caused by the virus.",2024,,JOURNAL OF HEALTH POPULATION AND NUTRITION,43,1,,WOS:001345239900002,10.1186/s41043-024-00666-5,,#4078,Paliwal 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Optimization of Bangladesh and Malaysian genotype recombinant reporter Nipah viruses for in vitro antiviral screening and in vivo disease modeling,"Lo, MK; Jain, S; Davies, KA; Sorvillo, TE; Welch, SR; Coleman-McCray, JD; Chatterjee, P; Hotard, AL; O'Neal, T; Flint, M; Ai, HW; Albariño, CG; Spengler, JR; Montgomery, JM; Spiropoulou, CF","Nipah virus (NiV) causes near-annual outbreaks of fatal encephalitis and respiratory disease in South Asia with a high mortality rate (similar to 70%). Since there are no approved therapeutics for NiV disease in humans, the WHO has designated NiV and henipaviral diseases priority pathogens for research and development. We generated a new recombinant green fluorescent reporter NiV of the circulating Bangladesh genotype (rNiV-B-ZsG) and optimized it alongside our previously generated Malaysian genotype reporter counterpart (rNiV-M-ZsG) for antiviral screening in primary-like human respiratory cell types. Validating our platform for rNiV-B-ZsG with a synthetic compound library directed against viral RNA-dependent RNA polymerases, we identified a hit compound and confirmed its sub-micromolar activity against wild-type NiV, green fluorescent reporter, and the newly constructed bioluminescent red fluorescent double reporter (rNiV-B-BREP) NiV. We furthermore demonstrated that rNiV-B-ZsG and rNiV-B-BREP viruses showed pathogenicity comparable to wild-type NiV-B in the Syrian golden hamster model of disease, supporting additional use of these tools for both pathogenesis and advanced pre-clinical studies in vivo.",2024,,ANTIVIRAL RESEARCH,231,,,WOS:001347923100001,10.1016/j.antiviral.2024.106013,,#4083,Lo 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2025-03-15 22:46:26)(Screen): CFR - but likely from another source - need full text to decide. Animal study. ; ,"" +Improving clinical care of patients in Nipah outbreaks: moving beyond ' compassionate use',"Hassan, MZ; Rojek, A; Olliaro, P; Horby, P","The 2024 Nipah outbreak in Kerala, India-its fifth in six years-and the recurring annual outbreaks in Bangladesh underscore the persistent threat posed by the Nipah virus (NiV) in the region. With a high mortality rate, human-tohuman transmission potential, and the widespread presence of Pteropus bats, the natural reservoir, NiV remains a significant epidemic threat. Despite being a WHO priority pathogen, there has been no systematic effort to improve patient care for NiVD, leading to consistently poor outcomes. Current care relies on supportive measures and the 'compassionate use' of unapproved drugs like ribavirin and remdesivir. Drugs used 'off-label' during outbreaks can become the 'standard of care' without robust evidence of their safety or efficacy, complicating the testing of new therapies and perpetuating uncertainty about their true effectiveness. To improve NiVD care, we propose four key strategies: 1) Enhance early case detection, 2) optimize supportive care to improve outcomes and create a standard for future trials, 3) adopt a syndromic approach centered on encephalitis, and 4) explore innovative trial designs tailored to low case numbers as an alternative to 'compassionate use'. By integrating these strategies, healthcare systems in NiV-endemic regions will be better equipped to manage both current and future outbreaks.",2025,,LANCET REGIONAL HEALTH - SOUTHEAST ASIA,33,,,WOS:001411105100001,10.1016/j.lansea.2024.100527,,#4094,Hassan 2025,Exclusion reason: Not peer-reviewed paper; Christian Morgenstern (2025-03-17 00:04:06)(Select): Viewpoint; ,"" +"The Current Pathogenicity and Potential Risk Assessment of Nipah Virus as Potential Cause of ""Disease X"": A Narrative Review","Mehnaz, S; Anjum, R; Mithila, FR; Dewan, SMR; Islam, MR","Background and AimsThe World Health Organization (WHO) recognized the potential for a severe international epidemic and introduced the term ""Disease X"" to classify pathogens that not yet identified. The Nipah virus (NiV) is highly dangerous due to its zoonotic nature, high mortality rate, and ability to cause severe clinical symptoms in humans. In this review, we gather the latest information on the NiV and its potential to become a significant candidate for Disease X.MethodsWe performed a thorough review of articles published in PubMed, Scopus, and Google Scholar using appropriate MeSH terms and keywords. Studies reported NiV infection were considered for this review.ResultsThe NiV exhibits different epidemiological patterns in different countries that calls for customized prevention and control strategies. Genetic analysis highlights NiV's ability to mutate that alters possible treatment options. Transmission typically involves bats as the primary reservoir, with humans becoming infected either through intermediate hosts or food. This shows NiV's complex nature, including its ability to reach the central nervous system through the olfactory nerve. Promising treatment options, such as monoclonal antibodies, antivirals, and ongoing vaccine research, provide hope. However, the virus's adaptability, human-to-human transmission, and the lack of specific antiviral therapy raise concerns about its potential to cause a global pandemic. The interconnection between animals, humans, and the environment stresses the need for a One Health approach to tackle emerging infectious disease by NiV.ConclusionGlobal collaboration, surveillance, and research investments are imperative for the preparation of future pandemics. The ongoing COVID-19 challenges underscoring the critical need for sustained scientific endeavors, global leadership, and recognition of the prominence of NiV as a candidate for the potential Disease X.",2024,,HEALTH SCIENCE REPORTS,7,12,,WOS:001369896300001,10.1002/hsr2.70241,,#4098,Mehnaz 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"A systematic review of case reports on mortality, modes of infection, diagnostic tests, and treatments for Nipah virus infection","Alla, D; Shah, DJ; Adityaraj, N; Vagdevi, M; Alla, SSM; Sree, K; Aitha, P; Bollampalli, RPR; Pathinangil, AJ; Patel, K; Issaka, Y","Background:First identified in Malaysia in 1998, the Nipah virus is a paramyxovirus related to the Hendra virus. The clinical manifestation can vary from a silent infection to a life-threatening encephalitis. The World Health Organization (WHO) has documented 25 outbreaks in South Asia, resulting in 429 cases and 307 deaths to date. Currently, there are no approved treatments for the deadly Nipah virus infection, which is a serious threat to public health worldwide. Consequently, a review was conducted to examine the geographic distribution of the Nipah virus, mortality, transmission pathways, and available methods for diagnosis and treatment.Methods:PubMed, Scopus, Web of Science, and Google Scholar servers were used to conduct a systematic search in compliance with the PRISMA guidelines. The results were tabulated and analyzed.Results:A total of 12 studies (7 case series and 5 case reports) were included in the final analysis, and 92 cases were analyzed. The most frequent symptoms were fever (80%), myalgia (47%), headache (47%), shortness of breath/acute respiratory distress syndrome (n = 44.1%), altered sensorium (44.1%), and vomiting (42.6%). The most commonly used diagnostic test was RT-PCR (45.5%). The most common route of transmission reported is direct human contact with the infected patients. Treatment modalities include interventional procedures, antiviral drugs, and symptomatic treatment. The most common complications were seizures (39.2%) and altered sensorium (35.7%). The mortality rate was 73.9%.Conclusion:It is crucial to emphasize the importance of early Nipah virus infection diagnosis and treatment to prevent life-threatening consequences.",2024,,MEDICINE,103,40,,WOS:001330301900002,10.1097/MD.0000000000039989,,#4103,Alla 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Emerging Nipah Virus With Pandemic Potential and High Mortality Rates: Is the Scientific Community Learning From Former Pandemics?,"Klingelhöfer, D; Braun, M; Naser, CA; Brüggmann, D; Groneberg, DA","As Nipah virus (NiV) infection is characterised by a possible pandemic risk, being currently limited to a small but deadly belt, the attention of other countries is essential. It has often been pointed out that NiV is an under-researched virus with a high-risk potential. This study aimed to show the global research history and status quo based on analyses of various chronological and geographical parameters, including socioeconomic characteristics and research funding. For this purpose, advanced analysis methods and visualisation techniques were applied, such as density equalisation mapping and cluster analysis. The correlation between the number of articles on NiV and the economic strength or intensity of financing per country is significant. However, the comparatively low scientific commitment of countries that are usually among the major players in global scientific publications and the declining scientific interest in NiV research combined with the prevailing knowledge gaps in NiV infectiology in conjunction with the risk of NiV spreading to other areas is extremely threatening. Research on previous viruses such as Corona and mpox shows an equally short-term interest, which has led to an insufficiently prepared situation in the run-up to outbreaks, making it hard to find quick and effective solutions. As often said, the NiV infection belt is small but deadly, but global travel and trade increase the risk of spreading. The scientific community worldwide must be prepared for the possible spread of infections that pose a pandemic risk.",2025,,REVIEWS IN MEDICAL VIROLOGY,35,2,,WOS:001438386400001,10.1002/rmv.70028,,#4116,Klingelhöfer 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Nipah virus: epidemiology, pathogenesis, treatment, and prevention","Wang, LM; Lu, DH; Yang, MS; Chai, SQ; Du, H; Jiang, H","Nipah virus (NiV) is a zoonotic paramyxovirus that has recently emerged as a crucial public health issue. It can elicit severe encephalitis and respiratory diseases in animals and humans, leading to fatal outcomes, exhibiting a wide range of host species tropism, and directly transmitting from animals to humans or through an intermediate host. Human-to-human transmission associated with recurrent NiV outbreaks is a potential global health threat. Currently, the lack of effective therapeutics or licensed vaccines for NiV necessitates the primary utilization of supportive care. In this review, we summarize current knowledge of the various aspects of the NiV, including therapeutics, vaccines, and its biological characteristics, epidemiology, pathogenesis, and clinical features. The objective is to provide valuable information from scientific and clinical research and facilitate the formulation of strategies for preventing and controlling the NiV.",2024,,FRONTIERS OF MEDICINE,18,6,969-987,WOS:001334477000001,10.1007/s11684-024-1078-2,,#4122,Wang 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus: A Zoonotic Threat Re-Emerging in the Wake of Global Public Health Challenges,"Branda, F; Ceccarelli, G; Giovanetti, M; Albanese, M; Binetti, E; Ciccozzi, M; Scarpa, F","The re-emergence of the Nipah virus (NiV) in Kerala, India, following the tragic death of a 14-year-old boy, underscores the persistent threat posed by zoonotic pathogens and highlights the growing global public health challenge. With no vaccine or curative treatment available, and fatality rates as high as 94% in past outbreaks, the Nipah virus is a critical concern for health authorities worldwide. Transmitted primarily through contact with fruit bats or consumption of contaminated food, as well as direct human-to-human transmission, NiV remains a highly lethal and unpredictable pathogen. The World Health Organization has classified Nipah as a priority pathogen due to its alarming potential to cause widespread outbreaks and even trigger the next pandemic. Recent outbreaks in India and Bangladesh, occurring with seasonal regularity, have once again exposed the vulnerability of public health systems in containing this virus. This study explores the epidemiology, ecological factors driving transmission, and the public health response to NiV, emphasizing the role of zoonotic spillovers in pandemic preparedness. As the global community grapples with an increasing number of emerging infectious diseases, the Nipah virus stands as a stark reminder of the importance of coordinated surveillance, rapid containment measures, and the urgent development of novel strategies to mitigate the impact of this re-emerging threat.",2025,,MICROORGANISMS,13,1,,WOS:001404423200001,10.3390/microorganisms13010124,,#4127,Branda 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Preventing the Re-emergence of Deadly Nipah Virus,"Tyagi, S; Sahai, S; Upadhyay, S","The Indo-Bangladesh region frequently suffers from periodic Nipah virus (NiV) outbreaks. NiV is a zoonotic agent that can be transmitted from animals to humans and also from humans to humans. NiV infections may cause deadly neurological dysfunctions with a fatality rate of up to 75%. Various methods have been developed to diagnose NiV infections at different stages of the disease, but there is currently no specific antiviral treatment or vaccine available. NiV outbreaks are mostly endemic; however, the high susceptibility of the human population, high mutation rates of the viral RNA genome and the possibility of human-to-human transmission in this era of globalization enable NiV to potentially cause a pandemic. To prevent serious consequences of NiV outbreaks, international deliberation on risk assessment, investigation of the molecular and genetic aspects of NiV, pertinent measures of surveillance and framing of general guidelines for its management should be integrated. This review underlines the basic information available in the literature and its application for further research to reach a solution for mitigation of such catastrophic infections.",2024,,INFECTIOUS MICROBES & DISEASES,6,4,170-176,WOS:001382599400001,10.1097/IM9.0000000000000165,,#4133,Tyagi 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Assessment of the general population knowledge about the emergence of Nipah virus outbreak in Bangladesh: A nationwide cross-sectional study,"Mokbul, MI; Saha, S; Tuli, SN; Nur, FB; Islam, AMK; Islam, T; Shreyan, S; Bhadra, AB; Prince, GD; Eva, IS; Tabassum, MN; Wahid, F; Bin Kayes, MI; Ziad, NH; Hawlader, MDH","The emergence of the Nipah virus (NiV) poses a significant global health threat, particularly in South-East Asian countries. This cross-sectional nationwide study is a pioneer in assessing knowledge levels of NiV outbreak among the general population in Bangladesh. It was conducted among the general population of Bangladesh from 15th January to 10th February 2024. A conveniently selected sample of individuals participated in the assessment of their knowledge about NiV. A semi-structured questionnaire was used as the data collection tool. After data curation, a total of 2121 responses that met the inclusion criteria were retained for analysis. Among 2121 participants, 69.38 % were aware of NiV. Overall, 62 % demonstrated good knowledge of the virus. The main sources of information were social media (29.9 %), television (25.41 %), educational institutions (18.95 %), newspapers (13.65 %), friends (6.39 %), and workplaces (5.91 %). Multivariate logistic regression analysis showed that participants aged 31-40 years had lower odds of poor knowledge (OR = 0.57, 95 % CI: 0.39-0.82, p < 0.01) compared to those aged 21-30. Females had higher odds of poor knowledge (OR = 1.38, 95 % CI: 1.05-1.81, p = 0.02) than males. Lower education levels were associated with higher odds of poor knowledge. Moreover, non-healthcare workers also had higher odds of poor knowledge compared to healthcare workers. There were regional differences, with varying odds in Rangpur (OR = 0.43, 95 % CI: 0.26-0.70, p < 0.01), Khulna (OR = 1.70, 95 % CI: 1.10-2.61, p = 0.01), and Mymensingh (OR = 2.77, 95 % CI: 1.70-4.53, p < 0.01) compared to Dhaka. The current study underscores the importance of evidence-based educational strategies, and may guide government and policymakers to design future targeted interventions to enhance public health literacy and mitigate the spread of NiV in Bangladesh as well as in its neighbouring countries.",2025,,JOURNAL OF VIRUS ERADICATION,11,1,,WOS:001427042500001,10.1016/j.jve.2025.100585,,#4154,Mokbul 2025,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2025-03-15 23:55:34)(Screen): Likely no relevant risk factor outcome but worth checking FTR to be sure; ,"" +"Pandemic potential of the Nipah virus and public health strategies adopted during outbreaks: Lessons from Kerala, India","Anish, TS; Aravind, R; Radhakrishnan, C; Gupta, N; Yadav, PD; Cherian, JJ; Sahay, R; Chenayil, S; Kumar, ASA; Moorkoth, AP; Ashadevi; Lathika, VR; Moideen, S; Kuriakose, SL; Reena, KJ; Mathew, T","Kerala, a south Indian state witnessed several outbreaks of Nipah encephalitis since 2018, a zoonotic viral disease with significant pandemic potential. This review highlights the relevance of surveillance and health system preparedness, infection control, early diagnosis and treatment with broad-spectrum antivirals, environmental conservation, and community engagement in mitigating Nipah outbreaks. Additionally, it emphasises the importance of developing new biologicals and anti-viral drugs to combat the disease. The article discusses the available evidence on the spillover mechanisms, genetic attributes of the circulating virus, ecological factors, risk of hospital-based superspreading, treatment outcomes and successful strategies employed in Kerala in response to the recurrent Nipah outbreaks.",2024,,PLOS GLOBAL PUBLIC HEALTH,4,12,,WOS:001418188600001,10.1371/journal.pgph.0003926,,#4158,Anish 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"PUBLIC HEALTH, INFECTIOUS DISEASES AND MEAT PACKING INDUSTRY WORKERS: AN INTEGRATIVE REVIEW","Ruiz, RC; Silva, ARD; Marra, GC; Menegon, LD; Mattos, RDOD; Diesel, LE; Franz, HCF; Okamoto, K; Menegon, FA","The meat industry is responsible for about 5.7% of Brazil's GDP, employing 639,000 workers directly, who are exposed to diverse labor risks during their work day. This research objective is to understand the set of infectious diseases that can affect these workers, based on exposure to biological risk in their work environment, creating a single list of microorganisms that cause such diseases. Method: We performed an integrative bibliographic review with pre-defined descriptors, from a search in 11 databases (COCHRANE Library; EMBASE; LILACS; PubMed/MEDLINE; SciELO; Web of Science; Scopus; ProQuest Dissertations & Theses Global- PQDT Global ; Banco de Theses da CAPES; Biblioteca Digital Brasileira de Disserta & ccedil;& otilde;es- BDTD), with the initial selection of 714 scientific publications for analysis of titles and abstracts and, among these, 111 articles for detailed analysis. Results: with the integrated analysis of the selected publications, it was possible to compile a list of most of the microorganisms that can infect workers in the meat industry, during the exercise of their work. We suggest that creating this list is the initial step towards advancing in the better understanding of this topic, with positive impacts on health and safety at work, as well as for public health in general. Conclusions: we suggest some proposals for applying the knowledge systematized in this study: a) qualify the health surveillance system for workers in meat processing plants; b) establish a mandatory vaccination program for workers in this sector; c) creation of a new annex in NR 36, where Brazilian government publicizes the set of biological agents found in these establishments, as in Annex II of NR 32; d) changes related to the classification of unhealthiness in Annex 14 (biological risks) of NR 15; e) changes in the framework for counting special activity time (special retirement) for this group of workers.",2025,,REVISTA PEGADA,26,1,1-32,WOS:001437923300001,,,#4160,Ruiz 2025,Exclusion reason: Not in English; ,Review paper +Emerging Zoonotic Viral Diseases in India: One Health Perspective,"Mishra, VH; Bankar, NJ; Tiwari, AP; Noman, O; Bandre, GR","Emerging zoonotic viral diseases pose significant public health challenges due to their high fatality rates, potential for widespread outbreaks, and profound socioeconomic impact. Human, animal, and environmental health interconnectedness highlights the need for a collaborative One Health (OH) approach to control and prevent these diseases. With its diverse ecosystems and rapid urbanization, India has witnessed several major zoonotic outbreaks over the past two decades, including Nipah virus, Kyasanur Forest Disease (KFD), H1N1 influenza, and the global COVID-19 pandemic. These outbreaks underscore the urgent need for integrated surveillance systems, early detection strategies, and sustainable interventions to mitigate future risks. Contributing factors such as deforestation, climate change, unregulated wildlife trade, and intensive farming practices exacerbate the spread of zoonotic diseases. This manuscript emphasizes the importance of a multidisciplinary OH approach, drawing on evidence-based strategies for disease surveillance, vaccination, vector control, and community engagement. By addressing these challenges through coordinated efforts, India can strengthen its preparedness and response to emerging zoonotic viral diseases while promoting public and ecological health.",2025,,JOURNAL OF PURE AND APPLIED MICROBIOLOGY,,,,WOS:001438631400001,10.22207/JPAM.19.1.40,,#4196,Mishra 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah Virus.,Rathish B; Vaishnani K,"Nipah virus (NiV) is an RNA virus that belongs to the family of Paramyxoviridae and Henipavirus genus, which also consists of Hendra virus (HeV) as well as the Cedar virus. NiV was first identified in Malaysia in 1998 and has since caused numerous outbreaks in and around South and Southeast Asia. NiV is a WHO priority pathogen due to its propensity for causing outbreaks. NiV is a zoonotic disease, with the reservoir of NiV being the Pteropus fruit bat from which spillover likely happened to pigs and subsequently humans. NiV is considered a Biological safety level 4 (BSL 4) pathogen due to the unavailability of effective treatment or vaccination against it. As it is a zoonotic disease, a One Health approach involving humans, animals, and the environment is necessary to prevent further spillovers.",2025,Jan,,,,,,,34033338,#4256,Rathish 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2025-03-15 23:21:22)(Screen): Odd journal - I think this is a review?; ,Review paper +"Spectrum of respiratory viruses identified from SARS-CoV-2-negative human respiratory tract specimens in Watansoppeng, Indonesia.",Idris I; Wahid I; Antonjaya U; Johar E; Kleib FH; Sriyani IY; Dewantari AK; Daming O; Duharing M; Sappe F; Hasan H; Yudhaputri FA; Syafruddin D; Myint KSA,"Respiratory infections account for millions of hospital admissions worldwide. The aetiology of respiratory infections can be attributed to a diverse range of pathogens including viruses, bacteria and fungi. SARS-CoV-2 (severe acute respiratory syndrome coronavirus 2)-negative specimens from Wattansoppeng city, South Sulawesi, were analysed to study the spectrum of respiratory viruses. Samples were screened for influenza virus, enterovirus, Paramyxoviridae, Nipah virus, Coronaviridae and Pneumoviridae. Of 210 specimens, 19 were positive for respiratory syncytial virus (RSV)-A, RSV-B, human parainfluenza virus type 1 (HPIV-1), HPIV-2, human rhinovirus (HRV)-A, HRV-B, HRV-C, human metapneumovirus (HMPV), influenza A virus (IAV) and coxsackievirus A6 (CV-A6). Influenza virus was of seasonal H3N2 subtype. The HMPVs were of genotypes B1 and A2a, while one RSV-A was of the ON-1 genotype. The viruses mostly affected children with unknown severity.",2024,,Access Microbiol,6,10,,,10.1099/acmi.0.000840.v3,39399533,#4260,Idris 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2025-03-16 22:00:45)(Select): NAAT test; Tristan Naidoo (2025-03-15 23:18:17)(Screen): Potential 0 sero (not sure what test they use); ,"" +Genetic Diversity and Geographic Spread of Henipaviruses.,Kane Y; Nalikka B; Tendu A; Omondi V; Bienes KM; Padane A; Duong V; Berthet N; Wong G,"Henipaviruses, such as Hendra and Nipah viruses, are major zoonotic pathogens that cause encephalitis and respiratory infections in humans and animals. The recent emergence of Langya virus in China highlights the need to understand henipavirus host diversity and geographic spread to prevent future outbreaks. Our analysis of the National Center for Biotechnology Information Virus and VIRION databases revealed ≈1,117 henipavirus sequences and 142 complete genomes. Bats (64.7%) and shrews (11.7%) dominated the host species record, and the genera Pteropus and Crocidura contained key henipavirus hosts in Asia, Australia, and Africa. Henipaviruses found in the Eidolon bat genus exhibited the highest within-host genetic distance. Phylogenetic analysis revealed batborne and rodent- or shrew-derived henipaviruses diverged ≈11,000 years ago and the first known lineage originating in Eidolon genus bats ≈9,900 years ago. Pathogenic henipaviruses diverged from their ancestors 2,800-1,200 years ago. Including atypical hosts and regions in future investigations is necessary to control future outbreaks.",2025,Mar,Emerg Infect Dis,31,3,427-437,,10.3201/eid3103.241134,40023785,#4274,Kane 2025,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"Henipaviruses: epidemiology, ecology, disease, and the development of vaccines and therapeutics.",Spengler JR; Lo MK; Welch SR; Spiropoulou CF,"SUMMARYHenipaviruses were first identified 30 years ago and have since been associated with over 30 outbreaks of disease in humans. Highly pathogenic henipaviruses include Hendra virus (HeV) and Nipah virus (NiV), classified as biosafety level 4 pathogens. In addition, NiV has been listed as a priority pathogen by the World Health Organization (WHO), the Coalition for Epidemic Preparedness Innovations (CEPI), and the UK Vaccines Research and Development Network (UKVN). Here, we re-examine epidemiological, ecological, clinical, and pathobiological studies of HeV and NiV to provide a comprehensive guide of the current knowledge and application to identify and evaluate countermeasures. We also discuss therapeutic and vaccine development efforts. Furthermore, with case identification, prevention, and treatment in mind, we highlight limitations in research and recognize gaps necessitating additional studies.",2025,Mar,Clin Microbiol Rev,38,1,e0012823,,10.1128/cmr.00128-23,39714175,#4282,Spengler 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Nipah virus outbreak trends in Bangladesh during the period 2001 to 2024: a brief review.,Bhowmik A; Hasan M; Redoy MMH; Saha G,"Nipah virus (NiV) is a zoonotic threat that has caused recurrent outbreaks in Bangladesh since 2001, raising significant public health concerns. This study provides a descriptive analysis of NiV outbreaks from 2001 to 2024, examining trends in infection and death rates and their correlation with climatic factors such as temperature, humidity, and rainfall. The findings highlight significant spikes in NiV cases during specific years, with environmental factors, particularly temperature and precipitation, showing solid correlations with outbreak patterns. The study also explores the impact of population dynamics on transmission risks, including urbanization and density. By focusing on these factors, this research supports the development of targeted public health interventions in high-risk areas, particularly in Bangladesh's northwestern and central districts, where recurrent outbreaks have been observed. These insights improve surveillance and preventive strategies for mitigating future NiV outbreaks.",2025,,Sci One Health,4,,100103,,10.1016/j.soh.2024.100103,40026914,#4286,Bhowmik 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); Tristan Naidoo (2025-03-15 23:48:25)(Screen): Potentially has original research despite being a review - so needs FTR before review tag can be added; ,Review paper +Therapeutics for Nipah virus disease: a systematic review to support prioritisation of drug candidates for clinical trials.,Chan XHS; Haeusler IL; Choy BJK; Hassan MZ; Takata J; Hurst TP; Jones LM; Loganathan S; Harriss E; Dunning J; Tarning J; Carroll MW; Horby PW; Olliaro PL,"Nipah virus disease is a bat-borne zoonosis with person-to-person transmission, a case-fatality rate of 38-75%, and well recognised potential to cause a pandemic. The first reported outbreak of Nipah virus disease occurred in Malaysia and Singapore in 1998, which has since been followed by multiple outbreaks in Bangladesh and India. To date, no therapeutics or vaccines have been approved to treat Nipah virus disease, and only few such candidates are in development. In this Review, we aim to assess the safety and efficacy of the therapeutic options (monoclonal antibodies and small molecules) for Nipah virus disease and other henipaviral diseases to support prioritisation of drug candidates for further evaluation in clinical trials. At present, sufficient evidence exists to suggest trialling 1F5, m102.4, and remdesivir (alone or in combination) for prophylaxis and early treatment of Nipah virus disease. In addition to well designed clinical efficacy trials, in-vivo pharmacokinetic-pharmacodynamic studies are needed to optimise the selection and dosing of therapeutic candidates in animal challenge and natural human infection.",2024,Nov,Lancet Microbe,,,101002,,10.1016/j.lanmic.2024.101002,39549708,#4289,ChanXHS 2024,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +Understanding and addressing the global impact: A systematic review and cross-sectional bibliometric analysis of Langya henipavirus and pre-existing severe henipaviruses.,Li JD; Liu YQ; He RQ; Huang ZG; Huang WY; Huang H; Liu ZH; Chen G,"In 2022, Langya henipavirus was identified in patients with fever in eastern China. This study provides an overview of the scientific landscape, highlights research focus areas, and outlines potential future investigations. The relevant scientific literature was systematically searched and reviewed via advanced bibliometric techniques. Over the past two decades, henipavirus research has increased at an annual rate of 8.82 %. The United States leads in research output, with the Australian Animal Health Laboratory as the top institution. Most articles are published in the Journal of Virology, identified as the most influential journal along with researcher Wang LF. Current research focuses on ""zoonosis,"" ""vaccine,"" and ""pathogenesis,"" whereas future areas may include ""molecular docking,"" ""immunoinformatics,"" ""climate change,"" ""antibodies,"" ""vaccines,"" ""glycoprotein,"" and ""ephrin-b2."" This study details henipavirus research, highlighting key players, trends, and future directions. These insights will guide future efforts to address the risks posed by novel Henipaviruses, such as Langya.",2025,Feb,J Infect Public Health,18,2,102631,,10.1016/j.jiph.2024.102631,39778464,#4308,Li 2025,Exclusion reason: Reports metrics from other papers (not original estimates or primary data); ,Review paper +"Identifying weather patterns affecting household date palm sap consumption in Bangladesh, 2013-2016.",Jackson J; Shanta IS; McKee C; Luby SP; Haider N; Sharker Y; Plowright R; Hudson P; Gurley ES,"Nipah virus spillovers via consumption of date palm sap in Bangladesh vary substantially between years and have been associated with lower winter temperatures and precipitation. However, the mechanisms driving the interannual variation and the influence of weather remain unexplained. Here we investigated the hypothesis that weather patterns change human sap consumption and explain interannual variation in observed spillovers. We analyzed responses from a nationally representative survey conducted in Bangladesh in 2013-2016 on household date palm sap consumption and weather data for each division of Bangladesh, using logistic regression to examine whether sap consumption is associated with weather variability. We found significant associations of lower minimum temperatures and precipitation with increased household sap consumption during the sap harvesting season. This relationship was largely similar within all months and divisions, and strong associations of temperature (χ2 (1, n = 5,027) = 7.74, p < 0.01) and, independently, precipitation (χ2 = 8.00, p < 0.01) remained strong after accounting for month, location, and annual sap season. Interannual variation in date palm sap consumption in Bangladesh is likely best explained by temperature and precipitation patterns, where colder, drier winter days pose a higher risk for Nipah virus spillover. The knowledge gained in this study may be valuable for targeting timing of future behavioral interventions against consumption of date palm sap in Bangladesh.",2024,,PLoS One,19,11,e0313904,,10.1371/journal.pone.0313904,39565803,#4311,Jackson 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; ,"" +"Nipah virus survey in Pteropus medius of eastern and northeastern region of India, 2022-2023.",Mohandas S; Patil D; Mathapati B; Rai V; Shete A; Belani S; Kumar A; Sahay R; Yadav PD,"INTRODUCTION: India has experienced seven outbreaks of the Nipah virus (NiV) since 2001, primarily occurring in the southern and eastern regions of the country. The southern region has been the main site for these outbreaks. In contrast, the eastern region, which borders Bangladesh, has not reported any outbreaks since 2007. However, Bangladesh continues to experience nearly annual outbreaks, indicating a significant lack of surveillance in that area. To improve the country's preparedness and to gather support for enhancing public health surveillance in eastern and northeastern states near the area affected by the NiV, a cross-sectional survey was conducted to determine the prevalence of NiV in the bat species Pteropus medius in Bihar, West Bengal, Assam, and Meghalaya states in India, which are adjacent to Bangladesh. METHODS: Throat and rectal swabs, blood samples, and organ samples were collected. Real-time quantitative reverse transcription PCR (qRT-PCR) was utilized for the detection of Nipah viral RNA, and sequencing was conducted for further confirmation. Bat IgG enzyme-linked immunosorbent assay (ELISA) was employed for antibody detection. RESULTS: Throat and rectal swab samples of 212 P. medius tested for NiV using qRT- PCR were found negative, whereas organ samples of two (one each from West Bengal and Bihar) out of the 10 bats collected tested positive. The retrieved NiV genome (~91%) showed close homology to the NiV-Bangladesh genotype indicating the circulation of two geographically distinct NiV strains in India. The seroprevalence estimated by ELISA ranged from 23 to 65% in the studied states. DISCUSSION: The serological and virological evidence obtained from the study indicates that a broader geographical area is under threat of spillover in India. It's crucial to implement a One Health approach connecting bat surveillance studies with human surveillance and risk factor studies in the region.",2024,,Front Microbiol,15,,1493428,,10.3389/fmicb.2024.1493428,39777153,#4317,Mohandas 2024,Exclusion reason: No report of parameters (including seroprevalance and other measures of interest) or transmission or historical outbreaks; Tristan Naidoo (2025-03-16 21:58:13)(Select): Reports evolutionary rate from another paper; ,Seroprevalence in animals diff --git a/nipah_workflow.R b/nipah_workflow.R new file mode 100644 index 00000000..0ec2d1dd --- /dev/null +++ b/nipah_workflow.R @@ -0,0 +1,68 @@ +library(orderly2) + +# *--------------------------- Download REDCap data ---------------------------* +# Downloads the data report from REDCap +# Requires: +# - A REDCap api +# - nipah_config.yaml.that specifies how to run the task +# (relative path: src/db_redcap_download/download_config/nipah_config.yaml) +orderly_run("db_redcap_download",list(pathogen="NIPAH")) + +# *----------------- Prepare data to generate extraction csvs -----------------* +# Prepares the REDCap data so that double and single extraction csvs can be +# created in db_extraction +# Requires: +# - target_table.csv (relative path: shared/redcap_data/target_table.csv) +# - mapping_table.csv +# (relative path: shared/redcap_data/nipah/mapping_table.csv) +# - config.yaml that specifies how to run the task +# (relative path: src/db_extraction_prep/redcap_task/nipah/config.yaml) +orderly_run("db_extraction_prep",list(pathogen="NIPAH", + orderly_download_dependency=TRUE)) + +# *------------------------- Generate extraction csvs -------------------------* +# Extracts double and single extraction csvs used the .rds file from +# db_extraction_prep +orderly_run("db_extraction",list(pathogen="NIPAH")) + +# *-------------------------- Generate fixing files ---------------------------* +# Check if any double extractions need to be fixed and generate necessary files +orderly_run("db_double",list(pathogen="NIPAH")) + +# *-------------------------- Generate final dataset --------------------------* +# Merge double_extraction, fixing, and single extraction files to create a final +# dataset +orderly_run("db_compilation", list(pathogen="NIPAH")) + +# *-------------------------------- Clean data --------------------------------* +orderly_run("db_cleaning",list(pathogen="NIPAH", debug_mode=TRUE)) + +# *------------------------------- Latex tables -------------------------------* +# Add cleaning mode +orderly_run("nipah_latex_tables", list(pathogen="NIPAH")) + +# *---------------------------- Plots and analysis ----------------------------* +orderly_run("nipah_serology", list(pathogen="NIPAH")) + +# orderly_run("nipah_map", list(pathogen="NIPAH")) + +orderly_run("nipah_transmission", list(pathogen="NIPAH")) + +orderly_run("nipah_severity", list(pathogen="NIPAH")) + +orderly_run("nipah_bsl_data_synthesis", list(pathogen="NIPAH")) + +# I assume the issue below is caused by the BSL library and other packages will +# explicitly reference MASS when a function is needed +# MASS::select masks dplyr::select +# MASS::area masks patchwork::select +select <- dplyr::select +area <- patchwork::area + +orderly_run("nipah_delays", list(pathogen="NIPAH")) + +orderly_run("nipah_summary", list(pathogen="NIPAH")) + +orderly_run("nipah_supp_tables", list(pathogen="NIPAH")) + +orderly_run("nipah_risk_factors", list(pathogen="NIPAH")) diff --git a/orderly_config.yml b/orderly_config.yml index 6c1ac52f..a42e95dd 100644 --- a/orderly_config.yml +++ b/orderly_config.yml @@ -6,4 +6,7 @@ plugins: eboladoubledb2: "Z:/Ebola/databases/NEW DOUBLE EXTRACTION DATABASES" eboladoubledb: "Z:/Ebola/databases/Double extraction databases" ebolasingledb: "Z:/Ebola/databases/Single extraction databases" - sarssingledb: "Y:/SARS/Databases/full_extraction" \ No newline at end of file + sarssingledb: "Y:/SARS/Databases/full_extraction" + zikadoubledb: "C:/Users/kem22/OneDrive - Imperial College London/outbreaks/databases/Zika_dbs/Double_old" + zikadoubledb2: "C:/Users/kem22/OneDrive - Imperial College London/outbreaks/databases/Zika_dbs/Double_new" + zikasingledb: "C:/Users/kem22/OneDrive - Imperial College London/outbreaks/databases/Zika_dbs/Single" diff --git a/priority-pathogens.Rproj b/priority-pathogens.Rproj deleted file mode 100644 index 21a4da08..00000000 --- a/priority-pathogens.Rproj +++ /dev/null @@ -1,17 +0,0 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source diff --git a/sars_workflow.R b/sars_workflow.R index f50f0aa5..96dd5ff1 100644 --- a/sars_workflow.R +++ b/sars_workflow.R @@ -31,7 +31,7 @@ location <- normalizePath(location) #} ## Download the zipped outputs from the database tasks -url <- "https://github.com/mrc-ide/priority-pathogens/releases/download/sars/sars-outputs.zip" +url <- "https://github.com/mrc-ide/priority-pathogens/releases/download/sars2/sars-outputs.zip" ## Download download.file(url, destfile = file.path(location, "sars-outputs.zip"), mode = "wb") ## unzip @@ -67,6 +67,10 @@ loc_name <- adjective_animal() orderly_location_pull_packet() # # # Sort into double extracted matching and fixing + +#orderly_run("db_extraction_prep", parameters = list(pathogen = "SARS")) +#orderly_run("db_extraction", parameters = list(pathogen = "SARS")) + orderly_run("db_double", parameters = list(pathogen = "SARS")) # # # Bring single, matching double, and fixed double together diff --git a/shared/NIPAH_Bangladesh_IEDCR.csv b/shared/NIPAH_Bangladesh_IEDCR.csv new file mode 100644 index 00000000..98c42dac --- /dev/null +++ b/shared/NIPAH_Bangladesh_IEDCR.csv @@ -0,0 +1,26 @@ +Year,Cases,Death,CFR +2001,13,9,69.23% +2002,0,0,0.00% +2003,12,8,66.67% +2004,67,50,74.63% +2005,12,11,91.67% +2006,0,0,0.00% +2007,18,9,50.00% +2008,11,7,63.64% +2009,4,1,25.00% +2010,18,16,88.89% +2011,43,37,86.05% +2012,17,12,70.59% +2013,31,25,80.65% +2014,37,16,43.24% +2015,15,11,73.33% +2016,0,0,0.00% +2017,3,2,66.67% +2018,4,2,50.00% +2019,8,7,87.50% +2020,7,5,71.43% +2021,2,0,0.00% +2022,3,2,66.67% +2023,13,10,76.92% +2024,5,5,100.00% +2025,4,4,100.00% \ No newline at end of file diff --git a/shared/bsl_data_synthesis.R b/shared/bsl_data_synthesis.R new file mode 100644 index 00000000..e105e2b2 --- /dev/null +++ b/shared/bsl_data_synthesis.R @@ -0,0 +1,419 @@ +library(BSL) +library(parallel) +library(doParallel) +library(MASS) +library(foreach) +library(ggplot2) +library(tidyverse) +library(ggsci) +library(coda) +library(bridgesampling) + +# -------------------------- +# Bayesian Synthetic Likelihood for Data Synthesis based on this paper +# https://www.tandfonline.com/doi/full/10.1080/10618600.2017.1302882?scroll=top&needAccess=true#d1e213 +# -------------------------- + + +# -------------------------- +# Dataset simulator +# -------------------------- +bsl_simulate_dataset <- function(dist, loc, phi, n) { + x <- switch(dist, + lognormal = rlnorm(n, meanlog = loc, sdlog = phi), + gamma = { mean_d <- exp(loc); shape <- phi; rate <- shape / mean_d; rgamma(n, shape = shape, rate = rate) }, + weibull = { scale <- exp(loc); shape <- phi; rweibull(n, shape = shape, scale = scale) }, + stop("Unknown dist")) + x[!is.finite(x)] <- 1e-6 + x +} + +# -------------------------- +# Simulator returning matrix +# -------------------------- +bsl_make_simulator_matrix <- function(dist, datasets, summaries_fun, summary_names) { + function(theta, M = 1) { + mu0 <- theta[1]; tau <- exp(theta[2]); phi <- exp(theta[3]) + + sims <- matrix(NA, nrow = M, ncol = length(summary_names) * length(datasets)) + colnames(sims) <- rep(summary_names, length(datasets)) + + for (m in 1:M) { + out_list <- lapply(datasets, function(d) { + n <- d$n + loc_d <- rnorm(1, mu0, tau) + x <- bsl_simulate_dataset(dist, loc_d, phi, n) + s <- summaries_fun(x) + s_vec <- numeric(length(summary_names)) + names(s_vec) <- summary_names + s_vec[names(s)] <- s + s_vec + }) + sims[m, ] <- unlist(out_list) + } + + sims[!is.finite(sims)] <- 1e-6 + sims + } +} + +# -------------------------- +# Prior function +# -------------------------- +bsl_fnPrior_hier <- function(theta) { + mu0 <- theta[1]; log_tau <- theta[2]; log_phi <- theta[3] + dnorm(mu0, 0, 5, log = TRUE) + + dnorm(log_tau, log(0.5), 1.5, log = TRUE) + + dnorm(log_phi, 0, 1.5, log = TRUE) +} + + +# -------------------------- +# Create MODEL objects +# -------------------------- +bsl_create_model <- function(dist, theta0) { + newModel( + fnSim = function(theta, M = 1) bsl_make_simulator_matrix(dist, datasets, summaries_fun, summary_names_used)(theta, M), + fnSum = summaries_fun, + fnLogPrior = bsl_fnPrior_hier, + theta0 = theta0, + test = FALSE + ) +} + + +# -------------------------- +# Bridge estimator for model comparison +# -------------------------- +bsl_bridge_estimate <- function(loglik) { + m <- max(loglik) + m + log(mean(exp(loglik - m))) +} + + + +# Convert fits_multi into coda::mcmc.list for each model +bsl_to_mcmc_list_multi <- function(fits_multi) { + lapply(fits_multi, function(chain_list) { + chains <- lapply(chain_list, function(f) { + as.mcmc(as.matrix(f@theta)) + }) + mcmc.list(chains) + }) +} + +# -------------------------- +# posterior samples for further analysis +# -------------------------- +# Helper function to compute mean and 90th percentile for each posterior draw +# corrected get_summary_stats for hierarchical theta = (mu0, log_tau, log_phi) +bsl_get_summary_stats <- function(dist_name, post, L = 50) { + # post: data.frame or matrix of posterior draws (columns in order theta1, theta2, theta3) + post <- as.matrix(post) + n_draws <- nrow(post) + + # storage: predictive mean and q90 per posterior draw + pred_mean <- numeric(n_draws) + pred_median <- numeric(n_draws) + pred_q90 <- numeric(n_draws) + + for (i in seq_len(n_draws)) { + theta <- post[i, ] + mu0 <- as.numeric(theta[1]) + tau <- exp(as.numeric(theta[2])) + phi <- exp(as.numeric(theta[3])) # phi is distribution-specific parameter in your simulator + + # draw L study-level locations (loc_d) to integrate over the hierarchical random effect + locs <- rnorm(L, mean = mu0, sd = tau) + + if (dist_name == "lognormal") { + # simulator: rlnorm(n, meanlog = loc_d, sdlog = phi) + # mean of lognormal with (meanlog = m, sdlog = s): exp(m + s^2/2) + means <- exp(locs + phi^2 / 2) + median <- qlnorm(0.5, meanlog = locs, sdlog = phi) + q90s <- qlnorm(0.9, meanlog = locs, sdlog = phi) + + } else if (dist_name == "gamma") { + # simulator used: mean_d <- exp(loc); shape <- phi; rate <- shape/mean_d + # hence mean = mean_d, where mean_d = exp(loc) + # 90th percentile: qgamma(0.9, shape=phi, rate = phi/mean_d) + mean_d <- exp(locs) + means <- mean_d + # shape = phi, rate = phi / mean_d + median <- qgamma(0.5, shape = phi, rate = phi / mean_d) + q90s <- qgamma(0.9, shape = phi, rate = phi / mean_d) + + } else if (dist_name == "weibull") { + # simulator used: scale <- exp(loc); shape <- phi + # mean of Weibull: scale * gamma(1 + 1/shape) + scales <- exp(locs) + means <- scales * gamma(1 + 1/phi) + median <- qweibull(0.5, shape = phi, scale = scales) + q90s <- qweibull(0.9, shape = phi, scale = scales) + + } else { + stop("Unknown distribution name in get_summary_stats") + } + + # integrate over locs by averaging + pred_mean[i] <- mean(means, na.rm = TRUE) + pred_q90[i] <- mean(q90s, na.rm = TRUE) + pred_median[i] <- mean(median, na.rm = TRUE) + } + + # return data.frame of predictive summaries per posterior draw + data.frame(mean = pred_mean, q90 = pred_q90, median = pred_median) +} + +# wrapper to compute posterior point estimate and 95% CrI +bsl_summarise_posteriors <- function(posterior_samples_list, L = 50) { + out <- lapply(names(posterior_samples_list), function(model_name) { + post <- posterior_samples_list[[model_name]] + stats <- bsl_get_summary_stats(model_name, post, L = L) + + data.frame( + model = model_name, + mean_mean = mean(stats$mean), + mean_low = quantile(stats$mean, 0.025), + mean_high = quantile(stats$mean, 0.975), + median_mean = mean(stats$median), + median_low = quantile(stats$median, 0.025), + median_high = quantile(stats$median, 0.975), + q90_mean = mean(stats$q90), + q90_low = quantile(stats$q90, 0.025), + q90_high = quantile(stats$q90, 0.975) + ) + }) + do.call(rbind, out) +} + + +# Posterior predictive draw samples - confirm not same as below +bsl_make_density_summary <- function(dist_name, post, + x_seq = seq(0, 20, length.out = 300), + n_draws = 200, L = 20) { + post <- as.matrix(post) + draws <- sample(1:nrow(post), min(n_draws, nrow(post))) + dens_mat <- matrix(NA, nrow = length(draws), ncol = length(x_seq)) + + for (i in seq_along(draws)) { + theta <- post[draws[i], ] + mu0 <- theta[1]; tau <- exp(theta[2]); phi <- exp(theta[3]) + + # integrate over L loc_d draws + locs <- rnorm(L, mu0, tau) + dens_l <- sapply(locs, function(loc_d) { + if (dist_name == "lognormal") { + dlnorm(x_seq, meanlog = loc_d, sdlog = phi) + } else if (dist_name == "gamma") { + mean_d <- exp(loc_d) + shape <- phi + rate <- shape / mean_d + dgamma(x_seq, shape = shape, rate = rate) + } else if (dist_name == "weibull") { + scale <- exp(loc_d) + dweibull(x_seq, shape = phi, scale = scale) + } + }) + dens_mat[i, ] <- rowMeans(dens_l) # average over L loc_d draws + } + + data.frame( + x = x_seq, + mean = apply(dens_mat, 2, mean, na.rm = TRUE), + low = apply(dens_mat, 2, quantile, 0.025, na.rm = TRUE), + high = apply(dens_mat, 2, quantile, 0.975, na.rm = TRUE), + model = dist_name + ) +} + + +# -------------------------- +# Posterior predictive density summaries (for plotting) +# -------------------------- +bsl_make_posterior_summary <- function(dist_name, post, + x_seq = seq(0, 20, length.out = 400), + n_draws = 200, L = 20, + posterior_cdf=FALSE){ + + post <- as.matrix(post) + draws <- sample(1:nrow(post), min(n_draws, nrow(post))) + dens_mat <- matrix(NA, nrow = length(draws), ncol = length(x_seq)) + for (i in seq_along(draws)) { + theta <- post[draws[i], ] + mu0 <- theta[1]; tau <- exp(theta[2]); phi <- exp(theta[3]) + locs <- rnorm(L, mu0, tau) + dens_l <- sapply(locs, function(loc_d) { + if (dist_name == "lognormal") { + dlnorm(x_seq, meanlog = loc_d, sdlog = phi) + } else if (dist_name == "gamma") { + mean_d <- exp(loc_d); shape <- phi; rate <- shape / mean_d + dgamma(x_seq, shape = shape, rate = rate) + } else if (dist_name == "weibull") { + scale <- exp(loc_d); dweibull(x_seq, shape = phi, scale = scale) + } + }) + + dens_mat[i, ] <- rowMeans(dens_l) + # dens_mat[i, ] <- t(apply(dens_l, 1, median)) + + } + + if (posterior_cdf){ + dx <- c(x_seq[1], diff(x_seq)) + dens_mat <- dens_mat * dx + dens_mat <- t(apply(dens_mat, 1, cumsum)) + } + + summary_df <- data.frame( + x = x_seq, + mean = apply(dens_mat, 2, median, na.rm = TRUE), + low = apply(dens_mat, 2, quantile, 0.025, na.rm = TRUE), + high = apply(dens_mat, 2, quantile, 0.975, na.rm = TRUE), + model = dist_name + ) + + return (summary_df) +} + +# =============================== +# AUTOMATED BSL DIAGNOSTIC REPORT +# =============================== + +bsl_to_mcmc <- function(fit) { + if (!is.null(fit@theta)) as.mcmc(as.matrix(fit@theta)) + else stop("fit@theta not found in object.") +} + +bsl_combine_chains <- function(fit_list) { + mcmc.list(lapply(fit_list, to_mcmc)) +} + +bsl_run_diagnostics <- function(fits_multi, diagnostic_dir = "bsl_diagnostics") { + results <- list() + + for (model_name in names(fits_multi)) { + message("\n🔍 Checking model: ", model_name) + model_dir <- file.path(diagnostic_dir, model_name) + if (!dir.exists(model_dir)) dir.create(model_dir) + + fit_list <- fits_multi[[model_name]] + mcmc_obj <- combine_chains(fit_list) + + # === TRACEPLOT === + png(file.path(model_dir, paste0("traceplot_", model_name, ".png")), + width = 1800, height = 1000, res = 150) + traceplot(mcmc_obj, main = paste("Traceplots for", model_name)) + dev.off() + + # === AUTOCORRELATION PLOTS === + png(file.path(model_dir, paste0("acf_", model_name, ".png")), + width = 1600, height = 800, res = 150) + par(mfrow = c(1, min(3, ncol(as.matrix(mcmc_obj[[1]])))), mar = c(4,4,2,1)) + for (p in seq_len(ncol(as.matrix(mcmc_obj[[1]])))) { + acf(as.numeric(as.matrix(mcmc_obj[[1]])[, p]), + main = paste("ACF -", model_name, "param", p)) + } + dev.off() + + # === DIAGNOSTICS === + gel <- gelman.diag(mcmc_obj) + ess <- effectiveSize(mcmc_obj) + gew <- geweke.diag(mcmc_obj) + + df <- data.frame( + parameter = names(ess), + Rhat = gel$psrf[, 1], + ESS = as.numeric(ess), + Geweke_Z = sapply(gew, function(x) x$z) + ) + df$model <- model_name + write.csv(df, file.path(model_dir, paste0("diagnostics_", model_name, ".csv")), row.names = FALSE) + + results[[model_name]] <- df + } + + # Combine results across models + all_results <- bind_rows(results) + write.csv(all_results, file.path(diagnostic_dir, "all_diagnostics_summary.csv"), row.names = FALSE) + + # === 4. Plots across models === + + # Effective sample size + p1 <- ggplot(all_results, aes(x = parameter, y = ESS, fill = model)) + + geom_bar(stat = "identity", position = position_dodge()) + + geom_hline(yintercept = 200, linetype = "dashed", color = "red") + + theme_bw() + + labs(title = "Effective Sample Size (ESS)", y = "ESS per parameter") + + # R-hat + p2 <- ggplot(all_results, aes(x = parameter, y = Rhat, color = model, group = model)) + + geom_point(size = 3, position = position_jitter(width = 0.1, height = 0)) + + geom_hline(yintercept = 1.05, linetype = "dashed", color = "red") + + theme_bw() + + labs(title = "Gelman–Rubin R̂ Diagnostic", y = "R̂ value") + + ggsave(file.path(diagnostic_dir, "effective_sample_size.png"), p1, width = 9, height = 6) + ggsave(file.path(diagnostic_dir, "gelman_rhat.png"), p2, width = 9, height = 6) + + message("\n✅ Diagnostics complete! Files saved in: ", normalizePath(diagnostic_dir)) + return(invisible(all_results)) +} + + +bsl_make_trace_df <- function(fits_multi) { + trace_dfs <- lapply(names(fits_multi), function(mdl) { + chain_list <- fits_multi[[mdl]] + bind_rows(lapply(seq_along(chain_list), function(ch) { + df <- as.data.frame(chain_list[[ch]]@theta) + colnames(df) <- paste0("theta", seq_len(ncol(df))) + df$iter <- seq_len(nrow(df)) + df$chain <- paste0("chain_", ch) + df$model <- mdl + df + })) + }) + bind_rows(trace_dfs) +} + +# =============================== GET PARAMETERS FOR THE MODELS OUT +summarise_parameters <- function(posterior_samples_list) { + require(dplyr) + out_list <- lapply(names(posterior_samples_list), function(model_name) { + post <- as.matrix(posterior_samples_list[[model_name]]) + if (ncol(post) < 3) stop("Posterior matrix must have 3 columns: mu0, log_tau, log_phi") + + mu0_draws <- post[, 1] + tau_draws <- exp(post[, 2]) # on natural scale + phi_draws <- exp(post[, 3]) # on natural scale + + df <- data.frame( + model = model_name, + parameter = c("mu0", "tau", "phi"), + mean = c(mean(mu0_draws, na.rm = TRUE), + mean(tau_draws, na.rm = TRUE), + mean(phi_draws, na.rm = TRUE)), + median = c(median(mu0_draws, na.rm = TRUE), + median(tau_draws, na.rm = TRUE), + median(phi_draws, na.rm = TRUE)), + low_2.5 = c(quantile(mu0_draws, 0.025, na.rm = TRUE), + quantile(tau_draws, 0.025, na.rm = TRUE), + quantile(phi_draws, 0.025, na.rm = TRUE)), + high_97.5 = c(quantile(mu0_draws, 0.975, na.rm = TRUE), + quantile(tau_draws, 0.975, na.rm = TRUE), + quantile(phi_draws, 0.975, na.rm = TRUE)) + ) + + # Add readable formatted CI string + df <- df %>% + mutate( + ci_95 = paste0(round(low_2.5, 3), " — ", round(high_97.5, 3)), + mean = round(mean, 3), + median = round(median, 3) + ) %>% + select(model, parameter, mean, median, ci_95, low_2.5, high_97.5) + df + }) + do.call(rbind, out_list) +} + diff --git a/shared/cleaned_outbreak_data.RDS b/shared/cleaned_outbreak_data.RDS new file mode 100644 index 00000000..a92124bc Binary files /dev/null and b/shared/cleaned_outbreak_data.RDS differ diff --git a/shared/lassa_functions.R b/shared/lassa_functions.R index 441dd8ec..62897c1e 100644 --- a/shared/lassa_functions.R +++ b/shared/lassa_functions.R @@ -1,36 +1,47 @@ #function to tidy-up all dataframes -data_curation <- function(articles, outbreaks, models, parameters, plotting,switch_first_surname=FALSE) { - +data_curation <- function(articles, outbreaks, models, parameters, plotting, switch_first_surname=FALSE) { + + if(switch_first_surname) # this is due to legacy access database issue + { + articles <- articles %>% rename(first_author_first_name=first_author_surname,first_author_surname=first_author_first_name) + } + articles <- articles %>% - mutate(refs = paste(first_author_first_name," (",year_publication,")",sep="")) %>% #define references + mutate(refs = paste(first_author_surname," (",year_publication,")",sep="")) %>% #define references use what we have from epireview function to be consistent group_by(refs) %>% mutate(counter = row_number()) %>% ungroup() %>% #distinguish same-author-same-year references mutate(new_refs = ifelse(refs %in% refs[duplicated(refs)], paste0(sub("\\)$", "", refs),letters[counter],")"), refs)) %>% select(-counter,-refs) %>% rename(refs = new_refs) - - if(dim(outbreaks)[1]>0) - { - outbreaks <- outbreaks %>% + + if(dim(outbreaks)[1]>0) { + outbreaks <- outbreaks %>% mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) } - - models <- models %>% + + models <- models %>% mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) - - parameters <- parameters %>% + + parameters <- parameters %>% mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) %>% - filter(!parameter_from_figure) - + filter(!as.logical(parameter_from_figure)) # ensure that parameter_from_figure is logical not character + + # if (pathogen == 'ZIKA'){ + # var_select <- c("parameter_value", "parameter_lower_bound", "parameter_upper_bound", + # "parameter_uncertainty_lower_value", "parameter_uncertainty_upper_value", + # "parameter_2_value", "parameter_2_lower_bound", "parameter_2_upper_bound", + # "parameter_2_uncertainty_lower_value", "parameter_2_uncertainty_upper_value") + # } else { + var_select <- c("parameter_value", "parameter_lower_bound", "parameter_upper_bound", + "parameter_uncertainty_lower_value", "parameter_uncertainty_upper_value") + # } + param4plot <- parameters %>% - mutate_at(vars(parameter_value, parameter_lower_bound, parameter_upper_bound, - parameter_uncertainty_lower_value, parameter_uncertainty_upper_value), + mutate_at(vars(all_of(var_select)), list(~ ifelse(inverse_param, 1/.x, .x))) %>% - mutate_at(vars(parameter_value, parameter_lower_bound, parameter_upper_bound, - parameter_uncertainty_lower_value, parameter_uncertainty_upper_value), + mutate_at(vars(all_of(var_select)), list(~ .x * 10^exponent)) %>% - mutate_at(vars(parameter_value,parameter_lower_bound,parameter_upper_bound, - parameter_uncertainty_lower_value,parameter_uncertainty_upper_value), #account for different units - list(~ ifelse(parameter_unit %in% "Weeks", . * 7, .))) %>% + mutate_at(vars(all_of(var_select)), #account for different units + list(~ ifelse(parameter_unit %in% "Weeks", . * 7, .))) %>% mutate(parameter_unit = ifelse(parameter_unit %in% "Weeks", "Days", parameter_unit)) %>% mutate(no_unc = is.na(parameter_uncertainty_lower_value) & is.na(parameter_uncertainty_upper_value), #store uncertainty in pu_lower and pu_upper parameter_uncertainty_lower_value = case_when( @@ -38,44 +49,58 @@ data_curation <- function(articles, outbreaks, models, parameters, plotting,swit str_detect(str_to_lower(parameter_uncertainty_singe_type),"standard deviation") & no_unc ~ parameter_value-parameter_uncertainty_single_value, str_detect(str_to_lower(parameter_uncertainty_singe_type),"variance") & no_unc ~ parameter_value-sqrt(parameter_uncertainty_single_value), str_detect(str_to_lower(parameter_uncertainty_singe_type),"standard error") & no_unc ~ parameter_value-parameter_uncertainty_single_value, - str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.05, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), - TRUE ~ parameter_uncertainty_lower_value), + str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.05, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), + TRUE ~ parameter_uncertainty_lower_value), parameter_uncertainty_upper_value = case_when( str_detect(str_to_lower(parameter_uncertainty_singe_type),"maximum") & no_unc ~ parameter_uncertainty_single_value, str_detect(str_to_lower(parameter_uncertainty_singe_type),"standard deviation") & no_unc ~ parameter_value+parameter_uncertainty_single_value, str_detect(str_to_lower(parameter_uncertainty_singe_type),"variance") & no_unc ~ parameter_value+sqrt(parameter_uncertainty_single_value), str_detect(str_to_lower(parameter_uncertainty_singe_type),"standard error") & no_unc ~ parameter_value+parameter_uncertainty_single_value, - str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.95, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), + str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.95, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), TRUE ~ parameter_uncertainty_upper_value)) %>% select(-c(no_unc)) %>% - mutate(central = coalesce(parameter_value,100*cfr_ifr_numerator/cfr_ifr_denominator,0.5*(parameter_lower_bound+parameter_upper_bound))) #central value for plotting - + mutate(central = coalesce(parameter_value, 100*cfr_ifr_numerator/cfr_ifr_denominator, 0.5*(parameter_lower_bound+parameter_upper_bound))) #central value for plotting + + # if (pathogen == 'ZIKA'){ + # # Zika database has extra variables for the variability -- all of these have _2 + # + # param4plot <- param4plot %>% + # mutate(no_unc = is.na(parameter_2_uncertainty_lower_value) & is.na(parameter_2_uncertainty_upper_value), #store uncertainty in pu_lower and pu_upper + # parameter_2_uncertainty_lower_value = case_when( + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"maximum") & no_unc ~ parameter_2_value, + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"standard deviation") & no_unc ~ parameter_2_value - parameter_2_uncertainty_single_value, + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"variance") & no_unc ~ parameter_2_value - sqrt(parameter_2_uncertainty_single_value), + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"standard error") & no_unc ~ parameter_2_value - parameter_2_uncertainty_single_value, + # str_detect(str_to_lower(distribution_2_type),"gamma") & no_unc ~ qgamma(0.05, shape = (distribution_2_par1_value / distribution_2_par2_value)^2, rate = distribution_2_par1_value / distribution_2_par2_value^2), + # TRUE ~ parameter_2_uncertainty_lower_value), + # parameter_2_uncertainty_upper_value = case_when( + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"maximum") & no_unc ~ parameter_2_uncertainty_single_value, + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"standard deviation") & no_unc ~ parameter_2_value+parameter_2_uncertainty_single_value, + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"variance") & no_unc ~ parameter_2_value+sqrt(parameter_2_uncertainty_single_value), + # str_detect(str_to_lower(parameter_2_uncertainty_single_type),"standard error") & no_unc ~ parameter_2_value+parameter_2_uncertainty_single_value, + # str_detect(str_to_lower(distribution_2_type),"gamma") & no_unc ~ qgamma(0.95, shape = (distribution_2_par1_value/distribution_2_par2_value)^2, rate = distribution_2_par1_value/distribution_2_par2_value^2), + # TRUE ~ parameter_2_uncertainty_upper_value)) + # } + if (plotting) { - parameters <- param4plot + parameters <- param4plot } else { - check_param_id <- (parameters$parameter_data_id == param4plot$parameter_data_id ) # check that parameter data ids didn't get scrambled - if(sum(check_param_id)==dim(parameters)[1]) - { + check_param_id <- (parameters$parameter_data_id == param4plot$parameter_data_id ) # check that parameter data ids didn't get scrambled + if(sum(check_param_id, na.rm = TRUE)==dim(parameters)[1]) { parameters$central <- param4plot$central } else { errorCondition('parameters not in right order to match') - } + } } - - if(dim(outbreaks)[1]>0) - { + + if(dim(outbreaks)[1]>0) { outbreaks <- outbreaks %>% mutate(outbreak_location = str_replace_all(outbreak_location, "\xe9" , "é")) } - + parameters <- parameters %>% mutate(parameter_type = str_replace_all(parameter_type, "\x96" , "–"), population_country = str_replace_all(population_country, c("昼㸴" = "ô", "�" = "ô"))) - - if(switch_first_surname) # this is due to legacy access database issue - { - articles <- articles %>% rename(first_author_first_name=first_author_surname,first_author_surname=first_author_first_name) - } - - return(list(articles = articles, outbreaks = outbreaks, + + return(list(articles = articles, outbreaks = outbreaks, models = models, parameters = parameters)) } @@ -83,66 +108,70 @@ data_curation <- function(articles, outbreaks, models, parameters, plotting,swit curation <- function(articles, outbreaks, models, parameters, plotting) { #call data_curation function (which at some stage will move to epireview) but keep curation to be backward competible df <- data_curation(articles,outbreaks,models,parameters,plotting) - - return(list(articles = df$articles, outbreaks = df$outbreaks, + + return(list(articles = df$articles, outbreaks = df$outbreaks, models = df$models, parameters = df$parameters)) } # function to produce forest plot for given dataframe forest_plot <- function(df, label, color_column, lims, text_size = 11, show_label = FALSE, custom_colours = NA) { - + stopifnot(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) == 1)#values must have same units - + df <- df %>% mutate(urefs = make.unique(refs)) %>% - mutate(urefs = factor(urefs, levels = rev(unique(urefs)))) + mutate(urefs = factor(urefs, levels = rev(unique(urefs)))) cats <- length(unique(df[[color_column]])) - + gg <- ggplot(df) + - geom_segment(aes(x = parameter_lower_bound, xend = parameter_upper_bound, - y = urefs, yend = urefs, color = .data[[color_column]]), - size = 3, alpha = 0.65) + - geom_errorbar(aes(xmin=parameter_uncertainty_lower_value, xmax=parameter_uncertainty_upper_value, - y = urefs), - width = 0.15, lwd=0.5, color = "black", alpha = 1) + - geom_point(aes(x = parameter_value, y = urefs, - shape = df$parameter_value_type, fill = .data[[color_column]]), - size = 3, stroke = 1, - color = "black", alpha = 1) - + geom_segment(aes(x = parameter_lower_bound, xend = parameter_upper_bound, + y = urefs, yend = urefs, color = .data[[color_column]]), + linewidth = 3, alpha = 0.65) + + geom_errorbar(aes(xmin=parameter_uncertainty_lower_value, xmax=parameter_uncertainty_upper_value, + y = urefs), + width = 0.15, lwd=0.5, color = "black", alpha = 1) + + geom_point(aes(x = central, y = urefs, + shape = parameter_value_type, fill = .data[[color_column]]), + size = 3, stroke = 1, + color = "black", alpha = 1) + if (all(df$parameter_class=="Reproduction number")) {gg <- gg + geom_vline(xintercept = 1, linetype = "dashed", colour = "dark grey")} - + if(sum(!is.na(custom_colours))) { - gg <- gg + - scale_shape_manual(name = "Parameter Type",values = c(Mean = 21, Median = 22, Unspecified = 24, Other = 23),breaks = c("Mean", "Median", "Unspecified", "Other")) + + gg <- gg + + scale_shape_manual(name = "Parameter Type", + values = c(Mean = 21, Median = 22, Central = 25, Unspecified = 24, Other = 23), + breaks = c("Mean", "Median", "Unspecified", "Central", "Other")) + scale_x_continuous(limits = lims, expand = c(0, 0)) + scale_y_discrete(labels = setNames(df$refs, df$urefs)) + labs(x = label, y = NULL) + scale_color_manual(values = custom_colours) + scale_fill_manual(values = custom_colours) + - theme_minimal() + - theme(panel.border = element_rect(color = "black", size = 1.25, fill = NA), + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), text = element_text(size = text_size)) } else { gg <- gg + scale_fill_lancet(palette = "lanonc") + scale_color_lancet(palette = "lanonc") + - scale_shape_manual(name = "Parameter Type",values = c(Mean = 21, Median = 22, Unspecified = 24, Other = 23),breaks = c("Mean", "Median", "Unspecified", "Other")) + + scale_shape_manual(name = "Parameter Type", + values = c(Mean = 21, Median = 22, Central = 25, Unspecified = 24, Other = 23), + breaks = c("Mean", "Median", "Unspecified", "Central", "Other")) + scale_x_continuous(limits = lims, expand = c(0, 0)) + scale_y_discrete(labels = setNames(df$refs, df$urefs)) + labs(x = label, y = NULL) + - theme_minimal() + - theme(panel.border = element_rect(color = "black", size = 1.25, fill = NA), - text = element_text(size = text_size)) + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), + text = element_text(size = text_size)) } - + if (cats == 1) { gg <- gg + guides(fill = "none", color = FALSE, shape = guide_legend(title = NULL,order = 1)) } else { gg <- gg + guides(fill = "none", color = guide_legend(title = NULL,order = 1), shape = guide_legend(title = NULL,order = 2))} - + if(show_label) - gg <- gg + geom_text_repel(aes(x = coalesce(parameter_value), y = urefs, label = population_country_ISO), nudge_y = 0.5, segment.color = "grey50" ) - #gg <- gg + geom_text_repel(aes(x = coalesce(parameter_uncertainty_upper_value,parameter_upper_bound,parameter_value), y = urefs, label = population_country_ISO), nudge_x = 1.5, segment.color = "grey90" ) + gg <- gg + geom_text_repel(aes(x = coalesce(parameter_value), y = urefs, label = population_country_ISO), nudge_y = 0.5, segment.color = "grey50" ) + #gg <- gg + geom_text_repel(aes(x = coalesce(parameter_uncertainty_upper_value,parameter_upper_bound,parameter_value), y = urefs, label = population_country_ISO), nudge_x = 1.5, segment.color = "grey90" ) return(gg) } @@ -151,32 +180,32 @@ forest_plot <- function(df, label, color_column, lims, text_size = 11, show_labe map_generic <- function(l0, l1, df, f, n, range_mp, summ_dups, long_lim, lat_lim, col_lim, color_opt, title) { - + stopifnot(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) == 1)#values must have same units - + country_list <- unique(l0$COUNTRY) - + df <- df %>% separate_longer_delim(population_country, delim = ",") %>% mutate(population_country = str_trim(population_country, side = "left"))#dataframe with expanded list of countries regional_dat <- unique(df$population_country[!is.na(df$population_location)])#countries with regional data regional_dat <- intersect(country_list,regional_dat)#only countries in country_list are plotted country_dat <- country_list[!(country_list %in% regional_dat)]#countries with national data only - - shp_regional <- l1 %>% filter(COUNTRY %in% regional_dat) - shp_country <- l0 %>% filter(COUNTRY %in% country_dat) %>% mutate(REG_CODE = str_replace_all(COUNTRY," ","")) + + shp_regional <- l1 %>% filter(COUNTRY %in% regional_dat) + shp_country <- l0 %>% filter(COUNTRY %in% country_dat) %>% mutate(REG_CODE = str_replace_all(COUNTRY," ","")) shapes <- bind_rows(shp_country,shp_regional) - + regional_NA <- shp_regional %>% group_by(COUNTRY) %>% summarise(all_codes = str_c(REG_CODE, collapse = ","))#plot all regions for non-location-specific values for countries with OTHER location-specific values - + df <- df %>% mutate(parameter_value = coalesce(parameter_value, 100*cfr_ifr_numerator/cfr_ifr_denominator)) %>% mutate(parameter_value = if(range_mp) { coalesce(parameter_value, (parameter_lower_bound + parameter_upper_bound)/2) } else {parameter_value}) %>% - mutate(REG_CODE = + mutate(REG_CODE = ifelse( population_country %in% country_dat, shp_country$REG_CODE[match(population_country,shp_country$COUNTRY)], ifelse( - is.na(population_location), + is.na(population_location), regional_NA$all_codes[match(population_country,regional_NA$COUNTRY)], case_when( population_country == "Benin" ~ str_replace_all(population_location, c("Central Region" = "BJ04,BJ05,BJ07,BJ12")), @@ -193,57 +222,59 @@ map_generic <- function(l0, l1, df, f, n, range_mp, summ_dups, mutate(REG_CODE = str_replace_all(REG_CODE, " ", "")) %>% mutate(REG_CODE = sapply(str_split(REG_CODE, ","), function(x) paste(unique(x), collapse = ","))) %>% #remove duplicate regions for each value separate_longer_delim(REG_CODE, delim = ",")#broadcast multi-region values - + if (summ_dups=="mean") { - df <- df %>% group_by(REG_CODE) %>% + df <- df %>% group_by(REG_CODE) %>% mutate(value = mean(parameter_value)) %>% distinct(REG_CODE,value) } else if (summ_dups=="most_recent") { - df <- df %>% group_by(REG_CODE) %>% - mutate(value = ifelse(all(is.na(population_study_start_year)), + df <- df %>% group_by(REG_CODE) %>% + mutate(value = ifelse(all(is.na(population_study_start_year)), first(parameter_value), parameter_value[which.max(!is.na(population_study_start_year))])) %>% distinct(REG_CODE, value) } else if (summ_dups=="max_sample") { - df <- df %>% group_by(REG_CODE) %>% - mutate(value = ifelse(all(is.na(population_sample_size)), + df <- df %>% group_by(REG_CODE) %>% + mutate(value = ifelse(all(is.na(population_sample_size)), first(parameter_value), parameter_value[which.max(!is.na(population_sample_size))])) %>% distinct(REG_CODE, value) } else {stop("Error: choose summary option for duplicate REG_CODEs")} - - shapes <- shapes %>% left_join(df,by=c('REG_CODE')) - + + shapes <- shapes %>% left_join(df,by=c('REG_CODE')) + gg <- ggplot() + - geom_sf(data = shapes, lwd = 0.3, col = "grey40", aes(fill = value)) + - geom_sf(data = l0, lwd = 0.7, col = "black", fill = NA) + - scale_fill_viridis_c(option = color_opt, direction = -1, na.value = "grey80", - limits = col_lim) + - geom_point(data = f, aes(x = longitude, y = latitude, color = "Outbreak"), shape = 8, size = 2.5, stroke = 1.5) + - scale_color_manual(values = c("Outbreak" = "green1")) + - geom_text(data = n, aes(x = longitude, y = latitude, label = c_name), size = 3.4, fontface = 'italic', color = "black") + - coord_sf(xlim = long_lim, ylim = lat_lim) + - theme_void() + - guides(fill = guide_colorbar(title = NULL,order = 1), color = guide_legend(title = NULL)) + - theme(legend.key.size = unit(2, "lines"), legend.position = c(0.07, 0.5), legend.text = element_text(size = 12)) + - annotation_scale(location = "bl", width_hint = 0.2) + - annotation_north_arrow(location = "bl", which_north = "true", pad_y = unit(0.4, "in"), style = north_arrow_fancy_orienteering) + - annotation_custom(grob = rectGrob(gp = gpar(col = "black", fill = NA, lwd = 3)), - xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) + - ggtitle(title) - #geom_text(data = f %>% filter(type == "Treatment Centre"), aes(x = longitude, y = latitude, color = type), label = "T", size = 5, fontface='bold') + - #scale_color_manual(values = c(Outbreak = "green1", "Treatment Centre" = "blue")) + - #guides(fill = guide_colorbar(title = NULL), color = guide_legend(title = NULL, override.aes = list(shape = c(8,NA)))) + - #scale_shape_manual(values = c(circle = 21, square = 22, triangle = 24)) + - #scale_color_manual(values = c(blue = "blue", green = "green")) + - #geom_emoji(data=f, aes(longitude,latitude), emoji = "", size=0.03) + - + geom_sf(data = shapes, lwd = 0.3, col = "grey40", aes(fill = value)) + + geom_sf(data = l0, lwd = 0.7, col = "black", fill = NA) + + scale_fill_viridis_c(option = color_opt, direction = -1, na.value = "grey80", + limits = col_lim) + + geom_point(data = f, aes(x = longitude, y = latitude, color = "Outbreak"), shape = 8, size = 2.5, stroke = 1.5) + + scale_color_manual(values = c("Outbreak" = "green1")) + + geom_text(data = n, aes(x = longitude, y = latitude, label = c_name), size = 3.4, fontface = 'italic', color = "black") + + coord_sf(xlim = long_lim, ylim = lat_lim) + + theme_void() + + guides(fill = guide_colorbar(title = NULL,order = 1), color = guide_legend(title = NULL)) + + theme(legend.key.size = unit(2, "lines"), legend.position = c(0.07, 0.5), legend.text = element_text(size = 12)) + + annotation_scale(location = "bl", width_hint = 0.2) + + annotation_north_arrow(location = "bl", which_north = "true", pad_y = unit(0.4, "in"), style = north_arrow_fancy_orienteering) + + annotation_custom(grob = rectGrob(gp = gpar(col = "black", fill = NA, lwd = 3)), + xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) + + ggtitle(title) + #geom_text(data = f %>% filter(type == "Treatment Centre"), aes(x = longitude, y = latitude, color = type), label = "T", size = 5, fontface='bold') + + #scale_color_manual(values = c(Outbreak = "green1", "Treatment Centre" = "blue")) + + #guides(fill = guide_colorbar(title = NULL), color = guide_legend(title = NULL, override.aes = list(shape = c(8,NA)))) + + #scale_shape_manual(values = c(circle = 21, square = 22, triangle = 24)) + + #scale_color_manual(values = c(blue = "blue", green = "green")) + + #geom_emoji(data=f, aes(longitude,latitude), emoji = "", size=0.03) + + return(gg) } #wrapper function for metamean -metamean_wrap <- function(dataframe, estmeansd_method, - plot_study, digits, lims, colour, label, - width, height, resolution, subgroup = NA, sort_by_subg = FALSE, colgap_shift = 0){ - + + +metamean_wrap <- function(dataframe, estmeansd_method, + plot_study, digits, lims, colour, label, + width, height, resolution, subgroup = NA, sort_by_subg = FALSE, colgap_shift = 0){ + dataframe <- epireview::filter_df_for_metamean(dataframe) dataframe <- dataframe[!is.na(dataframe$id),] if(!is.na(subgroup)) @@ -263,17 +294,17 @@ metamean_wrap <- function(dataframe, estmeansd_method, subgroup = dataframe[[subgroup]], sm = "MRAW", method.tau = "ML") - + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = TRUE, pooled.events = TRUE, study.results = plot_study, print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, - digits = digits, digits.sd = digits, digits.weight = digits, + digits = digits, digits.sd = digits, digits.weight = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 10, colgap.forest.left = paste0( colgap_shift,"cm")) - dev.off() + dev.off() } else { mtan <- metamean(data = dataframe, studlab = refs, @@ -289,29 +320,29 @@ metamean_wrap <- function(dataframe, estmeansd_method, method.sd = estmeansd_method, sm = "MRAW", method.tau = "ML") - + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = TRUE, pooled.events = TRUE, study.results = plot_study, - digits = digits, digits.sd = digits, digits.weight = digits, + digits = digits, digits.sd = digits, digits.weight = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 10) dev.off() } - + gg <- png::readPNG("temp.png", native = TRUE) file.remove("temp.png") gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) return(list(result = mtan, plot = gg)) -} +} ## THIS IS INITIAL VERSION ONLY -- WORK IN PROGRESS -metagen_wrap <- function(dataframe, estmeansd_method, - plot_study, digits, lims, colour, label, - width, height, resolution, subgroup = NA, sort_by_subg = FALSE){ - +metagen_wrap <- function(dataframe, estmeansd_method, + plot_study, digits, lims, colour, label, + width, height, resolution, subgroup = NA, sort_by_subg = FALSE){ + #dataframe <- epireview::filter_df_for_metamean(dataframe) # must have the correct columns df <- dataframe @@ -319,7 +350,7 @@ metagen_wrap <- function(dataframe, estmeansd_method, "parameter_value_type", "parameter_uncertainty_singe_type", "parameter_uncertainty_type", "parameter_uncertainty_lower_value", "parameter_uncertainty_upper_value") - + if (!all(cols_needed %in% colnames(df))) { cols_missing <- cols_needed[!cols_needed %in% colnames(df)] stop( @@ -328,12 +359,12 @@ metagen_wrap <- function(dataframe, estmeansd_method, call. = FALSE ) } - + ## Ensure that there is a single parameter type present if(length(unique(df$parameter_type)) != 1) { stop("parameter_type must be the same across all values.", call. = FALSE) } - + ## First check that there are no rows where a value is present but unit is ## missing, or vice versa if(any(is.na(df$parameter_value) & !is.na(df$parameter_unit))) { @@ -342,38 +373,38 @@ metagen_wrap <- function(dataframe, estmeansd_method, removed.") df <- filter(df,!( is.na(.data[["parameter_value"]]) & !is.na(.data[["parameter_unit"]]) )) } - + if(any(!is.na(df$parameter_value) & is.na(df$parameter_unit))) { message("parameter_unit is missing but parameter_value is present. Rows with non-NA parameter_value and NA parameter_unit will be removed." ) - df <- filter(df,!( is.na(.data[["parameter_value"]]) & + df <- filter(df,!( is.na(.data[["parameter_value"]]) & !is.na(.data[["parameter_unit"]]) )) } - + # values of the parameter must all have the same units if(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) != 1) { msg1 <- "parameter_unit must be the same across all values." msg2 <- "Consider calling delays_to_days() if you are working with delays." stop(paste(msg1, msg2), call. = FALSE) } - + # For this meta analysis don't enforce that we need to have sample sizes # df <- df %>% filter(!is.na(.data[["population_sample_size"]])) %>% # filter(!is.na(.data[["parameter_value"]])) %>% # filter( - # (.data[["parameter_value_type"]] == 'Mean' & - # grepl(x = tolower(.data[["parameter_uncertainty_singe_type"]]), + # (.data[["parameter_value_type"]] == 'Mean' & + # grepl(x = tolower(.data[["parameter_uncertainty_singe_type"]]), # pattern = 'standard deviation')) | - # (.data[["parameter_value_type"]] == 'Median' & - # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), + # (.data[["parameter_value_type"]] == 'Median' & + # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), # pattern = 'iqr')) | - # (.data[["parameter_value_type"]] == 'Median' & - # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), + # (.data[["parameter_value_type"]] == 'Median' & + # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), # pattern = 'range')) # ) - + df <- mutate( df, xbar = ifelse( @@ -400,16 +431,16 @@ metagen_wrap <- function(dataframe, estmeansd_method, .data[["parameter_uncertainty_upper_value"]], NA ) ) - + CI_level <- as.double(substr(df$parameter_uncertainty_type,1,2))/100 CI_level_adj <- CI_level + (1-CI_level)/2 SE <- (df$parameter_uncertainty_upper_value-df$parameter_uncertainty_lower_value)/(2* qnorm(CI_level_adj)) ln_case <- !is.na(str_detect(str_to_lower(df$distribution_type),'log')) SE[ln_case] <- (df$parameter_uncertainty_upper_value[ln_case]-df$parameter_uncertainty_lower_value[ln_case])/(2* qlnorm(CI_level_adj[ln_case])) - df$SE <- SE - + df$SE <- SE + dataframe <- df %>% filter(!is.na(SE)) - + if(!is.na(subgroup)) { mtan <- metagen(data = dataframe, @@ -428,17 +459,17 @@ metagen_wrap <- function(dataframe, estmeansd_method, subgroup = dataframe[[subgroup]], sm = "R0", method.tau = "REML") - + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = TRUE, pooled.events = TRUE, study.results = plot_study, print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, - digits = digits, digits.sd = digits, digits.weight = digits, + digits = digits, digits.sd = digits, digits.weight = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 10) - dev.off() + dev.off() } else { mtan <- metagen(data = dataframe, TE = parameter_value, @@ -456,101 +487,104 @@ metagen_wrap <- function(dataframe, estmeansd_method, method.sd = estmeansd_method, sm = "R0", method.tau = "REML" - ) - + ) + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = TRUE, pooled.events = TRUE, study.results = plot_study, - digits = digits, digits.sd = digits, digits.weight = digits, + digits = digits, digits.sd = digits, digits.weight = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 10) dev.off() } - + gg <- png::readPNG("temp.png", native = TRUE) file.remove("temp.png") gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) return(list(result = mtan, plot = gg)) -} +} #wrapper function for metaprop -metaprop_wrap <- function(dataframe, subgroup, - plot_pooled, sort_by_subg, plot_study, digits, colour, - width, height, resolution, - at = seq(0,1,by=0.2), xlim = c(0,1)){ - +metaprop_wrap <- function(dataframe, subgroup, + studylabels = "refs", + plot_pooled, sort_by_subg, plot_study, digits, colour, + width, height, resolution, xlabel = 'Case Fatality Ratio', + at = seq(0,1,by=0.2), xlim = c(0,1)){ + stopifnot(length(unique(dataframe$parameter_unit[!is.na(dataframe$parameter_unit)])) == 1)#values must have same units - - dataframe <- dataframe %>% filter(!is.na(cfr_ifr_denominator)) %>% - filter(!(is.na(cfr_ifr_numerator)&is.na(parameter_value))) %>% - mutate(cfr_ifr_numerator = case_when( - is.na(cfr_ifr_numerator) & !is.na(parameter_value) ~ round((parameter_value/100)*cfr_ifr_denominator), - TRUE ~ cfr_ifr_numerator)) - + + dataframe <- dataframe %>% filter(!is.na(cfr_ifr_denominator)) %>% + filter(!(is.na(cfr_ifr_numerator)&is.na(parameter_value))) %>% + mutate(cfr_ifr_numerator = case_when( + is.na(cfr_ifr_numerator) & !is.na(parameter_value) ~ round((parameter_value/100)*cfr_ifr_denominator), + TRUE ~ cfr_ifr_numerator)) + if(!is.na(subgroup)) { mtan <- metaprop(data = dataframe, - studlab = refs, - event = cfr_ifr_numerator, - n = cfr_ifr_denominator, + studlab = dataframe[[studylabels]], + event = cfr_ifr_numerator, + n = cfr_ifr_denominator, subgroup = dataframe[[subgroup]], - sm = "PLOGIT", - method="GLMM", + sm = "PLOGIT", + method="GLMM", method.tau = "ML") - + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = plot_pooled, pooled.events = TRUE, - print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, - study.results = plot_study, - digits = digits, + print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, + study.results = plot_study, + sortvar = TE, + digits = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, col.subgroup = "black", col.inside = "black", weight.study = "same", #col.square.lines = "green", col.square = "blue", #not working - at = at, xlim = xlim, xlab="Case Fatality Ratio", fontsize=11) - dev.off() + at = at, xlim = xlim, xlab=xlabel, fontsize=11) + dev.off() } else { mtan <- metaprop(data = dataframe, - studlab = refs, - event = cfr_ifr_numerator, - n = cfr_ifr_denominator, - sm = "PLOGIT", - method="GLMM", + studlab = dataframe[[studylabels]], + event = cfr_ifr_numerator, + n = cfr_ifr_denominator, + sm = "PLOGIT", + method="GLMM", method.tau = "ML") - + png(file = "temp.png", width = width, height = height, res = resolution) forest(mtan, layout = "RevMan5", overall = plot_pooled, pooled.events = TRUE, - study.results = plot_study, - digits = digits, + study.results = plot_study, + sortvar = TE, + digits = digits, col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, col.subgroup = "black", col.inside = "black", weight.study = "same", #col.square.lines = "green", col.square = "blue", #not working - at = at, xlim = xlim, xlab="Case Fatality Ratio", fontsize=11) + at = at, xlim = xlim, xlab=xlabel, fontsize=11) dev.off() } - - + + pg <- png::readPNG("temp.png", native = TRUE) file.remove("temp.png") gg <- wrap_elements(plot = rasterGrob(pg, interpolate = TRUE)) return(list(result = mtan, plot = gg)) -} +} #function to plot pdfs for given dataframe and inputted distribution types pdf_generic <- function(meta, model, dists, lims, label) { - + x_values <- seq(lims[1],lims[2], by = 0.01) - + mean <- meta[[paste("TE.", model, sep="")]] se_m <- meta[[paste("seTE.", model, sep="")]] sd_p <- sqrt(sum((meta$n-1)*(meta$sd^2))/(sum(meta$n)-meta$k)) r_mean <- rnorm(10000,mean,se_m) - + dist_data <- data.frame() for (j in 1:length(dists)){ pdfs <- matrix(0, ncol = length(x_values), nrow = length(r_mean)) @@ -579,25 +613,25 @@ pdf_generic <- function(meta, model, dists, lims, label) { } else { y_central <- rep(0, times = length(x_values)) } - y_bounds <- apply(pdfs, 2, function(column) + y_bounds <- apply(pdfs, 2, function(column) {quantile(column, c(0.025, 0.975))}) - df <- data.frame(x_values = x_values, dist = rep(dists[j], length(x_values)), - y_l = y_bounds[1,], y_u = y_bounds[2,], y_central = y_central) + df <- data.frame(x_values = x_values, dist = rep(dists[j], length(x_values)), + y_l = y_bounds[1,], y_u = y_bounds[2,], y_central = y_central) dist_data <- rbind(dist_data,df) } - + gg <- ggplot() + - geom_ribbon(data = dist_data, aes(x = x_values, ymin = y_l, ymax = y_u, fill = dist), alpha = 0.2) + + geom_ribbon(data = dist_data, aes(x = x_values, ymin = y_l, ymax = y_u, fill = dist), alpha = 0.2) + geom_line(data = dist_data, aes(x = x_values, y = y_central, color = dist), size = 0.25) + scale_fill_lancet(palette = "lanonc") + scale_color_lancet(palette = "lanonc") + scale_x_continuous(limits = lims, expand = c(0, 0)) + scale_y_continuous(limits = c(0, 0.151), expand = c(0, 0)) + - labs(x = label, y = "Probability Density") + - theme_minimal() + + labs(x = label, y = "Probability Density") + + theme_minimal() + theme(panel.border = element_rect(color = "black", size = 1.25, fill = NA), legend.position = c(1,1), legend.justification = c(1,1), legend.box.just = "left") + - guides(color = "none", fill = guide_legend(title = NULL,order = 1)) - + guides(color = "none", fill = guide_legend(title = NULL,order = 1)) + return(gg) } @@ -605,19 +639,19 @@ pdf_generic <- function(meta, model, dists, lims, label) { insert_blank_rows <- function(dataframe, column) { tlabels <- as.character(unique(dataframe[[column]])) - + df_split <- split(dataframe, dataframe[[column]]) - + dataframe <- do.call(rbind, lapply(df_split, function(group) { rbind(group, rep(NA, ncol(group))) })) - + dataframe <- rbind(NA,dataframe)#add NAs for top row header dataframe <- dataframe[-nrow(dataframe),]#remove NAs at bottom dataframe[[column]] <- NULL#remove column - - inds <- which(!complete.cases(dataframe)) + + inds <- which(is.na(dataframe[,1]))#which(!complete.cases(dataframe)) dataframe[inds,1] <- tlabels dataframe[[1]][inds] <- paste0("\\bfseries{", dataframe[[1]][inds], "}") dataframe <- dataframe %>% mutate_all(~ ifelse(is.na(.), "", .)) -} \ No newline at end of file +} diff --git a/shared/nipah/bsl_model_fits.RDS b/shared/nipah/bsl_model_fits.RDS new file mode 100644 index 00000000..7e0b073b Binary files /dev/null and b/shared/nipah/bsl_model_fits.RDS differ diff --git a/shared/nipah_bangladesh_district_data.csv b/shared/nipah_bangladesh_district_data.csv new file mode 100644 index 00000000..5ac6e67b --- /dev/null +++ b/shared/nipah_bangladesh_district_data.csv @@ -0,0 +1,34 @@ +Division,District,Grand Total +Barishal Division,Jhalakati,1 +Chattogram Division,Cumilla,1 +Dhaka Division,Dhaka,1 +Dhaka Division,Faridpur,71 +Dhaka Division,Gopalganj,8 +Dhaka Division,Madaripur,6 +Dhaka Division,Manikganj,17 +Dhaka Division,Rajbari,30 +Dhaka Division,Sariatpur,2 +Dhaka Division,Tangail,12 +Khulna Division,Chuadanga,1 +Khulna Division,Jhenaidah,2 +Khulna Division,Khulna,1 +Khulna Division,Kushtia,12 +Khulna Division,Magura,6 +Khulna Division,Meherpur,13 +Khulna Division,Norail,1 +Mymensingh,Mymensingh,2 +Rajshahi Division,Bogura,3 +Rajshahi Division,Chapainawabganj,1 +Rajshahi Division,Naogaon,25 +Rajshahi Division,Natore,8 +Rajshahi Division,Pabna,4 +Rajshahi Division,Rajshahi,12 +Rangpur Division,Dinajpur,9 +Rangpur Division,Gaibandha,1 +Rangpur Division,Jaipurhat,10 +Rangpur Division,Kurigram,3 +Rangpur Division,Lalmonirhat,24 +Rangpur Division,Nilphamari,6 +Rangpur Division,Panchagarh,1 +Rangpur Division,Rangpur,16 +Rangpur Division,Thakurgaon,12 \ No newline at end of file diff --git a/shared/nipah_functions.R b/shared/nipah_functions.R new file mode 100644 index 00000000..1805ed8c --- /dev/null +++ b/shared/nipah_functions.R @@ -0,0 +1,749 @@ +#function to tidy-up all dataframes + +data_curation <- function(articles, outbreaks, models, parameters, plotting,switch_first_surname=FALSE) { + + articles <- articles |> + mutate(refs = paste(first_author_surname, + " (",year_publication,")",sep="")) |> #define references use what we have from epireview function to be consistent + group_by(refs) |> + mutate(counter = row_number()) |> + ungroup() |> #distinguish same-author-same-year references + mutate(new_refs = ifelse(refs %in% refs[duplicated(refs)], + paste0(sub("\\)$", "", refs),letters[counter],")"), + refs)) |> + dplyr::select(-counter,-refs) |> + rename(refs = new_refs) |> + mutate(refs = str_to_title(refs)) + + if(dim(outbreaks)[1]>0) + { + outbreaks <- outbreaks |> + mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) + } + + models <- models |> + mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) + + parameters <- parameters |> + mutate(refs = articles$refs[match(covidence_id, articles$covidence_id)]) |> + filter(!parameter_from_figure) + + param4plot <- parameters |> + mutate(across( + c(parameter_value, + parameter_lower_bound, + parameter_upper_bound, + parameter_uncertainty_lower_value, + parameter_uncertainty_upper_value, + parameter_uncertainty_single_value), + ~ ifelse(inverse_param, 1 / ., .) * + 10^exponent * + ifelse(parameter_unit %in% "Weeks", 7, 1)) + ) |> + mutate(across( + c(parameter_2_value, + parameter_2_lower_bound, + parameter_2_upper_bound, + parameter_2_sample_paired_lower, + parameter_2_sample_paired_upper, + parameter_2_uncertainty_upper_value, + parameter_2_uncertainty_lower_value, + parameter_2_uncertainty_single_value), + ~ ifelse(inverse_param, 1 / ., .) * + 10^exponent * + ifelse(parameter_unit %in% "Weeks", 7, 1)) + ) |> + mutate(parameter_unit = ifelse(parameter_unit %in% "Weeks", "Days", parameter_unit)) |> + mutate(no_unc = is.na(parameter_uncertainty_lower_value) & is.na(parameter_uncertainty_upper_value), #store uncertainty in pu_lower and pu_upper + custom_se = case_when(str_detect(str_to_lower(parameter_2_value_type),"standard deviation") & no_unc & !is.na(population_sample_size) ~ parameter_2_value/sqrt(population_sample_size), + TRUE ~ NA), + parameter_uncertainty_lower_value = case_when( + str_detect(str_to_lower(parameter_uncertainty_single_type),"standard error") & no_unc ~ parameter_value-parameter_uncertainty_single_value, + !is.na(custom_se) & no_unc ~ parameter_value-custom_se, + str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.05, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), + TRUE ~ parameter_uncertainty_lower_value), + parameter_uncertainty_upper_value = case_when( + str_detect(str_to_lower(parameter_uncertainty_single_type),"standard error") & no_unc ~ parameter_value+parameter_uncertainty_single_value, + !is.na(custom_se) & no_unc ~ parameter_value+custom_se, + str_detect(str_to_lower(distribution_type),"gamma") & no_unc ~ qgamma(0.95, shape = (distribution_par1_value/distribution_par2_value)^2, rate = distribution_par1_value/distribution_par2_value^2), + TRUE ~ parameter_uncertainty_upper_value)) |> + mutate(central = coalesce(parameter_value, + 100*cfr_ifr_numerator/cfr_ifr_denominator, + 0.5*(parameter_lower_bound+parameter_upper_bound))) |> + dplyr::select(-c(no_unc)) + + if (plotting) { + parameters <- param4plot + } else { + check_param_id <- (parameters$parameter_data_id == param4plot$parameter_data_id ) # check that parameter data ids didn't get scrambled + if(sum(check_param_id)==dim(parameters)[1]) + { + parameters$central <- param4plot$central + } else { + errorCondition('parameters not in right order to match') + } + } + + if(dim(outbreaks)[1]>0) + { + outbreaks <- outbreaks |> mutate(outbreak_location = str_replace_all(outbreak_location, "\xe9" , "é")) + } + + # parameters <- parameters |> mutate(parameter_type = str_replace_all(parameter_type, "\x96" , "–"), + # population_country = str_replace_all(population_country, c("昼㸴" = "ô", "�" = "ô"))) + + if(switch_first_surname) # this is due to legacy access database issue + { + articles <- articles |> rename(first_author_first_name=first_author_surname,first_author_surname=first_author_first_name) + } + + return(list(articles = articles, outbreaks = outbreaks, + models = models, parameters = parameters)) +} + + +curation <- function(articles, outbreaks, models, parameters, plotting) { + #call data_curation function (which at some stage will move to epireview) but keep curation to be backward competible + df <- data_curation(articles,outbreaks,models,parameters,plotting) + + return(list(articles = df$articles, outbreaks = df$outbreaks, + models = df$models, parameters = df$parameters)) +} + +# function to produce forest plot for given dataframe +forest_plot <- function(df, label, color_column, lims, text_size = 11, + show_label = FALSE, custom_colours = NA, + segment_show.legend=NA, sort=FALSE, qa_alpha=1, + point_size=3) { + stopifnot(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) == 1)#values must have same units + + if (sort){ + df <- df |> arrange(.data[[color_column]], central) + } + + # Assume that if a single type was displayed it would be converted to a + # lower + upper value + df <- df |> mutate(urefs = make.unique(refs)) |> + mutate(urefs = factor(urefs, levels = rev(unique(urefs))), + uncertainty_present = ( + !(is.na(parameter_uncertainty_lower_value) & + is.na(parameter_uncertainty_upper_value))) + ) + df$plot_alpha <- 1 + df$segment_alpha <- 1 + + if(qa_alpha!=1){ + df[df$qa_score<=0.5, ]$plot_alpha <- qa_alpha + df[df$qa_score<=0.5, ]$segment_alpha <- 0.65 * qa_alpha + } + + cats <- length(unique(df[[color_column]])) + gg <- ggplot(df) + + geom_segment(aes(x = parameter_lower_bound, xend = parameter_upper_bound, + y = urefs, yend = urefs, color = .data[[color_column]],), + linewidth=3, alpha = df$segment_alpha, show.legend = segment_show.legend) + + geom_errorbar(aes(xmin=parameter_uncertainty_lower_value, xmax=parameter_uncertainty_upper_value, + y = urefs, linetype="Uncertainty"), + width = 0.25, lwd=0.5, color = "black", alpha=df$plot_alpha) + + geom_errorbar(data= df[!df$uncertainty_present,], + aes(xmin=parameter_2_lower_bound, xmax=parameter_2_upper_bound, + y = urefs, linetype="Variability"), + width = 0.25, lwd=0.5, color = "black", + lineend = "square", alpha=df[!(df$uncertainty_present),]$plot_alpha) + + geom_errorbar(data= df[df$uncertainty_present,], + aes(xmin=parameter_2_lower_bound, xmax=parameter_2_upper_bound, + y = urefs, linetype="Variability"), + width = 0.25, lwd=0.5, color = "black", + lineend = "square", position = position_nudge(y=-0.25), + alpha=df[df$uncertainty_present,]$plot_alpha) + + geom_point(aes(x = parameter_value, y = urefs, + shape = parameter_value_type, fill = .data[[color_column]]), + alpha=df$plot_alpha, size = point_size, stroke = 1, color = "black") + + if (all(df$parameter_class=="Reproduction number")) { + gg <- gg + + geom_vline(xintercept = 1,linetype = "dashed", colour = "dark grey") + } + + if(sum(!is.na(custom_colours))) + { + gg <- gg + + scale_shape_manual(name = "Parameter Type", + values = c(Mean = 21, Median = 22, Unspecified = 24, + Other = 23, `Central - unspecified`=25), + breaks = c("Mean", "Median", "Unspecified", "Other", + "Central - unspecified")) + + scale_linetype_manual(name = "Variation Type", + values = c("Uncertainty" = "solid","Variability" = "dashed"), + breaks = c("Uncertainty", "Variability")) + + scale_x_continuous(limits = lims, expand = c(0, 0)) + + scale_y_discrete(labels = setNames(df$refs, df$urefs)) + + labs(x = label, y = NULL) + + scale_color_manual(values = custom_colours) + + scale_fill_manual(values = custom_colours) + + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), + text = element_text(size = text_size)) + } else { + gg <- gg + scale_fill_lancet(palette = "lanonc") + scale_color_lancet(palette = "lanonc") + + scale_shape_manual(name = "Parameter Type", + values = c(Mean = 21, Median = 22, Unspecified = 24, + Other = 23, `Central - unspecified`=25), + breaks = c("Mean", "Median", "Unspecified", "Other", + "Central - unspecified")) + + scale_linetype_manual(name = "Variation Type", + values = c("Uncertainty" = "solid","Variability" = "dashed"), + breaks = c("Uncertainty", "Variability")) + + scale_x_continuous(limits = lims, expand = c(0, 0)) + + scale_y_discrete(labels = setNames(df$refs, df$urefs)) + + labs(x = label, y = NULL) + + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), + text = element_text(size = text_size)) + } + + if (cats == 1) { + gg <- gg + guides(fill = "none", color="none", + shape = guide_legend(title = NULL,order = 1), + linetype=guide_legend(title = NULL,order = 2)) + } else { + gg <- gg + guides(fill = "none", color = guide_legend(title = NULL,order = 1), + shape = guide_legend(title = NULL,order = 2), + linetype=guide_legend(title = NULL, order = 3))} + + if(show_label) + gg <- gg + geom_text_repel(aes(x = coalesce(parameter_value), y = urefs, label = population_country_ISO), nudge_y = 0.5, segment.color = "grey50" ) + #gg <- gg + geom_text_repel(aes(x = coalesce(parameter_uncertainty_upper_value,parameter_upper_bound,parameter_value), y = urefs, label = population_country_ISO), nudge_x = 1.5, segment.color = "grey90" ) + + return(gg) +} + +# function to produce map for given shapefiles and dataframes + +map_generic <- function(l0, l1, df, f, n, range_mp, summ_dups, + long_lim, lat_lim, col_lim, color_opt, title) { + + stopifnot(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) == 1)#values must have same units + + country_list <- unique(l0$COUNTRY) + + df <- df |> separate_longer_delim(population_country, delim = ",") |> mutate(population_country = str_trim(population_country, side = "left"))#dataframe with expanded list of countries + regional_dat <- unique(df$population_country[!is.na(df$population_location)])#countries with regional data + regional_dat <- intersect(country_list,regional_dat)#only countries in country_list are plotted + country_dat <- country_list[!(country_list %in% regional_dat)]#countries with national data only + + shp_regional <- l1 |> filter(COUNTRY %in% regional_dat) + shp_country <- l0 |> filter(COUNTRY %in% country_dat) |> mutate(REG_CODE = str_replace_all(COUNTRY," ","")) + shapes <- bind_rows(shp_country,shp_regional) + + regional_NA <- shp_regional |> group_by(COUNTRY) |> summarise(all_codes = str_c(REG_CODE, collapse = ","))#plot all regions for non-location-specific values for countries with OTHER location-specific values + + df <- df |> mutate(parameter_value = coalesce(parameter_value, 100*cfr_ifr_numerator/cfr_ifr_denominator)) |> + mutate(parameter_value = if(range_mp) { + coalesce(parameter_value, (parameter_lower_bound + parameter_upper_bound)/2) + } else {parameter_value}) |> + mutate(REG_CODE = + ifelse( + population_country %in% country_dat, + shp_country$REG_CODE[match(population_country,shp_country$COUNTRY)], + ifelse( + is.na(population_location), + regional_NA$all_codes[match(population_country,regional_NA$COUNTRY)], + case_when( + population_country == "Benin" ~ str_replace_all(population_location, c("Central Region" = "BJ04,BJ05,BJ07,BJ12")), + population_country == "Côte d'Ivoire" ~ str_replace_all(population_location, c("Abidjan" = "CI01", "Northeastern Region" = "CI08,CI14")), + population_country == "Ghana" ~ str_replace_all(population_location, c("Ankaakur" = "GH02", "Ehiawenwu" = "GH06", "Amomaso" = "GH03", "Menkwo" = "GH04", "Mangoase" = "GH04", "Jirandogo" = "GH11", "Bowena" = "GH11", "Natorduori" = "GH13", "Teanoba" = "GH09", "Doniga Naveransa" = "GH12", "Tamale" = "GH08", "Agogo" = "GH02", "Kumasi" = "GH02")),#map in article + population_country == "Guinea" ~ str_replace_all(population_location, c("Gueckedou" = "GN08","Macenta" = "GN08","Pita" = "GN07","Lola" = "GN08","Yomou" = "GN08")), + population_country == "Mali" ~ str_replace_all(population_location, c("Bougouni District" = "ML03")), + population_country == "Nigeria" ~ str_replace_all(population_location, c("Edo State" = "NG12", "Southeast" = "NG01,NG04,NG11,NG14,NG17","Benue River" = "NG07","Ibadan" = "NG31")), + population_country == "Sierra Leone" ~ str_replace_all(population_location, c("Kenema" = "SL01", "Port Loko" = "SL05", "Tonkolili" = "SL02","Niahun" = "SL01", "Konia" = "SL01", "Palima" = "SL01", "Semewabu" = "SL01", "Tongola" = "SL01", "Njakundoma" = "SL01", "Kpandebu" = "SL01", "Neama" = "SL01", "Lowoma" = "SL01", "Landoma" = "SL01", "Bomie" = "SL01", "Yengema" = "SL03", "Kamethe" = "SL05", "Kamabunyele" = "SL02", "Kathumpe" = "SL02")), + population_country == "Central African Republic" ~ str_replace_all(population_location, c("Nola And Ikaumba" = "CF23,CF12", "The Pre\nForest\nGrassland Of Bozo And Bangassou" = "CF11,CF62", "The Moist\nWooded Grassland Of Bouar And Obo" = "CF22,CF63", "The Dry Wooded\nRassland Near Mbre" = "CF51", "And The Dry Grassland-Of Birao." = "CF53")),#map in article + population_country == "Gabon" ~ str_replace_all(population_location, c("Haut-Ogooue" = "GA02")), + population_country == "Liberia" ~ str_replace_all(population_location, c("Zigida" = "LR08","Lofa County" = "LR08", "Montserrado County" = "LR11")), + TRUE ~ population_location)))) |> + mutate(REG_CODE = str_replace_all(REG_CODE, " ", "")) |> + mutate(REG_CODE = sapply(str_split(REG_CODE, ","), function(x) paste(unique(x), collapse = ","))) |> #remove duplicate regions for each value + separate_longer_delim(REG_CODE, delim = ",")#broadcast multi-region values + + if (summ_dups=="mean") { + df <- df |> group_by(REG_CODE) |> + mutate(value = mean(parameter_value)) |> distinct(REG_CODE,value) + } else if (summ_dups=="most_recent") { + df <- df |> group_by(REG_CODE) |> + mutate(value = ifelse(all(is.na(population_study_start_year)), + first(parameter_value), + parameter_value[which.max(!is.na(population_study_start_year))])) |> distinct(REG_CODE, value) + } else if (summ_dups=="max_sample") { + df <- df |> group_by(REG_CODE) |> + mutate(value = ifelse(all(is.na(population_sample_size)), + first(parameter_value), + parameter_value[which.max(!is.na(population_sample_size))])) |> distinct(REG_CODE, value) + } else {stop("Error: choose summary option for duplicate REG_CODEs")} + + shapes <- shapes |> left_join(df,by=c('REG_CODE')) + + gg <- ggplot() + + geom_sf(data = shapes, lwd = 0.3, col = "grey40", aes(fill = value)) + + geom_sf(data = l0, lwd = 0.7, col = "black", fill = NA) + + scale_fill_viridis_c(option = color_opt, direction = -1, na.value = "grey80", + limits = col_lim) + + geom_point(data = f, aes(x = longitude, y = latitude, color = "Outbreak"), shape = 8, size = 2.5, stroke = 1.5) + + scale_color_manual(values = c("Outbreak" = "green1")) + + geom_text(data = n, aes(x = longitude, y = latitude, label = c_name), size = 3.4, fontface = 'italic', color = "black") + + coord_sf(xlim = long_lim, ylim = lat_lim) + + theme_void() + + guides(fill = guide_colorbar(title = NULL,order = 1), color = guide_legend(title = NULL)) + + theme(legend.key.size = unit(2, "lines"), legend.position = c(0.07, 0.5), legend.text = element_text(size = 12)) + + annotation_scale(location = "bl", width_hint = 0.2) + + annotation_north_arrow(location = "bl", which_north = "true", pad_y = unit(0.4, "in"), style = north_arrow_fancy_orienteering) + + annotation_custom(grob = rectGrob(gp = gpar(col = "black", fill = NA, lwd = 3)), + xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) + + ggtitle(title) + #geom_text(data = f |> filter(type == "Treatment Centre"), aes(x = longitude, y = latitude, color = type), label = "T", size = 5, fontface='bold') + + #scale_color_manual(values = c(Outbreak = "green1", "Treatment Centre" = "blue")) + + #guides(fill = guide_colorbar(title = NULL), color = guide_legend(title = NULL, override.aes = list(shape = c(8,NA)))) + + #scale_shape_manual(values = c(circle = 21, square = 22, triangle = 24)) + + #scale_color_manual(values = c(blue = "blue", green = "green")) + + #geom_emoji(data=f, aes(longitude,latitude), emoji = "", size=0.03) + + + return(gg) +} + +#wrapper function for metamean + +metamean_wrap <- function(dataframe, estmeansd_method, + plot_study, digits, lims, colour, label, + width, height, resolution, subgroup = NA, sort_by_subg = FALSE, colgap_shift = 0){ + + dataframe <- filter_df_for_metamean(dataframe) + dataframe <- dataframe[!is.na(dataframe$id),] + if(!is.na(subgroup)) + { + mtan <- metamean(data = dataframe, + studlab = refs, + mean = xbar, + sd = parameter_uncertainty_single_value, + median = median, + q1 = q1, + q3 = q3, + min = min, + max = max, + n = population_sample_size, + method.mean = estmeansd_method, + method.sd = estmeansd_method, + subgroup = dataframe[[subgroup]], + sm = "MRAW", + method.tau = "ML") + + png(file = "temp.png", width = width, height = height, res = resolution) + forest(mtan, layout = "RevMan5", + overall = TRUE, pooled.events = TRUE, + study.results = plot_study, + print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, + digits = digits, digits.sd = digits, digits.weight = digits, + col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, + weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", + at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 13, colgap.forest.left = paste0( colgap_shift,"cm")) + dev.off() + } else { + mtan <- metamean(data = dataframe, + studlab = refs, + mean = xbar, + sd = parameter_uncertainty_single_value, + median = median, + q1 = q1, + q3 = q3, + min = min, + max = max, + n = population_sample_size, + method.mean = estmeansd_method, + method.sd = estmeansd_method, + sm = "MRAW", + method.tau = "ML") + + png(file = "temp.png", width = width, height = height, res = resolution) + forest(mtan, layout = "RevMan5", + overall = TRUE, pooled.events = TRUE, + study.results = plot_study, + digits = digits, digits.sd = digits, digits.weight = digits, + col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, + weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", + at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 13) + dev.off() + } + + gg <- png::readPNG("temp.png", native = TRUE) + file.remove("temp.png") + gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) + return(list(result = mtan, plot = gg)) +} + +## THIS IS INITIAL VERSION ONLY -- WORK IN PROGRESS +metagen_wrap <- function(dataframe, estmeansd_method, + plot_study, digits, lims, colour, label, + width, height, resolution, subgroup = NA, sort_by_subg = FALSE){ + + #dataframe <- epireview::filter_df_for_metamean(dataframe) + # must have the correct columns + df <- dataframe + cols_needed <- c("parameter_value", "parameter_unit", "population_sample_size", + "parameter_value_type", "parameter_uncertainty_single_type", + "parameter_uncertainty_type", "parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value") + + if (!all(cols_needed %in% colnames(df))) { + cols_missing <- cols_needed[!cols_needed %in% colnames(df)] + stop( + "df must have columns named: ", paste(cols_needed, collapse = ", "), + ". Columns missing: ", paste(cols_missing, collapse = ", "), + call. = FALSE + ) + } + + ## Ensure that there is a single parameter type present + if(length(unique(df$parameter_type)) != 1) { + stop("parameter_type must be the same across all values.", call. = FALSE) + } + + ## First check that there are no rows where a value is present but unit is + ## missing, or vice versa + if(any(is.na(df$parameter_value) & !is.na(df$parameter_unit))) { + message("parameter_value must be present if parameter_unit is present. + Rows with non-NA parameter_value and NA parameter_unit will be + removed.") + df <- filter(df,!( is.na(.data[["parameter_value"]]) & !is.na(.data[["parameter_unit"]]) )) + } + + if(any(!is.na(df$parameter_value) & is.na(df$parameter_unit))) { + message("parameter_unit is missing but parameter_value is present. + Rows with non-NA parameter_value and NA parameter_unit will be + removed." + ) + df <- filter(df,!( is.na(.data[["parameter_value"]]) & + !is.na(.data[["parameter_unit"]]) )) + } + + # values of the parameter must all have the same units + if(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) != 1) { + msg1 <- "parameter_unit must be the same across all values." + msg2 <- "Consider calling delays_to_days() if you are working with delays." + stop(paste(msg1, msg2), call. = FALSE) + } + + # For this meta analysis don't enforce that we need to have sample sizes + # df <- df |> filter(!is.na(.data[["population_sample_size"]])) |> + # filter(!is.na(.data[["parameter_value"]])) |> + # filter( + # (.data[["parameter_value_type"]] == 'Mean' & + # grepl(x = tolower(.data[["parameter_uncertainty_single_type"]]), + # pattern = 'standard deviation')) | + # (.data[["parameter_value_type"]] == 'Median' & + # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), + # pattern = 'iqr')) | + # (.data[["parameter_value_type"]] == 'Median' & + # grepl(x = tolower(.data[["parameter_uncertainty_type"]]), + # pattern = 'range')) + # ) + + df <- mutate( + df, + xbar = ifelse( + .data[["parameter_value_type"]] == "Mean", .data[["parameter_value"]], NA), + median = ifelse( + .data[["parameter_value_type"]] == "Median", .data[["parameter_value"]], NA + ), + q1 = ifelse( + grepl(x = tolower(.data[["parameter_uncertainty_type"]]), "iqr"), + .data[["parameter_uncertainty_lower_value"]], NA), + q3 = ifelse(grepl(x = tolower(.data[["parameter_uncertainty_type"]]), "iqr"), + .data[["parameter_uncertainty_upper_value"]], NA), + min = ifelse( + grepl( + x = tolower(.data[["parameter_uncertainty_type"]]), pattern = "range" + ) & + !grepl(x = tolower(.data[["parameter_uncertainty_type"]]), "iqr"), + .data[["parameter_uncertainty_lower_value"]], NA + ), + max = ifelse( + grepl(x = tolower(.data[["parameter_uncertainty_type"]]), pattern = "range" + ) & + !grepl(x = tolower(.data[["parameter_uncertainty_type"]]), pattern = "iqr"), + .data[["parameter_uncertainty_upper_value"]], NA + ) + ) + + CI_level <- as.double(substr(df$parameter_uncertainty_type,1,2))/100 + CI_level_adj <- CI_level + (1-CI_level)/2 + SE <- (df$parameter_uncertainty_upper_value-df$parameter_uncertainty_lower_value)/(2* qnorm(CI_level_adj)) + ln_case <- !is.na(str_detect(str_to_lower(df$distribution_type),'log')) + SE[ln_case] <- (df$parameter_uncertainty_upper_value[ln_case]-df$parameter_uncertainty_lower_value[ln_case])/(2* qlnorm(CI_level_adj[ln_case])) + df$SE <- SE + + dataframe <- df |> filter(!is.na(SE)) + + if(!is.na(subgroup)) + { + mtan <- metagen(data = dataframe, + TE = parameter_value, + seTE = SE, + studlab = refs, + #mean = xbar, + #sd = parameter_uncertainty_single_value, + median = median, + q1 = q1, + q3 = q3, + min = min, + max = max, + method.mean = estmeansd_method, + method.sd = estmeansd_method, + subgroup = dataframe[[subgroup]], + sm = "R0", + method.tau = "REML") + + png(file = "temp.png", width = width, height = height, res = resolution) + forest(mtan, layout = "RevMan5", + overall = TRUE, pooled.events = TRUE, + study.results = plot_study, + print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, + digits = digits, digits.sd = digits, digits.weight = digits, + col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, + weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", + at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 11.5) + dev.off() + } else { + mtan <- metagen(data = dataframe, + TE = parameter_value, + seTE = SE, + studlab = refs, + #mean = xbar, + #sd = parameter_uncertainty_single_value, + median = median, + q1 = q1, + q3 = q3, + min = min, + max = max, + #n = population_sample_size, + method.mean = estmeansd_method, + method.sd = estmeansd_method, + sm = "R0", + method.tau = "REML" + ) + + png(file = "temp.png", width = width, height = height, res = resolution) + forest(mtan, layout = "RevMan5", + overall = TRUE, pooled.events = TRUE, + study.results = plot_study, + digits = digits, digits.sd = digits, digits.weight = digits, + col.diamond.lines = "black",col.diamond.common = colour, col.diamond.random = colour, + weight.study = "same", col.square.lines = "black", col.square = colour, col.study = "black", col.inside = "black", + at = seq(lims[1],lims[2],by=2), xlim = lims, xlab = label, fontsize = 11.5) + dev.off() + } + + gg <- png::readPNG("temp.png", native = TRUE) + file.remove("temp.png") + gg <- wrap_elements(plot = rasterGrob(gg, interpolate = TRUE)) + return(list(result = mtan, plot = gg)) +} + +#wrapper function for metaprop + +metaprop_wrap <- function(dataframe, subgroup, + plot_pooled, sort_by_subg, plot_study, digits, colour, + width, height, resolution, + at = seq(0,1,by=0.2), xlim = c(0,1)){ + + stopifnot(length(unique(dataframe$parameter_unit[!is.na(dataframe$parameter_unit)])) == 1)#values must have same units + + dataframe <- dataframe |> filter(!is.na(cfr_ifr_denominator)) |> + filter(!(is.na(cfr_ifr_numerator)&is.na(parameter_value))) |> + mutate(cfr_ifr_numerator = case_when( + is.na(cfr_ifr_numerator) & !is.na(parameter_value) ~ round((parameter_value/100)*cfr_ifr_denominator), + TRUE ~ cfr_ifr_numerator)) + + if(!is.na(subgroup)) + { + mtan <- metaprop(data = dataframe, + studlab = refs, + event = cfr_ifr_numerator, + n = cfr_ifr_denominator, + subgroup = dataframe[[subgroup]], + sm = "PLOGIT", + method="GLMM", + method.tau = "ML") + + png(file = "temp.png", width = width, height = height, res = resolution) + par(mar = c(2, 2, 2, 1)) + forest(mtan, layout = "RevMan5", + overall = plot_pooled, pooled.events = TRUE, + print.subgroup.name = FALSE, sort.subgroup = sort_by_subg, + study.results = plot_study, + digits = digits, + col.diamond.lines = "black",col.diamond.common = colour, + col.diamond.random = colour, + col.square = colour, col.square.lines = "black", + col.study = "black", col.subgroup = "black", + col.inside = "black", weight.study = "same", + at = at, xlim = xlim, xlab="Case Fatality Ratio", + fs.predict.labels = 11.5, + fs.hetstat=11, + fs.test.subgroup = 11, + fs.axis = 11, + fontsize = 14, + plotwidth = "72.5mm") + dev.off() + } else { + mtan <- metaprop(data = dataframe, + studlab = refs, + event = cfr_ifr_numerator, + n = cfr_ifr_denominator, + sm = "PLOGIT", + method="GLMM", + method.tau = "ML") + + png(file = "temp.png", width = width, height = height, res = resolution) + forest(mtan, layout = "RevMan5", + overall = plot_pooled, pooled.events = TRUE, + study.results = plot_study, + digits = digits, + col.diamond.lines = "black",col.diamond.common = colour, + col.diamond.random = colour, + col.square = colour, col.square.lines = "black", + col.subgroup = "black", col.inside = "black", weight.study = "same", + at = at, xlim = xlim, xlab="Case Fatality Ratio", + fs.predict.labels = 11.5, + fs.hetstat=11, + fs.test.subgroup = 11, + fs.axis = 11, + fontsize = 14, + plotwidth = "72.5mm") + dev.off() + } + + + pg <- png::readPNG("temp.png", native = TRUE) + file.remove("temp.png") + gg <- wrap_elements(plot = rasterGrob(pg, interpolate = TRUE)) + return(list(result = mtan, plot = gg)) +} + +#function to plot pdfs for given dataframe and inputted distribution types + +pdf_generic <- function(meta, model, dists, lims, label) { + + x_values <- seq(lims[1],lims[2], by = 0.01) + + mean <- meta[[paste("TE.", model, sep="")]] + se_m <- meta[[paste("seTE.", model, sep="")]] + sd_p <- sqrt(sum((meta$n-1)*(meta$sd^2))/(sum(meta$n)-meta$k)) + r_mean <- rnorm(10000,mean,se_m) + + dist_data <- data.frame() + for (j in 1:length(dists)){ + pdfs <- matrix(0, ncol = length(x_values), nrow = length(r_mean)) + if (dists[j]=="Exponential"){ + for (i in 1:length(r_mean)){ + pdfs[i,] <- dexp(x_values, rate = 1/r_mean[i])} + y_central <- dexp(x_values, rate = 1/mean) + } else if (dists[j]=="Weibull"){ + for (i in 1:length(r_mean)){ + w_params <- weibullpar(r_mean[i], sd_p) + pdfs[i,] <- dweibull(x_values, shape = w_params$shape, scale = w_params$scale)} + w_params <- weibullpar(mean, sd_p) + y_central <- dweibull(x_values, shape = w_params$shape, scale = w_params$scale) + } else if (dists[j]=="Gamma"){ + for (i in 1:length(r_mean)){ + pdfs[i,] <- dgamma(x_values, shape = (r_mean[i]/sd_p)^2, rate = r_mean[i]/(sd_p^2))} + y_central <- dgamma(x_values, shape = (mean/sd_p)^2, rate = mean/(sd_p^2)) + } else if (dists[j]=="Lognormal"){ + for (i in 1:length(r_mean)){ + mean_log <- log(r_mean[i]^2 / sqrt(r_mean[i]^2 + sd_p^2)) + sd_log <- sqrt(log(1 + sd_p^2 / r_mean[i]^2)) + pdfs[i,] <- dlnorm(x_values, meanlog = mean_log, sdlog = sd_log)} + mean_log <- log(mean^2 / sqrt(mean^2 + sd_p^2)) + sd_log <- sqrt(log(1 + sd_p^2 / mean^2)) + y_central <- dlnorm(x_values, meanlog = mean_log, sdlog = sd_log) + } else { + y_central <- rep(0, times = length(x_values)) + } + y_bounds <- apply(pdfs, 2, function(column) + {quantile(column, c(0.025, 0.975))}) + df <- data.frame(x_values = x_values, dist = rep(dists[j], length(x_values)), + y_l = y_bounds[1,], y_u = y_bounds[2,], y_central = y_central) + dist_data <- rbind(dist_data,df) + } + + gg <- ggplot() + + geom_ribbon(data = dist_data, aes(x = x_values, ymin = y_l, ymax = y_u, fill = dist), alpha = 0.2) + + geom_line(data = dist_data, aes(x = x_values, y = y_central, color = dist), size = 0.25) + + scale_fill_lancet(palette = "lanonc") + scale_color_lancet(palette = "lanonc") + + scale_x_continuous(limits = lims, expand = c(0, 0)) + + scale_y_continuous(limits = c(0, 0.151), expand = c(0, 0)) + + labs(x = label, y = "Probability Density") + + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), + legend.position = c(1,1), legend.justification = c(1,1), legend.box.just = "left") + + guides(color = "none", fill = guide_legend(title = NULL,order = 1)) + + return(gg) +} + +#function to create latex-readable csv files for tables + +insert_blank_rows <- function(dataframe, column){ + tlabels <- as.character(unique(dataframe[[column]])) + + df_split <- split(dataframe, dataframe[[column]]) + + dataframe <- do.call(rbind, lapply(df_split, function(group) { + rbind(group, rep(NA, ncol(group))) + })) + + dataframe <- rbind(NA,dataframe)#add NAs for top row header + dataframe <- dataframe[-nrow(dataframe),]#remove NAs at bottom + + inds <- which(is.na(dataframe[[column]])) + dataframe[[column]] <- NULL #Set column to NA + + dataframe[inds,1] <- tlabels + dataframe[[1]][inds] <- paste0("\\bfseries{", dataframe[[1]][inds], "}") + + dataframe <- dataframe |> mutate_all(~ ifelse(is.na(.), "", .)) + + dataframe +} + +# --------- Copied from epireview: +# Changes: parameter_uncertainty_singe_type -> parameter_uncertainty_single_type +filter_df_for_metamean <- function (df) +{ + cols_needed <- c("parameter_value", "parameter_unit", "population_sample_size", + "parameter_value_type", "parameter_uncertainty_single_type", + "parameter_uncertainty_type", "parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value") + df <- epireview::check_df_for_meta(df, cols_needed) + df <- df[!is.na(df[["population_sample_size"]]), ] + df <- df[!is.na(df[["parameter_value"]]), ] + df <- df[df[["parameter_value_type"]] == "Mean" & grepl(x = tolower(df[["parameter_uncertainty_single_type"]]), + pattern = "standard deviation") | df[["parameter_value_type"]] == + "Median" & grepl(x = tolower(df[["parameter_uncertainty_type"]]), + pattern = "iqr") | df[["parameter_value_type"]] == "Median" & + grepl(x = tolower(df[["parameter_uncertainty_type"]]), + pattern = "range"), ] + df$xbar <- ifelse(df[["parameter_value_type"]] == "Mean", + df[["parameter_value"]], NA) + df$median <- ifelse(df[["parameter_value_type"]] == "Median", + df[["parameter_value"]], NA) + df$q1 <- ifelse(grepl(x = tolower(df[["parameter_uncertainty_type"]]), + "iqr"), df[["parameter_uncertainty_lower_value"]], NA) + df$q3 <- ifelse(grepl(x = tolower(df[["parameter_uncertainty_type"]]), + "iqr"), df[["parameter_uncertainty_upper_value"]], NA) + df$min <- ifelse(grepl(x = tolower(df[["parameter_uncertainty_type"]]), + pattern = "range") & !grepl(x = tolower(df[["parameter_uncertainty_type"]]), + "iqr"), df[["parameter_uncertainty_lower_value"]], NA) + df$max <- ifelse(grepl(x = tolower(df[["parameter_uncertainty_type"]]), + pattern = "range") & !grepl(x = tolower(df[["parameter_uncertainty_type"]]), + pattern = "iqr"), df[["parameter_uncertainty_upper_value"]], + NA) + df +} diff --git a/shared/redcap_data/nipah/mapping_table.csv b/shared/redcap_data/nipah/mapping_table.csv index 54e62f8f..789be386 100644 --- a/shared/redcap_data/nipah/mapping_table.csv +++ b/shared/redcap_data/nipah/mapping_table.csv @@ -53,15 +53,45 @@ parameter_unit,parameters,Parameter unit,parameters parameter_range_low,parameters,Parameter lower bound,parameters parameter_range_upper,parameters,Parameter upper bound,parameters parameter_value_type,parameters,Parameter value type,parameters -parameter_unc_single_type,parameters,Parameter uncertainty - single value,parameters -parameter_unc_single_value,parameters,Parameter uncertainty - singe type,parameters +parameter_unc_single_type,parameters,Parameter uncertainty - single type,parameters +parameter_unc_single_value,parameters,Parameter uncertainty - single value,parameters parameter_unc_pair_value_low,parameters,Parameter uncertainty - lower value,parameters parameter_unc_pair_value_up,parameters,Parameter uncertainty - upper value,parameters parameter_unc_pair_type,parameters,Parameter uncertainty - type,parameters +parameter_statistical,parameters,Parameter statistical approach,parameters +parameter_paired,parameters,,parameters +parameter_pair_value,parameters,Parameter 2 value,parameters +parameter_pair_exponent,parameters,Exponent_2,parameters +parameter_pair_range_low,parameters,Parameter 2 lower bound,parameters +parameter_pair_range_up,parameters,Parameter 2 upper bound,parameters +parameter_pair_inverse,parameters,Inverse_param_2,parameters +parameter_pair_unit,parameters,Parameter 2 unit,parameters +parameter_pair_supplement,parameters,Method_2_from_supplement,parameters +parameter_pair_statistical,parameters,Parameter 2 statistical approach,parameters +parameter_pair_unc_single_value,parameters,Parameter 2 uncertainty - single value,parameters +parameter_pair_unc_pair_type,parameters,Parameter 2 uncertainty – type,parameters +parameter_pair_unc_pair_value_low,parameters,Parameter 2 uncertainty - lower value,parameters +parameter_pair_unc_pair_value_up,parameters,Parameter 2 uncertainty - upper value,parameters +parameter_distr_type,parameters,Distribution_type,parameters +parameter_distr_a_type,parameters,Distribution_par1_type,parameters +parameter_distr_a_value,parameters,Distribution_par1_value,parameters +parameter_distr_b_type,parameters,Distribution_par2_type,parameters +parameter_distr_b_value,parameters,Distribution_par2_value,parameters +parameter_distr_b_uncertainty,parameters,Distribution_par2_uncertainty,parameters +parameter_pair_sp,parameters,Parameter 2 value type,parameters +parameter_pair_pair_low,parameters,Parameter_2_sample_paired_lower,parameters +parameter_pair_pair_up,parameters,Parameter_2_sample_paired_upper,parameters +parameter_pair_distr_type,parameters,Distribution_2_type,parameters +parameter_pair_distr_a_type,parameters,Distribution_2_par1_type,parameters +parameter_pair_distr_a_value,parameters,Distribution_2_par1_value,parameters +parameter_pair_distr_b_type,parameters,Distribution_2_par2_type,parameters +parameter_pair_distr_b_value,parameters,Distribution_2_par2_value,parameters +parameter_pair_distr_b_uncertainty,parameters,Distribution_2_par2_uncertainty,parameters +parameter_distr_a_uncertainty,parameters,Distribution_par1_uncertainty,parameters +parameter_pair_unc_single_type,parameters,Parameter 2 uncertainty - single type,parameters +parameter_pair_distr_a_uncertainty,parameters,Distribution_2_par1_uncertainty,parameters parameter_cfr_num,parameters,CFR_IFR_numerator,parameters parameter_cfr_denom,parameters,CFR_IFR_denominator,parameters -parameter_distribution_type,parameters,Distribution_type,parameters -parameter_distribution_value,parameters,Distribution_par1_value,parameters parameter_supplement,parameters,Method_from_supplement,parameters parameter_cfr_method,parameters,CFR_IFR_Method,parameters parameter_r_method,parameters,Method_R,parameters @@ -73,6 +103,10 @@ parameter_rf_name,parameters,Riskfactor_name,parameters parameter_rf_occupation,parameters,Riskfactor_occupation,parameters parameter_rf_significant,parameters,Riskfactor_significant,parameters parameter_rf_adjusted,parameters,Riskfactor_adjusted,parameters +parameter_hd_from,parameters,,parameters +parameter_hd_to,parameters,,parameters +parameter_cfr_definition,parameters,Case_definition,parameters +parameter_cfr_seroprev,parameters,seroprevalence_adjusted,parameters parameter_context_sex,parameters,Population_sex,parameters parameter_context_setting,parameters,Population_sample_type,parameters parameter_context_group,parameters,Population_group,parameters @@ -83,6 +117,9 @@ parameter_context_country,parameters,Population_country,parameters parameter_context_location,parameters,Population_location,parameters parameter_context_start,parameters,Population_study_start,parameters parameter_context_end,parameters,Population_study_end,parameters +parameter_context_timing,parameters,Method_moment_value,parameters +parameter_context_urban,parameters,Urban/Rural area,parameters +parameter_context_data,parameters,Data_available,parameters parameter_gene,parameters,Genome_site,parameters parameter_gene_data,parameters,Genomic_sequence_available,parameters parameter_hd_from_other,parameters,Other_delay_start,parameters @@ -92,22 +129,13 @@ parameter_figure,parameters,Parameter_FromFigure,parameters parameter_r_pathway,parameters,R_pathway,parameters parameter_exponent,parameters,Exponent,parameters article_preprint,articles,,articles -outbreak_unspecified,outbreaks,,outbreaks -outbreak_population_size,outbreaks,,outbreaks -outbreak_sex,outbreaks,,outbreaks -outbreak_males,outbreaks,,outbreaks -outbreak_proportion_males,outbreaks,,outbreaks -outbreak_females,outbreaks,,outbreaks -outbreak_proportion_females,outbreaks,,outbreaks -parameter_statistical,parameters,,parameters -parameter_paired,parameters,,parameters -parameter_hd_from,parameters,,parameters -parameter_hd_to,parameters,,parameters -parameter_cfr_definition,parameters,,parameters -parameter_cfr_seroprev,parameters,,parameters -parameter_context_timing,parameters,,parameters -parameter_context_urban,parameters,,parameters -parameter_context_data,parameters,,parameters +outbreak_unspecified,outbreaks,Cases_unspecified,outbreaks +outbreak_population_size,outbreaks,Population_size,outbreaks +outbreak_sex,outbreaks,Type_cases_sex_disagg,outbreaks +outbreak_males,outbreaks,Male_cases,outbreaks +outbreak_proportion_males,outbreaks,Prop_male_cases,outbreaks +outbreak_females,outbreaks,Female_cases,outbreaks +outbreak_proportion_females,outbreaks,Prop_female_cases,outbreaks article_presto,articles,,articles model_compartmental_other,models,,models model_notes,models,,models @@ -116,23 +144,8 @@ outbreak_source,outbreaks,,outbreaks parameter_notes,parameters,,parameters qa_notes,articles,,articles parameter_context_location_type,parameters,,parameters -parameter_pair_type,parameters,,parameters -parameter_pair_value,parameters,,parameters -parameter_pair_exponent,parameters,,parameters -parameter_pair_range_low,parameters,,parameters -parameter_pair_range_up,parameters,,parameters -parameter_pair_inverse,parameters,,parameters -parameter_pair_unit,parameters,,parameters -parameter_pair_value_type,parameters,,parameters -parameter_pair_supplement,parameters,,parameters -parameter_pair_statistical,parameters,,parameters -parameter_pair_unc_single_value,parameters,,parameters -parameter_pair_unc_pair_type,parameters,,parameters -parameter_pair_unc_pair_value_low,parameters,,parameters -parameter_pair_unc_pair_value_up,parameters,,parameters -parameter_pair_distribution_type,parameters,,parameters -parameter_pair_distribution_value,parameters,,parameters outbreak_notes,outbreaks,,outbreaks +outbreak_probable,outbreaks,,outbreaks model_uncertainty,models,,models model_spillover,models,,models model_fitting_method,models,,models diff --git a/shared/redcap_data/table_target.csv b/shared/redcap_data/table_target.csv index a2db0dd0..3690d432 100644 --- a/shared/redcap_data/table_target.csv +++ b/shared/redcap_data/table_target.csv @@ -49,7 +49,7 @@ Parameter lower bound,parameters Parameter upper bound,parameters Parameter value type,parameters Parameter uncertainty - single value,parameters -Parameter uncertainty - singe type,parameters +Parameter uncertainty - single type,parameters Parameter uncertainty - lower value,parameters Parameter uncertainty - upper value,parameters Parameter uncertainty - type,parameters @@ -126,3 +126,40 @@ ID,outbreaks Pathogen,outbreaks Covidence_ID,outbreaks Name_data_entry,outbreaks +Distribution_2_type,parameters +Distribution_2_par2_value,parameters +Distribution_2_par2_uncertainty,parameters +Distribution_2_par2_type,parameters +Distribution_2_par1_value,parameters +Distribution_2_par1_uncertainty,parameters +Distribution_2_par1_type,parameters +Data_available,parameters +Case_definition,parameters +Exponent_2,parameters +Method_2_from_supplement,parameters +Inverse_param_2,parameters +Parameter 2 value type,parameters +Parameter 2 value,parameters +Parameter 2 upper bound,parameters +Parameter 2 unit,parameters +Parameter 2 uncertainty - upper value,parameters +Parameter 2 uncertainty - type,parameters +Parameter 2 uncertainty - single value,parameters +Parameter 2 uncertainty - single type,parameters +Parameter 2 uncertainty - lower value,parameters +Parameter 2 statistical approach,parameters +Parameter_2_sample_paired_upper,parameters +Parameter_2_sample_paired_lower,parameters +Parameter 2 lower bound,parameters +Urban/Rural area,parameters +Trimester_exposed,parameters +Third_sample_param_yn,parameters +seroprevalence_adjusted,parameters +Parameter statistical approach,parameters +Female_cases,outbreaks +Male_cases,outbreaks +Population_size,outbreaks +Prop_female_cases,outbreaks +Prop_male_cases,outbreaks +Type_cases_sex_disagg,outbreaks +Cases_unspecified,outbreaks diff --git a/shared/shapefile/gadm41_BGD_0.cpg b/shared/shapefile/gadm41_BGD_0.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_BGD_0.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_BGD_0.dbf b/shared/shapefile/gadm41_BGD_0.dbf new file mode 100644 index 00000000..fff00443 Binary files /dev/null and b/shared/shapefile/gadm41_BGD_0.dbf differ diff --git a/shared/shapefile/gadm41_BGD_0.prj b/shared/shapefile/gadm41_BGD_0.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_BGD_0.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_BGD_0.shp b/shared/shapefile/gadm41_BGD_0.shp new file mode 100644 index 00000000..710fe14b Binary files /dev/null and b/shared/shapefile/gadm41_BGD_0.shp differ diff --git a/shared/shapefile/gadm41_BGD_0.shx b/shared/shapefile/gadm41_BGD_0.shx new file mode 100644 index 00000000..89b55dc5 Binary files /dev/null and b/shared/shapefile/gadm41_BGD_0.shx differ diff --git a/shared/shapefile/gadm41_BOL_1.cpg b/shared/shapefile/gadm41_BOL_1.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_BOL_1.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_BOL_1.dbf b/shared/shapefile/gadm41_BOL_1.dbf new file mode 100644 index 00000000..a9702056 Binary files /dev/null and b/shared/shapefile/gadm41_BOL_1.dbf differ diff --git a/shared/shapefile/gadm41_BOL_1.prj b/shared/shapefile/gadm41_BOL_1.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_BOL_1.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_BOL_1.shp b/shared/shapefile/gadm41_BOL_1.shp new file mode 100644 index 00000000..d7826feb Binary files /dev/null and b/shared/shapefile/gadm41_BOL_1.shp differ diff --git a/shared/shapefile/gadm41_BOL_1.shx b/shared/shapefile/gadm41_BOL_1.shx new file mode 100644 index 00000000..5dd14df8 Binary files /dev/null and b/shared/shapefile/gadm41_BOL_1.shx differ diff --git a/shared/shapefile/gadm41_COL_0.cpg b/shared/shapefile/gadm41_COL_0.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_COL_0.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_COL_0.dbf b/shared/shapefile/gadm41_COL_0.dbf new file mode 100644 index 00000000..43ac5cdd Binary files /dev/null and b/shared/shapefile/gadm41_COL_0.dbf differ diff --git a/shared/shapefile/gadm41_COL_0.prj b/shared/shapefile/gadm41_COL_0.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_COL_0.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_COL_0.shp b/shared/shapefile/gadm41_COL_0.shp new file mode 100644 index 00000000..4b40cfff Binary files /dev/null and b/shared/shapefile/gadm41_COL_0.shp differ diff --git a/shared/shapefile/gadm41_COL_0.shx b/shared/shapefile/gadm41_COL_0.shx new file mode 100644 index 00000000..87081915 Binary files /dev/null and b/shared/shapefile/gadm41_COL_0.shx differ diff --git a/shared/shapefile/gadm41_GUF_0.cpg b/shared/shapefile/gadm41_GUF_0.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_GUF_0.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_GUF_0.dbf b/shared/shapefile/gadm41_GUF_0.dbf new file mode 100644 index 00000000..611530b7 Binary files /dev/null and b/shared/shapefile/gadm41_GUF_0.dbf differ diff --git a/shared/shapefile/gadm41_GUF_0.prj b/shared/shapefile/gadm41_GUF_0.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_GUF_0.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_GUF_0.shp b/shared/shapefile/gadm41_GUF_0.shp new file mode 100644 index 00000000..92e21e02 Binary files /dev/null and b/shared/shapefile/gadm41_GUF_0.shp differ diff --git a/shared/shapefile/gadm41_GUF_0.shx b/shared/shapefile/gadm41_GUF_0.shx new file mode 100644 index 00000000..f3ee6fb9 Binary files /dev/null and b/shared/shapefile/gadm41_GUF_0.shx differ diff --git a/shared/shapefile/gadm41_HND_0.cpg b/shared/shapefile/gadm41_HND_0.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_HND_0.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_HND_0.dbf b/shared/shapefile/gadm41_HND_0.dbf new file mode 100644 index 00000000..dd2bf910 Binary files /dev/null and b/shared/shapefile/gadm41_HND_0.dbf differ diff --git a/shared/shapefile/gadm41_HND_0.prj b/shared/shapefile/gadm41_HND_0.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_HND_0.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_HND_0.shp b/shared/shapefile/gadm41_HND_0.shp new file mode 100644 index 00000000..10f6b636 Binary files /dev/null and b/shared/shapefile/gadm41_HND_0.shp differ diff --git a/shared/shapefile/gadm41_HND_0.shx b/shared/shapefile/gadm41_HND_0.shx new file mode 100644 index 00000000..27feeeef Binary files /dev/null and b/shared/shapefile/gadm41_HND_0.shx differ diff --git a/shared/shapefile/gadm41_KEN_1.cpg b/shared/shapefile/gadm41_KEN_1.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_KEN_1.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_KEN_1.dbf b/shared/shapefile/gadm41_KEN_1.dbf new file mode 100644 index 00000000..7c6d32a7 Binary files /dev/null and b/shared/shapefile/gadm41_KEN_1.dbf differ diff --git a/shared/shapefile/gadm41_KEN_1.prj b/shared/shapefile/gadm41_KEN_1.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_KEN_1.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_KEN_1.shp b/shared/shapefile/gadm41_KEN_1.shp new file mode 100644 index 00000000..06a8feb4 Binary files /dev/null and b/shared/shapefile/gadm41_KEN_1.shp differ diff --git a/shared/shapefile/gadm41_KEN_1.shx b/shared/shapefile/gadm41_KEN_1.shx new file mode 100644 index 00000000..ca53c546 Binary files /dev/null and b/shared/shapefile/gadm41_KEN_1.shx differ diff --git a/shared/shapefile/gadm41_MEX_1.cpg b/shared/shapefile/gadm41_MEX_1.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_MEX_1.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_MEX_1.dbf b/shared/shapefile/gadm41_MEX_1.dbf new file mode 100644 index 00000000..b1830eb8 Binary files /dev/null and b/shared/shapefile/gadm41_MEX_1.dbf differ diff --git a/shared/shapefile/gadm41_MEX_1.prj b/shared/shapefile/gadm41_MEX_1.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_MEX_1.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_MEX_1.shp b/shared/shapefile/gadm41_MEX_1.shp new file mode 100644 index 00000000..ffd1455b Binary files /dev/null and b/shared/shapefile/gadm41_MEX_1.shp differ diff --git a/shared/shapefile/gadm41_MEX_1.shx b/shared/shapefile/gadm41_MEX_1.shx new file mode 100644 index 00000000..8eee5caf Binary files /dev/null and b/shared/shapefile/gadm41_MEX_1.shx differ diff --git a/shared/shapefile/gadm41_THA_0.cpg b/shared/shapefile/gadm41_THA_0.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_THA_0.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_THA_0.dbf b/shared/shapefile/gadm41_THA_0.dbf new file mode 100644 index 00000000..25ef2609 Binary files /dev/null and b/shared/shapefile/gadm41_THA_0.dbf differ diff --git a/shared/shapefile/gadm41_THA_0.prj b/shared/shapefile/gadm41_THA_0.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_THA_0.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_THA_0.shp b/shared/shapefile/gadm41_THA_0.shp new file mode 100644 index 00000000..18867766 Binary files /dev/null and b/shared/shapefile/gadm41_THA_0.shp differ diff --git a/shared/shapefile/gadm41_THA_0.shx b/shared/shapefile/gadm41_THA_0.shx new file mode 100644 index 00000000..dccd5450 Binary files /dev/null and b/shared/shapefile/gadm41_THA_0.shx differ diff --git a/shared/shapefile/gadm41_THA_1.cpg b/shared/shapefile/gadm41_THA_1.cpg new file mode 100644 index 00000000..3ad133c0 --- /dev/null +++ b/shared/shapefile/gadm41_THA_1.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/shared/shapefile/gadm41_THA_1.dbf b/shared/shapefile/gadm41_THA_1.dbf new file mode 100644 index 00000000..a16da0cb Binary files /dev/null and b/shared/shapefile/gadm41_THA_1.dbf differ diff --git a/shared/shapefile/gadm41_THA_1.prj b/shared/shapefile/gadm41_THA_1.prj new file mode 100644 index 00000000..f45cbadf --- /dev/null +++ b/shared/shapefile/gadm41_THA_1.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/shared/shapefile/gadm41_THA_1.shp b/shared/shapefile/gadm41_THA_1.shp new file mode 100644 index 00000000..79841e17 Binary files /dev/null and b/shared/shapefile/gadm41_THA_1.shp differ diff --git a/shared/shapefile/gadm41_THA_1.shx b/shared/shapefile/gadm41_THA_1.shx new file mode 100644 index 00000000..a5e09047 Binary files /dev/null and b/shared/shapefile/gadm41_THA_1.shx differ diff --git a/shared/utils.R b/shared/utils.R index a28b3c93..6b10e53c 100644 --- a/shared/utils.R +++ b/shared/utils.R @@ -109,11 +109,90 @@ database_files <- function(pathogen) { "DIDE Priority Pathogens SARS - Thom.accdb", "DIDE Priority Pathogens SARS - Tristan.accdb" ) - ) - + ), + ZIKA = list( + zikasingledb = c( + "DIDE Priority Pathogens Zika 2 - Anna.accdb", + "DIDE Priority Pathogens Zika 2 - Anna-Maria.accdb", + "DIDE Priority Pathogens Zika 2 - Christian.accdb", + # "DIDE Priority Pathogens Zika 2 - Gina.accdb", + # "DIDE Priority Pathogens Zika 2 - Dom.accdb", + # "DIDE Priority Pathogens Zika 2 - Ettie.accdb", + # "DIDE Priority Pathogens Zika 2 - Ilaria.accdb", + "DIDE Priority Pathogens Zika 2 - Joseph.accdb", + "DIDE Priority Pathogens Zika 2 - Keith.accdb", + "DIDE Priority Pathogens Zika 2 - Kelly.accdb", + "DIDE Priority Pathogens Zika 2 - Patrick.accdb", + "DIDE Priority Pathogens Zika 2 - Richard.accdb", + # "DIDE Priority Pathogens Zika 2 - Rob.accdb", + "DIDE Priority Pathogens Zika 2 - Ruth.accdb", + "DIDE Priority Pathogens Zika 2 - Sangeeta.accdb", + # "DIDE Priority Pathogens Zika 2 - Sequoia.accdb", + "DIDE Priority Pathogens Zika 2 - Shazia.accdb", + "DIDE Priority Pathogens Zika 2 - Thom.accdb", + "DIDE Priority Pathogens Zika 2 - Tristan.accdb" + ), + # zikadoubledb = c( + # "DIDE Priority Pathogens Zika - Anna.accdb", + # "DIDE Priority Pathogens Zika - Anna-Maria.accdb", + # "DIDE Priority Pathogens Zika - Christian.accdb", + # "DIDE Priority Pathogens Zika - Dom.accdb", + # "DIDE Priority Pathogens Zika - Ettie.accdb", + # "DIDE Priority Pathogens Zika - Ilaria.accdb", + # "DIDE Priority Pathogens Zika - Keith.accdb", + # "DIDE Priority Pathogens Zika - Kelly.accdb", + # "DIDE Priority Pathogens Zika - Patrick.accdb", + # "DIDE Priority Pathogens Zika - Richard.accdb", + # "DIDE Priority Pathogens Zika - Rob.accdb", + # "DIDE Priority Pathogens Zika - Ruth.accdb", + # "DIDE Priority Pathogens Zika - Sangeeta.accdb", + # "DIDE Priority Pathogens Zika - Sequoia.accdb", + # "DIDE Priority Pathogens Zika - Shazia.accdb", + # "DIDE Priority Pathogens Zika - Thom.accdb", + # "DIDE Priority Pathogens Zika - Tristan.accdb" + # ), + zikadoubledb2 = c( + "DIDE Priority Pathogens Zika 2 - Anna.accdb", + "DIDE Priority Pathogens Zika 2 - Anna-Maria.accdb", + "DIDE Priority Pathogens Zika 2 - Christian.accdb", + "DIDE Priority Pathogens Zika 2 - Dom.accdb", + # "DIDE Priority Pathogens Zika 2 - Ettie.accdb", + # "DIDE Priority Pathogens Zika 2 - Ilaria.accdb", + "DIDE Priority Pathogens Zika 2 - Keith.accdb", + "DIDE Priority Pathogens Zika 2 - Kelly.accdb", + "DIDE Priority Pathogens Zika 2 - Patrick.accdb", + "DIDE Priority Pathogens Zika 2 - Richard.accdb", + "DIDE Priority Pathogens Zika 2 - Rob.accdb", + "DIDE Priority Pathogens Zika 2 - Ruth.accdb", + "DIDE Priority Pathogens Zika 2 - Sangeeta.accdb", + "DIDE Priority Pathogens Zika 2 - Sequoia.accdb", + "DIDE Priority Pathogens Zika 2 - Shazia.accdb", + "DIDE Priority Pathogens Zika 2 - Thom.accdb", + "DIDE Priority Pathogens Zika 2 - Tristan.accdb" + ) + ) ## Nipah Database files ) ## Return files for pathogen infiles[[pathogen]] } + + + +convert_to_utf <- function(vec, from = "windows-1252", to = "UTF-8") { + if (is.character(vec)) { + # If we can convert from and to the target then assume string is in target + # encoding + invalid <- is.na(iconv(vec, from = to, to = to)) + if (any(invalid)) { + # Fix the problem by converting to the target :) + vec[invalid] <- iconv(vec[invalid], from = from, to = to) + # Not sure if this a good idea..., but letter following unrecognised + # encoding is captial + vec[invalid] <- str_to_title(vec[invalid]) + } + } + vec +} + diff --git a/src/db_extraction/validation.R b/shared/validation.R similarity index 100% rename from src/db_extraction/validation.R rename to shared/validation.R diff --git a/shared/zika_functions.R b/shared/zika_functions.R new file mode 100644 index 00000000..d46cafd8 --- /dev/null +++ b/shared/zika_functions.R @@ -0,0 +1,259 @@ +# function to produce forest plot for given dataframe - modified from lassa_functions.R + +forest_plot_zika <- function(df, ycol = "urefs", label, shape_column = 'parameter_value_type', + color_column, lims, text_size = 12, show_label = FALSE, + custom_colours = NA, + facet_by_country = FALSE, facet_by_continent = FALSE, facet_by_poptype = FALSE, facet_by_delay = FALSE,facet_by_trimester = FALSE, + point_size = 3) { + + stopifnot(length(unique(df$parameter_unit[!is.na(df$parameter_unit)])) == 1)#values must have same units + + df <- df %>% mutate(urefs = make.unique(refs)) %>% + mutate(urefs = factor(urefs, levels = rev(unique(urefs))), + country_brazil = case_when( + population_country == 'Brazil' ~ 'Brazil', + population_country != 'Brazil' | is.na(population_country) ~ 'Rest of World', + TRUE ~ 'missing'), + population_location = ifelse(population_location == 'Wynwood Neighborhood, Miami-Dade County, Florida','Miami-Dade County, Florida', population_location), + continent = countrycode(sourcevar = population_country, + origin = "country.name", + destination = "continent"), + continent = case_when( + grepl(population_country, 'Multi') ~ "Multi-country", + population_country == 'France' & population_location == 'French Guiana' ~ "Americas", + population_location %in% c('Martinique','Guadeloupe','Saint Martin') ~ "Americas", + population_country == "France (Martinique, Guadeloupe, French Guiana)" ~ "Americas", + population_country == "Multi-country: France and Netherlands" ~ "Europe", + population_country == "Micronesia" ~ "Oceania", + population_country == 'Multi-country: Brazil and Colombia' ~ "Americas", + population_country == "Multi-country: Brazil, Colombia, El Salvador" ~ "Americas", + population_country == "Multi-country: Americas (n = 32)" ~ "Americas", + population_country == "Singapore" | population_location == 'Singapore' ~ "Asia", + population_country == 'Brazil' & population_location != 'Brazil' ~ "Brazil (Americas)", + # population_country == 'French Polynesia' & population_location != 'French Polynesia' ~ "French Polynesia (Oceania)", + population_country == 'France' & grepl('French Polynesia', population_location) & population_location != 'French Polynesia' & + population_location != "French Polynesia and French West Indies" ~ "French Polynesia, France (Oceania)", + population_location == 'French Polynesia' ~ "Oceania", + population_location == 'Sous-le-vent Islands' ~ "French Polynesia, France (Oceania)", + population_country == 'Colombia' & population_location != "Colombia" ~ "Colombia (Americas)", + population_country == 'France' & population_location == 'New Caledonia' ~ "Oceania", + population_country == 'France' & population_location == 'French Guiana' ~ "Americas", + population_country == 'Unspecified' ~ "Unspecified", + population_location == 'Veterans Health Administration in US and Caribbean' ~ "Americas", + population_location == "French Polynesia and French West Indies" ~ 'Multiple continents', + TRUE ~ continent + ), + continent = factor(continent, levels = c('Brazil (Americas)','French Polynesia, France (Oceania)','Colombia (Americas)', 'Americas','Asia','Europe','Oceania','Africa',"Multiple continents","Unspecified")), + population_country = str_replace(population_country, 'Multi-country: ', ""), + label_group = case_when( + is.na(population_location) | population_location == '' ~ population_country, + is.na(population_country) | population_country=='' ~ population_location, + (!is.na(population_location) & population_country == 'Unspecified') | + ((population_country == 'Brazil' | population_country == "Colombia" | continent == 'French Polynesia, France (Oceania)') & + (facet_by_country == TRUE | facet_by_continent == TRUE)) ~ population_location, + (population_location != "" & !is.na(population_location)) & + (population_country != 'Unspecified') ~ paste0(population_location,'\n' ,' (',population_country,')'), + TRUE ~ NA), + label_group = case_when( + label_group == 'continental United States and Hawaii\n (United States)' ~ 'United States', + label_group == 'Singapore\n (Singapore)' ~ 'Singapore', + # label_group == 'Brazil' ~ "Brazil (national)", + TRUE ~ label_group), + label_group = str_replace(label_group, ", French Polynesia$", "") + ) %>% + arrange(desc(parameter_value)) %>% + mutate(label_group = factor(label_group, levels = unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))) + cats <- length(unique(df[[color_column]])) + + jitterer <- position_jitter(seed = 123, width = 0.025) + + df <- df %>% + group_by(.data[[ycol]]) %>% + mutate(n = n()) + + sortby <- if(ycol == 'label_group') 'population_country' else 'parameter_value' + + gg <- ggplot(df) + + + geom_segment(data = df %>% filter(n > 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = parameter_lower_bound, xend = parameter_upper_bound, + y = .data[[ycol]], yend = .data[[ycol]], color = .data[[color_column]]), + position = jitterer, + linewidth = 4, alpha = 0.6) + + geom_errorbar(data = df %>% filter(n > 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = central, xmin=parameter_uncertainty_lower_value, xmax=parameter_uncertainty_upper_value, + color = .data[[color_column]], group = .data[[ycol]], + y = .data[[ycol]]), + position = jitterer, + width = 0.2, lwd=0.6, alpha = 1) +#color = "black", + geom_point(data = df %>% filter(n > 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = central, y = .data[[ycol]], + shape = .data[[shape_column]], fill = .data[[color_column]], + color = .data[[color_column]]), + position = jitterer, + size = point_size, stroke = 1, + alpha = 1) + + + geom_segment(data = df %>% filter(n == 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = parameter_lower_bound, xend = parameter_upper_bound, + y = .data[[ycol]], yend = .data[[ycol]], color = .data[[color_column]]), + linewidth = 4, alpha = 0.6) + + geom_errorbar(data = df %>% filter(n == 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = central, xmin=parameter_uncertainty_lower_value, xmax=parameter_uncertainty_upper_value, + color = .data[[color_column]], group = .data[[ycol]], + y = .data[[ycol]]), + width = 0.2, lwd=0.6, alpha = 1) +#color = "black", + geom_point(data = df %>% filter(n == 1) %>% arrange(sortby) %>% + mutate(label_group = factor(label_group, levels=unique(label_group)), + urefs = factor(urefs, levels = unique(urefs))), + aes(x = central, y = .data[[ycol]], + shape = .data[[shape_column]], fill = .data[[color_column]], + color = .data[[color_column]]), + size = point_size, stroke = 1, + alpha = 1) + + if(facet_by_country){ + gg <- gg + + ggforce::facet_col(vars(country_brazil), scales = 'free_y', space = 'free') #.~country_brazil ncol = 1, + } else if(facet_by_continent){ + gg <- gg + + ggforce::facet_col(vars(continent), scales = 'free_y', space = 'free') + } else if(facet_by_poptype){ + gg <- gg + + ggforce::facet_col(vars(population_sample_type), scales = 'free_y', space = 'free') + } else if (facet_by_delay){ + gg <- gg + + ggforce::facet_col(vars(parameter_type), scales = 'free_y', space = 'free') + } else if (facet_by_trimester){ + gg <- gg + + ggforce::facet_col(vars(trimester_exposed), scales = 'free_y', space = 'free') + } + + + + if (all(df$parameter_class=="Reproduction number")) {gg <- gg + geom_vline(xintercept = 1, linetype = "dashed", colour = "dark grey")} + + if (shape_column == 'parameter_value_type'){ + gg <- gg + + scale_shape_manual(name = "Parameter Type", + values = c(Mean = 21, Median = 22, Central = 25, "Maximum likelihood" = 23, Unspecified = 24, Other = 8), + breaks = c("Mean", "Median", "Unspecified", "Central", "Maximum likelihood", "Other"), + labels = function(x) str_wrap(x, width = 18)) + } else if (shape_column == 'case_definition'){ + gg <- gg + + scale_shape_manual(name = 'Case definition', + values = c("Confirmed" = 21, "Suspected" = 22, "Confirmed or suspected" = 25, + 'Other' = 13, + "Unspecified" = 24), + breaks = c("Confirmed", "Suspected", "Confirmed or suspected", "Other","Unspecified"), + labels = function(x) str_wrap(x, width = 18)) + } else if (shape_column == 'population_sample_type'){ + gg <- gg + + scale_shape_manual(name = 'Sample type', + values = c("Hospital based" = 21, "Mixed settings" = 22, "Population based" = 25, + "Travel based" = 23, "Community based" = 7, 'Unspecified' = 4, + "Other" = 24), + breaks = c("Hospital based", "Mixed settings", "Population based", + "Travel based","Community based", "Other", 'Unspecified'), + labels = function(x) str_wrap(x, width = 18)) + } else if (shape_column == 'population_group'){ + gg <- gg + + scale_shape_manual(name = 'Sample group', + values = c("General population" = 21, "Persons under investigation" = 22, "Blood donors" = 25, + "Mixed groups" = 13, 'Pregnant women' = 7, 'Children' = 8,'Household contacts of survivors'=4, + "Other" = 23, 'Unspecified' = 24), + breaks = c("General population", "Persons under investigation", "Blood donors", + "Mixed groups", 'Pregnant women', 'Children', 'Household contacts of survivors', + "Other", 'Unspecified'), + labels = function(x) str_wrap(x, width = 18)) + } + + lancetcols <- c('#00468BFF', '#ED0000FF','#42B540FF','#0099B4FF', '#925E9FFF','#AD002AFF','#FDAF91FF','#ADB6B6FF','#1B1919FF') + + if(sum(!is.na(custom_colours))) { + gg <- gg + + scale_color_manual(values = custom_colours, labels = function(x) str_wrap(x, width = 18)) + + scale_fill_manual(values = custom_colours, labels = function(x) str_wrap(x, width = 18)) + } else { + if(color_column == 'population_sample_type'){ + gg <- gg + + scale_color_manual(values = c("Population based" = lancetcols[1], 'Hospital based' = lancetcols[2] , + "Community based" = lancetcols[3], 'Travel based' = lancetcols[4] , + 'Unspecified' = lancetcols[8], 'Contact based' = lancetcols[6] , + 'Mixed settings' = lancetcols[7], 'Other' = lancetcols[5] , + 'School based' = lancetcols[9], 'Household based' = "#DF8F44"), + labels = function(x) str_wrap(x, width = 18)) + + scale_fill_manual(values = c("Population based" = lancetcols[1], 'Hospital based' = lancetcols[2] , + "Community based" = lancetcols[3], 'Travel based' = lancetcols[4] , + 'Unspecified' = lancetcols[8], 'Contact based' = lancetcols[6] , + 'Mixed settings' = lancetcols[7], 'Other' = lancetcols[5] , + 'School based' = lancetcols[9], 'Household based' = "#DF8F44"), + labels = function(x) str_wrap(x, width = 18)) + } else if(color_column == 'parameter_type'){ + gg <- gg + + scale_color_manual(values = c("Serial interval" = lancetcols[5], 'Symptom onset to admission' = lancetcols[6] , + "Symptom onset to recovery" = lancetcols[7], "Latent period" = "#DF8F44", + "Admission to care to discharge from care" = lancetcols[4]), + labels = function(x) str_wrap(x, width = 18)) + + scale_fill_manual(values = c("Serial interval" = lancetcols[5], 'Symptom onset to admission' = lancetcols[6] , + "Symptom onset to recovery" = lancetcols[7], "Latent period" = "#DF8F44", + "Admission to care to discharge from care" = lancetcols[4]), + labels = function(x) str_wrap(x, width = 18)) + } else if(color_column == 'population_group'){ + gg <- gg + + scale_color_manual(values = c("General population" = lancetcols[1], 'Persons under investigation' = lancetcols[2] , + "Other" = lancetcols[3], 'Children' = lancetcols[4] , + 'Pregnant women' = lancetcols[5], 'Mixed groups' = lancetcols[6] , + 'Blood donors' = lancetcols[7], 'Unspecified' = lancetcols[8] , + 'Household contacts of survivors' = "#DF8F44"), + labels = function(x) str_wrap(x, width = 18)) + + scale_fill_manual(values = c("General population" = lancetcols[1], 'Persons under investigation' = lancetcols[2] , + "Other" = lancetcols[3], 'Children' = lancetcols[4] , + 'Pregnant women' = lancetcols[5], 'Mixed groups' = lancetcols[6] , + 'Blood donors' = lancetcols[7], 'Unspecified' = lancetcols[8] , + 'Household contacts of survivors' = "#DF8F44"), + labels = function(x) str_wrap(x, width = 18)) + } else {gg <- gg + + scale_fill_lancet(palette = "lanonc", labels = function(x) str_wrap(x, width = 18)) + + scale_color_lancet(palette = "lanonc", labels = function(x) str_wrap(x, width = 18)) + } + } + + gg <- gg + + scale_x_continuous(limits = lims, expand = c(0.01, 0)) + + labs(x = label, y = NULL) + + theme_minimal() + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA), + text = element_text(size = text_size))#, + # legend.key.size = unit(5, 'cm')) + + if(ycol == 'urefs'){ + gg <- gg + + scale_y_discrete(labels = setNames(df$refs, df$urefs)) + } else { + gg <- gg + + scale_y_discrete(labels = function(x) str_wrap(x, width = 30)) + } + + # if (cats == 1) { + # gg <- gg + guides(fill = "none", color = FALSE, shape = guide_legend(title = NULL,order = 1)) + # } else { + gg <- gg + guides(fill = "none", color = guide_legend(title = NULL,order = 1), shape = guide_legend(title = NULL,order = 2))#} + + if(show_label) + gg <- gg + geom_text_repel(aes(x = coalesce(parameter_value), y = urefs, label = population_country_ISO), nudge_y = 0.5, segment.color = "grey50" ) + #gg <- gg + geom_text_repel(aes(x = coalesce(parameter_uncertainty_upper_value,parameter_upper_bound,parameter_value), y = urefs, label = population_country_ISO), nudge_x = 1.5, segment.color = "grey90" ) + + return(gg) +} diff --git a/src/data_cleaning/orderly.R b/src/data_cleaning/data_cleaning.R similarity index 100% rename from src/data_cleaning/orderly.R rename to src/data_cleaning/data_cleaning.R diff --git a/src/db_cleaning/cleaning.R b/src/db_cleaning/cleaning.R new file mode 100644 index 00000000..b14612e8 --- /dev/null +++ b/src/db_cleaning/cleaning.R @@ -0,0 +1,62 @@ +# Functions for cleaning data and adding QA scores +library(dplyr) +library(janitor) +library(stringr) + +# *============================= Helper functions =============================* +map_values <- function(update_vec, lookup_vec){ + return (ifelse(update_vec %in% names(lookup_vec), + lookup_vec[update_vec], update_vec)) +} + +assign_parameter_class <- function(x, + pattern_map, + default = "Other transmission parameters") { + out_vec <- rep(default, length(x)) + for (pattern in names(pattern_map)) { + # if there is an overlap between pattern names the final match will be used + match_idx <- grepl(pattern, x) + out_vec[match_idx] <- pattern_map[pattern] + } + + return(out_vec) +} + +combine_interval <- function(df, lower_col, upper_col, new_col) { + out_vec <- ifelse(!is.na(df[[lower_col]]) & !is.na(df[[upper_col]]), + paste(df[[lower_col]], "-", df[[upper_col]]), NA) + + return(out_vec) +} + +combine_cols <- function(df, cols_to_check, cols_to_combine){ + out_vec <- rep(NA, NROW(df)) + + for (i in 1:NROW(cols_to_check)){ + match_idx <- which(!is.na(df[cols_to_check[i]])) + + out_vec[match_idx] <- df[[cols_to_combine[i]]][match_idx] + } + + return (out_vec) +} + +convert_column_types <- function(df, type_map) { + for (col in names(type_map)) { + type_fn <- type_map[[col]] + df[[col]] <- type_fn(df[[col]]) + } + + return(df) +} + +relocate_and_arrange <- function(df, relocate_cols, arrange_col){ + df <- relocate(df, all_of(relocate_cols)) + df <- arrange(df, arrange_col) + + return (df) +} + +filter_cols <- function(df, cols_to_remove){ + return (df[!colnames(df) %in% cols_to_remove]) +} diff --git a/src/db_cleaning/db_cleaning.R b/src/db_cleaning/db_cleaning.R new file mode 100644 index 00000000..d1af969b --- /dev/null +++ b/src/db_cleaning/db_cleaning.R @@ -0,0 +1,203 @@ +library(dplyr) +library(orderly2) +library(readr) +library(stringr) + +orderly_parameters(pathogen = NULL, debug_mode=FALSE) + +pathogen_config_case <- tolower(pathogen) +pathogen_config_filename <- file.path( + pathogen_config_case, paste0(pathogen_config_case, "_cleaning_config.R")) +pathogen_cleaning_filename <- file.path( + pathogen_config_case, paste0(pathogen_config_case, "_cleaning.R")) + +orderly_resource(c("cleaning.R", + pathogen_config_filename, + pathogen_cleaning_filename)) +source("cleaning.R") +source(pathogen_config_filename) +source(pathogen_cleaning_filename) + + +# pathogen config needs to needs to have a vector called tables that has +# table names which match the input rds filenames +csv_artefacts <- sapply(tables, function(table) paste0(table, ".csv")) +rds_inputs <- sapply(tables, function(table) paste0(table, ".rds")) + +orderly_dependency("db_compilation", + "latest(parameter:pathogen == this:pathogen)", + setNames(rds_inputs, rds_inputs)) + +orderly_artefact( + description="Merged single and double extracted data as csv and rds files", + setNames(csv_artefacts, csv_artefacts) +) + +# The names on the left will always be used in this script to check if a table +# exists. Declaring a list allows us to change the table name we look for - e.g. +# if we decide to name a table parameters instead of params we can use +# "params"="parameters" in the list +table_check_list <- list("articles" = "articles", + "models" = "models", + "outbreaks" = "outbreaks", + "params" = "params") + +cleaned_df_list <- list() +# *============================= Article cleaning =============================* +article_table_name <- table_check_list[["articles"]] +if (article_table_name %in% tables){ + article_rds_filename <- rds_inputs[[article_table_name]] + article_df <- readRDS(article_rds_filename) + + # Legacy bug + article_df <- rename(article_df, + first_author_surname = first_aauthor_surname) + +# *----------------------------- Custom cleaning ------------------------------* + article_df <- article_cleaning(article_df) + +# *----------------------------- Generic cleaning -----------------------------* + article_df$article_label <- paste(article_df$first_author_surname, + article_df$year_publication) + + if(debug_mode!=TRUE){ + article_filter_cols <- c("article_id", "name_data_entry") + article_df <- filter_cols(article_df, article_filter_cols) + }else{ + article_filter_cols <- c("") + } + + base_relocate_cols <- c("id", "covidence_id", "pathogen") + order_col <- "covidence_id" + article_df <- relocate_and_arrange( + article_df, + c(base_relocate_cols, "first_author_first_name", "first_author_surname"), + order_col + ) + + cleaned_df_list[[article_table_name]] <- article_df +} else{ + cli_alert_danger("You need to have an article table (or similar information + table)") +} + + + +# *============================ Outbreak cleaning =============================* +oubreak_table_name <- table_check_list[["outbreaks"]] +if (oubreak_table_name %in% tables){ + outbreaks_rds_filename <- rds_inputs[[oubreak_table_name]] + outbreak_df <- readRDS(outbreaks_rds_filename) + + outbreak_df <- outbreak_cleaning(outbreak_df) + +# *----------------------------- Generic cleaning -----------------------------* + outbreak_df <- filter_cols(outbreak_df, + article_filter_cols) + outbreak_df <- relocate_and_arrange(outbreak_df, + c(base_relocate_cols, + "outbreak_id", + "outbreak_data_id"), + order_col) + + + cleaned_df_list[[oubreak_table_name]] <- outbreak_df +} + +# *============================== Model cleaning ==============================* +model_table_name <- table_check_list[["models"]] + +if (model_table_name %in% tables){ + models_rds_filename <- rds_inputs[[model_table_name]] + model_df <- readRDS(models_rds_filename) + +# *----------------------------- Custom cleaning ------------------------------* + model_df <- model_cleaning(model_df) + +# *----------------------------- Generic cleaning -----------------------------* + model_df <- filter_cols(model_df, + article_filter_cols) + + model_df <- relocate_and_arrange(model_df, + c(base_relocate_cols, + "access_model_id", + "model_data_id"), + order_col) + + cleaned_df_list[[model_table_name]] <- model_df +} + +# *============================ Parameter cleaning ============================* +param_table_name <- table_check_list[["params"]] + +if (param_table_name %in% tables){ + param_rds_filename <- rds_inputs[[param_table_name]] + param_df <- readRDS(param_rds_filename) + +# *----------------------------- Custom cleaning ------------------------------* + param_df <- param_cleaning(param_df) + +# *--------------------------- Update column types ----------------------------* + if (!is.null(type_map_list)){ + param_df <- convert_column_types(param_df, type_map_list) + } + +# *---------------------------- Update punctuation ----------------------------* + if (!is.null(cols_to_punctuate_vec)){ + param_df[cols_to_punctuate_vec] <- lapply( + param_df[cols_to_punctuate_vec], function(x) str_replace_all(x, ",", "; ")) + } + +# *------------------------------ Update values -------------------------------* + if (!is.null(update_values_list)){ + for (name in names(update_values_list)){ + param_df[name] <- map_values(param_df[[name]], + update_values_list[[name]]) + } + } + +# *------------------------------- Group types --------------------------------* + # name is what we search for and value is what we map to + if (!is.null(group_mapping_vec)){ + param_df$parameter_class <- assign_parameter_class( + param_df$parameter_type, + group_mapping_vec, + default = "Other transmission parameters" + ) + } + +# *---------------------------- Combine intervals -----------------------------* + if (!is.null(interval_combine_list)){ + for (name in names(interval_combine_list)){ + param_df[name] <- combine_interval(param_df, + interval_combine_list[[name]][1], + interval_combine_list[[name]][2]) + } + } + +# *----------------------------- Combine columns ------------------------------* + if (!is.null(col_combine_list)){ + for (name in names(col_combine_list)){ + param_df[name] <- combine_cols(param_df, + col_combine_list[[name]][[1]], + col_combine_list[[name]][[2]]) + } + } + +# *--------------------------- Filter and relocate ----------------------------* + param_df <- filter_cols(param_df, + article_filter_cols) + param_df <- relocate_and_arrange( + param_df, + c(base_relocate_cols, + "access_param_id", + "parameter_data_id"), + order_col) + + cleaned_df_list[[param_table_name]] <- param_df +} + +# *=============================== Save output ================================* +for (name in names(cleaned_df_list)){ + write_csv(cleaned_df_list[[name]], csv_artefacts[name]) +} diff --git a/src/db_cleaning/nipah/nipah_cleaning.R b/src/db_cleaning/nipah/nipah_cleaning.R new file mode 100644 index 00000000..9e69dea9 --- /dev/null +++ b/src/db_cleaning/nipah/nipah_cleaning.R @@ -0,0 +1,785 @@ +# *========================== Manual Niaph cleaning ===========================* +library(tidyr) + +PARAMETER_2_BASE <- c( + "parameter_2_unit"="parameter_unit", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "method_2_from_supplement"="method_from_supplement", + "parameter_2_statistical_approach"="parameter_statistical_approach") + +SINLGE_MAP_FROM_TO_VEC <- c( + "parameter_2_value_type"="parameter_uncertainty_single_type", + "parameter_2_value"="parameter_uncertainty_single_value", + PARAMETER_2_BASE +) + +SINLGE_SET_TO_NA_VEC <- c("parameter_uncertainty_single_type", + "parameter_uncertainty_single_value") + +PAIRED_MAP_FROM_TO_VEC <- c( + "parameter_2_value_type"="parameter_uncertainty_type", + "parameter_2_lower_bound"="parameter_uncertainty_lower_value", + "parameter_2_upper_bound"="parameter_uncertainty_upper_value", + PARAMETER_2_BASE) + +PAIRED_SET_TO_NA_VEC <- c("parameter_uncertainty_type", + "parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value") + +uncert_to_varb <- function(df, map_to_from_vec, set_to_na_vec){ + df[,names(map_to_from_vec)] <- df[,map_to_from_vec] + + df[,set_to_na_vec] <- NA + + df[, "parameter_paired"] <- "Yes" + + return(df) +} + +generate_new_id <- function(df, id_col_name, iterations){ + # different seed used to generate ids, try `iterations` seeds and then abort. + # Assumes that this code has not been used `iterations` times already. + seed_start <- 1110 + for (i in 1:iterations){ + set.seed(seed_start + i) + new_row_id <- ids::random_id(1) + + if (!(new_row_id %in% df[[id_col_name]])){ + break + } + else{ + new_row_id <- "" + } + } + + if (new_row_id == ""){ + cli_abort(paste("Too many clashes, cannot allocate a new", id_col_name)) + } + + return(new_row_id) +} + +article_cleaning <- function(df){ + # Update Not Applicable so that epireview assign_qa_score works + df[df$covidence_id==207, "first_author_first_name"] <- "Khean Jin" + df[df$covidence_id==207, "first_author_surname"] <- "Goh" + + qa_cols <- c("qa_m1", "qa_m2", "qa_a3", "qa_a4", "qa_d5", "qa_d6", "qa_d7") + df <- df |> + mutate(across(all_of(qa_cols), ~ ifelse(.=="Not Applicable", NA, .))) + + # Leave first_author_first_name as is incase there are initials as the first + # name + df <- df |> + mutate(journal = str_to_title(journal), + first_author_surname = str_to_title(first_author_surname)) |> + mutate(journal = sub("^The\\s+", "", journal, useBytes = TRUE)) + + return (df) +} + +model_cleaning <- function(df){ + + df[(df$covidence_id==2800) & (df$stoch_deter=="Deterministic model"), + "stoch_deter"] <- "Stochastic model" + + df[(df$covidence_id==4124) & is.na(df$theoretical_model), + "theoretical_model"] <- "Yes" + + # Captured as Airborne or close contact,Human to human (direct contact), + # Vector/Animal to human, which is incorrect based on the paper + # Spillover risk mapping - debatable whether to include? + air_trans_filter <- df$access_model_id == "137_001" + + df[air_trans_filter,"transmission_route"] <- "Vector/Animal to human,Unspecified" + + + return (df) +} + +outbreak_cleaning <- function(df){ + + df <- df %>% + mutate(outbreak_location = str_to_title(outbreak_location), + outbreak_location = str_replace_all(outbreak_location, " And", ";" ), + outbreak_location = str_replace_all(outbreak_location, ",", ";" ), + outbreak_location = str_replace_all(outbreak_location, "Kerela", "Kerala" ), + outbreak_location = case_when(outbreak_location == "Serembna Hospital" ~ "Seremban Hospital", + outbreak_location == "University Of Malaya Medical Center" ~ "University Of Malaya Medical Centre", + outbreak_location == "Suspected To Be Infected With The Virus From Pig Farms Situated In Bukit Pelandok" ~ "Bukit Pelandok" , + TRUE ~ outbreak_location)) + + return (df) +} + +param_cleaning <- function(df){ + na_replacement <- list(parameter_from_figure = "No", + inverse_param = "No", + exponent=0, + parameter_value_type="Unspecified") + + df <- replace_na(df, na_replacement) + + no_true_false <- c("parameter_from_figure", + "inverse_param") + + df[no_true_false] <- lapply(no_true_false, + function(col) df[[col]] != "No") + + # do the same for non empty variability + non_empty_param_2_filter <- (!is.na(df$parameter_2_lower_bound) | + !is.na(df$parameter_2_upper_bound) | + !is.na(df$parameter_2_value)| + !is.na(df$parameter_2_value_type)) + + # Exponent 2 is logical since completely NA + df[["exponent_2"]] <- as.numeric(df[["exponent_2"]]) + + non_empty_param_2_df <- df[non_empty_param_2_filter, ] + non_empty_param_2_df <- replace_na(non_empty_param_2_df, + list(inverse_param_2 = "No", + exponent_2=0)) + df[non_empty_param_2_filter,] <- non_empty_param_2_df + + df[["inverse_param_2"]] <- unname(sapply( + df[["inverse_param_2"]], function(x) ifelse(!is.na(x), x != "No", NA))) + + df <- df |> + mutate(population_location = str_to_title(population_location), + population_location = str_replace_all(population_location, " And", ";"), + population_location = str_replace_all(population_location, ",", ";"), + population_location = str_replace_all(population_location, "[(]Bangladesh[)]", ";"), + population_location = str_replace_all(population_location, "[(]India[)]", ";"), + population_location = str_replace_all(population_location, "Serembna Hospital", "Seremban Hospital"), + population_location = str_replace_all(population_location, "Kerela", "Kerala"), + population_location = str_replace_all(population_location, "Suspected To Be Infected With The Virus From Pig Farms Situated In Bukit Pelandok", "Bukit Pelandok"), + population_location = str_trim(population_location, side = "both") + ) + + # Removed parameter_hd_to, parameter_hd_from since these were introduced in + # Redcap and somewhat duplicates capturing non standard human delays. + # The field other_delay_* is included in epireview, so combine columns and + # keep other_delay_* + df <- df |> + mutate(other_delay_start = ifelse( + parameter_hd_from=="Other" | is.na(parameter_hd_from), + other_delay_start, parameter_hd_from), + other_delay_end = ifelse( + parameter_hd_to=="Other" | is.na(parameter_hd_to), + other_delay_end, parameter_hd_to), + parameter_value_type = ifelse(parameter_value_type=="Central - unspecified", + "Unspecified", parameter_value_type) + ) |> + select(-c(parameter_hd_to, parameter_hd_from)) + + # Risk factors: + # CovID: issing risk_factor_name 345 + rf_name_345_filter <- df$access_param_id=="025_008" + df[rf_name_345_filter, "riskfactor_name"] <- "Other" + + # CovID 906 missing risk_factor_outcome + rf_out_906_filter <- df$access_param_id=="093_007" + df[rf_out_906_filter, "riskfactor_outcome"] <- "Infection" + + # Missing a risk factor + rf_906_new_row_filter <- df$access_param_id=="093_005" + new_906_row <- df[rf_906_new_row_filter, ] + + new_906_row$parameter_data_id <- generate_new_id(df, "parameter_data_id", 10) + # No corresponding redcap entry so make an ID + new_906_row$access_param_id <- "093_3141" + new_906_row$riskfactor_name <- "Environmental;Other" + new_906_row$riskfactor_significant <- "Not significant" + df <- rbind(df, new_906_row) + + # 1150 - 101 CFR - data entry mistake + cfr_101_1150_filter <-df$access_param_id %in% c("109_013", + "109_016", + "109_012") + df[cfr_101_1150_filter, "parameter_value"] <- 100 + + # Parameter_statistical approach error (currently Case study [Oropouche ONLY]) + df[df$access_param_id=="109_013", + "parameter_statistical_approach"] <- "Unspecified" + + + # TODO: Derived rows such as parameter_bounds should be created after cleaning + # Transmission + # R0 + # CovID 1030 + # Row extracted as variability paired parameter - paired range should be + Basic_R_1030_filter <- ((df$covidence_id == 1030) & + (df$parameter_type=="Reproduction number (Basic R0)")) + + # Reverse direction so not using uncert_to_varb + filtered_row <- df[Basic_R_1030_filter, ] + filtered_row[,"parameter_lower_bound"] <- filtered_row[, "parameter_2_sample_paired_lower"] + filtered_row[,"parameter_upper_bound"] <- filtered_row[, "parameter_2_sample_paired_upper"] + filtered_row[,"parameter_paired"] <- NA + filtered_row[,"exponent_2"] <- NA + filtered_row[,"inverse_param_2"] <- NA + + filtered_row[grepl("parameter_2", colnames(filtered_row))] <- NA + + df[Basic_R_1030_filter, ] <- filtered_row + + Basic_R_3051_filter <- ((df$covidence_id == 3051) & + (df$parameter_type=="Reproduction number (Basic R0)")) + df[Basic_R_3051_filter, "population_group"] <- "Persons under investigation" + + # Substitution rates + # CovID 2760 + evolutionary_rate_2760_filter <- ((df$covidence_id == 2760) & + (df$parameter_type=="Mutations - substitution rate")) + + # Convert to exp -4 for consistent scale across params - not strictly necessary + # Currently in ^-3 scale + df[evolutionary_rate_2760_filter, c( + "parameter_value", + "parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value", + "parameter_lower_bound", + "parameter_upper_bound" + )] <- df[evolutionary_rate_2760_filter, c( + "parameter_value", + "parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value", + "parameter_lower_bound", + "parameter_upper_bound" + )] * 10 + + df[evolutionary_rate_2760_filter, "exponent"] <- -4 + df[evolutionary_rate_2760_filter, "genome_site"] <- "Nucleocapsid" + + # CovID 3058 substitution rate + # Listed as actual values i.e. 0.00029 and 0.0006 + evolutionary_rate_3058_filter <- ((df$covidence_id == 3058) & + (df$parameter_type=="Mutations - substitution rate")) + df[evolutionary_rate_3058_filter, "parameter_uncertainty_lower_value"] <- 2.9 + df[evolutionary_rate_3058_filter, "parameter_uncertainty_upper_value"] <- 6 + df[evolutionary_rate_3058_filter, "genome_site"] <- "Nucleocapsid" + + df[(df$covidence_id==1171) & (df$parameter_type=="Mutations - evolutionary rate"), + "genome_site"] <- "Nucleocapsid" + + df[(df$covidence_id==906) & (df$parameter_type=="Overdispersion"), + "parameter_unit"] <- "Max. nr. of cases superspreading (related to case)" + + # Proportion symptomatic + prop_symp_filter <- df$parameter_type=="Severity - proportion of symptomatic cases" + + # CovID: 906 + prop_symp_906_filter <- (df$covidence_id==906 & prop_symp_filter) + + # Value is 0 based on CFR but not yet assigned + df[prop_symp_906_filter, "parameter_value"] <- 100 + df[prop_symp_906_filter, "inverse_param"] <- FALSE + df[prop_symp_906_filter, "parameter_notes"] <- + paste0("Proportion asymptomatic is reported in the paper.", + "Denominator is contacts of Nipah patients who gave blood specimen") + + # Sero uncert issue: Reported as 8.35 in the paper but this is clearly a typo; + # other estimates in the table have the same estimate but a 95% CI upper bound + # of 38.35 + sero_2892_sero_uncert_filter <- df$access_param_id=="008_003" + df[sero_2892_sero_uncert_filter, "parameter_uncertainty_upper_value"] <- 38.35 + + # CovID: 3057 + delay_3057_incp_filter <- df$access_param_id=="151_001" + df[delay_3057_incp_filter, "parameter_2_value_type"] <- "Range (paired)" + df[delay_3057_incp_filter, "parameter_2_upper_bound"] <- 15 + + # CovID: 3025 + prop_symp_3025_filter <- (df$covidence_id==3025 & prop_symp_filter) + + df[prop_symp_3025_filter, "parameter_value"] <- 100 - df[prop_symp_3025_filter, + "parameter_value"] + df[prop_symp_3025_filter, "parameter_notes"] <- ("Proportion asymptomatic is + reported in the paper") + + # CovID: 2886 + df[df$covidence_id==2886 & + df$parameter_type=="Seroprevalence - IgG", "cfr_ifr_denominator"] <- 18 + + delay_filter <- grepl("Human delay", df$parameter_type) + + # CovID: 271: parameter_2_value_type is blank + df[df$access_param_id=="027_002", + "parameter_2_value_type"] <- "Range" + + # Only variability + df[df$covidence_id==271 & delay_filter, "parameter_value_type"] <- NA + + # CovID: 274 + # parameter_2_value_type mistakenly filled in as uncertainty single type + # (presumably updated during fixing but uncertainty type not moved) + # 3f22cc21917075a5f1153c9a8563c57f has both a paired and single varb + unc_sing_274_filter <- (df$covidence_id==274 & + !is.na(df$parameter_uncertainty_single_type)) + + df[unc_sing_274_filter, ] <- uncert_to_varb( + df[unc_sing_274_filter, ], + c("parameter_2_value_type"="parameter_uncertainty_single_type", + PARAMETER_2_BASE), + SINLGE_SET_TO_NA_VEC) + + df[unc_sing_274_filter, "parameter_notes"] <- sapply( + df[unc_sing_274_filter, "parameter_notes"], function(notes) paste0( + ifelse(!is.na(notes), paste0(notes, "; "), ""), + "Single Other variability value is likely standard deviation, but not ", + "explicitly stated") + ) + + pair_sing_varb <- df$access_param_id=="040_001" + + df[pair_sing_varb, "parameter_notes"] <- paste0( + df[pair_sing_varb, "parameter_notes"], ";", + "Also contains an Other (likely range, but not explicitly stated) paired ", + "variability of 1 to 32 Days") + + # Only the next two delays were reported as means; other delays are likely + # means but not explicitly stated and so extracted as reported. + df[pair_sing_varb, "parameter_value_type"] <- "Mean" + + other_delay_vent_274_filter <- df$access_param_id=="040_003" + + df[other_delay_vent_274_filter, "paramater_value_type"] <- "Mean" + + + # 274: Other delays as reported in paper, but paper has a typo + other_delay_lymp_274_filter <- df$access_param_id=="040_004" + df[other_delay_lymp_274_filter, "other_delay_end"] <- "Lymphopenia" + + other_delay_thro_274_filter <- df$access_param_id=="040_005" + df[other_delay_thro_274_filter, "other_delay_end"] <- "Thrombocytopenia" + + # CovID: 207, Nadir delay filter + nadir_delay_filter <- ( + df$covidence_id==207 & + df$parameter_type=="Human delay - other human delay (go to section)" + ) + + df[nadir_delay_filter, "parameter_notes"] <- + paste0("Nadir defined as the worst conscious level or the need for, + mechanical ventilation") + df[nadir_delay_filter, "parameter_value_type"] <- "Mean" + + delay_207_filter <- df$covidence_id==207 & delay_filter + + # Missing parameter_2_value_type checked from paper + df[delay_207_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 184 + # Missing parameter_2_value_type checked from paper + delay_184_filter <- df$covidence_id==184 & delay_filter + df[delay_184_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 947 + # Missing parameter_2_value_type checked from paper + delay_947_filter <- df$covidence_id==947 & delay_filter + df[delay_947_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 956 + # Missing parameter_2_value_type checked from paper + delay_956_filter <- df$covidence_id==956 & delay_filter + df[delay_956_filter, "parameter_2_value_type"] <- "Range" + + # CovID 167 so_d row: + so_d_167_filter <- df$access_param_id == "047_003" + + df[so_d_167_filter, "parameter_2_value_type"] <- df[so_d_167_filter, "parameter_uncertainty_type"] + df[so_d_167_filter, "parameter_uncertainty_type"] <- NA + + # CovID 275 so_d row: + # Missing parameter_2_value_type checked from paper + # Upper bound likely 32? + so_d_275_filter <- df$access_param_id == "054_002" + + df[so_d_275_filter, "parameter_2_value_type"] <- "Range" + + # CovID 833 so_d row: + # Missing parameter_2_value_type checked from paper + delay_833_filter <- df$covidence_id==833 & delay_filter + df[delay_833_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 2886,Incubation period relates to cases (confirmed/probable => PUI) + # df[df$covidence_id==2886, "population_group"] <- "Persons under investigation" + # Variability vs. uncertainty: + # CovID 103 - Human delay - symptom onset>death + # c308153a0234e0da80717c0440f479a1 + delay_103_filter <- df$covidence_id==103 & delay_filter + df[delay_103_filter, ] <- uncert_to_varb(df[delay_103_filter, ], + PAIRED_MAP_FROM_TO_VEC, + PAIRED_SET_TO_NA_VEC) + + # CovID 345: All three rows need the same update + # Add lower bounds for + # 1048c95b02719626d563e887d51e690b and 31eee995f6fd838e73fd39f05780f627 + delay_345_filter <- df$covidence_id==345 & delay_filter + df[delay_345_filter, ] <- uncert_to_varb(df[delay_345_filter, ], + PAIRED_MAP_FROM_TO_VEC, + PAIRED_SET_TO_NA_VEC) + + # Duration between neurological episodes + delay_345_dne_filter <- df$access_param_id == "025_001" + + df[delay_345_dne_filter, "parameter_2_lower_bound"] <- 9 + df[delay_345_dne_filter, "parameter_2_upper_bound"] <- 365 + df[delay_345_dne_filter, "parameter_2_unit"] <- "days" + df[delay_345_dne_filter, "parameter_notes"] <- paste0( + df[delay_345_dne_filter, "parameter_notes"], + "Variability upper bound reported as 12 months in the paper.") + + # Time until first neurological episode + delay_345_fne_filter <- df$access_param_id == "025_002" + + df[delay_345_fne_filter, "parameter_2_lower_bound"] <- 1 + + problem_row_851_filter <- df$access_param_id == "033_005" + + delay_851_filter <- (df$covidence_id==851 & + delay_filter & + !problem_row_851_filter) + df[delay_851_filter, ] <- uncert_to_varb(df[delay_851_filter, ], + PAIRED_MAP_FROM_TO_VEC, + PAIRED_SET_TO_NA_VEC) + # SD removed - favour SD? + # To remove SD: (Also rmeove problem row from filter above) + # df[problem_row_851_filter, + # c("parameter_uncertainty_single_value_type", + # "parameter_uncertainty_single_value", + # "parameter_2_value")] <- NA + # df[problem_row_851_filter, "parameter_notes"] <- paste0( + # df[problem_row_851_filter, "parameter_notes"], + # "; Standard deviation=4.6 also provided.") + df[problem_row_851_filter, ] <- uncert_to_varb(df[problem_row_851_filter, ], + SINLGE_MAP_FROM_TO_VEC, + SINLGE_SET_TO_NA_VEC) + + df[problem_row_851_filter, PAIRED_SET_TO_NA_VEC] <- NA + + df[problem_row_851_filter, "parameter_notes"] <- paste0( + df[problem_row_851_filter, "parameter_notes"], + "; Range [2, 36] also provided.") + + + # CovID: 271, param data ID 048b23e7de13b62f87c16b04a4887711 + # Incubation period parameter_value_type set to unspecified by cleaning code + # but should be NA; is this allowed? + p2_unc_var_167_filter <- df$access_param_id=="044_008" + + # Inverse and exponent are blank + df[p2_unc_var_167_filter, ] <- uncert_to_varb( + df[p2_unc_var_167_filter, ], + c("parameter_2_value_type"="parameter_2_uncertainty_type", + "parameter_2_lower_bound"="parameter_2_uncertainty_lower_value", + "parameter_2_upper_bound"="parameter_2_uncertainty_upper_value", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "method_2_from_supplement"="method_from_supplement"), + c("parameter_2_uncertainty_type", + "parameter_2_uncertainty_lower_value", + "parameter_2_uncertainty_upper_value")) + + unc_p2_var_167_filter <- (df$access_param_id=="047_003") + + df[unc_p2_var_167_filter, ] <- uncert_to_varb( + df[unc_p2_var_167_filter, ], + c("parameter_2_value_type"="parameter_uncertainty_type"), + "parameter_uncertainty_type") + + delay_4055_filter <- df$covidence_id==4055 & delay_filter + df[delay_4055_filter, ] <- uncert_to_varb( + df[delay_4055_filter, ], + SINLGE_MAP_FROM_TO_VEC, + SINLGE_SET_TO_NA_VEC) + + df[delay_4055_filter, "parameter_2_value_type"] <- "Other" + + df[delay_4055_filter, "parameter_notes"] <- sapply( + df[delay_4055_filter, "parameter_notes"], function(notes) paste0( + ifelse(!is.na(notes), paste0(notes, "; "), ""), + "Single Other variability value is likely standard deviation, but not ", + "explicitly stated") + ) + + delay_4055_filter <- df$covidence_id==4047 & delay_filter + + df[delay_4055_filter, ] <- uncert_to_varb( + df[delay_4055_filter, ], + c("parameter_2_lower_bound"="parameter_2_sample_paired_lower", + "parameter_2_upper_bound"="parameter_2_sample_paired_upper", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "method_2_from_supplement"="method_from_supplement"), + c("parameter_2_sample_paired_lower", + "parameter_2_sample_paired_upper")) + + delay_1110_filter <- df$covidence_id==1110 & delay_filter + + df[delay_1110_filter, ] <- uncert_to_varb( + df[delay_1110_filter, ], + c("parameter_2_lower_bound"="parameter_2_sample_paired_lower", + "parameter_2_upper_bound"="parameter_2_sample_paired_upper", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param"), + c("parameter_2_sample_paired_lower", + "parameter_2_sample_paired_upper")) + + delay_2825_filter <- df$covidence_id==2825 & delay_filter + + df[delay_2825_filter, ] <- uncert_to_varb( + df[delay_2825_filter, ], + c("parameter_2_lower_bound"="parameter_2_sample_paired_lower", + "parameter_2_upper_bound"="parameter_2_sample_paired_upper", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit"), + c("parameter_2_sample_paired_lower", + "parameter_2_sample_paired_upper")) + + delay_2886_filter <- df$covidence_id==2886 & delay_filter + df[delay_2886_filter, ] <- uncert_to_varb(df[delay_2886_filter, ], + PAIRED_MAP_FROM_TO_VEC, + PAIRED_SET_TO_NA_VEC) + + # CovID: 828 + df[df$covidence_id==828, "population_group"] <- "Persons under investigation" + delay_828_filter <- df$covidence_id==828 & delay_filter + df[delay_828_filter, ] <- uncert_to_varb( + df[delay_828_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit"), + c("parameter_lower_bound", + "parameter_upper_bound", + "parameter_unit", + "parameter_value_type", + "parameter_statistical_approach")) + + df[delay_828_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 4365 + df[df$covidence_id==4365, "population_group"] <- "Persons under investigation" + + # across all + delay_4365_filter <- df$covidence_id==4365 & delay_filter + df[delay_4365_filter, ] <- uncert_to_varb( + df[delay_4365_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit", + "method_2_from_supplement"="method_from_supplement"), + c("parameter_lower_bound", + "parameter_upper_bound")) + + df[delay_4365_filter, "parameter_2_value_type"] <- "Range" + + # Only variablity + delay_4365_varb_only_filter<- df$access_param_id=="171_005" + + df[delay_4365_varb_only_filter, "parameter_unit"] <- NA + df[delay_4365_varb_only_filter, "parameter_value_type"] <- NA + df[delay_4365_varb_only_filter, "parameter_statistical_approach"] <- NA + df[delay_4365_varb_only_filter, "parameter_from_figure"] <- FALSE + df[delay_4365_varb_only_filter, "method_from_supplement"] <- NA + + # CovID: 4358 + # Case report range + delay_4358_filter <- df$covidence_id==4358 & delay_filter + df[delay_4358_filter, ] <- uncert_to_varb( + df[delay_4358_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit", + "method_2_from_supplement"="method_from_supplement"), + c("parameter_lower_bound", + "parameter_upper_bound", + "parameter_unit", + "parameter_value_type", + "parameter_statistical_approach", + "method_from_supplement")) + + df[delay_4358_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 292 + delay_292_onset_test_filter <- df$access_param_id=="002_003" + + df[delay_292_onset_test_filter, ] <- uncert_to_varb( + df[delay_292_onset_test_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit", + "method_2_from_supplement"="method_from_supplement", + "parameter_2_statistical_approach"="parameter_statistical_approach"), + c("parameter_lower_bound", + "parameter_upper_bound", + "parameter_unit", + "parameter_value_type", + "method_from_supplement", + "parameter_statistical_approach")) + + df[delay_292_onset_test_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 976 - range is empirical + so_d_delay_976_filter <- df$access_param_id=="167_002" + + df[so_d_delay_976_filter, ] <- uncert_to_varb( + df[so_d_delay_976_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit"), + c("parameter_lower_bound", + "parameter_upper_bound")) + + df[so_d_delay_976_filter, "parameter_2_value_type"] <- "Range" + + # CovID: 1007 + df[(df$covidence_id==1007) & df$population_study_start_year=='xxxx', + "population_study_start_year"] <- NA + + df[(df$covidence_id==1007) & df$population_study_end_year=='xxxx', + "population_study_start_year"] <- NA + + df[(df$covidence_id==4046) & as.double(df$population_study_start_day)>31, + "population_study_start_day"] <- NA + + df[(df$covidence_id==4046) & as.double(df$population_study_end_day)>31, + "population_study_end_day"] <- NA + + df[(df$covidence_id==4046) & as.double(df$population_study_start_month)>31, + "population_study_start_month"] <- NA + + df[(df$covidence_id==4046) & as.double(df$population_study_end_month)>31, + "population_study_end_month"] <- NA + + # CovID 3065, incubation period, 5c96779d606434a611beb693d0d6c2c1 + # Assumes that +- is Other uncertainty; since it's not estimated it must be + # variability? Also Parameter_2_value_type is blank but a range provided for + # variability + df[df$access_param_id=="173_002","parameter_2_value_type"] <- "Range (paired)" + + + # CovID 3065: + # "Average duration of hospital stay for the deceased" => admission to death + # (not time in case as exactracted) + df[df$access_param_id=="173_003", + "parameter_type"] <- "Human delay - admission to care>death" + df[df$access_param_id=="173_003", "parameter_value_type"] <- "Mean" + + # CovID: 960, Human delay - symptom onset>death, + # 4c8cb9c84f098338aedd1800f75b7e3f + so_d_delay_960_filter <- df$access_param_id=="166_002" + + df[so_d_delay_960_filter, "parameter_value"] <- df[so_d_delay_960_filter, + "exponent"] + + df[so_d_delay_960_filter, "exponent"] <- 0 + + # Range is empirical + df[so_d_delay_960_filter, ] <- uncert_to_varb( + df[so_d_delay_960_filter, ], + c("parameter_2_lower_bound"="parameter_lower_bound", + "parameter_2_upper_bound"="parameter_upper_bound", + "exponent_2"="exponent", + "inverse_param_2"="inverse_param", + "parameter_2_unit"="parameter_unit"), + c("parameter_lower_bound", + "parameter_upper_bound")) + + df[so_d_delay_960_filter, "parameter_2_value_type"] <- "Range" + + # R0 NA - no units CovID: 1030, 3679, 833 + df[df$access_param_id %in% c("101_001", "095_001","030_001"), + "parameter_unit"] <- "No units" + + # CovID 906, missing unit + df[df$access_param_id=="093_003", "parameter_unit"] <- "Percentage (%)" + + # Split 2931 incubation row + hd_2931_incp_row_filter <- df$access_param_id=="138_016" + + new_2931_incp_row <- df[hd_2931_incp_row_filter, ] + new_2931_incp_row$parameter_data_id <- generate_new_id( + df, "parameter_data_id", 10) + # No corresponding redcap entry so make an ID + new_2931_incp_row$access_param_id <- "138_3141" + new_2931_incp_row$parameter_value <- 9.7 + new_2931_incp_row$parameter_value_type <- "Mean" + + new_2931_incp_row$parameter_statistical_approach <- "Estimated model parameter" + new_2931_incp_row$parameter_paired <- "No" + new_2931_incp_row$parameter_2_unit <- NA + new_2931_incp_row$method_2_from_supplement <- NA + new_2931_incp_row$parameter_2_statistical_approach <- NA + + new_2931_incp_row$parameter_2_value_type <- NA + new_2931_incp_row$parameter_2_lower_bound <- NA + new_2931_incp_row$parameter_2_upper_bound <- NA + + # Remove dist param values + df[hd_2931_incp_row_filter, "distribution_type"] <- NA + df[hd_2931_incp_row_filter, "distribution_par1_type"] <- NA + df[hd_2931_incp_row_filter, "distribution_par1_value"] <- NA + df[hd_2931_incp_row_filter, "distribution_par1_uncertainty"] <- NA + df[hd_2931_incp_row_filter, "distribution_par2_type"] <- NA + df[hd_2931_incp_row_filter, "distribution_par2_value"] <- NA + df[hd_2931_incp_row_filter, "distribution_par2_uncertainty"] <- NA + + df <- rbind(df, new_2931_incp_row) + + # Split 2931 serial interval row + hd_2931_si_row_filter <- df$access_param_id=="138_015" + + new_2931_si_row <- df[hd_2931_si_row_filter, ] + new_2931_si_row$parameter_data_id <- generate_new_id( + df, "parameter_data_id", 10) + + # No corresponding redcap entry so make an ID + new_2931_si_row$access_param_id <- "138_2718" + new_2931_si_row$parameter_value <- 13 + new_2931_si_row$parameter_value_type <- "Median" + + new_2931_si_row$parameter_statistical_approach <- "Estimated model parameter" + new_2931_si_row$parameter_paired <- "No" + new_2931_si_row$parameter_2_unit <- NA + new_2931_si_row$method_2_from_supplement <- NA + new_2931_si_row$parameter_2_statistical_approach <- NA + + new_2931_si_row$parameter_2_value_type <- NA + new_2931_si_row$parameter_2_lower_bound <- NA + new_2931_si_row$parameter_2_upper_bound <- NA + + # Remove dist param values + df[hd_2931_si_row_filter, "distribution_type"] <- NA + df[hd_2931_si_row_filter, "distribution_par1_type"] <- NA + df[hd_2931_si_row_filter, "distribution_par1_value"] <- NA + df[hd_2931_si_row_filter, "distribution_par1_uncertainty"] <- NA + df[hd_2931_si_row_filter, "distribution_par2_type"] <- NA + df[hd_2931_si_row_filter, "distribution_par2_value"] <- NA + df[hd_2931_si_row_filter, "distribution_par2_uncertainty"] <- NA + + df <- rbind(df, new_2931_si_row) + + # Labels for IQR and Range are different for variability so copying from + # uncertainty results in different labels + df <- df |> + mutate(parameter_2_value_type=case_when( + parameter_2_value_type=="Range (paired)" ~ "Range", + parameter_2_value_type=="IQR (paired or unpaired)" ~ "IQR", + TRUE~parameter_2_value_type)) + + return (df) +} +# *============================================================================* diff --git a/src/db_cleaning/nipah/nipah_cleaning_config.R b/src/db_cleaning/nipah/nipah_cleaning_config.R new file mode 100644 index 00000000..1d26b295 --- /dev/null +++ b/src/db_cleaning/nipah/nipah_cleaning_config.R @@ -0,0 +1,113 @@ +# *================================== Nipah ===================================* +# *---------------------------- Tables to include -----------------------------* +# NB! this needs to match the output and rds filenames +tables <- c("articles", "outbreaks", "models", "params") + +# *------------------------ Update column types action ------------------------* +# Update column types; the list element names are column names +# Columns which are completely NA will default to logical +type_map_list <- list("cfr_ifr_numerator" = as.integer, + "population_study_start_day" = as.numeric) + +# *---------------------------- Update punctuation ----------------------------* +# Replace commas with semi-colons +cols_to_punctuate_vec <- c("method_disaggregated_by", + "population_location", + "population_country") + +# *--------------------------- Update values action ---------------------------* +# The name of the entries in update_values_list are the names of the columns +# each column will related to a named vector, where names are the name to map +# to and the values are values to map + +uncertainty_interval_lookup_values <- c( + "CI95%" = "95% CI", + "CRI95%" = "95% CrI", + "CI90%" = "90% CI", + "CRI90%" = "90% CrI", + "Highest Posterior Density Interval 95%" = "HPDI 95%", + "Inter Quartile Range (IQR)" = "IQR" +) + +uncertainty_single_lookup_values <- c( + "Standard deviation (Sd)" = "Standard Deviation", + "Standard Error (SE)" = "Standard Error" +) + +update_values_list <- list( + "parameter_uncertainty_type"=uncertainty_interval_lookup_values, + "parameter_uncertainty_single_type"=uncertainty_single_lookup_values, + "parameter_2_uncertainty_type"=uncertainty_interval_lookup_values, + "parameter_2_uncertainty_single_type"=uncertainty_single_lookup_values, + "method_r"= c("Renewal equations / Branching process" = "Branching process") +) + +# *---------------------------- Group types action ----------------------------* +# +group_mapping_vec <- c( + "Human delay" = "Human delay", + "Seroprevalence" = "Seroprevalence", + "Mutations" = "Mutations", + "Risk factors" = "Risk factors", + "Reproduction number" = "Reproduction number", + "Severity" = "Severity", + "Mosquito" = "Mosquito", + "Relative" = "Relative contribution", + "Overdispersion" = "Overdispersion", + "Attack rate" = "Attack rate", + "Doubling time" = "Doubling time", + "Growth rate" = "Growth rate" +) + +# *------------------------- Combine intervals action -------------------------* +# The name of list item is the new column names +# The values in the vector are the columns to combine +# Combined as "value_1 - value_2", only if both col values are not NA + +interval_combine_list <- list( + "parameter_bounds"=c("parameter_lower_bound", "parameter_upper_bound"), + "uncertainty_bounds"=c("parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value"), + "parameter_2_bounds"=c("parameter_2_lower_bound", "parameter_2_upper_bound"), + "uncertainty_2_bounds"=c("parameter_2_uncertainty_lower_value", + "parameter_2_uncertainty_upper_value"), + "parameter_2_sample_bounds"=c("parameter_2_sample_paired_lower", + "parameter_2_sample_paired_upper") +) + +# *-------------------------- Combine columns action --------------------------* +# The name of list item is the new column names +# The first vector is the values to check and the the second vector is the +# corresponding value to coalesce if non-NA +# For cases where the vector is repeated (e.g. comb_par1_uncertainty), this is +# the same as a standard coalesce +col_combine_list <- list( + "comb_par1_uncertainty_type"=list( + c("parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value", + "parameter_uncertainty_single_value"), + c("parameter_uncertainty_type", + "parameter_uncertainty_type", + "parameter_uncertainty_single_type") + ), + "comb_par1_uncertainty"=list( + c("uncertainty_bounds", + "parameter_uncertainty_single_value"), + c("uncertainty_bounds", + "parameter_uncertainty_single_value") + ), + "comb_par2_uncertainty_type"=list( + c("parameter_2_uncertainty_lower_value", + "parameter_2_uncertainty_upper_value", + "parameter_2_uncertainty_single_value"), + c("parameter_2_uncertainty_type", + "parameter_2_uncertainty_type", + "parameter_2_uncertainty_single_type") + ), + "comb_par2_uncertainty"=list( + c("uncertainty_2_bounds", + "parameter_2_uncertainty_single_value"), + c("uncertainty_2_bounds", + "parameter_2_uncertainty_single_value") + ) +) diff --git a/src/db_cleaning/template_cleaning_config.R b/src/db_cleaning/template_cleaning_config.R new file mode 100644 index 00000000..6a9b1dd2 --- /dev/null +++ b/src/db_cleaning/template_cleaning_config.R @@ -0,0 +1,116 @@ +# *================================= Template =================================* +# For type of cleaning action available the default cleaning is provided below +# If you would not like to apply the action please set the final object in the +# action to NULL: +# For example, if there are not values to be updated: update_values_list <- NULL +# *============================================================================* +# *---------------------------- Tables to include -----------------------------* +# NB! this needs to match the output and rds filenames +tables <- c("articles", "outbreaks", "models", "params") + +# *------------------------ Update column types action ------------------------* +# Update column types; the list element names are column names +# Columns which are completely NA will default to logical even if they should +# be numeric (this may apply to some variability columns such as exponent_2) +type_map_list <- list("cfr_ifr_numerator" = as.integer, + "population_study_start_day" = as.numeric) + +# *---------------------------- Update punctuation ----------------------------* +# Replace commas with semi-colons +cols_to_punctuate_vec <- c("method_disaggregated_by", + "population_location", + "population_country") + +# *--------------------------- Update values action ---------------------------* +# The name of the entries in update_values_list are the names of the columns +# each column will related to a named vector, where names are the name to map +# to and the values are values to map +uncertainty_interval_lookup_values <- c( + "CI95%" = "95% CI", + "CRI95%" = "95% CrI", + "CI90%" = "90% CI", + "CRI90%" = "90% CrI", + "Highest Posterior Density Interval 95%" = "HPDI 95%", + "Inter Quartile Range (IQR)" = "IQR" +) + +uncertainty_single_lookup_values <- c( + "Standard deviation (Sd)" = "Standard Deviation", + "Standard Error (SE)" = "Standard Error" +) + +update_values_list <- list( + "parameter_uncertainty_type"=uncertainty_interval_lookup_values, + "parameter_uncertainty_single_type"=uncertainty_single_lookup_values, + "parameter_2_uncertainty_type"=uncertainty_interval_lookup_values, + "parameter_2_uncertainty_single_type"=uncertainty_single_lookup_values, + "method_r"= c("Renewal equations / Branching process" = "Branching process") +) + +# *---------------------------- Group types action ----------------------------* +group_mapping_vec <- c( + "Human delay" = "Human delay", + "Seroprevalence" = "Seroprevalence", + "Mutations" = "Mutations", + "Risk factors" = "Risk factors", + "Reproduction number" = "Reproduction number", + "Severity" = "Severity", + "Mosquito" = "Mosquito", + "Relative" = "Relative contribution", + "Overdispersion" = "Overdispersion", + "Attack rate" = "Attack rate", + "Doubling time" = "Doubling time", + "Growth rate" = "Growth rate" +) + +# *------------------------- Combine intervals action -------------------------* +# The name of list item is the new column names +# The values in the vector are the columns to combine +# Combined as "value_1 - value_2", only if both col values are not NA +interval_combine_list <- list( + "parameter_bounds"=c("parameter_lower_bound", "parameter_upper_bound"), + "uncertainty_bounds"=c("parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value"), + "parameter_2_bounds"=c("parameter_2_lower_bound", "parameter_2_upper_bound"), + "uncertainty_2_bounds"=c("parameter_2_uncertainty_lower_value", + "parameter_2_uncertainty_upper_value"), + "parameter_2_sample_bounds"=c("parameter_2_sample_paired_lower", + "parameter_2_sample_paired_upper") +) + +# *-------------------------- Combine columns action --------------------------* +# The name of list item is the new column names +# The first vector is the values to check and the the second vector is the +# corresponding value to coalesce if non-NA +# For cases where the vector is repeated (e.g. comb_par1_uncertainty), this is +# the same as a standard coalesce +col_combine_list <- list( + "comb_par1_uncertainty_type"=list( + c("parameter_uncertainty_lower_value", + "parameter_uncertainty_upper_value", + "parameter_uncertainty_single_value"), + c("parameter_uncertainty_type", + "parameter_uncertainty_type", + "parameter_uncertainty_single_type") + ), + "comb_par1_uncertainty"=list( + c("uncertainty_bounds", + "parameter_uncertainty_single_value"), + c("uncertainty_bounds", + "parameter_uncertainty_single_value") + ), + "comb_par2_uncertainty_type"=list( + c("parameter_2_uncertainty_lower_value", + "parameter_2_uncertainty_upper_value", + "parameter_2_uncertainty_single_value"), + c("parameter_2_uncertainty_type", + "parameter_2_uncertainty_type", + "parameter_2_uncertainty_single_type") + ), + "comb_par2_uncertainty"=list( + c("uncertainty_2_bounds", + "parameter_uncertainty_single_value"), + c("uncertainty_bounds", + "parameter_2_uncertainty_single_value") + ) +) diff --git a/src/db_compilation/cleaning.R b/src/db_compilation/access/cleaning.R similarity index 52% rename from src/db_compilation/cleaning.R rename to src/db_compilation/access/cleaning.R index d358c1dc..a8fe6b14 100644 --- a/src/db_compilation/cleaning.R +++ b/src/db_compilation/access/cleaning.R @@ -6,10 +6,19 @@ library(tidyr) library(stringr) library(ids) + + ########################## # Main cleaning function # ########################## clean_params <- function(df, pathogen) { + + # # Make sure newer pathogens with correctly spelled variable name is consistent with old ones + # if ('parameter_uncertainty_single_type' %in% colnames(parameters)) { + # colnames(parameters)[colnames(parameters) == 'parameter_uncertainty_single_type'] <- 'parameter_uncertainty_singe_type' + # flag <- TRUE + # } else flag = FALSE + df <- df %>% mutate( # Change variable types @@ -17,124 +26,125 @@ clean_params <- function(df, pathogen) { population_study_start_day = as.numeric(population_study_start_day), method_disaggregated_by = str_replace_all(method_disaggregated_by, ";", ", "), population_location = str_replace_all(population_location, ";", ","), - parameter_type = - ifelse(df$parameter_type == "Growth rate ®", "Growth rate (r)", - ifelse(df$parameter_type == "Reproduction number (Effective; Re)", "Reproduction number (Effective, Re)", - ifelse(df$parameter_type %in% - c("Mutations ‚Äì substitution rate", "Mutations \x96 substitution rate"), - "Mutations – substitution rate", df$parameter_type - ) - ) - ), - # Group parameters - parameter_class = case_when( - grepl("Human delay", parameter_type) ~ "Human delay", - grepl("Seroprevalence", parameter_type) ~ "Seroprevalence", - grepl("Mutations", parameter_type) ~ "Mutations", - grepl("Risk factors", parameter_type) ~ "Risk factors", - grepl("Reproduction number", parameter_type) ~ "Reproduction number", - grepl("Severity", parameter_type) ~ "Severity", - grepl("Mosquito", parameter_type) ~ "Mosquito", - grepl("Relative", parameter_type) ~ "Relative contribution", - grepl("Overdispersion", parameter_type) ~ "Overdispersion", - grepl("Risk factors", parameter_type) ~ "Risk factors", - grepl("Attack rate", parameter_type) ~ "Attack rate", - grepl("Doubling time", parameter_type) ~ "Doubling time", - grepl("Growth rate", parameter_type) ~ "Growth rate", - TRUE ~ "Other transmission parameters" - ), - # Population country - population_country = str_replace_all(population_country, ";", ","), - population_country = str_replace( - population_country, "Congo, Rep.", "Republic of the Congo" - ), - population_country = str_replace( - population_country, "Congo, Dem. Rep.", - "Democratic Republic of the Congo" - ), - population_country = str_replace( - population_country, "Democratic Republic of the Congo", - "DRC" - ), - population_country = str_replace( - population_country, "Yuogslavia", "Yugoslavia" + parameter_type = case_when( + parameter_type == "Growth rate ®" ~"Growth rate (r)", + parameter_type == "Reproduction number (Effective; Re)" ~ "Reproduction number (Effective, Re)", + parameter_type %in% + c("Mutations ‚Äì substitution rate", "Mutations \x96 substitution rate", "Mutations – substitution rate") ~ "Mutations - substitution rate", + parameter_type %in% c("Mutations – mutation rate", "Mutations – mutation rate") ~ "Mutations - mutation rate", + TRUE ~ parameter_type), + # Group parameters + parameter_class = case_when( + grepl("Human delay", parameter_type) ~ "Human delay", + grepl("Seroprevalence", parameter_type) ~ "Seroprevalence", + grepl("Mutations", parameter_type) ~ "Mutations", + grepl("Risk factors", parameter_type) ~ "Risk factors", + grepl("Reproduction number", parameter_type) ~ "Reproduction number", + grepl("Severity", parameter_type) ~ "Severity", + grepl("Mosquito", parameter_type) ~ "Mosquito", + grepl("Relative", parameter_type) ~ "Relative contribution", + grepl("Overdispersion", parameter_type) ~ "Overdispersion", + grepl("Risk factors", parameter_type) ~ "Risk factors", + grepl("Attack rate", parameter_type) ~ "Attack rate", + grepl("Doubling time", parameter_type) ~ "Doubling time", + grepl("Growth rate", parameter_type) ~ "Growth rate", + TRUE ~ "Other transmission parameters"), + # Population country + population_country = str_replace_all(population_country, ";", ","), + population_country = str_replace( + population_country, "Congo, Rep.", "Republic of the Congo" + ), + population_country = str_replace( + population_country, "Congo, Dem. Rep.", + "Democratic Republic of the Congo" + ), + population_country = str_replace( + population_country, "Democratic Republic of the Congo", + "DRC" + ), + population_country = str_replace( + population_country, "Yuogslavia", "Yugoslavia" + ), + population_country = str_replace( + population_country, "Gambia, The", "The Gambia" + ), + population_country = str_replace_all(population_country, ",", ", "), + + ) %>% + relocate(c(id, parameter_data_id, covidence_id, pathogen)) %>% + arrange(covidence_id) + +df <- df %>% + mutate( + across( + c( + parameter_value, parameter_lower_bound, parameter_upper_bound, + parameter_uncertainty_single_value, + parameter_uncertainty_lower_value, + parameter_uncertainty_upper_value ), - population_country = str_replace( - population_country, "Gambia, The", "The Gambia" + ~ ifelse(!parameter_class %in% c("Mutations", "Attack rate", "Overdispersion"), round(., digits = 3), + ifelse(parameter_class %in% c("Attack rate", "Overdispersion"), round(., digits = 3), .) + ) + ), + # Combine central upper and lower bounds + parameter_bounds = + ifelse(!is.na(parameter_lower_bound) & !is.na(parameter_upper_bound), + paste(parameter_lower_bound, "-", parameter_upper_bound), + NA ), - population_country = str_replace_all(population_country, ",", ", "), + # Uncertainty type + parameter_uncertainty_type = case_when( + parameter_uncertainty_type %in% + "CI95%" ~ "95% CI", + parameter_uncertainty_type %in% + "CRI95%" ~ "95% CrI", + parameter_uncertainty_type %in% + "CI90%" ~ "90% CI", + parameter_uncertainty_type %in% + "CRI90%" ~ "90% CrI", + parameter_uncertainty_type %in% + "Highest Posterior Density Interval 95%" ~ "HPDI 95%", + parameter_uncertainty_type %in% + "Inter Quartile Range (IQR)" ~ "IQR", + TRUE ~ parameter_uncertainty_type + ), + # Single uncertainty type + parameter_uncertainty_singe_type = case_when( + parameter_uncertainty_singe_type %in% + "Standard deviation (Sd)" ~ "Standard Deviation", + parameter_uncertainty_singe_type %in% + "Standard Error (SE)" ~ "Standard Error", + TRUE ~ parameter_uncertainty_singe_type + ), -) %>% - relocate(c(id, parameter_data_id, covidence_id, pathogen)) %>% - arrange(covidence_id) - - df <- df %>% - mutate( - # across( - # c( - # parameter_value, parameter_lower_bound, parameter_upper_bound, - # parameter_uncertainty_single_value, - # parameter_uncertainty_lower_value, - # parameter_uncertainty_upper_value - # ), - # ~ ifelse(!parameter_class %in% c("Mutations", "Attack rate", "Overdispersion"), round(., digits = 2), - # ifelse(parameter_class %in% c("Attack rate", "Overdispersion"), round(., digits = 3), .) - # ) - # ), - # Combine central upper and lower bounds - parameter_bounds = - ifelse(!is.na(parameter_lower_bound) & !is.na(parameter_upper_bound), - paste(parameter_lower_bound, "-", parameter_upper_bound), - NA - ), - # Uncertainty type - parameter_uncertainty_type = case_when( - parameter_uncertainty_type %in% "CI95%" ~ "95% CI", - parameter_uncertainty_type %in% "CRI95%" ~ "95% CrI", - parameter_uncertainty_type %in% "CI90%" ~ "90% CI", - parameter_uncertainty_type %in% "CRI90%" ~ "90% CrI", - parameter_uncertainty_type %in% - "Highest Posterior Density Interval 95%" ~ "HPDI 95%", - parameter_uncertainty_type %in% - "Inter Quartile Range (IQR)" ~ "IQR", - TRUE ~ parameter_uncertainty_type - ), - # Single uncertainty type - parameter_uncertainty_singe_type = case_when( - parameter_uncertainty_singe_type %in% - "Standard deviation (Sd)" ~ "Standard Deviation", - parameter_uncertainty_singe_type %in% - "Standard Error (SE)" ~ "Standard Error", - TRUE ~ parameter_uncertainty_singe_type + # Combine uncertainty types and values + comb_uncertainty_type = + case_when( + !is.na(parameter_uncertainty_lower_value) ~ + paste(parameter_uncertainty_type), + !is.na(parameter_uncertainty_single_value) ~ + paste(parameter_uncertainty_singe_type), + TRUE ~ NA + ), comb_uncertainty = + case_when( + !is.na(parameter_uncertainty_lower_value) & !is.na(parameter_uncertainty_upper_value) ~ + paste(parameter_uncertainty_lower_value, "-", parameter_uncertainty_upper_value), + !is.na(parameter_uncertainty_single_value) ~ + paste(parameter_uncertainty_single_value), + TRUE ~ NA ), - - # Combine uncertainty types and values - comb_uncertainty_type = - case_when( - !is.na(parameter_uncertainty_lower_value) ~ - paste(parameter_uncertainty_type), - !is.na(parameter_uncertainty_single_value) ~ - paste(parameter_uncertainty_singe_type), - TRUE ~ NA - ), comb_uncertainty = - case_when( - !is.na(parameter_uncertainty_lower_value) & !is.na(parameter_uncertainty_upper_value) ~ - paste(parameter_uncertainty_lower_value, "-", parameter_uncertainty_upper_value), - !is.na(parameter_uncertainty_single_value) ~ - paste(parameter_uncertainty_single_value), - TRUE ~ NA - ), - - # shorten a longer method_r name - method_r = - ifelse(method_r %in% "Renewal equations / Branching process", - "Branching process", method_r - ) - ) + + # shorten a longer method_r name + method_r = + ifelse(method_r %in% "Renewal equations / Branching process", + "Branching process", method_r + ) + ) - df +df } clean_outbreaks <- function(df, pathogen) { df <- df %>% @@ -166,8 +176,8 @@ clean_models <- function(df, pathogen) { select(-c("article_id", "name_data_entry")) %>% relocate(c(id, model_data_id, covidence_id, pathogen)) %>% arrange(covidence_id) - - + + df } clean_articles <- function(df, pathogen) { @@ -197,10 +207,10 @@ clean_dfs <- function(df, pathogen) { #################### # Article cleaning # #################### - + if ("article_title" %in% colnames(df)) { df <- clean_articles(df, pathogen) - + ###################################### # Pathogen-specific article cleaning # ###################################### @@ -211,40 +221,40 @@ clean_dfs <- function(df, pathogen) { ################## # Model cleaning # ################## - + if ("model_type" %in% colnames(df)) { df <- clean_models(df, pathogen) if (pathogen == "EBOLA") ebola_models_cleaning(df) if (pathogen == "LASSA") lassa_models_cleaning(df) if (pathogen == "SARS") { df <- df %>% filter(!is.na(id)) - + } - + df <- df %>% select(-c("access_model_id")) } - + ##################### # Outbreak cleaning # ##################### - + if ("outbreak_id" %in% colnames(df)) { df <- clean_outbreaks(df, pathogen) - + if (pathogen == "LASSA") lassa_outbreaks_cleaning(df) df <- df %>% select(-c("access_outbreak_id")) } - - - - - - - + + + + + + + ###################### # Parameter cleaning # ###################### - + if ("parameter_type" %in% colnames(df)) { df <- clean_params(df, pathogen) if (pathogen == "MARBURG") { @@ -254,7 +264,7 @@ clean_dfs <- function(df, pathogen) { population_study_end_month = substring(population_study_end_month, 1, 3) ) } - + if (pathogen == "EBOLA") { df <- ebola_params_cleaning(df) df <- more_ebola_params_cleaning(df) @@ -267,11 +277,11 @@ clean_dfs <- function(df, pathogen) { df <- more_lassa_cleaning_generic(df) } df <- select(df, -c("article_id", "access_param_id", "name_data_entry")) %>% - relocate(c(id, parameter_data_id, covidence_id, pathogen)) %>% - arrange(covidence_id) + relocate(c(id, parameter_data_id, covidence_id, pathogen)) %>% + arrange(covidence_id) } - - + + df } @@ -290,7 +300,7 @@ add_qa_scores <- function(articles_df, params_df) { mutate( model_only = as.numeric(!id %in% params_df$id) - ) %>% + ) %>% # if an article is model_only, make 5-7 NA for consistency between scores mutate( qa_d5 = ifelse(model_only %in% 1, NA, qa_d5), @@ -310,6 +320,6 @@ add_qa_scores <- function(articles_df, params_df) { article_qa_score = ifelse(total_qa > 0, yes_score / total_qa * 100, NA) ) %>% select(-c(total_qa, yes_score)) - + articles_df } diff --git a/src/db_compilation/ebola_cleaning.R b/src/db_compilation/access/ebola_cleaning.R similarity index 100% rename from src/db_compilation/ebola_cleaning.R rename to src/db_compilation/access/ebola_cleaning.R diff --git a/src/db_compilation/ebola_models_fixing.csv b/src/db_compilation/access/ebola_models_fixing.csv similarity index 100% rename from src/db_compilation/ebola_models_fixing.csv rename to src/db_compilation/access/ebola_models_fixing.csv diff --git a/src/db_compilation/ebola_params_fixing.csv b/src/db_compilation/access/ebola_params_fixing.csv similarity index 100% rename from src/db_compilation/ebola_params_fixing.csv rename to src/db_compilation/access/ebola_params_fixing.csv diff --git a/src/db_compilation/ebola_qa_fixing.csv b/src/db_compilation/access/ebola_qa_fixing.csv similarity index 100% rename from src/db_compilation/ebola_qa_fixing.csv rename to src/db_compilation/access/ebola_qa_fixing.csv diff --git a/src/db_compilation/lassa_cleaning.R b/src/db_compilation/access/lassa_cleaning.R similarity index 100% rename from src/db_compilation/lassa_cleaning.R rename to src/db_compilation/access/lassa_cleaning.R diff --git a/src/db_compilation/lassa_models_fixing.csv b/src/db_compilation/access/lassa_models_fixing.csv similarity index 100% rename from src/db_compilation/lassa_models_fixing.csv rename to src/db_compilation/access/lassa_models_fixing.csv diff --git a/src/db_compilation/lassa_outbreaks_fixing.csv b/src/db_compilation/access/lassa_outbreaks_fixing.csv similarity index 100% rename from src/db_compilation/lassa_outbreaks_fixing.csv rename to src/db_compilation/access/lassa_outbreaks_fixing.csv diff --git a/src/db_compilation/lassa_params_fixing.csv b/src/db_compilation/access/lassa_params_fixing.csv similarity index 100% rename from src/db_compilation/lassa_params_fixing.csv rename to src/db_compilation/access/lassa_params_fixing.csv diff --git a/src/db_compilation/lassa_qa_fixing.csv b/src/db_compilation/access/lassa_qa_fixing.csv similarity index 100% rename from src/db_compilation/lassa_qa_fixing.csv rename to src/db_compilation/access/lassa_qa_fixing.csv diff --git a/src/db_compilation/orov_cleaning.R b/src/db_compilation/access/orov_cleaning.R similarity index 100% rename from src/db_compilation/orov_cleaning.R rename to src/db_compilation/access/orov_cleaning.R diff --git a/src/db_compilation/sars_cleaning.R b/src/db_compilation/access/sars_cleaning.R similarity index 93% rename from src/db_compilation/sars_cleaning.R rename to src/db_compilation/access/sars_cleaning.R index 93cd49e0..dd7c4fe2 100644 --- a/src/db_compilation/sars_cleaning.R +++ b/src/db_compilation/access/sars_cleaning.R @@ -116,7 +116,7 @@ sars_cleaning <- function(df) { # covidence_id == 2585 ~ 'Dalhat', # covidence_id == 1033 ~ 'Ehichioya', covidence_id == 6909 ~ 'MEC', #The Chinese SARS Molecular Epidemiology Consortium - TRUE ~ first_author_first_name)) + TRUE ~ first_author_first_name)) df } @@ -124,6 +124,15 @@ sars_params_cleaning <- function(df) { df <- df %>% mutate(parameter_type = case_when(parameter_type=="secondary attack rate" ~ "Secondary attack rate", TRUE ~ parameter_type), riskfactor_name = case_when(str_detect(riskfactor_name,'Ocupation')~str_replace(riskfactor_name,'Ocupation','Occupation'), - TRUE ~ riskfactor_name)) + TRUE ~ riskfactor_name), + parameter_unit = case_when( + covidence_id %in% 4334 & parameter_type == 'Severity - case fatality rate (CFR)' ~ "Percentage (%)", + TRUE ~ parameter_unit + ), + parameter_value_type = case_when( + covidence_id %in% 5269 & parameter_type == 'Human delay - infectious period' ~ "Unspecified", + TRUE ~ parameter_value_type + ) + ) } diff --git a/src/db_compilation/sars_models_fixing.csv b/src/db_compilation/access/sars_models_fixing.csv similarity index 100% rename from src/db_compilation/sars_models_fixing.csv rename to src/db_compilation/access/sars_models_fixing.csv diff --git a/src/db_compilation/sars_params_fixing.csv b/src/db_compilation/access/sars_params_fixing.csv similarity index 100% rename from src/db_compilation/sars_params_fixing.csv rename to src/db_compilation/access/sars_params_fixing.csv diff --git a/src/db_compilation/sars_qa_fixing.csv b/src/db_compilation/access/sars_qa_fixing.csv similarity index 100% rename from src/db_compilation/sars_qa_fixing.csv rename to src/db_compilation/access/sars_qa_fixing.csv diff --git a/src/db_compilation/orderly.R b/src/db_compilation/access_compilation.R similarity index 68% rename from src/db_compilation/orderly.R rename to src/db_compilation/access_compilation.R index 9de99837..9d457ad6 100644 --- a/src/db_compilation/orderly.R +++ b/src/db_compilation/access_compilation.R @@ -3,17 +3,9 @@ library(dplyr) library(janitor) library(orderly2) library(readr) - - -orderly_strict_mode() - -## pathogen should be set to one of our priority-pathogens -## use capital case -## orderly_parameters(pathogen = 'EBOLA') -orderly_parameters(pathogen = NULL) +library(epireview) ## Outputs - if(pathogen!="OROV"){ orderly_artefact( "Merged single and double extracted data as csv", @@ -31,9 +23,10 @@ if(pathogen!="OROV"){ "parameters.csv", "outbreaks.csv" )) - + } + # Get results from db_extraction orderly_dependency( "db_extraction", @@ -62,32 +55,33 @@ orderly_dependency( ) ) +filepath_base <- "access" + # Manually fixed files and "cleaning" script - these need to be in the # src/db_compilation folder orderly_resource( c( - "ebola_qa_fixing.csv", - "ebola_params_fixing.csv", - "ebola_models_fixing.csv", + file.path(filepath_base, "ebola_qa_fixing.csv"), + file.path(filepath_base, "ebola_params_fixing.csv"), + file.path(filepath_base, "ebola_models_fixing.csv"), ## LASSA FIXING FILES - "lassa_qa_fixing.csv", - "lassa_params_fixing.csv", - "lassa_models_fixing.csv", - "lassa_outbreaks_fixing.csv", + file.path(filepath_base, "lassa_qa_fixing.csv"), + file.path(filepath_base, "lassa_params_fixing.csv"), + file.path(filepath_base, "lassa_models_fixing.csv"), + file.path(filepath_base, "lassa_outbreaks_fixing.csv"), ## SARS FIXING FILES - "sars_qa_fixing.csv", - "sars_params_fixing.csv", - "sars_models_fixing.csv", + file.path(filepath_base, "sars_qa_fixing.csv"), + file.path(filepath_base, "sars_params_fixing.csv"), + file.path(filepath_base, "sars_models_fixing.csv"), ## OROV FIXING FILES - "orov_qa_fixing.csv", - "orov_params_fixing.csv", + #"orov_qa_fixing.csv", + #"orov_params_fixing.csv", #"orov_models_fixing.csv", - "orov_outbreaks_fixing.csv", - ## NIPAH FIXING FILES - "cleaning.R", - "sars_cleaning.R", - "ebola_cleaning.R", - "lassa_cleaning.R" + #"orov_outbreaks_fixing.csv", + file.path(filepath_base, "cleaning.R"), + file.path(filepath_base, "sars_cleaning.R"), + file.path(filepath_base, "ebola_cleaning.R"), + file.path(filepath_base, "lassa_cleaning.R") ) ) @@ -97,33 +91,33 @@ source("ebola_functions.R") ## pathogen. fixing_files <- list( EBOLA = list( - params_fix = "ebola_params_fixing.csv", - models_fix = "ebola_models_fixing.csv", - qa_fix = "ebola_qa_fixing.csv" + params_fix = file.path(filepath_base, "ebola_params_fixing.csv"), + models_fix = file.path(filepath_base, "ebola_models_fixing.csv"), + qa_fix = file.path(filepath_base, "ebola_qa_fixing.csv") ), LASSA = list( - params_fix = "lassa_params_fixing.csv", - models_fix = "lassa_models_fixing.csv", - qa_fix = "lassa_qa_fixing.csv", - outbreaks_fix = "lassa_outbreaks_fixing.csv" + params_fix = file.path(filepath_base, "lassa_params_fixing.csv"), + models_fix = file.path(filepath_base, "lassa_models_fixing.csv"), + qa_fix = file.path(filepath_base, "lassa_qa_fixing.csv"), + outbreaks_fix = file.path(filepath_base, "lassa_outbreaks_fixing.csv") ), SARS = list( - params_fix = "sars_params_fixing.csv", - models_fix = "sars_models_fixing.csv", - qa_fix = "sars_qa_fixing.csv" + params_fix = file.path(filepath_base, "sars_params_fixing.csv"), + models_fix = file.path(filepath_base, "sars_models_fixing.csv"), + qa_fix = file.path(filepath_base, "sars_qa_fixing.csv") ), OROV = list( - params_fix = "orov_params_fixing.csv", + params_fix = file.path(filepath_base, "orov_params_fixing.csv"), #models_fix = "orov_models_fixing.csv", - qa_fix = "orov_qa_fixing.csv", - outbreaks_fix = "orov_outbreaks_fixing.csv" + qa_fix = file.path(filepath_base, "orov_qa_fixing.csv"), + outbreaks_fix = file.path(filepath_base, "orov_outbreaks_fixing.csv") ) ) -source("cleaning.R") -source("ebola_cleaning.R") -source("lassa_cleaning.R") -source("sars_cleaning.R") +source(file.path(filepath_base, "cleaning.R")) +source(file.path(filepath_base, "ebola_cleaning.R")) +source(file.path(filepath_base, "lassa_cleaning.R")) +source(file.path(filepath_base, "sars_cleaning.R")) # Single extractions article_single <- read_csv("single_extraction_articles.csv") @@ -167,7 +161,7 @@ param_double <- param_double %>% clean_names() %>% arrange(covidence_id) outbreak_double <- outbreak_double %>% - clean_names() + clean_names() if (pathogen == "LASSA") outbreak_double <- arrange(outbreak_double, covidence_id) @@ -181,20 +175,20 @@ parameter_matching <- parameter_matching %>% clean_names() model_matching <- model_matching %>% clean_names() outbreak_matching <- outbreak_matching %>% clean_names() -qa_matching <- qa_matching %>% select(-c("num_rows", "matching")) +qa_matching <- qa_matching %>% select(-c("num_rows", "matching")) parameter_matching <- parameter_matching %>% select(-c("num_rows", "matching")) %>% - mutate(covidence_id=as.numeric(covidence_id), - article_id=as.numeric(article_id), - access_param_id=as.numeric(access_param_id)) + mutate(covidence_id=as.numeric(covidence_id), + article_id=as.numeric(article_id), + access_param_id=as.numeric(access_param_id)) model_matching <- model_matching %>% select(-c("num_rows", "matching")) %>% - mutate(covidence_id=as.numeric(covidence_id), - article_id=as.numeric(article_id), - access_model_id=as.numeric(access_model_id)) + mutate(covidence_id=as.numeric(covidence_id), + article_id=as.numeric(article_id), + access_model_id=as.numeric(access_model_id)) if (pathogen == "LASSA") { -outbreak_matching <- outbreak_matching %>% select(-c("num_rows", "matching")) %>% - mutate(covidence_id=as.numeric(covidence_id), - article_id=as.numeric(article_id), - access_outbreak_id=as.numeric(access_outbreak_id)) + outbreak_matching <- outbreak_matching %>% select(-c("num_rows", "matching")) %>% + mutate(covidence_id=as.numeric(covidence_id), + article_id=as.numeric(article_id), + access_outbreak_id=as.numeric(access_outbreak_id)) } else outbreak_matching <- outbreak_single @@ -209,26 +203,26 @@ if (! is.null(fixing_file)) { outbreak_fixed <- read_csv(fixing_file) outbreak_fixed <- outbreak_fixed %>% clean_names() outbreak_fixed <- outbreak_fixed %>% - mutate(covidence_id=as.numeric(covidence_id), - article_id=as.numeric(article_id), - access_outbreak_id=as.numeric(access_outbreak_id)) + mutate(covidence_id=as.numeric(covidence_id), + article_id=as.numeric(article_id), + access_outbreak_id=as.numeric(access_outbreak_id)) outbreak_fixed <- outbreak_fixed %>% - filter(fixed == 1) %>% - select(-c("fixed", "num_rows", "matching")) + filter(fixed == 1) %>% + select(-c("fixed", "num_rows", "matching")) outbreak_double_ids <- outbreak_double %>% - select(c( - "article_id", "name_data_entry", "access_outbreak_id", "covidence_id", - "id", "outbreak_data_id" - )) + select(c( + "article_id", "name_data_entry", "access_outbreak_id", "covidence_id", + "id", "outbreak_data_id" + )) -outbreak_fixed <- outbreak_fixed %>% - left_join(outbreak_double_ids, - by = c( - "article_id", "name_data_entry", - "access_outbreak_id", "covidence_id","id", "outbreak_data_id" - ) - ) + outbreak_fixed <- outbreak_fixed %>% + left_join(outbreak_double_ids, + by = c( + "article_id", "name_data_entry", + "access_outbreak_id", "covidence_id","id", "outbreak_data_id" + ) + ) } else { @@ -264,7 +258,7 @@ qa_fixed <- qa_fixed %>% parameter_fixed <- parameter_fixed %>% filter(fixed == 1) %>% select(-c("fixed", "num_rows", "matching")) - + if(pathogen!="OROV"){ model_fixed <- model_fixed %>% filter(fixed == 1) %>% @@ -294,13 +288,13 @@ article_single <- article_single %>% } # join ids param_double_ids <- param_double %>% - select(c( - "article_id", "name_data_entry", "access_param_id", "covidence_id", - "id", "parameter_data_id" - )) + select(c( + "article_id", "name_data_entry", "access_param_id", "covidence_id", + "id", "parameter_data_id" + )) parameter_fixed <- left_join(parameter_fixed, param_double_ids) - + model_double_ids <- model_double %>% select(c( @@ -308,24 +302,20 @@ model_double_ids <- model_double %>% "id", "model_data_id" )) - if(pathogen!="OROV"){ model_fixed <- left_join(model_fixed, model_double_ids) } - - - # bind single and double together if (pathogen == "LASSA") { article_all <- rbind( - article_single, - qa_fixed) + article_single, + qa_fixed) } else { article_all <- rbind( - article_single, - article_matching, - article_fixed) + article_single, + article_matching, + article_fixed) } parameter_all <- rbind( @@ -357,15 +347,15 @@ if (pathogen != "OROV"){ if (pathogen == "LASSA") { ## SB 14.05.2024 -## Temporary fix to deal with garbled characters -## To be removed once we have identified the source of the issue -## and fixed it properly -outbreak_all$outbreak_location <- iconv( - outbreak_all$outbreak_location, to = "UTF-8", sub = "byte" -) + ## Temporary fix to deal with garbled characters + ## To be removed once we have identified the source of the issue + ## and fixed it properly + outbreak_all$outbreak_location <- iconv( + outbreak_all$outbreak_location, to = "UTF-8", sub = "byte" + ) outbreak_all <- lassa_outbreaks_cleaning(outbreak_all) outbreak_all <- clean_dfs(outbreak_all, pathogen) -} +} if (pathogen != "OROV"){ model_all <- clean_dfs(model_all, pathogen) @@ -380,18 +370,18 @@ if (pathogen != "OROV"){ if (pathogen == 'EBOLA') { parameter_all <- assign_ebola_outbreak(parameter_all) parameter_all <- assign_ebola_species(parameter_all) - + } # # Add article QA scores to article data if (pathogen == 'EBOLA') { article_all <- add_qa_scores(article_all, parameter_all) -# # Add article QA scores as a parameter variable - parameter_all <- parameter_all %>% - left_join( - select(article_all, covidence_id, article_qa_score), - by = "covidence_id" - ) + # # Add article QA scores as a parameter variable + parameter_all <- parameter_all %>% + left_join( + select(article_all, covidence_id, article_qa_score), + by = "covidence_id" + ) } print(class(article_all)) write_csv(article_all, "articles.csv") @@ -404,4 +394,4 @@ if(pathogen!="OROV"){ write_csv(model_all, "models.csv") } -write_csv(parameter_all, "parameters.csv") \ No newline at end of file +write_csv(parameter_all, "parameters.csv") diff --git a/src/db_compilation/db_compilation.R b/src/db_compilation/db_compilation.R new file mode 100644 index 00000000..3b3fa80a --- /dev/null +++ b/src/db_compilation/db_compilation.R @@ -0,0 +1,24 @@ +library(orderly2) + +orderly_strict_mode() + +orderly_parameters(pathogen = NULL, + mode="") + +pathogen <- toupper(pathogen) +mode <- toupper(mode) + +# Mode serves to overwrite the default pathogen method of extraction +# E.g. if new EBOLA articles are extracted with redcap, mode can be used to +# overwrite the default extraction method. For each pathogen, the necessary data +# files and config files are available for the default extraction method. +# If you use a different method, you need to provide the necessary files. +if (pathogen %in% c("MARBURG", "EBOLA", "SARS") & mode!="REDCAP"| + mode=="ACCESS"){ + orderly_resource("access_compilation.R") + source(file.path("access_compilation.R")) +} else if (pathogen %in% c("OROV", "NIPAH") & mode!="ACCESS"| + mode=="REDCAP"){ + orderly_resource("redcap_compilation.R") + source("redcap_compilation.R") +} diff --git a/src/db_compilation/redcap/nipah/nipah_compilation_config.yaml b/src/db_compilation/redcap/nipah/nipah_compilation_config.yaml new file mode 100644 index 00000000..d0b8d572 --- /dev/null +++ b/src/db_compilation/redcap/nipah/nipah_compilation_config.yaml @@ -0,0 +1,2 @@ +tables: ["articles", "models", "params", "outbreaks"] +recon: ["qa", "models", "params", "outbreaks"] diff --git a/src/db_compilation/redcap/nipah/nipah_models_fixing.csv b/src/db_compilation/redcap/nipah/nipah_models_fixing.csv new file mode 100644 index 00000000..73ede610 --- /dev/null +++ b/src/db_compilation/redcap/nipah/nipah_models_fixing.csv @@ -0,0 +1,3 @@ +Article_ID,fixed,only_notes_mismatch,Covidence_ID,Name_data_entry,Model_type,Stoch_Deter,Transmission_route,Compartmental_type,model_compartmental_other,Assumptions,Theoretical_model,Interventions_type,Code_available,model_notes,model_uncertainty,model_spatial,model_spillover,model_fitting_method,model_language,model_data,model_readme,Pathogen,access_model_id,num_rows,matching +42,1,FALSE,3374,Patrick Doohan,Compartmental,Deterministic model,"Human to human (direct contact),Unspecified","Other compartmental, please specify",SI-SIHRD,Heterogenity in transmission rates - between human and vector,Yes,"Treatment,Hospitals,Safe burials",No,There is another transmission route described by authors as foodborne,No,No,Yes,NA,NA,NA,NA,Nipah virus,042_001,1,0 +41,1,FALSE,3411,Patrick Doohan,Compartmental,Deterministic model,Unspecified,"Other compartmental, please specify",SEI-SEI,Heterogenity in transmission rates - between human and vector,Yes,Unspecified,No,The transmission route is described by authors as foodborne,No,No,Yes,NA,NA,NA,NA,Nipah virus,041_001,1,0 diff --git a/src/db_compilation/redcap/nipah/nipah_outbreaks_fixing.csv b/src/db_compilation/redcap/nipah/nipah_outbreaks_fixing.csv new file mode 100644 index 00000000..68526a53 --- /dev/null +++ b/src/db_compilation/redcap/nipah/nipah_outbreaks_fixing.csv @@ -0,0 +1,24 @@ +Article_ID,fixed,only_notes_mismatch,Covidence_ID,Name_data_entry,Outbreak_duration_months,Ongoing,Outbreak_country,Outbreak_location,outbreak_location_type,outbreak_source,Pre-Outbreak,Cases_confirmed,Cases_suspected,Cases_unspecified ,Cases_asymptomatic,Asymptomatic_transmission,Cases_severe,Deaths,Population_size,Type_cases_sex_disagg,Male_cases,Prop_male_cases,Female_cases,Prop_female_cases,outbreak_notes,Cases_mode_detection,Outbreak_start_day,Outbreak_start_month,Outbreak_start_year,Outbreak_end_day,Outbreak_end_month,Outbreak_end_year,outbreak_probable,Pathogen,access_outbreak_id,Outbreak_ID,num_rows,matching +50,1,FALSE,36,Tristan Naidoo,NA,No,Singapore,NA,NA,Domestic animal,Unspecified,11,24,NA,NA,No,NA,1,NA,Confirmed,11,NA,NA,NA,"Abattoir workers; 35 with symptoms; 11 confirmed with serology, all confirmed serology were men.",Symptoms,16,3,1999,NA,NA,1999,NA,Nipah virus,050_001,050_001,1,0 +36,1,FALSE,103,sangeeta bhatia,NA,No,Bangladesh,Tangail,district,Date palm sap,Unspecified,12,124,NA,NA,No,NA,11,NA,Suspected,7,0.58,5,0.42,NA,Symptoms,15,12,2004,31,1,2005,NA,Nipah virus,036_001,036_001,1,0 +44,1,167,167,sangeeta bhatia,1,No,Bangladesh,Meherpur,district,Unknown,Unspecified,4,9,NA,NA,No,NA,9,604,Other,6,0.46,NA,NA,NA,Symptoms,20,4,2001,20,5,2001,NA,Nipah virus,044_001,044_001,1,0 +44,1,167,167,sangeeta bhatia,NA,No,Bangladesh,Naogaon,district,Unknown,Unspecified,4,8,NA,NA,No,NA,8,NA,Other,8,0.67,NA,NA,NA,Symptoms,11,1,2003,28,1,2003,NA,Nipah virus,044_002,044_002,1,0 +29,1,FALSE,184,Rob Johnson,NA,No,India,"Siliguri, West Bengal",town,Unknown,NA,NA,66,NA,NA,No,NA,45,500000,Suspected,39,NA,27,NA,NA,Symptoms,31,1,2001,23,2,2001,NA,Nipah virus,029_001,029_001,1,0 +57,1,FALSE,192,sangeeta,NA,No,Bangladesh,rajbari,district,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,outbreak probably reported elsewhere,NA,NA,1,2004,NA,2,2004,NA,Nipah virus,057_001,057_001,1,0 +58,1,FALSE,207,sangeeta,NA,No,Malaysia,Negri Sembilan State,NA,Domestic animal,NA,NA,94,NA,NA,NA,NA,30,NA,NA,NA,NA,NA,NA,ratio of males to females is 4.5 to 1. 110 -91 confirmed 19 suspected cases?,Symptoms,NA,2,1999,NA,6,1999,NA,Nipah virus,058_001,058_001,1,0 +7,1,FALSE,270,Christian Morgenstern,NA,No,Malaysia,NA,country,Domestic animal,Disease-free baseline,NA,NA,265,NA,NA,NA,105,NA,NA,NA,NA,NA,NA,some PCR testing only,Symptoms,NA,9,1998,NA,NA,NA,NA,Nipah virus,007_001,007_001,1,0 +7,1,FALSE,270,Christian Morgenstern,NA,No,Singapore,NA,country,Domestic animal,Disease-free baseline,NA,NA,11,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,Some PCR testing,Symptoms,NA,3,1999,NA,NA,NA,NA,Nipah virus,007_002,007_002,1,0 +27,1,FALSE,271,Rob Johnson,NA,No,Malaysia,NA,NA,"Domestic animal,Unknown",Disease-free baseline,NA,NA,283,NA,NA,NA,109,NA,Unspecified,231,0.816,NA,NA,Malaysia - national level,Unspecified,29,9,1998,NA,12,1999,NA,Nipah virus,027_001,027_001,1,0 +39,1,FALSE,271,Ruth McCabe,NA,No,Malaysia,Negeri Sembilan,State,"Domestic animal,Unknown",Disease-free baseline,NA,NA,231,NA,NA,NA,86,NA,Unspecified,NA,NA,NA,NA,NA,Unspecified,29,9,1998,NA,12,1999,NA,Nipah virus,039_002,039_002,1,0 +39,1,FALSE,271,Ruth McCabe,NA,No,Malaysia,Perak,State,"Domestic animal,Unknown",Disease-free baseline,NA,NA,28,NA,NA,NA,15,NA,Unspecified,NA,NA,NA,NA,NA,Unspecified,29,8,1998,NA,12,1999,NA,Nipah virus,039_003,039_003,1,0 +39,1,FALSE,271,Ruth McCabe,NA,No,Malaysia,Selangor,State,"Domestic animal,Unknown",Disease-free baseline,NA,NA,24,NA,NA,NA,8,NA,Unspecified,NA,NA,NA,NA,NA,Unspecified,29,9,1998,NA,12,1999,NA,Nipah virus,039_004,039_004,1,0 +3,1,FALSE,291,Tristan Naidoo,NA,No,Singapore,NA,NA,Domestic animal,Disease-free baseline,22,NA,NA,10,NA,NA,NA,NA,Confirmed,22,1,0,0,import of pigs from Malaysia,Molecular (PCR etc),13,3,1999,NA,NA,NA,NA,Nipah virus,003_001,003_001,1,0 +2,1,FALSE,292,Christian Morgenstern,NA,No,India,"Siliguri, West Bangal","city, state",Unknown,Disease-free baseline,10,56,NA,NA,No,NA,NA,500000,NA,NA,NA,NA,NA,Paper reports a CFR of 74% but does not state how many deaths. Ratio of 1.4 males to females in sample. Population size is approximate.,Confirmed + Suspected,31,1,2001,23,2,2001,NA,Nipah virus,002_001,002_001,1,0 +33,1,FALSE,851,Richard Sheppard,NA,No,Bangladesh,Faridpur,district,"Domestic animal,Date palm sap",NA,NA,36,NA,NA,No,NA,27,NA,NA,NA,NA,NA,NA,NA,Confirmed + Suspected,NA,2,2004,NA,4,2004,NA,Nipah virus,033_004,033_004,1,0 +33,1,FALSE,851,Richard Sheppard,NA,No,Bangladesh,Meherpur,district,"Domestic animal,Date palm sap",Disease-free baseline,NA,13,NA,NA,No,NA,9,NA,NA,NA,NA,NA,NA,NA,Confirmed + Suspected,NA,4,2001,NA,5,2001,NA,Nipah virus,033_001,033_001,1,0 +33,1,FALSE,851,Richard Sheppard,NA,No,Bangladesh,Naogaon,district,"Domestic animal,Date palm sap",NA,NA,12,NA,NA,No,NA,8,NA,NA,NA,NA,NA,NA,NA,Confirmed + Suspected,NA,1,2003,NA,1,2003,NA,Nipah virus,033_002,033_002,1,0 +33,1,FALSE,851,Richard Sheppard,NA,No,Bangladesh,Rajbari and 7 other northwestern districts,districts,"Domestic animal,Date palm sap",NA,NA,31,NA,NA,No,NA,23,NA,NA,NA,NA,NA,NA,NA,Confirmed + Suspected,NA,1,2004,NA,4,2004,NA,Nipah virus,033_003,033_003,1,0 +45,1,FALSE,896,Rhys Earl,5,No,Bangladesh,NA,NA,Date palm sap,NA,3,1,NA,NA,No,NA,2,NA,NA,1,NA,2,NA,"First cluster of cases within the outbreak, unspecified sex of 4th Case",Confirmed + Suspected,NA,12,2013,NA,4,2014,NA,Nipah virus,045_001,045_001,1,0 +45,1,FALSE,896,Rhys Earl,5,No,Bangladesh,NA,NA,Date palm sap,NA,3,1,NA,NA,No,NA,4,NA,NA,NA,NA,NA,NA,Second cluster of cases within the outbreak,Confirmed + Suspected,NA,12,2013,NA,4,2014,NA,Nipah virus,045_002,045_002,1,0 +45,1,FALSE,896,Rhys Earl,5,No,Bangladesh,NA,NA,Date palm sap,NA,1,1,NA,NA,Yes,NA,2,NA,NA,NA,NA,NA,NA,Third cluster of cases within the outbreak,Confirmed + Suspected,NA,12,2013,NA,4,2014,NA,Nipah virus,045_003,045_003,2,1 +45,1,FALSE,896,Rhys Earl,5,No,Bangladesh,NA,NA,Date palm sap,NA,1,1,NA,NA,Yes,NA,2,NA,NA,NA,NA,NA,NA,Fourth cluster of cases within the outbreak,Confirmed + Suspected,NA,12,2013,NA,4,2014,NA,Nipah virus,045_004,045_004,2,1 diff --git a/src/db_compilation/redcap/nipah/nipah_params_fixing.csv b/src/db_compilation/redcap/nipah/nipah_params_fixing.csv new file mode 100644 index 00000000..f00e6e57 --- /dev/null +++ b/src/db_compilation/redcap/nipah/nipah_params_fixing.csv @@ -0,0 +1,125 @@ +Article_ID,fixed,only_notes_mismatch,Covidence_ID,Name_data_entry,Parameter_type,Parameter_FromFigure,Parameter value,Exponent,Parameter lower bound,Parameter upper bound,Inverse_param,Parameter unit,Parameter value type,Method_from_supplement,Parameter statistical approach,Parameter uncertainty - single type,Parameter uncertainty - single value,Parameter uncertainty - type,Parameter uncertainty - lower value,Parameter uncertainty - upper value,parameter_paired,Parameter 2 value,Exponent_2,Parameter 2 lower bound,Parameter 2 upper bound,Inverse_param_2,Parameter 2 unit,Method_2_from_supplement,Parameter 2 statistical approach,Parameter 2 uncertainty - single value,Parameter 2 uncertainty – type,Parameter 2 uncertainty - lower value,Parameter 2 uncertainty - upper value,Genome_site,Genomic_sequence_available,Method_R,R_pathway,parameter_hd_from,Other_delay_start,parameter_hd_to,Other_delay_end,CFR_IFR_numerator,CFR_IFR_denominator,CFR_IFR_Method,Case_definition,seroprevalence_adjusted,Riskfactor_name,Riskfactor_occupation,Riskfactor_significant,Riskfactor_adjusted,Method_disaggregated,Method_disaggregated_only,Method_disaggregated_by,Population_sex,Population_sample_size,Population_sample_type,Population_group,Population_age_min,Population_age_max,Population_country,Population_location,parameter_context_location_type,Method_moment_value,Urban/Rural area,Data_available,parameter_notes,Riskfactor_outcome,Population_study_start_day,Population_study_start_month,Population_study_start_year,Population_study_end_day,Population_study_end_month,Population_study_end_year,Distribution_type,Distribution_par1_type,Distribution_par1_uncertainty,Distribution_par1_value,Distribution_par2_type,Distribution_par2_value,Distribution_par2_uncertainty,Distribution_2_type,Distribution_2_par1_type,Distribution_2_par1_value,Distribution_2_par1_uncertainty,Distribution_2_par2_type,Distribution_2_par2_value,Distribution_2_par2_uncertainty,Parameter_2_sample_paired_upper,Parameter_2_sample_paired_lower,Parameter 2 uncertainty - single type,Parameter 2 value type,Pathogen,access_param_id,num_rows,matching,flag_column +2,1,FALSE,292,Christian Morgenstern,Severity - case fatality rate (CFR),No,74,NA,NA,NA,No,Percentage (%),NA,No,Unspecified,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,66,Naive,Unspecified,Naive,NA,NA,NA,NA,No,No,NA,Both,66,Hospital based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal","city, state",NA,Rural area,Not available,"74% is reported as approximate, with no exact numerator. But figure with deaths is provided so possible to get exact deaths.",NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,002_001,1,0, +2,1,FALSE,292,Christian Morgenstern,Human delay - symptom onset>death,No,NA,NA,7,30,No,Days,NA,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,NA,Hospital based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal","city, state",NA,Rural area,Not available,Sample: 10 + 5 + 2,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,002_002,1,0, +2,1,FALSE,292,Christian Morgenstern,Human delay - other human delay (go to section),No,NA,NA,1,10,No,Days,NA,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,Diagnosis/test result,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,Yes,Other,Unspecified,NA,Hospital based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal","city, state",NA,Rural area,Not available,NA,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,002_003,1,0, +2,1,FALSE,292,Christian Morgenstern,Seroprevalence - IgM,No,NA,NA,NA,NA,No,NA,NA,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,9,17,Naive,Lab confirmed,Naive,NA,NA,NA,NA,NA,NA,NA,Both,17,Hospital based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal","city, state",NA,Rural area,Not available,NA,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,002_004,1,0, +2,1,FALSE,292,Christian Morgenstern,Seroprevalence - IgG,No,NA,NA,NA,NA,No,NA,NA,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,17,Naive,Lab confirmed,Naive,NA,NA,NA,NA,NA,NA,NA,Both,17,Hospital based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal","city, state",NA,Rural area,Not available,Numerator of 10 not directly stated - but counted from table and inferred from the text.,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,002_005,1,0, +3,1,FALSE,291,Tristan Naidoo,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,NA,Unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,21,1469,NA,Lab confirmed,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,1469,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Start outbreak,Urban area,Not available,NA,NA,14,2,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,003_001,1,0, +3,1,FALSE,291,Tristan Naidoo,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,20,1469,NA,Lab confirmed,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,1469,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Start outbreak,Urban area,Not available,"All positive cases in abattoir works, age range of positive cases 24-65 years",NA,14,2,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,003_002,1,0, +3,1,FALSE,291,Tristan Naidoo,Seroprevalence - PRNT,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,7,NA,Lab confirmed,Adjusted,NA,NA,NA,NA,NA,NA,NA,Male,7,Trade / business based,Abattoir workers,NA,NA,Singapore,NA,NA,Start outbreak,Urban area,Not available,NA,NA,14,2,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,003_003,1,0, +8,1,FALSE,2892,Christian Morgenstern,Seroprevalence - IgG,No,11.7,NA,NA,NA,No,Percentage (%),Mean,No,Observed sample statistic,NA,NA,CI95%,5.99,19.97,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,11,94,Naive,Lab confirmed,Naive,NA,NA,NA,NA,Yes,NA,"Age,Sex,Other",Both,94,Community based,General population,3,73,Malaysia,Perak,state,Unspecified,Rural area,Not available,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,008_001,1,0, +8,1,FALSE,2892,Christian Morgenstern,Seroprevalence - IgG,No,8.96,NA,NA,NA,No,Percentage (%),Mean,No,Observed sample statistic,NA,NA,CI95%,3.36,18.48,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6,67,Naive,Lab confirmed,Naive,NA,NA,NA,NA,Yes,No,"Age,Sex,Other",Both,67,Community based,General population,3,73,Malaysia,Kelantan,state,Unspecified,Rural area,Not available,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,008_002,1,0, +8,1,FALSE,2892,Christian Morgenstern,Seroprevalence - IgG,No,12.5,NA,NA,NA,No,Percentage (%),Mean,No,Observed sample statistic,NA,NA,CI95%,1.55,8.35,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,16,Naive,Lab confirmed,Naive,NA,NA,NA,NA,Yes,No,"Age,Sex,Other",Both,16,Community based,General population,3,73,Malaysia,Selangor,state,Unspecified,Rural area,Not available,Upper bound of confidence interval looks wrong.,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,008_003,1,0, +18,1,FALSE,42,Joseph Hicks,Seroprevalence - Unspecified,No,79,NA,NA,NA,No,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,80,101,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,Both,101,Hospital based,Persons with symptoms,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,IgG and IgM combined,NA,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_001,1,0, +18,1,FALSE,42,Joseph Hicks,Seroprevalence - Unspecified,No,6,NA,NA,NA,No,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,166,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,Both,166,Community based,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Community-farm controls: persons who lived/worked on pig farms with no human cases,NA,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_002,1,0, +18,1,FALSE,42,Joseph Hicks,Seroprevalence - Unspecified,No,11,NA,NA,NA,No,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,20,178,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,Both,178,Other,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Case-farm controls: persons who lived/worked on pig farm with known Nipah case,NA,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_003,1,0, +18,1,FALSE,42,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,No,NA,NA,No,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Occupation,Other",Other,Significant,Not adjusted,No,No,NA,Both,NA,Mixed settings,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Cases compared to community-farm controls,Infection,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_004,1,0,Pigs +18,1,FALSE,42,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Sex,Other",NA,Not significant,Not adjusted,No,No,NA,Both,NA,Mixed settings,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Cases compared to community-farm controls,Infection,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_005,1,0,Pigs +18,1,FALSE,42,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Occupation,Sex,Other",Other,Significant,Not adjusted,No,No,NA,Both,NA,Mixed settings,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Cases compared with case-farm controls,Infection,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_006,1,0,Pigs +18,1,FALSE,42,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Not significant,Not adjusted,No,No,NA,Both,NA,Mixed settings,Mixed groups,NA,NA,Malaysia,Port Dickson,district,Mid outbreak,Unspecified,Not available,Cases compared with case-farm controls,Infection,NA,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,018_007,1,0,Pigs +20,1,FALSE,21,Anne Cori,Seroprevalence - Unspecified,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,28,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,28,Trade / business based,Animal workers,NA,NA,Malaysia,Seremban,town,Unspecified,NA,Not available,"exposed' group of pork sellers; 'The pork seller who tested positive also worked in an abattoir where he removed the urinary bladders from slaughtered pigs.' Additionally, did not use any PPE.",NA,NA,NA,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,020_001,1,0, +20,1,FALSE,21,Anne Cori,Seroprevalence - Unspecified,No,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,20,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Both,20,Trade / business based,Other,NA,NA,Malaysia,Seremban,town,Unspecified,NA,Not available,"Control group, 'non-exposed' vendors selling items other than pork",NA,NA,NA,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,020_002,1,0, +21,1,FALSE,103,Anne Cori,Severity - case fatality rate (CFR),NA,92,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,11,12,Unspecified,NA,NA,NA,NA,NA,NA,No,No,NA,Both,12,Hospital based,Persons with symptoms,5,85,Bangladesh,Tangail,district,NA,NA,NA,NA,NA,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_001,1,0, +21,1,FALSE,103,Anne Cori,Human delay - symptom onset>death,No,5,NA,NA,NA,No,Days,Median,NA,Observed sample statistic,NA,NA,Range,4,9,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,12,Hospital based,Persons with symptoms,NA,NA,Bangladesh,Tangail,district,NA,NA,NA,death occurred a median of 5 days (range 4-9 days) after the first symptom of illness was reported,NA,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_002,1,0, +21,1,FALSE,103,Anne Cori,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Significant,Adjusted,NA,NA,NA,Unspecified,NA,Hospital based,NA,NA,NA,Bangladesh,Tangail,district,Unspecified,NA,Not available,"outcome = illness, exposure = drinking raw date palm sap",Other,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_005,1,0, +21,1,FALSE,103,Anne Cori,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Contact with animal,NA,Not significant,NA,NA,NA,NA,Unspecified,NA,Hospital based,NA,NA,NA,Bangladesh,Tangail,district,Unspecified,NA,Not available,outcome = case,Other,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_006,1,0, +21,1,FALSE,103,Anne Cori,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,NA,NA,NA,NA,NA,Unspecified,NA,Hospital based,NA,NA,NA,Bangladesh,Tangail,district,Unspecified,NA,Not available,outcome = case; exposure = climbing trees or having contact with ill persons who later died,Other,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_007,1,0, +21,1,FALSE,103,Anne Cori,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Sex,Other",NA,NA,NA,NA,NA,NA,Unspecified,NA,Hospital based,NA,NA,NA,Bangladesh,Tangail,district,Unspecified,NA,Not available,outcome = encephalitis,Other,15,12,2004,31,1,2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,021_008,1,0, +24,1,FALSE,192,Richard Sheppard,Seroprevalence - IgM,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,105,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,NA,105,Hospital based,Healthcare workers,17,60,Bangladesh,Dhaka Medical College Hospital,Medical College Hospital,Post outbreak,Unspecified,Unspecified,I've split the two populations (HCWs and cleaners) as they are not actually added together in the paper.,NA,24,3,2004,30,3,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,024_001,1,0, +24,1,FALSE,192,Richard Sheppard,Seroprevalence - IgG,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,105,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,NA,105,Hospital based,Healthcare workers,17,60,Bangladesh,Dhaka Medical College Hospital,Medical College Hospital,Post outbreak,Unspecified,Unspecified,NA,NA,24,3,2004,30,3,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,024_002,1,0, +24,1,FALSE,192,Richard Sheppard,Seroprevalence - IgM,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,11,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,NA,11,Hospital based,Other,17,60,Bangladesh,Dhaka Medical College Hospital,Medical College Hospital,Post outbreak,Unspecified,Unspecified,The group is cleaners at the hospital,NA,24,3,2004,30,3,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,024_003,1,0, +25,1,FALSE,345,Richard Sheppard,Human delay - other human delay (go to section),No,8.4,NA,NA,NA,No,Months,Mean,No,Observed sample statistic,NA,NA,Range,NA,22,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Exposure/Infection,NA,Other,Neurological episode,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,No,"Age,Sex,Symptoms,Other",Both,22,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,"The study group is those who have been infected (recovered, non-encephalitic or asymptomatic) with Nipah who had a later neurological episode (relapse or late-onset).",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_001,1,0, +25,1,FALSE,345,Richard Sheppard,Human delay - other human delay (go to section),No,7.6,NA,NA,NA,No,Months,Mean,No,Observed sample statistic,NA,NA,Range,NA,7,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,First neurological episode,Other,Second neurological episode,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,No,"Age,Sex,Symptoms,Other",Male,3,Hospital based,Persons under investigation,21,44,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,The values given in table 1 don't seem to match with the estimated mean.,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_002,1,0, +25,1,FALSE,345,Richard Sheppard,Human delay - symptom onset>admission to care,No,3.1,NA,NA,NA,No,Days,Mean,No,Observed sample statistic,NA,NA,Range,1,5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,20,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,Two individuals whose symptoms progressed over months were not included in this data subset.,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_003,1,0, +25,1,FALSE,345,Richard Sheppard,Seroprevalence - IgG,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,22,22,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,No,NA,Both,22,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,Serum sample for antibodies,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_004,1,0, +25,1,FALSE,345,Richard Sheppard,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,22,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,No,NA,Both,22,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,Serum sample antibodies,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_005,1,0, +25,1,FALSE,345,Richard Sheppard,Severity - case fatality rate (CFR),No,18,NA,NA,NA,No,Percentage (%),Unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,22,Naive,Clinically diagnosed/symptomatic,Naive,NA,NA,NA,NA,Yes,No,"Age,Sex,Symptoms,Other",Both,22,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,CFR for late-onset nipah 24 months after outbreak. Sample is those with relapsed or late-onset encephalitis.,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_006,1,0, +25,1,FALSE,345,Richard Sheppard,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Not significant,Not adjusted,No,No,NA,Both,12,Hospital based,Persons under investigation,NA,NA,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,Risk of death given focal discharges,Death (in general population),NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_007,1,0, +25,1,FALSE,345,Richard Sheppard,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Not significant,Not adjusted,No,No,NA,Both,12,Hospital based,Persons under investigation,NA,NA,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,"Risk of clinical seizure, given focal discharges.",Other,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_008,1,0, +25,1,FALSE,345,Richard Sheppard,Seroprevalence - IgG,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,12,13,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,No,NA,Both,13,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,CSF sample for antibodies,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_009,1,0, +25,1,FALSE,345,Richard Sheppard,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,13,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,No,NA,Both,13,Hospital based,Persons under investigation,9,55,Malaysia,"Serembna Hospital, University of Malaya Medical Centre, Kuala Lumpur Hospital, Fatimah Hospital Ipoh, Sibu Hospital Sarawak",Treatment centres,Post outbreak,Unspecified,Not available,CSF sample antibodies,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,025_010,1,0, +27,1,FALSE,271,Rob Johnson,Human delay - incubation period,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,NA,NA,4,62,NA,Days,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,Unspecified,NA,Population based,Persons under investigation,NA,NA,Malaysia,NA,NA,Post outbreak,Unspecified,Unspecified,NA,NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,027_002,1,0, +29,1,FALSE,184,Rob Johnson,Severity - case fatality rate (CFR),NA,68,NA,53,100,NA,Percentage (%),Central - unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,45,66,Naive,Probable,Naive,NA,NA,NA,NA,Yes,NA,Age,Both,66,Population based,Persons under investigation,12,70,India,"Siliguri, West Bengal",town,Unspecified,Unspecified,Unspecified,NA,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,029_002,1,0, +30,1,FALSE,833,Rob Johnson,Reproduction number (Basic R0),NA,0.48,NA,NA,NA,NA,NA,Unspecified,NA,Unspecified,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Empirical (contact tracing),Human-human,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,Unspecified,NA,Population based,Persons under investigation,NA,NA,Bangladesh,NA,NA,Unspecified,Rural area,Not available,NA,NA,NA,NA,2001,NA,NA,2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,030_001,1,0, +30,1,FALSE,833,Rob Johnson,Human delay - incubation period,NA,9,NA,NA,NA,NA,Days,Median,NA,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,6,11,NA,Days,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,14,Contact based,Persons under investigation,NA,NA,Bangladesh,NA,NA,Unspecified,Rural area,Not available,NA,NA,NA,NA,2001,NA,NA,2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,030_002,1,0, +30,1,FALSE,833,Rob Johnson,Severity - case fatality rate (CFR),NA,71,NA,NA,NA,NA,Percentage (%),Unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,87,122,Naive,Epidemiologically linked (contact tracing),Naive,NA,NA,NA,NA,No,NA,NA,Both,122,Population based,Persons under investigation,2,75,Bangladesh,NA,NA,Unspecified,Rural area,Not available,NA,NA,NA,NA,2001,NA,NA,2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,030_003,1,0, +31,1,FALSE,86,Richard Sheppard,Seroprevalence - IgG,No,1.6,NA,0,9.4,No,Percentage (%),Unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,7,435,NA,NA,Naive,NA,NA,NA,NA,Yes,No,"Level of exposure,Occupation,Region",Both,435,Trade / business based,Abattoir workers,NA,NA,Malaysia,Peninsular Malaysia,Registered abattoirs,Unspecified,Unspecified,Unspecified,"I've presented the serology for pigs and ruminant abattoir workers as the primary parameter value, but there is a separate sample of 'only ruminant' workers (0%) which I've included in the range.",NA,6,4,1999,20,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,031_001,1,0, +31,1,FALSE,86,Richard Sheppard,Seroprevalence - IgM,No,NA,NA,0,NA,No,Percentage (%),Unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6,435,NA,NA,Naive,NA,NA,NA,NA,Yes,No,"Occupation,Region",Both,435,Trade / business based,Abattoir workers,NA,NA,Malaysia,Peninsular Malaysia,Registered abattoirs,Unspecified,Unspecified,Unspecified,"This paper doesn't report the sero % for the main result, but does for the ruminant only sample.",NA,6,4,1999,20,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,031_002,1,0, +31,1,FALSE,86,Richard Sheppard,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Significant,Unspecified,NA,NA,NA,Both,435,Trade / business based,Abattoir workers,NA,NA,Malaysia,Peninsular Malaysia,Registered abattoirs,Unspecified,Unspecified,Unspecified,risk factor - being from 3 specific states in Malaysia,Serology,6,4,1999,20,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,031_003,1,0, +31,1,FALSE,86,Richard Sheppard,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Other",NA,Not significant,Unspecified,NA,NA,NA,Both,NA,Trade / business based,Abattoir workers,NA,NA,Malaysia,Peninsular Malaysia,Registered abattoirs,Unspecified,Unspecified,Unspecified,"risk factor = contact with live pigs, exposure to pigs in settings other than the abattoir, use of protective equipment and clothing",Serology,6,4,1999,20,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,031_004,1,0, +33,1,FALSE,851,Richard Sheppard,Severity - case fatality rate (CFR),No,73,NA,47,75,No,Percentage (%),Unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,67,92,Naive,Probable,Naive,NA,NA,NA,NA,Yes,No,"Method,Region,Symptoms,Time",Both,92,Hospital based,Persons with symptoms,2,60,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_001,1,0, +33,1,FALSE,851,Richard Sheppard,Seroprevalence - IgM,No,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,42,51,Naive,Probable,Naive,NA,NA,NA,NA,Yes,No,Other,Both,51,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_002,1,0, +33,1,FALSE,851,Richard Sheppard,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Other",Unspecified,Significant,Not adjusted,NA,NA,NA,Both,92,Hospital based,Persons with symptoms,2,60,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,Death (in general population),NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_003,1,0, +33,1,FALSE,851,Richard Sheppard,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Sex,Other",Unspecified,Not significant,Not adjusted,NA,NA,NA,Both,92,Hospital based,Persons with symptoms,2,60,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,Death (in general population),NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_004,1,0, +33,1,FALSE,851,Richard Sheppard,Human delay - symptom onset>death,NA,7,NA,NA,NA,No,Days,Mean,No,Observed sample statistic,Standard deviation (Sd),4.6,Range,2,36,Yes,4.6,NA,NA,NA,NA,days,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Both,67,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_005,1,0, +33,1,FALSE,851,Richard Sheppard,Human delay - incubation period,No,9,NA,NA,NA,No,Days,Median,No,Observed sample statistic,NA,NA,Range,6,11,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Both,11,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_006,1,0, +33,1,FALSE,851,Richard Sheppard,Human delay - other human delay (go to section),No,4,NA,NA,NA,No,Days,Median,No,Observed sample statistic,NA,NA,Range,0,10,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,NA,altered mental status,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,82,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_007,1,0, +33,1,FALSE,851,Richard Sheppard,Human delay - other human delay (go to section),No,4,NA,NA,NA,No,Days,Median,No,Observed sample statistic,NA,NA,Range,0,13,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,NA,Cough with respiratory difficulty,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,NA,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Meherpur, Naogaon, Rajbari, 7 other northwesten districts, Faridpur",districts,Mid outbreak,Unspecified,Unspecified,NA,NA,NA,4,2001,NA,4,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,033_008,1,0, +34,1,FALSE,274,Richard Sheppard,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Not significant,Not adjusted,NA,NA,NA,Both,103,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,Other' for riskfactors - serology. Very ambigious,Other,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,034_002,1,0, +35,1,FALSE,2892,Rhys Earl,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age, Contact with animal,Sex,Other",NA,Not significant,Not adjusted,No,No,Region,Both,177,Community based,General population,3,73,Malaysia,"Perak, Kelantan , Selangor",state,Unspecified,NA,Unspecified,"Other Risk Factors - Presence of domestic animals, employment status, village and subtribe?",Serology,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,035_002,1,0, +35,1,FALSE,2892,Rhys Earl,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Age,NA,Significant,Not adjusted,Yes,No,Region,Both,177,Community based,General population,3,73,Malaysia,"Perak, Kelantan , Selangor",state,Unspecified,NA,Unspecified,Age as risk factor disaggregated by Region - or other way around? is this double counting?,Serology,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,035_003,1,0, +38,1,FALSE,266,Ruth McCabe,Severity - case fatality rate (CFR),NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6,20,Naive,Lab confirmed,NA,NA,NA,NA,NA,Yes,No,Symptoms,Both,20,Hospital based,Mixed groups,14,57,Malaysia,"University Hospital, Kuala Lumpur, suspected to be infected with the virus from pig farms situated in Bukit Pelandok, Negeri Sembilan, Malaysia",NA,Unspecified,Unspecified,Unspecified,'Mixed groups' - people who have symptoms but then also were either virologically or serologically confirmed and pig farmers/work with pigs,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,038_001,1,0, +38,1,FALSE,266,Ruth McCabe,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Significant,Not adjusted,NA,NA,NA,Both,20,Hospital based,Mixed groups,14,57,Malaysia,"University Hospital, Kuala Lumpur, suspected to be infected with the virus from pig farms situated in Bukit Pelandok, Negeri Sembilan, Malaysia",NA,Unspecified,Unspecified,Unspecified,'Other' riskfactor outcome: virus isolation; 'other' riskfactor name - presence of IgM,Other,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,038_002,1,0, +38,1,FALSE,266,Ruth McCabe,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Comorbidity,Sex,Other",NA,Not significant,Not adjusted,NA,NA,NA,Both,20,Hospital based,Mixed groups,14,57,Malaysia,"University Hospital, Kuala Lumpur, suspected to be infected with the virus from pig farms situated in Bukit Pelandok, Negeri Sembilan, Malaysia",NA,Unspecified,Unspecified,Unspecified,'Other' riskfactor outcome: virus isolation; 'other' riskfactor name - ethnic group; time since symptom onset; JE vaccination; symptoms,Other,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,038_003,1,0, +39,1,FALSE,271,Ruth McCabe,Severity - case fatality rate (CFR),NA,38.5,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,109,283,Naive,Unspecified,Naive,NA,NA,NA,NA,Yes,No,Region,Both,283,Population based,Persons under investigation,NA,NA,Malaysia,NA,NA,Post outbreak,Unspecified,Unspecified,national level CFR,NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,039_001,1,0, +39,1,FALSE,271,Ruth McCabe,Severity - case fatality rate (CFR),No,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,86,231,Naive,Unspecified,Naive,NA,NA,NA,NA,No,NA,NA,Unspecified,231,Population based,Persons under investigation,NA,NA,Malaysia,Negeri Sembalin,State,Post outbreak,Unspecified,Unspecified,NA,NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,039_002,1,0, +39,1,FALSE,271,Ruth McCabe,Severity - case fatality rate (CFR),No,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,15,28,Naive,Unspecified,Naive,NA,NA,NA,NA,No,NA,NA,Unspecified,28,Population based,Persons under investigation,NA,NA,Malaysia,Perak,State,Post outbreak,Unspecified,Unspecified,NA,NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,039_003,1,0,"Yes - also note this was provided as ""4 days - 2 months"" - we have translated 2 months into 62 days as it was a bit incoherent otherwise" +39,1,FALSE,271,Ruth McCabe,Severity - case fatality rate (CFR),No,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,8,24,Naive,Unspecified,Naive,NA,NA,NA,NA,No,NA,NA,Unspecified,24,Population based,Persons under investigation,NA,NA,Malaysia,Perak,State,Post outbreak,Unspecified,Unspecified,NA,NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,039_004,1,0, +40,1,FALSE,274,Ruth McCabe,Human delay - incubation period,NA,10,NA,NA,NA,NA,Days,Unspecified,NA,Unspecified,Other,NA,NA,NA,NA,Yes,8.7,NA,1,32,NA,Days,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,49,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,PUIs who left the pig farm before the onset of symptoms,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_001,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Human delay - other human delay (go to section),No,5.8,NA,NA,NA,No,Days,Unspecified,NA,Unspecified,Other,NA,NA,NA,NA,Yes,4.2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,Other,Intubation,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,62,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,NA,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_002,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Human delay - other human delay (go to section),No,6.6,NA,NA,NA,NA,Days,Unspecified,NA,Unspecified,Other,NA,NA,NA,NA,Yes,5.4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,Begin ventilation,Other,End ventilation,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,62,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,NA,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_003,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Human delay - other human delay (go to section),No,5.8,NA,NA,NA,NA,Days,Unspecified,No,Unspecified,Other,NA,NA,NA,NA,Yes,4.8,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,Other,Lymphopaenia,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,62,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,NA,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_004,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Human delay - other human delay (go to section),No,6,NA,NA,NA,NA,Days,Unspecified,NA,Unspecified,Other,NA,NA,NA,NA,Yes,4.3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,Other,Thrombocytopaenia,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,62,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,NA,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_005,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Seroprevalence - IgM,No,81,NA,NA,NA,NA,Percentage (%),Central - unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,91,NA,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,NA,NA,Unspecified,103,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,"serum, unclear denominator, population sample size given",NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_006,1,0, +40,1,FALSE,274,Ruth McCabe,Seroprevalence - IgM,No,58,NA,NA,NA,NA,Percentage (%),Central - unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,31,NA,Naive,Lab confirmed,Naive,NA,NA,NA,NA,No,NA,NA,Unspecified,NA,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,In CSF,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_007,1,0, +40,1,FALSE,274,Ruth McCabe,Severity - case fatality rate (CFR),NA,41,NA,8,86,NA,Percentage (%),Unspecified,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,NA,"Age,Symptoms,Other",Unspecified,NA,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,'Other' disaggregation - different conditions and treatments,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_008,1,0, +40,1,FALSE,274,Ruth McCabe,Human delay - symptom onset>death,No,10,NA,NA,NA,NA,Days,Unspecified,NA,Unspecified,Other,NA,NA,NA,NA,Yes,6.8,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,NA,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,NA,NA,26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_009,1,0,Yes +40,1,FALSE,274,Ruth McCabe,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Other",NA,Significant,Adjusted,NA,NA,NA,Both,103,Hospital based,Persons under investigation,NA,NA,Malaysia,Seremban Hospital,Hospital,Unspecified,Unspecified,Unspecified,'Other' for riskfactors - various symptoms and treatment such as ventilation,Death (in general population),26,12,1998,21,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,040_010,1,0, +44,1,FALSE,167,sangeeta bhatia,Attack rate,NA,2.1,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,NA,Population based,Persons under investigation,NA,NA,Bangladesh,Meherpur,district,Post outbreak,Rural area,Not available,attack rate NOT SAR,NA,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_001,1,0, +44,1,FALSE,167,sangeeta bhatia,Severity - case fatality rate (CFR),NA,69,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,9,13,Adjusted,Other,NA,NA,NA,NA,NA,No,No,NA,Both,13,Population based,Persons under investigation,4,60,Bangladesh,Meherpur,district,Post outbreak,Rural area,Not available,NA,NA,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_002,1,0, +44,1,FALSE,167,sangeeta bhatia,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,13,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Both,NA,Hospital based,Persons under investigation,NA,NA,Bangladesh,Meherpur,district,NA,NA,NA,NA,NA,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_004,1,0, +44,1,FALSE,167,sangeeta bhatia,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,13,Naive,Clinically diagnosed/symptomatic,NA,NA,NA,NA,NA,NA,NA,NA,Both,NA,Hospital based,Persons under investigation,NA,NA,Bangladesh,Meherpur,district,NA,NA,NA,NA,NA,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_005,1,0, +44,1,FALSE,167,sangeeta bhatia,Attack rate,NA,1.1,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,NA,Population based,General population,NA,NA,Bangladesh,naogaon,district,Post outbreak,Rural area,Not available,NA,NA,11,1,2003,28,1,2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_006,1,0, +44,1,FALSE,167,sangeeta bhatia,Severity - case fatality rate (CFR),NA,67,NA,NA,NA,NA,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,8,12,Adjusted,Clinically diagnosed/symptomatic,NA,NA,NA,NA,NA,No,NA,NA,Both,12,Population based,Persons under investigation,4,42,Bangladesh,naogaon,district,Post outbreak,Rural area,Not available,NA,NA,11,1,2003,28,1,2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_007,1,0, +44,1,FALSE,167,sangeeta bhatia,Human delay - symptom onset>death,NA,4,NA,NA,NA,NA,Days,Mean,No,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,NA,NA,NA,Days,NA,Observed sample statistic,NA,Range,2,7,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,Both,8,Population based,Persons under investigation,NA,NA,Bangladesh,naogaon,district,Post outbreak,Rural area,Not available,NA,NA,11,1,2003,28,1,2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_008,1,0,range +44,1,FALSE,167,sangeeta bhatia,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Occupation,Sex",NA,Not significant,Not adjusted,NA,NA,NA,Both,96,Population based,General population,NA,NA,Bangladesh,Meherpur,district,Post outbreak,Rural area,Not available,NA,Infection,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_009,1,0,animals +44,1,FALSE,167,sangeeta bhatia,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Close contact,Contact with animal",NA,Significant,Not adjusted,NA,NA,NA,Both,96,Population based,General population,NA,NA,Bangladesh,Meherpur,district,Post outbreak,Rural area,Not available,caring for or living with a person with a case,Infection,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,044_010,1,0,animals +45,1,FALSE,896,Rhys Earl,Seroprevalence - IgM,No,3,NA,NA,NA,No,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,9,312,Naive,Clinically diagnosed/symptomatic,Naive,NA,NA,NA,NA,No,NA,NA,Both,312,Hospital based,Persons with symptoms,NA,NA,Bangladesh,"Faridpur, Rajshahi, Rangpur",NA,Unspecified,Unspecified,Not available,315 from figure Sample size.,NA,NA,12,2013,NA,4,2014,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,045_001,1,0, +46,1,FALSE,207,Rhys Earl,Human delay - other human delay (go to section),NA,6.9,NA,NA,NA,No,Days,NA,NA,NA,NA,NA,NA,NA,NA,Yes,NA,NA,3,31,No,Days,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,Symptom Onset/Fever,NA,Other,Nadir,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,NA,Hospital based,Persons under investigation,13,68,Malaysia,NA,NA,NA,NA,NA,NA,NA,NA,2,1999,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,046_001,1,0, +46,1,FALSE,207,Rhys Earl,Human delay - symptom onset>admission to care,No,3.5,NA,NA,NA,NA,Days,Mean,NA,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,1,14,No,Days,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,94,Hospital based,Persons under investigation,13,68,Malaysia,Negri Sembilan State,NA,NA,NA,NA,NA,NA,NA,2,1999,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,046_002,1,0, +46,1,FALSE,207,Rhys Earl,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Other",NA,Significant,Not adjusted,No,No,NA,Unspecified,NA,Hospital based,Persons under investigation,13,68,Malaysia,NA,NA,NA,NA,NA,"Other - Clinical Features : Vomiting, mean lowest glasgow coma scores, segmental myoclonus, abnormal dolls eye reflex, abnormal pulils, hypertension, tachycardia, absent or reduced reflexes, seizures, mean aspartate, mean alanine, mean platelet count",Death (in general population),NA,2,1999,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,046_003,1,0, +47,1,FALSE,167,Joseph Hicks,Human delay - symptom onset>death,No,6,NA,NA,NA,No,Days,Mean,No,Observed sample statistic,NA,NA,Range,NA,NA,Yes,NA,NA,3,10,No,Days,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,9,Population based,Persons under investigation,NA,NA,Bangladesh,Meherpur,district,Post outbreak,Rural area,Not available,NA,NA,20,4,2001,20,5,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,047_003,1,0, +48,1,FALSE,280,Rhys Earl,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Contact with animal,Sex,Other",NA,Not significant,Not adjusted,No,No,NA,Both,NA,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Post outbreak,Unspecified,Unspecified,"Other Risk factors - Chinese ethnicity, singapore citizen, chronic illness, vaccinated for japanese encephalitis, worked in auction house, worked in slaughterhouse, smoked while working, ate while working, Contact with: (pig bodily fluid or substance, pig blood, feaces, urine,)mucous mebrane exposure",Serology,22,2,1999,22,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,048_005,1,0, +48,1,FALSE,280,Rhys Earl,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Other",NA,Significant,Not adjusted,No,No,NA,Both,NA,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Post outbreak,Unspecified,Unspecified,"sig risk factors - Job involved: (Chasing pigs, exposure to live pigs), Fecal contact in the auction house , urine contact in the auction house.",Serology,22,2,1999,22,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,048_006,1,0, +49,1,FALSE,280,Ruth McCabe,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,13,54,Naive,Lab confirmed,NA,NA,NA,NA,NA,No,No,NA,Both,54,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Post outbreak,Unspecified,Unspecified,Mixed groups' - persons with symptoms and animal workers. Could also go back to estimate among non-suspected cases,NA,22,2,1999,22,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,049_001,1,0, +49,1,FALSE,280,Ruth McCabe,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,13,54,Naive,Lab confirmed,NA,NA,NA,NA,NA,No,No,NA,Both,54,Trade / business based,Mixed groups,NA,NA,Singapore,NA,NA,Post outbreak,Unspecified,Unspecified,Mixed groups' - persons with symptoms and animal workers. Could also go back to estimate among non-suspected cases,NA,22,2,1999,22,4,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,049_002,1,0, +50,1,FALSE,36,Tristan Naidoo,Seroprevalence - IgM,No,NA,NA,NA,NA,NA,NA,Unspecified,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,11,35,Naive,Clinically diagnosed/symptomatic,Naive,NA,NA,NA,NA,Yes,NA,Age,Male,35,Trade / business based,Abattoir workers,24,66,Singapore,NA,NA,Mid outbreak,Unspecified,Unspecified,"Age range seems to be for positive IgM cases only; Cases worked in the same abattoir which had imported an infected pig from Malaysia. All cases are suspected as they went through a screen procedure, so also Person's Under investigation.",NA,16,3,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,050_001,1,0, +50,1,FALSE,36,Tristan Naidoo,Seroprevalence - IgG,No,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,35,Naive,Clinically diagnosed/symptomatic,Naive,NA,NA,NA,NA,Yes,NA,Age,Male,35,Trade / business based,Abattoir workers,24,66,Singapore,NA,NA,Mid outbreak,Unspecified,Unspecified,NA,NA,16,3,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,050_002,1,0, +50,1,FALSE,36,Tristan Naidoo,Severity - case fatality rate (CFR),NA,NA,NA,NA,NA,NA,Unspecified,Unspecified,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,11,Naive,Clinically diagnosed/symptomatic,Naive,NA,NA,NA,NA,No,No,NA,Male,11,Trade / business based,Abattoir workers,24,66,Singapore,NA,NA,Mid outbreak,Unspecified,Unspecified,NA,NA,16,3,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,050_003,1,0, +52,1,FALSE,270,Joseph Hicks,Severity - case fatality rate (CFR),No,NA,NA,NA,NA,No,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,105,265,Naive,Clinically diagnosed/symptomatic,NA,NA,NA,NA,NA,No,No,NA,Unspecified,265,Population based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,NA,NA,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,052_001,1,0, +52,1,FALSE,270,Joseph Hicks,Severity - case fatality rate (CFR),No,NA,NA,NA,NA,No,NA,NA,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,11,Naive,Clinically diagnosed/symptomatic,NA,NA,NA,NA,NA,No,No,NA,Unspecified,11,Population based,Persons under investigation,NA,NA,Singapore,NA,NA,Mid outbreak,Unspecified,Not available,NA,NA,NA,3,1999,NA,3,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,052_002,1,0, +54,1,FALSE,275,Joseph Hicks,Severity - case fatality rate (CFR),No,38,NA,26,54,No,Percentage (%),Other,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,74,194,Adjusted,Clinically diagnosed/symptomatic,NA,NA,NA,NA,NA,Yes,No,Other,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,Disaggregated by ribavirin treatment and case definition and hospital,NA,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_001,1,0, +54,1,FALSE,275,Joseph Hicks,Human delay - symptom onset>death,No,9,NA,NA,NA,No,Days,Median,No,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,2,NA,No,Days,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Both,74,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,There is an apparent typo in the upper range of symptom onset to death. Text says upper range is '3/2'. Assuming it means 32?,NA,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_002,1,0, +54,1,FALSE,275,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,No,NA,NA,No,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Age,Other",NA,Significant,Not adjusted,No,No,NA,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,NA,Death (in general population),NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_003,1,0, +54,1,FALSE,275,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,No,NA,NA,No,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Not significant,Adjusted,No,No,NA,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,Outcome = ventilation; 'other' risk factor = treatment with ribavirin,Other,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_004,1,0, +54,1,FALSE,275,Joseph Hicks,Risk factors,No,NA,NA,NA,NA,No,NA,NA,No,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,NA,Not significant,Adjusted,No,No,NA,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,Outcome = 'residual neurological deficits at the end of follow-up'; other risk factor = treatment with ribavirin,Other neurological symptoms in general population,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_005,1,0, +54,1,FALSE,275,Joseph Hicks,Human delay - time in care (length of stay),No,NA,NA,7.3,24.7,No,Days,Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,Yes,Other,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,Disaggregated by ribavirin treatment and case definition,NA,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_006,1,0, +54,1,FALSE,275,Joseph Hicks,Human delay - other human delay (go to section),No,NA,NA,3.8,10.1,No,Days,Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,Onset of ventilation,Other,End of ventilation,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,Yes,Other,Both,194,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Not available,Disaggregated by ribavirin treatment and case definition,NA,NA,9,1998,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,054_007,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,363,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,363,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,Healthcare workers that were exposed to exposed to outbreak-associated cases of encephalitis,NA,2,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_001,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,363,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,363,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,Healthcare workers that were exposed to exposed to outbreak-associated cases of encephalitis,NA,2,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_002,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,288,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,288,Hospital based,Healthcare workers,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,Part of an unexposed cohort from a hospital,NA,2,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_003,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,288,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Unspecified,288,Hospital based,Healthcare workers,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,Part of an unexposed cohort from a hospital,NA,2,3,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_004,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,293,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,293,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,"A second sample taken 3-4 weeks after the first, for healthcare workers that were exposed to exposed to outbreak-associated cases of encephalitis",NA,NA,NA,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_005,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - IgG,NA,NA,NA,NA,NA,NA,Percentage (%),Unspecified,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3,293,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,293,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,"A second sample taken 3-4 weeks after the first, for healthcare workers that were exposed to exposed to outbreak-associated cases of encephalitis.",NA,NA,NA,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_006,1,0, +55,1,FALSE,65,Tristan Naidoo,Seroprevalence - PRNT,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,3,NA,NA,NA,NA,NA,NA,NA,No,No,NA,Unspecified,3,Hospital based,Persons under investigation,NA,NA,Malaysia,NA,NA,Mid outbreak,Unspecified,Unspecified,PRNT test of the 3 positive IgG samples.,NA,NA,NA,1999,NA,NA,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,055_007,1,0, +56,1,FALSE,184,sangeeta,Human delay - incubation period,NA,10,NA,NA,NA,NA,Days,Central - unspecified,NA,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,5,20,NA,Days,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Both,43,Population based,Persons under investigation,NA,NA,India,"Siliguri, West Bengal",town,Unspecified,Unspecified,Unspecified,nipah/hendra rather than nipah,NA,31,1,2001,23,2,2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,056_002,1,0, +58,1,FALSE,207,sangeeta,Human delay - symptom onset>death,No,10.3,NA,NA,NA,No,Days,Mean,No,Observed sample statistic,NA,NA,NA,NA,NA,Yes,NA,NA,5,29,No,Days,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,94,Hospital based,Persons under investigation,13,68,Malaysia,Negri Sembilan State,NA,NA,NA,NA,NA,NA,NA,2,1999,NA,6,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,058_002,1,0, +62,1,FALSE,266,Anna-Maria Hartner,Seroprevalence - IgM,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,17,20,NA,NA,NA,NA,NA,NA,NA,Yes,NA,"Age,Sex,Other",Both,20,Hospital based,Mixed groups,14,57,Malaysia,"University Hospital, Kuala Lumpur, suspected to be infected with the virus from pig farms situated in Bukit Pelandok, Negeri Sembilan, Malaysia",NA,Unspecified,Unspecified,Unspecified,From infected patients,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,062_001,1,0, +63,1,FALSE,708,Anna-Maria Hartner,Seroprevalence - Unspecified,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,13,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,13,Community based,General population,NA,NA,Bangladesh,Goalando,Township,Post outbreak,NA,NA,NA,NA,18,2,2004,22,2,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,063_001,1,0, +63,1,FALSE,708,Anna-Maria Hartner,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Other",NA,Not significant,Not adjusted,NA,NA,NA,Both,48,Community based,General population,1,30,Bangladesh,Goalando,Township,Post outbreak,Unspecified,Not available,NA,Infection,18,2,2004,22,2,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,063_002,1,0, +63,1,FALSE,708,Anna-Maria Hartner,Risk factors,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Close contact,Other",NA,Significant,Not adjusted,NA,NA,NA,Both,48,Community based,General population,1,30,Bangladesh,Goalando,Township,Post outbreak,Unspecified,Not available,NA,Infection,18,2,2004,22,2,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,063_003,1,0, +64,1,FALSE,409,Rob Johnson,Seroprevalence - Unspecified,No,75.4,NA,NA,NA,No,Percentage (%),Central - unspecified,No,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,52,69,NA,NA,Naive,NA,NA,NA,NA,No,No,NA,Both,69,Hospital based,Persons with symptoms,NA,NA,Malaysia,"Port Dickson, Negeri Sembilan","district, state",Mid outbreak,Unspecified,Unspecified,"The denominator includes people whose serology results were unavailable, but this is how it was reported",NA,1,3,1999,15,5,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,064_001,1,0,pigs +64,1,FALSE,409,Rob Johnson,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Occupation","Livestock and animal herders, Veterinary",Not significant,Not adjusted,NA,NA,NA,Both,NA,Hospital based,Persons with symptoms,NA,NA,Malaysia,"Port Dickson, Negeri Sembilan","district, state",Mid outbreak,Unspecified,Unspecified,NA,Infection,1,3,1999,15,5,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,064_002,1,0,pigs +64,1,FALSE,409,Rob Johnson,Risk factors,No,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,"Contact with animal,Occupation",Livestock and animal herders,Significant,Not adjusted,NA,NA,NA,Both,NA,Hospital based,Persons with symptoms,NA,NA,Malaysia,"Port Dickson, Negeri Sembilan","district, state",Mid outbreak,Unspecified,Unspecified,NA,Infection,1,3,1999,15,5,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,064_003,1,0,pigs +63,1,FALSE,708,Anna-Maria Hartner,Seroprevalence - Unspecified,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,Community based,Persons with symptoms,NA,NA,Bangladesh,Goalando,Township,Post outbreak,NA,NA,NA,NA,18,2,2004,22,2,2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Nipah virus,438954,1,0, +27,1,FALSE,271,Rob Johnson,Human delay - incubation period,No,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Yes,14,NA,NA,NA,NA,Days,NA,Observed sample statistic,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,No,NA,NA,Unspecified,NA,Population based,Persons under investigation,NA,NA,Malaysia,NA,NA,Post outbreak,Unspecified,Unspecified,90% quantile (paper states “more than 90%”),NA,29,9,1998,NA,12,1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,Other,Nipah virus,314159,1,0, diff --git a/src/db_compilation/redcap/nipah/nipah_qa_fixing.csv b/src/db_compilation/redcap/nipah/nipah_qa_fixing.csv new file mode 100644 index 00000000..40922c92 --- /dev/null +++ b/src/db_compilation/redcap/nipah/nipah_qa_fixing.csv @@ -0,0 +1,26 @@ +fixed,only_notes_mismatch,Covidence_ID,Name_data_entry,QA_M1,QA_M2,QA_A3,QA_A4,QA_D5,QA_D6,QA_D7,qa_notes,num_rows,matching +1,FALSE,21,Anne Cori,No,No,Not Applicable,Not Applicable,No,Yes,No,NA,1,0 +1,FALSE,42,Joseph Hicks,No,No,No,No,No,No,No,NA,1,0 +1,FALSE,65,Tristan Naidoo,Yes,Yes,Not Applicable,Not Applicable,No,Yes,No,NA,1,0 +1,FALSE,86,Anne Cori,No,No,No,No,Yes,No,No,NA,1,0 +1,FALSE,167,sangeeta bhatia,Yes,Yes,Yes,Yes,Yes,Yes,No,NA,1,0 +1,FALSE,184,Rob Johnson,No,No,Yes,Yes,No,Yes,No,NA,1,0 +1,FALSE,192,Richard Sheppard,Yes,No,Not Applicable,Not Applicable,Yes,Yes,No,NA,1,0 +1,FALSE,207,Rhys Earl,Yes,No,NA,No,Yes,No,No,NA,1,0 +1,FALSE,266,Ruth McCabe,No,No,No,Yes,Yes,No,No,NA,1,0 +1,FALSE,270,Christian Morgenstern,Yes,No,Not Applicable,Not Applicable,Yes,Yes,No,NA,1,0 +1,FALSE,271,Rob Johnson,Yes,Yes,No,No,No,No,No,NA,1,0 +1,FALSE,274,Richard Sheppard,No,No,No,No,Yes,No,No,NA,1,0 +1,FALSE,275,Joseph Hicks,No,No,Not Applicable,Not Applicable,Yes,Yes,No,NA,1,0 +1,FALSE,280,Rhys Earl,Yes,No,No,Yes,Yes,No,No,NA,1,0 +1,FALSE,291,Tristan Naidoo,Yes,Yes,Not Applicable,Not Applicable,No,Yes,No,NA,1,0 +1,FALSE,292,Christian Morgenstern,Yes,Yes,No,No,No,Yes,No,18Feb2001 barrier methods were introduced for case management.,1,0 +1,FALSE,345,Richard Sheppard,No,No,No,No,No,No,No,NA,1,0 +1,FALSE,409,Rob Johnson,Yes,No,Not Applicable,Not Applicable,No,Yes,No,NA,1,0 +1,FALSE,708,Thomas Rawson,Yes,No,Yes,Yes,No,No,No,Some issues around the fact that cases were from the same household.,1,0 +1,FALSE,833,Rob Johnson,No,No,No,No,No,Yes,No,NA,1,0 +1,FALSE,851,Richard Sheppard,No,No,Yes,No,No,Yes,No,NA,1,0 +1,FALSE,896,Rhys Earl,Yes,No,Not Applicable,Not Applicable,No,No,No,NA,1,0 +1,FALSE,2892,Christian Morgenstern,Yes,Yes,Not Applicable,Not Applicable,No,Yes,No,NA,1,0 +1,FALSE,3374,Joseph Hicks,Yes,No,No,No,Not Applicable,Not Applicable,Not Applicable,NA,1,0 +1,FALSE,3411,Patrick Doohan,No,No,No,No,Not Applicable,Not Applicable,Not Applicable,NA,1,0 diff --git a/src/db_compilation/redcap_compilation.R b/src/db_compilation/redcap_compilation.R new file mode 100644 index 00000000..6d22408a --- /dev/null +++ b/src/db_compilation/redcap_compilation.R @@ -0,0 +1,327 @@ +# Task to compile single and double extraction databases together +library(cli) +library(dplyr) +library(ids) +library(janitor) +library(orderly2) +library(readr) +library(yaml) + +# *============================= Helper functions =============================* +read_clean_arrange <- function(table_name, col_types){ + df <- read_csv(table_name, col_types=col_types) + df <- clean_names(df) + df <- arrange(df, covidence_id) + + return (df) +} + +create_file_list <- function(table_name_list, col_type_list){ + table_list <- lapply( + names(table_name_list), + function(table_name) + read_clean_arrange(table_name_list[[table_name]], + col_types = col_type_list[[table_name]]) + ) + + table_list <- setNames(table_list,names(table_name_list)) + + return (table_list) +} + +filter_cols <- function(df, cols_to_remove){ + return (df[!colnames(df) %in% cols_to_remove]) +} + +join_qa_and_article <- function(article_single_df, + article_double_df, + qa_matching_df, + qa_fixing_df, + fixing_join_cols, + matching_join_cols){ + article_double_details_df <- select(article_double_df, -c(starts_with("qa"))) + + article_matching_df <- left_join(qa_matching_df, + article_double_details_df, + by = matching_join_cols) + # Removes duplicated article rows which causes missing info ids + article_matching_df <- distinct(article_matching_df, + covidence_id, .keep_all = TRUE) + article_matching_df$double_extracted <- 1 + + article_fixed_df <- left_join(qa_fixing_df, + article_double_details_df, + by = fixing_join_cols) + article_fixed_df$double_extracted <- 1 + + article_single_df$double_extracted <- 0 + + article_all_df <- rbind( + article_single_df, + article_matching_df, + article_fixed_df) + + return (article_all_df) +} + +join_and_create_extraction_table <- function(single_df, + double_df, + fixed_df, + matching_df, + join_cols){ + double_ids <- double_df[colnames(double_df) %in% join_cols] + fixed_df <- left_join(fixed_df, + double_ids) + + all_df <- rbind(single_df, + matching_df, + fixed_df) + + return (all_df) +} + +check_info_ids <- function(extraction_table, + info_table, + info_uuid_col, + table_uuid_col, + cov_id_col, + extraction_table_name, + info_table_name){ + cli_h3(paste("Checking whether", info_uuid_col, "correspond between", + info_table_name, "table and", extraction_table_name)) + + ft_info_uuid_vec <- extraction_table[[info_uuid_col]] + cov_id_vec <- extraction_table[[cov_id_col]] + + it_info_uuid_vec <- sapply( + cov_id_vec, + function(id) info_table[info_table[[cov_id_col]] == id, ][[info_uuid_col]]) + + not_matching <- ft_info_uuid_vec != it_info_uuid_vec + not_matching[is.na(not_matching)] <- TRUE + + if (sum(not_matching) > 0){ + cli_alert_warning( + paste("There are", sum(not_matching), + "rows with either no or mismatching", info_uuid_col, + "values. \nThe", extraction_table_name, "table will be updated to", + "match the", info_table_name, "table") + ) + + extraction_table[not_matching, info_uuid_col] <- it_info_uuid_vec[not_matching] + } + + return (extraction_table) +} + +fix_missing_ids <- function(extraction_table, + id_col, + cov_id, + extraction_table_name, + seed){ + set.seed(seed) + missing_ids <- is.na(extraction_table[id_col]) + num_ids_missing <- sum(missing_ids) + + if (num_ids_missing > 0){ + cli_h3(paste("Generating missing", id_col, "for", extraction_table_name, + "table")) + + cli_alert_info( + paste("There are", num_ids_missing, "with no", id_col,"entry. + This is likely due to a mismatch between the fixing and + double_extraction files. These will be regenerated and, + as a result, will no longer match the ID extraction file.") + ) + + extraction_table[missing_ids, id_col] <- random_id(n = num_ids_missing, + use_openssl = FALSE) + } + + return (extraction_table) +} + +# *============================================================================* +# *------------------------------ Orderly config ------------------------------* +config_file_path <- file.path( + "redcap", tolower(pathogen), + paste(tolower(pathogen), "compilation_config.yaml", sep="_")) +orderly_resource(config_file_path) + +config_list <- yaml.load_file(config_file_path) + +tables <- config_list[["tables"]] +recon <- config_list[["recon"]] +info_table <- "articles" +qa_table <- "qa" +extraction_tables <- tables[tables!=info_table] + +csv_artefacts <- sapply(tables, + function(table) paste0(table, ".csv")) +rds_artefacts <- sapply(tables, + function(table) paste0(table, ".rds")) + +double_tables <- sapply(tables, + function(table) + paste0("double_extraction_", table, ".csv")) + +single_tables <- sapply(tables, + function(table) + paste0("single_extraction_", table, ".csv")) + +fixing_files <- sapply( + recon, function(recon_table) file.path( + "redcap", tolower(pathogen), + paste(tolower(pathogen), recon_table, "fixing.csv", sep="_"))) + +matching_files<- sapply( + recon, function(recon_table) paste(recon_table, "matching.csv", + sep="_")) + +# Get results from db_extraction +orderly_dependency( + "db_extraction", + "latest(parameter:pathogen == this:pathogen)", + c( + setNames(single_tables,single_tables), + setNames(double_tables,double_tables) + ) +) + +# Get results from db_double +# db_double also produces the fixing files that need to be manually changed and +# supplied as resources below +orderly_dependency( + "db_double", + "latest(parameter:pathogen == this:pathogen)", + setNames(matching_files, matching_files) +) + + +# Manually fixed files and "cleaning" script - these need to be in the +# src/db_compilation folder +orderly_resource(setNames(fixing_files, fixing_files)) + +## Outputs +orderly_artefact( + description="Merged single and double extracted data as csv and rds files", + c(setNames(csv_artefacts, csv_artefacts), + setNames(rds_artefacts, rds_artefacts) + ) + ) + +# *--------------------------- Hard-coded variables ---------------------------* +col_type_list <- list("qa" = cols(Covidence_ID = col_integer()), + "articles" = cols(Covidence_ID = col_integer(), + Article_ID = col_integer()), + "models" = cols(Covidence_ID = col_integer(), + Article_ID = col_integer(), + access_model_id = col_character()), + "params" = cols(Covidence_ID = col_integer(), + Article_ID = col_integer(), + access_param_id = col_character()), + "outbreaks"= cols(Covidence_ID = col_integer(), + Article_ID = col_integer(), + access_outbreak_id = col_character())) + +double_join_colnames <- list( + "outbreaks" = c("article_id", "name_data_entry", "access_outbreak_id", + "covidence_id", "id", "outbreak_data_id"), + "models" = c("article_id", "name_data_entry", "access_model_id", + "covidence_id", "id", "model_data_id"), + "params" = c("article_id", "name_data_entry", "access_param_id", + "covidence_id", "id", "parameter_data_id"), + "qa_matching" = c("id", "covidence_id", "name_data_entry"), + "qa_fixing" = c("covidence_id", "name_data_entry") +) + +extract_uuid_cols = c("params" = "parameter_data_id", + "outbreaks" = "outbreak_data_id", + "models"= "model_data_id") +# *------------------------------- Read in data -------------------------------* +# Single extractions +single_extraction_list <- create_file_list(single_tables, col_type_list) + +# Double extractions - matched between extractors +double_extraction_list <- create_file_list(double_tables, col_type_list) + +# Matching +matching_list <- create_file_list(matching_files, col_type_list) + +#Fixing +fixing_list <- create_file_list(fixing_files, col_type_list) + +# *------------------------------- Filter data --------------------------------* +# Matching +matching_list <- lapply( + matching_list, + function(matching_df) filter_cols(matching_df, + c("num_rows", "matching"))) + +# Fixing +fixing_list <- lapply(fixing_list, + function(fixing_df) filter(fixing_df, fixed==1)) + +fixing_list <- lapply( + fixing_list, + function(fixing_df) filter_cols(fixing_df, + c("only_notes_mismatch", + "flag_column", + "fixed", + "num_rows", + "matching"))) + +# *--------------------------- Create final tables ----------------------------* +# Articles +article_table <- join_qa_and_article(single_extraction_list[[info_table]], + double_extraction_list[[info_table]], + matching_list[[qa_table]], + fixing_list[[qa_table]], + double_join_colnames[["qa_fixing"]], + double_join_colnames[["qa_matching"]]) + +# Extraction tables +final_tables <- Map( + function(single_df, double_df, fixed_df, matching_df, table_name) + join_and_create_extraction_table(single_df, + double_df, + fixed_df, + matching_df, + double_join_colnames[[table_name]]), + single_extraction_list[extraction_tables], + double_extraction_list[extraction_tables], + fixing_list[extraction_tables], + matching_list[extraction_tables], + extraction_tables) + +cli_h1("Checking (pk/fk) correspondence between extraction table & info table ids") +final_tables <- lapply(names(final_tables), + function (name) check_info_ids(final_tables[[name]], + article_table, + "id", + extract_uuid_cols[[name]], + "covidence_id", + name, + info_table) + ) + +final_tables <- setNames(final_tables, extraction_tables) +seeds <- setNames(1:3, sort(extraction_tables)) + +cli_h1("Checking extraction table data ids") +final_tables <- lapply( + names(final_tables), + function (name) fix_missing_ids(final_tables[[name]], + extract_uuid_cols[[name]], + "covidence_id", + name, + seeds[[name]]) + ) + +final_tables <- setNames(final_tables, extraction_tables) +final_tables[[info_table]] <- article_table + +for (table in names(csv_artefacts)){ + write_csv(final_tables[[table]], csv_artefacts[table]) + saveRDS(final_tables[[table]], rds_artefacts[table]) +} diff --git a/src/db_double/db_double.R b/src/db_double/db_double.R new file mode 100644 index 00000000..76c9312e --- /dev/null +++ b/src/db_double/db_double.R @@ -0,0 +1,176 @@ +# orderly2::orderly_run(name = 'db_double', parameters = list(pathogen = 'ZIKA')) +# Task to identify entries of double extracted data that match or do not match +# between extractors + +library(orderly2) +orderly_strict_mode() +orderly_parameters(pathogen = NULL) +orderly_artefact( + description = "Double extraction matches and mismatches as csv files", + files = c( + "qa_fixing.csv", "models_fixing.csv", "params_fixing.csv", + "outbreaks_fixing.csv", "qa_matching.csv", "models_matching.csv", + "params_matching.csv", "outbreaks_matching.csv" + ) +) + +orderly_resource("sorting.R") + +# Take the results from db_extraction +orderly_dependency( + "db_extraction", "latest(parameter:pathogen == this:pathogen)", + c( + "double_extraction_articles.csv", + "double_extraction_params.csv", + "double_extraction_models.csv", + "double_extraction_outbreaks.csv" + ) +) +## pathogen should be set to one of our priority-pathogens +## Downstream tasks can query on this parameter to +## pull in the correct files as dependancies. + + + +library(dplyr) +library(readr) +articles <- read_csv("double_extraction_articles.csv") +parameters <- read_csv("double_extraction_params.csv") +models <- read_csv("double_extraction_models.csv") + +if (pathogen %in% c('LASSA', 'OROV', 'ZIKA', 'NIPAH')) { + outbreaks <- read_csv("double_extraction_outbreaks.csv") +} else { + outbreaks <- NULL +} + +source("sorting.R") + +qa_exlcude_cols <- c("Name_data_entry", "ID") +qa_notes_col <- NULL +qa_id_col <- NULL + +param_exclude_cols <- c("Name_data_entry", + "ID", + "Parameter_data_ID", + "Article_ID") +param_notes_col <- NULL +param_id_col <- NULL + +outbreak_exclude_cols <- c("Name_data_entry", + "ID", + "Outbreak_ID", + "Article_ID") +outbreak_notes_col <- NULL +outbreak_id_col <- NULL + +model_exclude_cols <- c("Name_data_entry", + "ID", + "Model_data_ID", + "Article_ID") + +model_notes_col <- NULL +model_id_col <- NULL + +if (pathogen %in% c("NIPAH")){ + outbreak_exclude_cols <- c(outbreak_exclude_cols, "Outbreak_data_ID") + + qa_notes_col <- "qa_notes" + qa_id_col <- "ID" + param_notes_col <- "parameter_notes" + param_id_col <- "Parameter_data_ID" + outbreak_notes_col <- "outbreak_notes" + outbreak_id_col <- "Outbreak_data_ID" + model_notes_col <- "model_notes" + model_id_col <- "Model_data_ID" +} + + +# Quality assessment +qa_only <- articles %>% select( + Covidence_ID, ID, + Name_data_entry, starts_with("QA") +) + +qa_match <- filter_table(qa_only, + matching = TRUE, + exlcude_cols = qa_exlcude_cols) + +qa_discordant <- filter_table(qa_only, + matching = FALSE, + exlcude_cols = qa_exlcude_cols, + notes_col = qa_notes_col, + id_col = qa_id_col +) + +# Parameters +# parameters <- replace("No") +param_match <- filter_table(parameters, + matching = TRUE, + exlcude_cols = param_exclude_cols +) + +param_discordant <- filter_table(parameters, + matching = FALSE, + exlcude_cols = param_exclude_cols, + notes_col = param_notes_col, + id_col = param_id_col +) + +# Models +model_match <- filter_table(models, + matching = TRUE, + exlcude_cols=model_exclude_cols +) + +model_discordant <- filter_table(models, + matching = FALSE, + exlcude_cols=model_exclude_cols, + notes_col = model_notes_col, + id_col = model_id_col +) + + +if (pathogen %in% c('LASSA', 'OROV', "ZIKA", 'NIPAH')){ + outbreak_match <- filter_table(outbreaks, + matching = TRUE, + exlcude_cols=outbreak_exclude_cols + ) + + outbreak_discordant <- filter_table(outbreaks, + matching = FALSE, + exlcude_cols=outbreak_exclude_cols, + notes_col = outbreak_notes_col, + id_col = outbreak_id_col + ) +} + +# The fixing files don't need the new IDs for now as they change each time +# db_extraction is run and they complicate merging the fixing files +if (pathogen != 'LASSA' & pathogen != 'ZIKA') { + qa_discordant <- qa_discordant %>% select(-ID) + param_discordant <- param_discordant %>% select(-c(ID, Parameter_data_ID)) + model_discordant <- model_discordant %>% select(-c(ID, Model_data_ID)) + outbreak_discordant <- outbreak_discordant |> select(-c(ID, Outbreak_data_ID)) + } + +# Create files +write_csv(qa_match, "qa_matching.csv") +write_csv(qa_discordant, "qa_fixing.csv") + +write_csv(param_match, "params_matching.csv") +write_csv(param_discordant, "params_fixing.csv") + +write_csv(model_match, "models_matching.csv") +write_csv(model_discordant, "models_fixing.csv") + +# Empty outbreaks for Ebola - amend this for other pathogens +if (pathogen %in% c('EBOLA','SARS')) { + file.create("outbreaks_matching.csv") + file.create("outbreaks_fixing.csv") +} + +if (pathogen %in% c('LASSA', 'OROV', "ZIKA", 'NIPAH')){ + write_csv(outbreak_match, "outbreaks_matching.csv") + write_csv(outbreak_discordant, "outbreaks_fixing.csv") +} diff --git a/src/db_double/orderly.R b/src/db_double/orderly.R deleted file mode 100644 index e4343c30..00000000 --- a/src/db_double/orderly.R +++ /dev/null @@ -1,142 +0,0 @@ -# Task to identify entries of double extracted data that match or do not match -# between extractors - -library(orderly2) -orderly_strict_mode() -orderly_parameters(pathogen = NULL) -orderly_artefact( - "Double extraction matches and mismatches as csv files", - c( - "qa_fixing.csv", "models_fixing.csv", "params_fixing.csv", - "outbreaks_fixing.csv", "qa_matching.csv", "models_matching.csv", - "params_matching.csv", "outbreaks_matching.csv" - ) -) - -orderly_resource("sorting.R") - -# Take the results from db_extraction -orderly_dependency( - "db_extraction", "latest(parameter:pathogen == this:pathogen)", - c( - "double_extraction_articles.csv", - "double_extraction_params.csv", - "double_extraction_models.csv", - "double_extraction_outbreaks.csv" - ) -) -## pathogen should be set to one of our priority-pathogens -## Downstream tasks can query on this parameter to -## pull in the correct files as dependancies. - - - -library(dplyr) -library(readr) -articles <- read_csv("double_extraction_articles.csv") -parameters <- read_csv("double_extraction_params.csv") -models <- read_csv("double_extraction_models.csv") -if (pathogen %in% c('LASSA', 'OROV')) { - outbreaks <- read_csv("double_extraction_outbreaks.csv") -} else { - outbreaks <- NULL -} - -source("sorting.R") - -# Quality assessment -qa_only <- articles %>% select( - Covidence_ID, ID, - Name_data_entry, starts_with("QA") -) - -qa_match <- filter_qa(qa_only, - matching = TRUE, - id_name1 = "Name_data_entry", id_name2 = "ID" -) - -qa_discordant <- filter_qa(qa_only, - matching = FALSE, - id_name1 = "Name_data_entry", id_name2 = "ID" -) - -# Parameters -param_match <- filter_extracted(parameters, - matching = TRUE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Parameter_data_ID", - id_name4 = "Article_ID" -) - -param_discordant <- filter_extracted(parameters, - matching = FALSE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Parameter_data_ID", - id_name4 = "Article_ID" -) - -# Models -model_match <- filter_extracted(models, - matching = TRUE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Model_data_ID", - id_name4 = "Article_ID" -) - -model_discordant <- filter_extracted(models, - matching = FALSE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Model_data_ID", - id_name4 = "Article_ID" -) - -if (pathogen %in% c('LASSA', 'OROV')){ - outbreak_match <- filter_extracted(outbreaks, - matching = TRUE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Outbreak_ID", - id_name4 = "Article_ID" - ) - - outbreak_discordant <- filter_extracted(outbreaks, - matching = FALSE, - id_name1 = "Name_data_entry", - id_name2 = "ID", - id_name3 = "Outbreak_ID", - id_name4 = "Article_ID" - ) -} - -# The fixing files don't need the new IDs for now as they change each time -# db_extraction is run and they complicate merging the fixing files -if (pathogen != 'LASSA') { - qa_discordant <- qa_discordant %>% select(-ID) - param_discordant <- param_discordant %>% select(-c(ID, Parameter_data_ID)) - model_discordant <- model_discordant %>% select(-c(ID, Model_data_ID)) - } - -# Create files -write_csv(qa_match, "qa_matching.csv") -write_csv(qa_discordant, "qa_fixing.csv") - -write_csv(param_match, "params_matching.csv") -write_csv(param_discordant, "params_fixing.csv") - -write_csv(model_match, "models_matching.csv") -write_csv(model_discordant, "models_fixing.csv") - -# Empty outbreaks for Ebola - amend this for other pathogens -if (pathogen %in% c('EBOLA','SARS')) { - file.create("outbreaks_matching.csv") - file.create("outbreaks_fixing.csv") -} - -if (pathogen %in% c('LASSA', 'OROV')){ - write_csv(outbreak_match, "outbreaks_matching.csv") - write_csv(outbreak_discordant, "outbreaks_fixing.csv") -} diff --git a/src/db_double/sorting.R b/src/db_double/sorting.R index 382d3b3c..6ce97fa2 100644 --- a/src/db_double/sorting.R +++ b/src/db_double/sorting.R @@ -3,52 +3,55 @@ library(dplyr) -filter_qa <- function(df, matching = FALSE, - id_name1 = "NA", id_name2 = "NA") { - df <- df %>% - group_by(Covidence_ID) %>% - group_by(across(-c(all_of(id_name1), all_of(id_name2)))) %>% - mutate(num_rows = sum(n())) %>% - ungroup() %>% - mutate(matching = ifelse(num_rows == 2, 1, 0)) - if(matching == TRUE) { - df <- df %>% - filter(matching == 1) %>% - distinct() %>% - arrange(Covidence_ID) - } else if(matching == FALSE) { - df <- df %>% - filter(matching == 0) %>% - arrange(Covidence_ID) %>% - mutate(fixed = "NA", .before = "Covidence_ID") - } -} - -filter_extracted <- function(df, matching = FALSE, - id_name1 = "NA", id_name2 = "NA", - id_name3 = "NA", id_name4 = "NA") { +filter_table <- function(df, + matching = FALSE, + exlcude_cols = "NA", + notes_col=NULL, + id_col=NULL) { #' input: data frame #' process: matching determines whether it'll give matches (w/0 duplicates) #' or disconcordant dfs #' output: desired data frame based on the parameters df <- df %>% group_by(Covidence_ID) %>% - group_by(across(-c(all_of(id_name1), all_of(id_name2), - all_of(id_name3), all_of(id_name4)))) %>% + group_by(across(-c(all_of(exlcude_cols)))) %>% mutate(num_rows = sum(n())) %>% ungroup() %>% mutate(matching = ifelse(num_rows == 2, 1, 0)) - + if(matching == TRUE) { df <- df %>% filter(matching == 1) %>% distinct() %>% arrange(Covidence_ID) + } else if(matching == FALSE) { - df <- df %>% + not_matching_df <- df %>% filter(matching == 0) %>% arrange(Covidence_ID) %>% mutate(fixed = "NA", .before = "Covidence_ID") - } + + if (!is.null(notes_col) & !is.null(id_col)){ + exlcude_no_notes <- c(exlcude_cols, notes_col) + + no_notes_matching_ids <- df %>% + group_by(Covidence_ID) %>% + group_by(across(-c(all_of(exlcude_no_notes)))) %>% + mutate(num_rows = sum(n())) %>% + ungroup() %>% + filter(num_rows == 2) |> + pull(all_of(id_col)) + + not_matching_df <- not_matching_df |> + mutate(only_notes_mismatch=FALSE, + .after = "fixed") + + only_notes_mismatch_filter <- (not_matching_df[[id_col]] %in% + no_notes_matching_ids) + not_matching_df[only_notes_mismatch_filter, "only_notes_mismatch"] <- TRUE + } + + df <- not_matching_df + } return(df) } diff --git a/src/db_extraction/orderly.R b/src/db_extraction/db_extraction.R similarity index 91% rename from src/db_extraction/orderly.R rename to src/db_extraction/db_extraction.R index 5091f888..ac9071a7 100644 --- a/src/db_extraction/orderly.R +++ b/src/db_extraction/db_extraction.R @@ -1,11 +1,14 @@ +# orderly2::orderly_run(name = 'db_extraction', parameters = list(pathogen = 'ZIKA')) +# Works as of 23 July 2024 library(dplyr) library(orderly2) +library(readr) orderly_parameters(pathogen = NULL) orderly_artefact( - "Merged data as csv and errors as RDS", - c( + description = "Merged data as csv and errors as RDS", + files = c( "single_extraction_articles.csv", "single_extraction_models.csv", "single_extraction_params.csv", "single_extraction_outbreaks.csv", "double_extraction_articles.csv", "double_extraction_models.csv", @@ -19,8 +22,7 @@ orderly_dependency("db_extraction_prep", "extracted_tables.rds" ) -orderly_resource("validation.R") - +orderly_shared_resource("validation.R" = "validation.R") source("validation.R") extracted_tables_list <- readRDS("extracted_tables.rds") @@ -29,6 +31,7 @@ articles <- extracted_tables_list[["articles"]] models <- extracted_tables_list[["models"]] params <- extracted_tables_list[["parameters"]] + outbreaks_ex <- ("outbreaks" %in% names(extracted_tables_list)) if (outbreaks_ex) { @@ -104,4 +107,4 @@ write_csv( write_csv( double_o, "double_extraction_outbreaks.csv" -) \ No newline at end of file +) diff --git a/src/db_extraction_prep/db_extraction_prep.R b/src/db_extraction_prep/db_extraction_prep.R index 8ab6d011..3e3ca574 100644 --- a/src/db_extraction_prep/db_extraction_prep.R +++ b/src/db_extraction_prep/db_extraction_prep.R @@ -1,7 +1,8 @@ library(orderly2) orderly_parameters(pathogen = NULL, - mode="") + mode="", + orderly_download_dependency=FALSE) pathogen <- toupper(pathogen) mode <- toupper(mode) @@ -9,6 +10,8 @@ mode <- toupper(mode) orderly_artefact(description="rds file with the processed tables", "extracted_tables.rds") +orderly_strict_mode() + # Mode serves to overwrite the default pathogen method of extraction # E.g. if new EBOLA articles are extracted with redcap, mode can be used to # overwrite the default extraction method. For each pathogen, the necessary data @@ -16,8 +19,10 @@ orderly_artefact(description="rds file with the processed tables", # If you use a different method, you need to provide the necessary files. if (pathogen %in% c("MARBURG", "EBOLA", "SARS", "ZIKA") & mode!="REDCAP"| mode=="ACCESS"){ + orderly_resource("prepare_access.R") source("prepare_access.R") } else if (pathogen %in% c("OROV", "NIPAH") & mode!="ACCESS"| mode=="REDCAP"){ + orderly_resource("prepare_redcap.R") source("prepare_redcap.R") } diff --git a/src/db_extraction_prep/prepare_access.R b/src/db_extraction_prep/prepare_access.R index b35a844b..85f9fb67 100644 --- a/src/db_extraction_prep/prepare_access.R +++ b/src/db_extraction_prep/prepare_access.R @@ -27,9 +27,10 @@ orderly_parameters(pathogen = NULL) ## When running as an orderly task leave line 13 as it is orderly_resource(file.path("access_task", "pathogen_cleaning.R")) orderly_shared_resource("utils.R" = "utils.R") - +orderly_shared_resource("validation.R" = "validation.R") +source("validation.R") source("utils.R") -source("pathogen_cleaning.R") +source(file.path("access_task", "pathogen_cleaning.R")) ## First get the pathogen-specific nested list from the function ## database_files and then plonk them into the function ## sharedfile_path one by one. Careful as there may be one or more @@ -94,7 +95,8 @@ all_articles <- map( # Save all objects directly as extracted from the database for ease of # debugging. saveRDS(all_articles, "all_articles_raw.rds") -orderly_artefact("All articles", "all_articles_raw.rds") +orderly_artefact(description = "All articles", + files = "all_articles_raw.rds") all_models <- map( all_conns, function(con) { @@ -111,7 +113,8 @@ all_models <- map( ) saveRDS(all_models, "all_models_raw.rds") -orderly_artefact("All Models", "all_models_raw.rds") +orderly_artefact(description = "All Models", + files = "all_models_raw.rds") all_params <- map( all_conns, function(con) { @@ -128,7 +131,8 @@ all_params <- map( ) saveRDS(all_params, "all_params_raw.rds") -orderly_artefact("All parameters", "all_params_raw.rds") +orderly_artefact(description = "All parameters", + files = "all_params_raw.rds") # Check if we have extracted outbreaks for this pathogen all_tables <- dbListTables(all_conns[[1]]) @@ -152,7 +156,8 @@ if (!outbreaks_ex) { } saveRDS(all_outbreaks, "all_outbreaks_raw.rds") -orderly_artefact("All outbreaks", "all_outbreaks_raw.rds") +orderly_artefact(description = "All outbreaks", + files = "all_outbreaks_raw.rds") # Close all connections walk(all_conns, function(con) dbDisconnect(con)) @@ -330,7 +335,16 @@ if (pathogen == "EBOLA") { #missing parameter types params$Parameter_type[params$Covidence_ID==2684¶ms$access_param_id==37] <- 'Risk factors' -} +} else if( pathogen == 'SARS') { + articles <- articles %>% + # For some reason surname and first name are the wrong way around + rename( + temp_col = FirstAuthor_FirstName, + FirstAuthor_FirstName = FirstAauthor_Surname + ) %>% + rename(FirstAauthor_Surname = temp_col) +} + # Pathogen-specific cleaning articles <- clean_articles(articles) models <- clean_models(models) diff --git a/src/db_extraction_prep/prepare_redcap.R b/src/db_extraction_prep/prepare_redcap.R index c42aa426..47988984 100644 --- a/src/db_extraction_prep/prepare_redcap.R +++ b/src/db_extraction_prep/prepare_redcap.R @@ -1,8 +1,10 @@ library(cli) +library(ids) +library(orderly2) library(readr) -library(uuid) +library(tools) library(yaml) -library(orderly2) + # *============================= Helper functions =============================* # *----------------------------- Filter functions -----------------------------* @@ -61,7 +63,9 @@ filter_record_ids <- function(df, record_id_vec, name, cli_text){ get_not_pathogen_ids <- function(df, pathogen, id_col, pathogen_col="pathogen"){ # Update for Pathogen other pathogen_lower_vec <- sapply(df[pathogen_col], tolower) - record_vec <- df[pathogen_lower_vec!=tolower(pathogen), ][[id_col]] + not_pathogen_filter <- (pathogen_lower_vec!=tolower(pathogen) | + is.na(pathogen_lower_vec)) + record_vec <- df[not_pathogen_filter, ][[id_col]] record_vec <- unique(record_vec) return (record_vec) } @@ -118,7 +122,7 @@ get_incomplete_rows <- function(df, col, name, redcap_repeat_instances, # *------------------------------ Key functions -------------------------------* add_uuid_id <- function(input_df, uuid_col){ if (NROW(input_df) > 0) { - input_df[uuid_col] <- replicate(NROW(input_df), UUIDgenerate()) + input_df[uuid_col] <- random_id(n = NROW(input_df), use_openssl = FALSE) } else { input_df[uuid_col] <- character(0) } @@ -126,9 +130,16 @@ add_uuid_id <- function(input_df, uuid_col){ return (input_df) } -add_pks <- function(input_df, pk_col){ +add_pks <- function(input_df, pk_col, base_id, combine_id){ if (NROW(input_df) > 0) { - input_df[pk_col] <- 1:NROW(input_df) + if (!is.null(base_id) & !is.null(combine_id)){ + base_digits <- floor(log10(max(input_df[[base_id]]))) + 1 + combined_digits <- floor(log10(max(input_df[[base_id]]))) + 1 + input_df[pk_col] <- paste( + sprintf("%.*d", base_digits, as.numeric(input_df[[base_id]])), + sprintf("%.*d", combined_digits, as.numeric(input_df[[combine_id]])), + sep="_") + } } else { input_df[pk_col] <- character(0) } @@ -158,6 +169,7 @@ df_cols_key_map <- function(input_vec, names_not_updated <- updated_vec[input_vec %in% updated_vec] n_no_updated <- length(names_not_updated) if (n_no_updated > 0) { + # No mappings means that the name is the same as the input cli_alert_info(paste("No mappings found for the following", n_no_updated, "columns: ", paste0(names_not_updated, collapse=", "))) } @@ -175,7 +187,7 @@ subset_long_df <- function(input_df, mapping_df, table_name){ return (subset_df) } -stack_rows <- function(df, id_col = "record_id"){ +stack_rows <- function(df, repeat_id_col, id_col = "record_id"){ colnames_table <- colnames(df) colnames_table <- colnames_table[!(colnames_table == id_col)] repeat_ids <- sub("^.*_(\\d+)$", "\\1", colnames_table) @@ -197,10 +209,10 @@ stack_rows <- function(df, id_col = "record_id"){ # get names time to make reduce dependency on column order colnames(temp_df) <- gsub("_\\d+", "", colnames(temp_df)) - repeat_id_vec <- rep(repeat_id, NROW(temp_df)) + repeat_id_vec <- rep(as.numeric(repeat_id), NROW(temp_df)) df_to_rbind <- cbind(temp_df[,1, drop=FALSE], - "repeat_id"=repeat_id_vec, + setNames(list(repeat_id_vec), repeat_id_col), temp_df[-1]) combined_df <- rbind(combined_df, df_to_rbind) @@ -209,13 +221,151 @@ stack_rows <- function(df, id_col = "record_id"){ return(combined_df) } +get_overflow_mapping_table <- function(df, + id_col, + cov_id_col, + continuation_col, + extractor_col, + incomplete_col, + incomplete_key="Incomplete"){ + non_na_df <- df[!is.na(df[[extractor_col]]) & !is.na(df[[cov_id_col]]), ] + continuations_df <- non_na_df[!is.na(non_na_df[[continuation_col]]), + c(cov_id_col, extractor_col)] + continuations_df <- unique(continuations_df) + + id_mapping_list <- list() + cov_id_vec <- c() + cov_id_error_list <- list() + + for (i in 1:nrow(continuations_df)){ + extractor <- continuations_df[[extractor_col]][i] + cov_id <- continuations_df[[cov_id_col]][i] + extractor_filter <- non_na_df[[extractor_col]]==extractor + cov_id_filter <- non_na_df[[cov_id_col]]==cov_id + + temp_df <- non_na_df[cov_id_filter & extractor_filter, ] + + if (NROW(temp_df) == 1){ + cli_alert_warning( + paste(extractor, "has indicated that Covidence ID: ", cov_id, + "is a continuation, but it only has 1 REDCap entry") + ) + cov_id_error_list[[extractor]] <- cov_id + next + } + + # We map to the latest complete row + id_vec <- temp_df[[id_col]] + id_to_map_to <- max(id_vec[!(temp_df[[incomplete_col]]==incomplete_key)]) + + id_update_vec <- id_vec[id_vec!=id_to_map_to] + id_mapping_list[[as.character(id_to_map_to)]] <- id_update_vec + cov_id_vec <- c(cov_id_vec, cov_id) + + cli_alert_info( + paste0(extractor, " has indicated that Covidence ID: ", cov_id, + " is a continuation. There are ", NROW(temp_df), " REDCap entries with this ID.\n", + "The following ", id_col, " will be mapped to ", id_to_map_to, ": ", + paste(id_update_vec, collapse=", ")) + ) + + } + prog_report_list <- list("cov_id_vec"=cov_id_vec, + "cov_id_error_list"=cov_id_error_list, + "id_mapping_list"=id_mapping_list) + return (prog_report_list) +} + +update_records <- function(df, id_mapping_list, id_col){ + id_vec <- df[[id_col]] + + for(name in names(id_mapping_list)){ + df[id_vec %in% id_mapping_list[[name]], id_col] <- as.numeric(name) + } + + return (df) +} + +update_id_rows_to_keep <- function(df, id_to_map_to, ids_to_map, + notes_cols, continuation_col, id_col, + incomplete_col, incomplete_col_key, + continuation_table){ + ids_to_combine <- c(as.numeric(id_to_map_to), ids_to_map) + to_combine_df <- df[df[[id_col]] %in% ids_to_combine, ] + + cli_alert_info( + paste0("Attempting to merge ", continuation_table, " rows with ", id_col, + ": ", paste(ids_to_combine, collapse=", "))) + + notes_list <- lapply( + notes_cols, + function(col) paste(get_unique_na_preserve(to_combine_df[[col]]), + collapse="; ") + ) + names(notes_list) <- notes_cols + id_list <- setNames(list(as.numeric(id_to_map_to)), id_col) + continuation_list <- setNames(list(NA), continuation_col) + + unqiue_col_df <- to_combine_df[, !(colnames(to_combine_df) %in% + c(notes_cols, continuation_col, id_col))] + unique_value_list <- lapply(unqiue_col_df, + function(col) get_unique_na_preserve(col)) + + unique_incomplete_col <- unique_value_list[[incomplete_col]] + unique_value_list[[incomplete_col]] <- ifelse( + length(unique_incomplete_col)>1, + unique_incomplete_col[unique_incomplete_col!=incomplete_col_key], + unique_incomplete_col) + + for (name in names(unique_value_list)){ + values <- unique_value_list[[name]] + if (NROW(values) > 1){ + cli_alert_danger( + paste0("Found a mismatch for ", name, ". It has the following values: ", + paste(values, collapse=", "), ". The final value '", values[-1], + "' will be used.")) + } + unique_value_list[[name]] <- values[NROW(values)] + } + + final_return_list <- c(id_list, unique_value_list, notes_list, continuation_list) + return (final_return_list) +} + +update_repeat_ids <- function(df, + tbl_name, + id_mapping_list, + id_col, + repeat_id_col){ + row_len = sum(df[,id_col]==names(id_mapping_list)[1]) + cli_inform( + paste0("Updating repeat ids for ", tbl_name , + " to generate distinct extraction row ids.", + "\nAssuming the max number of rows that can be extracted is: ", row_len) + ) + + for (i in 1:length(id_mapping_list)){ + # Update in ascending order + ids_to_update <- c(id_mapping_list[[i]], names(id_mapping_list)[i]) + ids_to_update <- sort(as.numeric(ids_to_update))[-1] + + for (j in 1:length(ids_to_update)){ + id <- ids_to_update[j] + id_filter <- df[,id_col]==id + df[id_filter, repeat_id_col] <- (df[id_filter, repeat_id_col] + row_len * j) + } + } + + return (df) +} + # *----------------------- Target generation functions ------------------------* generate_target_table <- function(input_df_list, mapping_df, target_table, input_table_col_name="input_table", target_table_col_name="target_table", input_col_name = "input_col", target_col_name = "target_col"){ - cli_inform(paste("Generating table:", target_table)) + cli_h3(paste("Generating table:", target_table)) mapping_non_na_df <- mapping_df[!is.na(mapping_df[target_table_col_name]), ] filtered_mapping_df <- (mapping_non_na_df[ @@ -310,9 +460,10 @@ split_data_column <- function(input_df, date_col){ } # *------------------------- Process report functions -------------------------* -check_raw_cols_in_mapping <- function(raw_df_list, - mapping_df, - tables_to_stack){ +check_raw_cols_mapping <- function(raw_df_list, + mapping_df, + tables_to_stack, + raw_in_mapping=TRUE){ if(!is.null(tables_to_stack)){ colnames_vec <- unlist( sapply(df_raw_list, function(df) unique(gsub("_\\d+", "", colnames(df))))) @@ -320,13 +471,23 @@ check_raw_cols_in_mapping <- function(raw_df_list, colnames_vec <- unlist(sapply(df_raw_list, colnames)) } - not_in_mapping <- colnames_vec[!(colnames_vec %in% mapping_df[["input_col"]])] + input_col_vec <- mapping_df[["input_col"]] + + if (raw_in_mapping){ + not_contained <- colnames_vec[!(colnames_vec %in% input_col_vec)] + table_source <- "input" + table_target <- "mapping file" + }else{ + not_contained <- input_col_vec[!(input_col_vec %in% colnames_vec)] + table_source <- "mapping file" + table_target <- "input" + } - if (length(not_in_mapping) > 1){ - cli_alert_info(paste0("The following ", NROW(not_in_mapping), " columns are", - " in the input but not in the mapping file and will", - " be exlcuded in the final output:\n", - paste(not_in_mapping, collapse=", "))) + if (length(not_contained) > 1){ + cli_alert_info(paste0("The following ", NROW(not_contained), " columns are", + " in the ", table_source ," but not in the ", + table_target," and will be exlcuded in the final + output: ", paste0(not_contained, collapse=", "))) } } @@ -390,7 +551,8 @@ generate_report <- function(df_list, inputs_not_mapped, targets_not_mapped, pathogen, - redcap_repeat_instances){ + redcap_repeat_instances, + id_mapping_rep_list){ # Prepare log file content as a character vector table_names <- names(df_list) header_length <- 75 @@ -451,6 +613,53 @@ generate_report <- function(df_list, } } + if(length(id_mapping_rep_list[["cov_id_vec"]]) > 0 | + length(id_mapping_rep_list[["cov_id_error_list"]]) > 0 ){ + tnm_header <- create_comment_header("Form continuations", + decorator_char="-", + header_length, + newline=TRUE) + if(length(id_mapping_rep_list[["cov_id_error_list"]])>0){ + cov_id_error_ids <- unlist(id_mapping_rep_list[["cov_id_error_list"]]) + cov_id_error_names <- names(cov_id_error_ids) + tnm_text <- paste0( + "An extractor indicated that the the following Covidence IDs were ", + "\ncontinuations but only a single form was found.\n\n", + paste0( + seq_along(cov_id_error_names), ". ", + paste(cov_id_error_names, "| Covidence ID: ", cov_id_error_ids), + collapse = "\n") + ) + } + + if(length(id_mapping_rep_list[["cov_id_vec"]])>0){ + tnm_text <- paste0(tnm_text, + "\n\nArticles with the following Covidence IDs were extracted over ", + "multiple forms.", "\nWe merged the corresponding article rows to a ", + "single RecordID.\nIf there were any conflicts we chose the latest ", + "entry.\nAny merging conflict are highlighted in the script cli ", + "output.\nFor all data tables we map all RecordIDs to the merged ", + "value.\n" + ) + + id_mapping_from_text <- sapply(id_mapping_rep_list[["id_mapping_list"]], + function(x) paste(x,collapse=", ")) + + tnm_id_text <- paste0( + seq_along(id_mapping_rep_list[["cov_id_vec"]]), ". ", + paste0( + "Covidence_ID: ", id_mapping_rep_list[["cov_id_vec"]], + " | RecordID: ",names(id_mapping_rep_list[["id_mapping_list"]]), + " <- ", id_mapping_from_text), + collapse = "\n") + } + + log_content <- c(log_content, + tnm_header, + tnm_text, + tnm_id_text) + } + for (table in table_names) { pathogen_header <- create_comment_header(toupper(table), decorator_char="=", @@ -518,17 +727,17 @@ orderly_resource(c(config_file_path)) # Shared resources are assigned dynamically based on config file, so it is # loaded in the orderly config section config_list <- yaml.load_file(config_file_path) -orderly_download_depencency <- config_list[["orderly_download_depencency"]] + # Note: table_filenames_vec needs to be a named vector, with names corresponding # to config_list[["table_filepaths"]] names -if (orderly_download_depencency==TRUE){ +if (orderly_download_dependency==TRUE){ table_filenames_vec <- unlist(config_list[["table_filepaths"]]) orderly_dependency( "db_redcap_download", "latest(parameter:pathogen == this:pathogen)", unname(table_filenames_vec) ) -}else{ +} else{ table_filenames_vec <- sapply(config_list[["table_filepaths"]], basename) table_filepath_list <- setNames(config_list[["table_filepaths"]], table_filenames_vec) @@ -555,22 +764,38 @@ pathogen_filter_name <- config_list[["pathogen_filter_name"]] table_instrument_source_list <- config_list[["instrument_source_table"]] tables_to_stack <- config_list[["tables_to_stack"]] +continuation_table <- config_list[["continuation_config"]][["continuation_table"]] +id_col <- config_list[["continuation_config"]][["id_col"]] +cov_id_col <- config_list[["continuation_config"]][["cov_id_col"]] +continuation_col <- config_list[["continuation_config"]][["continuation_col"]] +extractor_col <- config_list[["continuation_config"]][["extractor_col"]] +incomplete_col <- config_list[["continuation_config"]][["incomplete_col"]] +notes_cols <- config_list[["continuation_config"]][["notes_cols"]] + +article_id <- config_list[["article_id"]] # Assumes if there are not tables to stack then data is in a REDCap repeat # instance format redcap_repeat_instances <- is.null(tables_to_stack) data_table_names <- config_list[["data_table_names"]] incomplete_cols <- config_list[["incomplete_col_names"]] +incomplete_col_key <- config_list[["incomplete_col_key"]] linked_rows_list <- config_list[["linked_row_col_names"]] uuid_col_names <- config_list[["uuid_col_names"]] pk_col_names <- config_list[["pk_col_names"]] +pk_base_id <- config_list[["pk_base_id"]] + date_cols_to_split <- config_list[["date_cols_to_split"]] article_cols_to_add_start <- config_list[["article_cols_to_add_start"]] article_cols_to_add_end <- config_list[["article_cols_to_add_end"]] +# Hard-coded repeat id column name. Column is created to create a unique id for +# extracted data tables +repeat_id_col <- "repeat_id" + # *------------------------------- Read in data -------------------------------* -mapping_df <- read_csv(mapping_filename) +mapping_df <- read_csv(mapping_filename, show_col_types = FALSE) if (!is.null(table_instrument_source_list)){ mapping_df <- col_list_key_map(df=mapping_df, @@ -578,11 +803,25 @@ if (!is.null(table_instrument_source_list)){ mapping_list=table_instrument_source_list) } -target_names_df <- read_csv(target_filename) +target_names_df <- read_csv(target_filename, show_col_types = FALSE) + +df_raw_list <- lapply(table_filenames_vec, + function(x) read_csv(x, show_col_types = FALSE)) -df_raw_list <- lapply(table_filenames_vec, function(x) read_csv(x)) +cli_h1("Comparing REDCap input and mapping file") +check_raw_cols_mapping(df_raw_list, mapping_df, tables_to_stack, + raw_in_mapping=TRUE) +check_raw_cols_mapping(df_raw_list, mapping_df, tables_to_stack, + raw_in_mapping=FALSE) -check_raw_cols_in_mapping(df_raw_list, mapping_df, tables_to_stack) +get_unique_na_preserve <- function(vec){ + unique_vec <- unique(na.omit(vec)) + if (length(unique_vec) == 0){ + return (NA) + }else{ + return (unique_vec) + } +} if (!is.null(tables_to_stack)){ distinct_input_tables <- unique(mapping_df[["input_table"]]) @@ -593,21 +832,85 @@ if (!is.null(tables_to_stack)){ function(table_name) subset_long_df(df_raw_list[[1]], mapping_df, table_name) ), distinct_input_tables) - df_raw_list[tables_to_stack] <- lapply(df_raw_list[tables_to_stack], stack_rows) + cli_h1("Form continuations") + cli_h3("Checking for form continuations") + id_mapping_rep_list <- get_overflow_mapping_table( + df=df_raw_list[[continuation_table]], + id_col=id_col, + cov_id_col=cov_id_col, + continuation_col=continuation_col, + extractor_col=extractor_col, + incomplete_col=incomplete_col, + incomplete_key=incomplete_col_key) + + id_mapping_list <- id_mapping_rep_list$id_mapping_list - # Assign repeat_id in case needed for debugging but remove here for - # compatability with existing functions df_raw_list[tables_to_stack] <- lapply( - df_raw_list[tables_to_stack], function(df) df[!colnames(df) %in% "repeat_id"]) -} + df_raw_list[tables_to_stack], + function(df) stack_rows(df=df, repeat_id_col=repeat_id_col, id_col=id_col)) + + # Data tables + if(NROW(id_mapping_list)>0){ + df_raw_list[tables_to_stack] <- lapply( + tables_to_stack, + function(tbl_to_stack) update_repeat_ids(df=df_raw_list[[tbl_to_stack]], + tbl_name=tbl_to_stack, + id_mapping_list=id_mapping_list, + id_col=id_col, + repeat_id_col=repeat_id_col)) + + df_raw_list[tables_to_stack] <- lapply( + df_raw_list[tables_to_stack], + function(df) update_records(df=df, + id_mapping_lis=id_mapping_list, + id_col=id_col)) + } + + # Continuation table + if(NROW(id_mapping_list)>0){ + cli_h3(paste("Merging", continuation_table, + "rows repeated due to continuation")) + ids_to_keep_filter <- !( + df_raw_list[[continuation_table]][[id_col]] %in% + unlist(id_mapping_list) + ) + cli_alert_warning(paste("If there are any conflicts we will highlight them", + "and choose the latest entry") + ) + + list_of_updated_records <- lapply( + names(id_mapping_list), function (id_to_map_to) + update_id_rows_to_keep(df_raw_list[[continuation_table]], + id_to_map_to, id_mapping_list[[id_to_map_to]], + notes_cols, continuation_col, id_col, + incomplete_col, incomplete_col_key, + continuation_table) + ) + + for (updated_record in list_of_updated_records){ + id_filter <- (df_raw_list[[continuation_table]][[id_col]] == + updated_record[[id_col]]) + + df_raw_list[[continuation_table]][ + id_filter, names(updated_record)] <- updated_record + } + + df_raw_list[[continuation_table]] <- ( + df_raw_list[[continuation_table]][ids_to_keep_filter,]) + } + } # *------------------------- Clean & generate targets -------------------------* +cli_h1("Keeping non-empty rows") + df_clean_list <- Map(filter_empty_rows, df=df_raw_list, name=names(df_raw_list)) # Filter out rows with an Answer of No for linked parameter if (!is.null(linked_rows_list)){ + cli_h1("Keeping rows with answers") + df_clean_list[names(linked_rows_list)] <- Map(filter_linked_rows, df=df_clean_list[names(linked_rows_list)], col=linked_rows_list, @@ -634,6 +937,8 @@ not_pathogen_ids <- get_not_pathogen_ids(df=df_clean_list[[pathogen_table]], id_col="record_id", pathogen_col = "pathogen") +cli_h1(paste("Keeping", toTitleCase(tolower(pathogen)), "rows")) + df_clean_list <- Map( function(df, name) filter_record_ids(df, not_pathogen_ids, @@ -647,6 +952,7 @@ unfiltered_article_df <- df_clean_list[[pathogen_table]] # Filter out irrelevant records if (!is.null(incomplete_cols)){ + cli_h1("Keeping complete rows") incomplete_rows_df_list <- Map(get_incomplete_rows, df_clean_list[names(incomplete_cols)], incomplete_cols, @@ -683,17 +989,46 @@ if (!is.null(incomplete_cols)){ names(df_clean_list)) } +cli_h1("Generating target tables") + +if (!is.null(pk_col_names)){ + # Assumes fixed column names for mapping file + input_names <- sapply( + data_table_names, function(name) unique( + na.omit(mapping_df[mapping_df$target_table==name, "input_table"]) + ) + ) + + input_names <- unname(unlist(input_names)) + new_repeat_id_name <- "Repeat_ID" + # repeat ids are created within this script and are required for pk generation + # new name to suppress mapping warning (quick fix) + repeat_id_rows_df <- data.frame( + rep(repeat_id_col, length(data_table_names)), + input_names, + rep(new_repeat_id_name, length(data_table_names)), + data_table_names) + colnames(repeat_id_rows_df) <- colnames(mapping_df) + + # original mapping df is used for the progress report + mapping_updated_df <- rbind(mapping_df, repeat_id_rows_df) +}else{ + mapping_updated_df <- mapping_df +} + target_df_raw_list <- setNames( lapply(target_table_names, function (target) generate_target_table(input_df_list=df_clean_list, - mapping_df=mapping_df, + mapping_df=mapping_updated_df, target_table=target)), target_table_names) # *------------------------------ Process target ------------------------------* -# Split date columns into day, month, year target_df_clean_list <- target_df_raw_list + +# Split date columns into day, month, year if (!is.null(date_cols_to_split)){ + cli_h1("Expanding date columns") for (name in names(date_cols_to_split)){ cli_inform(paste("Expanding the following ", name, "table date columns:", paste(date_cols_to_split[[name]], collapse=", "))) @@ -704,13 +1039,44 @@ if (!is.null(date_cols_to_split)){ } } +# Add PK columns +if (!is.null(pk_col_names)){ + target_df_clean_list[data_table_names] <- lapply( + data_table_names, + function(name) add_pks(input_df=target_df_clean_list[[name]], + pk_col=pk_col_names[[name]], + base_id=article_id, + combine_id=new_repeat_id_name) + ) + + # Remove repeat ids that were included for cleaning + target_df_clean_list[data_table_names] <- lapply( + target_df_clean_list[data_table_names], + function(df) df[!colnames(df) %in% new_repeat_id_name]) +} + # Add UUID columns if (!is.null(uuid_col_names)){ + set.seed(3141) + # Order by ArticleID and additional cols to ensure uuid is always assigned + # in the same order + sort_order <- do.call( + what = order, + args = target_df_clean_list[[continuation_table]][,article_id]) + target_df_clean_list[[continuation_table]] <- + target_df_clean_list[[continuation_table]][sort_order, ] + + # Order by new pk to ensure uuid is always assigned in the same order + target_df_clean_list[data_table_names] <- lapply( + data_table_names, + function(name) target_df_clean_list[[name]][ + order(target_df_clean_list[[name]][[pk_col_names[[name]][1]]]), ]) + target_df_clean_list <- setNames( lapply(target_table_names, function(name) add_uuid_id(input_df=target_df_clean_list[[name]], uuid_col=uuid_col_names[[name]]) - ), + ), target_table_names) } @@ -721,7 +1087,7 @@ if (!is.null(article_cols_to_add_start)){ function(name) add_article_cols(target_df_clean_list[[name]], target_df_clean_list[["articles"]], cols_to_add=article_cols_to_add_start, - join_col="Article_ID", + join_col=article_id, start=TRUE ) ) @@ -733,21 +1099,12 @@ if (!is.null(article_cols_to_add_end)){ function(name) add_article_cols(target_df_clean_list[[name]], target_df_clean_list[["articles"]], cols_to_add=article_cols_to_add_end, - join_col="Article_ID", + join_col=article_id, start=FALSE ) ) } -# Add PK columns -if (!is.null(pk_col_names)){ -target_df_clean_list[data_table_names] <- lapply( - data_table_names, - function(name) add_pks(input_df=target_df_clean_list[[name]], - pk_col=pk_col_names[[name]]) - ) -} - # Expected by orderly in db_extraction_prep saveRDS(target_df_clean_list,"extracted_tables.rds") @@ -780,7 +1137,8 @@ log_filename <- generate_report(target_df_clean_list, inputs_not_mapped, targets_not_mapped, pathogen, - redcap_repeat_instances) + redcap_repeat_instances, + id_mapping_rep_list) orderly_artefact( description="Text file with the results of the extraction process", diff --git a/src/db_extraction_prep/redcap_task/nipah/config.yaml b/src/db_extraction_prep/redcap_task/nipah/config.yaml index 5146c744..c0cf1fd5 100644 --- a/src/db_extraction_prep/redcap_task/nipah/config.yaml +++ b/src/db_extraction_prep/redcap_task/nipah/config.yaml @@ -1,17 +1,25 @@ --- "pathogen_filter_name": "Nipah virus" "tables_to_stack": ["parameters", "models", "outbreaks"] +"continuation_config": + "continuation_table": "articles" + "id_col": "record_id" + "cov_id_col": "article_covidenceid" + "continuation_col": "article_continuation" + "extractor_col": "extractor_name" + "incomplete_col": "pathogen_epidemiology_review_complete" + "notes_cols": ["article_notes", "qa_notes"] "target_filepath": "redcap_data/table_target.csv" "mapping_filepath": "redcap_data/nipah/mapping_table.csv" -orderly_download_depencency: false "table_filepaths": - "all_data": "redcap_data/nipah/raw_data/nipah_raw_data.csv" + "all_data": "nipah_raw_data.csv" "linked_row_col_names": "models": "model_linked" "outbreaks": "outbreak_linked" "parameters": "parameter_linked" "incomplete_col_names": "articles": "pathogen_epidemiology_review_complete" +"incomplete_col_key": "Incomplete" "target_table_names": ["articles", "models", "outbreaks", "parameters"] "data_table_names": ["models", "outbreaks", "parameters"] "pk_col_names": @@ -26,7 +34,8 @@ date_cols_to_split: "outbreaks": "Outbreak_data_ID" "parameters": "Parameter_data_ID" "models": "Model_data_ID" -article_cols_to_add_end: ["Pathogen", "ID"] -article_cols_to_add_start: [ "Covidence_ID", "Name_data_entry"] +"article_cols_to_add_end": ["Pathogen", "ID"] +"article_cols_to_add_start": [ "Covidence_ID", "Name_data_entry"] +"article_id": "Article_ID" --- diff --git a/src/db_redcap_download/db_redcap_download.R b/src/db_redcap_download/db_redcap_download.R index 758918eb..fab1f9aa 100644 --- a/src/db_redcap_download/db_redcap_download.R +++ b/src/db_redcap_download/db_redcap_download.R @@ -1,4 +1,5 @@ # *============================================================================* +library(cli) library(httr) library(orderly2) library(yaml) @@ -13,8 +14,10 @@ orderly_resource(config_filepath) # *---------------------------- REDCap Parameters -----------------------------* config_list <- yaml.load_file(config_filepath) +report_id_list <- config_list[["report_ids"]] +toked_name <- config_list[["api_token_env_var"]] -token <- Sys.getenv("REDCAP_TOKEN") +token <- Sys.getenv(toked_name) endpoint_url <- "https://redcap.imperial.ac.uk/api/" @@ -32,16 +35,35 @@ create_record_list <- function(token, record_id){ } # *--------------------------- Downloading the data ---------------------------* -for (report_id in names(config_list)){ +exit_text <- "No output generated - the system will exit" + +for (report_id in names(report_id_list)){ post_body_list <- create_record_list(token, report_id) - response <- POST(endpoint_url, body = post_body_list, encode = "form") + response <- + tryCatch(stop_for_status(POST(endpoint_url, body = post_body_list, encode = "form")), + http_404 = function(e) cli_abort( + c("404 Not Found", exit_text), + call=NULL), + http_403 = function(e) cli_abort( + c("403 Forbidden - check your auth token!", exit_text), + call=NULL), + http_400 = function(e) cli_abort( + c("400 Bad Request", exit_text), + call=NULL), + http_500 = function(e) cli_abort( + c("500 Internal Server Error", exit_text), + call=NULL), + error = function(e) cli_abort( + c(e$message, exit_text), call = e$call) + ) + result_df <- content(response) - write.csv(result_df, file=config_list[[report_id]], row.names=FALSE) + write.csv(result_df, file=report_id_list[[report_id]], row.names=FALSE) } orderly_artefact(description="csv files downloaded from redcap reports", - unlist(config_list)) + unlist(report_id_list)) # *============================================================================* diff --git a/src/db_redcap_download/download_config/nipah_config.yaml b/src/db_redcap_download/download_config/nipah_config.yaml new file mode 100644 index 00000000..ac43ae1f --- /dev/null +++ b/src/db_redcap_download/download_config/nipah_config.yaml @@ -0,0 +1,3 @@ +report_ids: + 1019: "nipah_raw_data.csv" +"api_token_env_var": "PER_293_REDCAP_TOKEN" diff --git a/src/db_redcap_download/download_config/orov_config.yaml b/src/db_redcap_download/download_config/orov_config.yaml index 0d255e38..292a9921 100644 --- a/src/db_redcap_download/download_config/orov_config.yaml +++ b/src/db_redcap_download/download_config/orov_config.yaml @@ -1,6 +1,8 @@ -996: "parameters.csv" -997: "articles.csv" -998: "qas.csv" -999: "extractors.csv" -1004: "models.csv" -1007: "outbreaks.csv" +report_ids: + 996: "parameters.csv" + 997: "articles.csv" + 998: "qas.csv" + 999: "extractors.csv" + 1004: "models.csv" + 1007: "outbreaks.csv" +"api_token_env_var": "PERG_284_REDCAP_TOKEN" diff --git a/src/nipah_bsl_data_synthesis/bsl_model_fits.RDS b/src/nipah_bsl_data_synthesis/bsl_model_fits.RDS new file mode 100644 index 00000000..7e0b073b Binary files /dev/null and b/src/nipah_bsl_data_synthesis/bsl_model_fits.RDS differ diff --git a/src/nipah_bsl_data_synthesis/nipah_bsl_data_synthesis.R b/src/nipah_bsl_data_synthesis/nipah_bsl_data_synthesis.R new file mode 100644 index 00000000..0c4778a4 --- /dev/null +++ b/src/nipah_bsl_data_synthesis/nipah_bsl_data_synthesis.R @@ -0,0 +1,783 @@ +library(BSL) +library(parallel) +library(doParallel) +library(MASS) +library(foreach) +library(ggplot2) +library(tidyverse) +library(ggsci) +library(coda) +library(bridgesampling) +library(tidybayes) +library(orderly2) +library(patchwork) + +# *--------------------------------- Orderly ----------------------------------* +# Results presented in the Nipah manuscript used 10000 runs +orderly_parameters(pathogen = NULL, runs=0, actual_dataset=TRUE, + generate_diagnostics=FALSE) + +orderly_dependency("db_cleaning", "latest(parameter:pathogen == this:pathogen)", + c("articles.csv", "outbreaks.csv", "models.csv", "params.csv")) + +orderly_shared_resource("nipah_functions.R" = "nipah_functions.R", + "bsl_data_synthesis.R" = "bsl_data_synthesis.R") + +artefacts <- c("nipah_incubation_period_bsl_model.pdf", + "bsl_model_plot.RDS") + +if (runs==0){ + orderly_shared_resource( + "bsl_model_fits.RDS" = file.path("nipah","bsl_model_fits.RDS")) +}else{ + artefacts <- c(artefacts, "bsl_model_fits.RDS") +} + +source("nipah_functions.R") +source("bsl_data_synthesis.R") + +orderly_artefact(description="Nipah data synthesis figures", + artefacts) + +# *------------------------------ Data curation -------------------------------* +articles <- read_csv("articles.csv") +outbreaks <- read_csv("outbreaks.csv") +models <- read_csv("models.csv") +parameters <- read_csv("params.csv") + +dfs <- curation(articles, outbreaks, models, parameters, plotting = TRUE) +parameters <- dfs$parameters + +# *--------------------------------- BSL Hierarchical Model ----------------------------------* +# -------------------------- +# Bayesian Synthetic Likelihood for Data Synthesis based on this paper +# https://www.tandfonline.com/doi/full/10.1080/10618600.2017.1302882?scroll=top&needAccess=true#d1e213 + +# -------------------------- +# Incubation Period datasets +# -------------------------- +# TODO: Get the source for this in a reproducible way +if(actual_dataset){ + datasets_with_refs <- list( + d1 = list(median = 10.0, min = 9.0, max = 12.0, n = 4, + access_param_id="113_003"), + d2 = list(median = 4.0, min = 2.0, max = 7.0, n = 6, + access_param_id="113_004"), + d3 = list(median = 9.0, min = 6.0, max = 14.0, n = 11, + access_param_id="138_020"), + d4 = list(median = 9.5, min = 4.0, max = 14.0, n = 22, + access_param_id="121_002"), + d5 = list(median = 8.0, min = 3.0, max = 20.0, n = 15, + access_param_id="081_001"), + d6 = list(median = 9.0, min = 6.0, max = 11.0, n = 11, + access_param_id="030_002"), + d7 = list(median = 10.0, min = 8.0, max = 15.0, n = 14, + access_param_id="151_001"), + d8 = list(median = 9.0, min = 6.0, max = 11.0, n = 11, + access_param_id="033_006") + ) + + datasets <- lapply(datasets_with_refs, function(x) x[!names(x) %in% "access_param_id"]) +} else { #testing only + datasets <- list( + d1 = list(mean = 5.2, sd = 2.1, median = 5.0, q25 = 4.3, q75 = 9.0, n = 100), + d2 = list(mean = 6.0, sd = 2.8, median = 6.0, q25 = 3.0, q75 = 11.0, n = 12), + d3 = list(mean = 7.1, sd = 1.9, median = 7.0, q25 = 6.5, q75 = 10.0, n = 40) + ) +} + + +if( "min" %in% names(datasets[[1]]) ) { + summary_names_used <- c("median", "min", "max") +} else { + summary_names_used <- c("median", "q25", "q75") +} + +# -------------------------- +# Flatten observed summaries +# -------------------------- +S_obs <- unlist(lapply(datasets, function(d) { + s <- numeric(length(summary_names_used)) + names(s) <- summary_names_used + s[names(d)] <- unlist(d[names(d)]) + s +})) +stopifnot(all(is.finite(S_obs))) + +# -------------------------- +# Safe summary function +# -------------------------- +if("min" %in% names(datasets$d1)){ + summaries_fun <- function(x) { + x <- x[is.finite(x)] + if (length(x) < 1) x <- 1e-6 + + s_median <- median(x) + s_min <- min(x) + s_max <- max(x) + + s <- c(median = s_median, min = s_min, max = s_max) + s[!is.finite(s)] <- 1e-6 + s <- s + runif(length(s), -1e-6, 1e-6) # tiny noise to avoid singular covariance + s + } +} else { + summaries_fun <- function(x) { + summary_names_used <- c("median", "q25", "q75") + #summary_names_used <- c("mean", "sd", "median", "q25", "q75") + x <- x[is.finite(x)] + if (length(x) < 2) x <- c(x, 1e-6) + + s_mean <- mean(x) + s_sd <- max(sd(x), 1e-6) + q <- quantile(x, probs = c(0.25, 0.5, 0.75), names = FALSE, type = 1) + + s <- c(mean = s_mean, sd = s_sd, median = q[2], q25 = q[1], q75 = q[3]) + s[!is.finite(s)] <- 1e-6 + s <- s + runif(length(s), -1e-6, 1e-6) + s[summary_names_used] + } +} + +# -------------------------- +# Initial guesses +# -------------------------- +theta0_lognorm <- c(log(5), log(0.5), log(0.5)) +theta0_gamma <- c(log(4), log(0.5), log(2.0)) +theta0_weibull <- c(log(6), log(0.5), log(1.0)) + +model_list <- list( + lognormal = bsl_create_model("lognormal", theta0_lognorm), + gamma = bsl_create_model("gamma", theta0_gamma), + weibull = bsl_create_model("weibull", theta0_weibull) +) + +if(runs!=0){ + # -------------------------- + # Parallel setup + # -------------------------- + num_cores <- max(1, detectCores() - 1) + cl <- makeCluster(num_cores) + registerDoParallel(cl) + + clusterExport(cl, varlist = c("bsl_make_simulator_matrix", "bsl_simulate_dataset", + "summaries_fun", "summary_names_used", + "datasets", "bsl_fnPrior_hier")) + + + # -------------------------- + # Run BSL in parallel + # -------------------------- + set.seed(2025) + + chains_per_model <- 4 + + fits_multi <- foreach( + mdl = names(model_list), + .export = c("S_obs", "model_list", "summaries_fun", + "bsl_fnPrior_hier", "bsl_simulate_dataset", + "bsl_make_simulator_matrix"), + .packages = c("BSL", "MASS"), + .noexport = c("S_obs", "model_list") + ) %dopar% { + set.seed(2025 + which(names(model_list) == mdl)) # ensure different chains per model + + replicate(chains_per_model, { + bsl( + S_obs, + n = runs, + M = 2000, + model = model_list[[mdl]], + covRandWalk = diag(0.125, 3), + verbose = FALSE + ) + }, simplify = FALSE) + } + + # Assign model names + names(fits_multi) <- names(model_list) + stopCluster(cl) + + saveRDS(fits_multi,'bsl_model_fits.RDS') + +} else { + fits_multi <- readRDS('bsl_model_fits.RDS') +} + +# --- Check structure +str(fits_multi, 1) + +# --- Extract posterior samples per model (combine chains) +posterior_samples <- lapply(fits_multi, function(chain_list) { + do.call(rbind, lapply(chain_list, function(f) as.data.frame(f@theta))) +}) + +mcmc_lists <- bsl_to_mcmc_list_multi(fits_multi) + +# --- Gelman-Rubin (R-hat) diagnostics per model +gelman_results <- lapply(mcmc_lists, function(ml) gelman.diag(ml, autoburnin = FALSE)) +print(gelman_results) + +# --- Effective sample size +ess_results <- lapply(mcmc_lists, effectiveSize) +print(ess_results) + +# --- Trace plots for visual check +# Commenting out for orderly run +# par(mfrow = c(3, 3)) +# for (mdl in names(mcmc_lists)) { +# for (p in 1:ncol(as.matrix(mcmc_lists[[mdl]][[1]]))) { +# traceplot(mcmc_lists[[mdl]], varname = colnames(as.matrix(mcmc_lists[[mdl]][[1]]))[p], +# main = paste("Trace:", mdl, "-", colnames(as.matrix(mcmc_lists[[mdl]][[1]]))[p])) +# } +# } + +# -------------------------- +# Inspect results +# -------------------------- + +log_evidences <- sapply(names(fits_multi), function(mdl) { + chain_evids <- sapply(fits_multi[[mdl]], function(f) bsl_bridge_estimate(f@loglike)) + mean(chain_evids) # average across chains +}) + +# --- Relative Bayes factors +delta <- log_evidences - max(log_evidences) +bayes_factors <- exp(delta) +model_comparison <- data.frame( + model = names(fits_multi), + log_evidence = log_evidences, + rel_prob = bayes_factors / sum(bayes_factors) +) +print(model_comparison) + +# --- Parallel Convergence summary +conv_summary <- lapply(names(mcmc_lists), function(m) { + g <- gelman_results[[m]]$psrf + e <- ess_results[[m]] + data.frame( + model = m, + param = names(e), + Rhat = g[, 1], + ESS = e + ) +}) %>% bind_rows() %>% remove_rownames() + +print(conv_summary) + +# Example usage (uses your posterior_samples variable from earlier) +set.seed(2025) +posterior_summaries <- bsl_summarise_posteriors(posterior_samples, L = 50) +print(posterior_summaries) + +# Combine for all models +# Makes a denisty summary by default +density_summary <- do.call(rbind, lapply(names(posterior_samples), function(nm) + bsl_make_posterior_summary(nm, posterior_samples[[nm]], + x_seq=seq(0,30, length.out=400), + n_draws = 200, L = 20) +)) + +cdf_summary <- do.call(rbind, lapply(names(posterior_samples), function(nm) + bsl_make_posterior_summary(nm, posterior_samples[[nm]], + x_seq=seq(0, 40, length.out=2000), + n_draws = 200, L = 50, posterior_cdf=TRUE) +)) +# -------------------------- +# Posterior summaries for plotting (use predictive mean & CI) +# -------------------------- +posterior_summaries_long <- posterior_summaries %>% + mutate( + median_value = mean_mean, + low_value = mean_low, + high_value = mean_high + ) %>% + dplyr::select(model, median_value, low_value, high_value) + +posterior_summaries_median_long <- posterior_summaries %>% + mutate( + median_value = median_mean, + low_value = median_low, + high_value = median_high + ) %>% + dplyr::select(model, median_value, low_value, high_value) + +posterior_summaries_90th_long <- posterior_summaries %>% + mutate( + median_value = q90_mean, + low_value = q90_low, + high_value = q90_high + ) %>% + dplyr::select(model, median_value, low_value, high_value) + +# -------------------------- +# Observed summaries from datasets (extract summary-list values) +# -------------------------- +observed_summary <- do.call(rbind, lapply(names(datasets_with_refs), function(nm) { + d <- datasets_with_refs[[nm]] + data.frame( + dataset = nm, + access_param_id = d$access_param_id, + median_obs = ifelse(!is.null(d$median), d$median, NA_real_), + min_obs = ifelse(!is.null(d$min), d$min, NA_real_), + max_obs = ifelse(!is.null(d$max), d$max, NA_real_) + ) +})) +# Note: observed_summary$dataset are d1,d2,... (not model names). We'll map them visually below. +observed_summary <- observed_summary |> + left_join(parameters[, c("access_param_id", "refs")]) +# -------------------------- +# Plot: density + predictive mean CI + observed medians/ranges +# -------------------------- +# *=================================== pdf ====================================* +obs_plot_df <- observed_summary + +# Observed summary row +obs_strip <- obs_plot_df %>% + transmute( + panel = "Summary statistics", + model = "Summary statistics", + y = "Summary statistics", + x = median_obs, + xmin = min_obs, + xmax = max_obs + ) + +# Posterior medians (with interval) +med_strip <- posterior_summaries_median_long %>% + filter(model != "lognormal") %>% + transmute( + panel = "Median", + model = model, + y = model, + x = median_value, + xmin = low_value, + xmax = high_value + ) + +# Posterior 90th (point only; add xmin/xmax if you have them) +p90_strip <- posterior_summaries_90th_long %>% + filter(model != "lognormal") %>% + transmute( + panel = "90th", + model = model, + y = model, + x = median_value, + xmin = NA_real_, + xmax = NA_real_ + ) + +strip_df <- bind_rows(obs_strip, med_strip, p90_strip) %>% + mutate( + panel = factor(panel, + levels = c("Summary statistics", "Median", "90th"), + labels=c("Summary statistics", "Median", + "90th percentile")), + y = row_number() + ) + +# lanonc_colours <- ggsci::pal_lancet("lanonc")(9) + +summary_strip_plot <- + ggplot(strip_df, aes(x = x, y = y)) + + # interval rows where available + geom_errorbarh( + aes(xmin = xmin, xmax = xmax, color = model), + height = 0.15, linewidth = 0.5, + na.rm = TRUE + ) + + # points (median / observed median / 90th point) + geom_point( + aes(color = model), + size = 2 + ) + + # facet_grid(panel ~ ., scales = "free_y", space = "free_y") + + ggforce::facet_col(facets = vars(panel), + scales = "free_y", + space = "free") + + labs(title = "", x = "Incubation period (days)", y = "", colour="Model") + + guides(colour=guide_none())+ + theme_bw(base_size = 10) + + theme( + axis.text.y = element_blank(), + axis.ticks.y = element_blank(), + panel.grid = element_blank(), + plot.margin = margin(-14, 3, 0, -10), + strip.background = element_blank(), + strip.text = element_text(color = "black"), + ) + + scale_color_manual( + values = c( + "Summary statistics" = "black", + gamma = "#ED0000FF", + weibull = "#00468BFF" + ) + ) + + scale_y_discrete(expand = expansion(add = 0.75)) + +bsl_model_plot <- ggplot(density_summary |> filter(model!="lognormal"), + aes(x = x, y = mean, color = model, fill = model)) + + # Posterior densities + geom_ribbon(aes(ymin = low, ymax = high), alpha = 0.15, colour = NA) + + geom_line(linewidth = 1) + + labs( + title = "", + colour="Model", + fill="Model", + x = "Incubation period (days)", + y = "Density" + ) + + theme_bw(base_size = 14) + + theme(legend.position = "right") + + scale_color_lancet() + + scale_fill_lancet() + +bsl_model_plot <- bsl_model_plot + theme(text=element_text(size=28)) + +bsl_model_plot <- bsl_model_plot + theme(legend.position = "top") + + inset_element( + summary_strip_plot, + left = 0.65, + bottom = 0.25, + right = 0.99, + top = 0.975 + ) + +saveRDS(bsl_model_plot, "bsl_pdf_model_plot.RDS") +ggsave('nipah_incubation_period_bsl_pdf_model.pdf', plot=bsl_model_plot, width = 11, height = 7) + +# *=================================== cdf ====================================* +# *-------------------------------- Main text ---------------------------------* +obs_plot_df$y_jitter <- -0.3 + seq_len(nrow(obs_plot_df)) * 0.03 + +observation_plot <- ggplot() + + geom_errorbarh( + data = obs_plot_df, + aes(y = y_jitter - 0.01, xmin = min_obs, xmax = max_obs), + height = 0.005, color = "black", size = 0.8, + inherit.aes = FALSE, linetype="dashed" + ) + + geom_point( + data = obs_plot_df, + aes(x = median_obs, y = y_jitter - 0.01), + shape = 22, fill="black", color = "black", size = 3, + inherit.aes = FALSE + ) + + labs( + title = "", + x = "Incubation period (days)", + y = "" + ) + + theme_bw(base_size = 14) + + scale_y_continuous( + breaks = obs_plot_df$y_jitter, + labels = obs_plot_df$refs + ) + + xlim(c(0,30)) + +cdf_quantiles <- cdf_summary |> + group_by(model) |> + arrange(x, .by_group = TRUE) |> + summarise( + x_50 = approx(mean, x, xout = 0.5, ties = base::mean, rule = 2)$y, + x_90 = approx(mean, x, xout = 0.9, ties = base::mean, rule = 2)$y, + q_high_50 = approx(low, x, xout = 0.5, ties = base::mean, rule = 2)$y, + q_high_90 = approx(low, x, xout = 0.9, ties = base::mean, rule = 2)$y, + q_low_50 = approx(high, x, xout = 0.5, ties = base::mean, rule = 2)$y, + q_low_90 = approx(high, x, xout = 0.9, ties = base::mean, rule = 2)$y, + .groups = "drop" + ) + +cdf_quantiles_long <- cdf_quantiles |> + pivot_longer( + cols = -model, + names_to = "quantile", + values_to = "x_value" + ) |> + mutate( + y = as.numeric(str_extract(quantile, "(?<=_)\\d+")) / 100 + ) + +cdf_quantiles_wide <- cdf_quantiles_long |> + mutate(level = sub(".*_(\\d+)$", "\\1", quantile)) |> + mutate(type = sub("_(\\d+)$", "", quantile)) |> + dplyr::select(-quantile) |> + pivot_wider( + names_from = type, + values_from = x_value) + +median_labels <- cdf_quantiles_wide |> + filter(level==50) |> + mutate(q_low=q_low-2.75) + +nineth_labels <- cdf_quantiles_wide |> + filter(level==90) |> + mutate(q_low=q_low-4) + +bsl_cdf_model_plot <- ggplot(cdf_summary |> + filter(model=="weibull"), + aes(x = x, y = mean, color = model, + fill = model)) + + # Posterior densities + geom_ribbon(aes(ymin = low, ymax = high), + alpha = 0.15, colour = NA) + + geom_line(size = 1) + + geom_errorbarh( + data=cdf_quantiles_wide |> filter(model=="weibull"), + aes(xmin = q_low, xmax = q_high, y=y), + height = 0.035) + + geom_point(data=cdf_quantiles_wide |> + filter(model=="weibull"), + aes(x = x, y=y), size = 2) + + # Vertical lines + # geom_segment(data = cdf_quantiles_long |> filter(model=="weibull"), + # aes(x = 0, xend = x_value, + # y = y, yend = y), + # color = "black", + # alpha=0.6, + # linetype = "solid", + # linewidth = 0.6 + # ) + + # geom_segment( + # data = cdf_quantiles_long |> filter(model=="weibull"), + # aes( + # x = x_value, xend = x_value, + # y = 0, yend = 0, + # ), + # color = "black", + # alpha=0.6, + # linetype = "solid", + # linewidth = 0.6 + # ) + + # geom_text( + # data = data.frame(x = 7.5, y = 0.905), + # aes(x = x, y = y), + # label = expression(90^th~percentile), + # color = "black", + # size = 5, + # inherit.aes = FALSE + # ) + + # geom_text( + # data = data.frame(x = 3.5, y = 0.505, label = "Median"), + # aes(x = x, y = y, label = label), + # color = "black", + # size = 5, + # inherit.aes = FALSE + # ) + + geom_text( + data = nineth_labels |> filter(model=="weibull"), + aes(x = q_low, y = y+0.01, label = label), + label = expression(90^th~percentile), + color = "black", + size = 8, + inherit.aes = FALSE + ) + + geom_text( + data = median_labels |> filter(model=="weibull"), + aes(x = q_low, y = y+0.01, label = label), + label = "Median", + color = "black", + size = 8, + inherit.aes = FALSE + ) + + scale_color_lancet() + + scale_fill_lancet() + + labs( + title = "", + x = "Incubation period (days)", + y = "Probability", + colour="Model", + fill="Model" + ) + + xlim(c(0, 30)) + + theme_bw(base_size = 28) + + theme(legend.position = "right") + + guides(color=guide_none(), fill=guide_none()) + +bsl_main_cdf_plot <- observation_plot / free(bsl_cdf_model_plot) + + plot_layout(heights=c(1,2)) & + theme(plot.margin = margin(0, 2, 0, 2)) + +saveRDS(bsl_main_cdf_plot, "bsl_main_cdf_plot.RDS") +ggsave('bsl_main_cdf_plot.pdf', plot=bsl_main_cdf_plot, width = 8, height = 6) + +bsl_cdf_model_apx_plot <- ggplot(cdf_summary, + aes(x = x, y = mean, color = model, + fill = model)) + + # Posterior densities + geom_ribbon(aes(ymin = low, ymax = high), + alpha = 0.15, colour = NA) + + geom_line(size = 1) + + geom_errorbarh( + data=cdf_quantiles_wide, + aes(xmin = q_low, xmax = q_high, y=y), + height = 0.035 + ) + + geom_point(data=cdf_quantiles_wide, + aes(x = x, y=y), size = 2) + + geom_text( + data = nineth_labels, + aes(x = q_low-2, y = y+0.01, label = label, group=model), + label = expression(90^th~percentile), + color = "black", + size = 5.5, + inherit.aes = FALSE + ) + + geom_text( + data = median_labels, + aes(x = q_low-1, y = y+0.01, label = label, group=model), + label = "Median", + color = "black", + size = 5.5, + inherit.aes = FALSE + ) + + scale_color_lancet() + + scale_fill_lancet() + + labs( + title = "", + x = "Incubation period (days)", + y = "Probability", + colour="Model", + fill="Model" + ) + + facet_wrap(~model, ncol=1, labeller = labeller(model = tools::toTitleCase)) + + xlim(c(0, 40)) + + theme(legend.position = "right") + + theme_minimal(base_size = 20) + + theme(panel.border = element_rect(color = "black", linewidth = 1.25, fill = NA)) + + guides(color=guide_none(), fill=guide_none()) + + scale_color_manual( + values = c( + gamma = "#42B540FF", + weibull = "#00468BFF", + lognormal="#ED0000FF")) + + scale_fill_manual( + values = c( + gamma = "#42B540FF", + weibull = "#00468BFF", + lognormal="#ED0000FF")) + +bsl_apx_plot <- (observation_plot + + xlim(c(0,40))) / free(bsl_cdf_model_apx_plot) + + plot_layout(heights=c(1,3.75)) + plot_annotation(tag_levels="A") & + theme(plot.margin = margin(0, 2, 0, 2), + text=element_text(size=22)) + +saveRDS(bsl_apx_plot, "bsl_apx_cdf_plot.RDS") +ggsave('bsl_apx_cdf_plot.pdf', plot=bsl_apx_plot, width = 7, height = 12) + +# =============================== +# AUTOMATED BSL DIAGNOSTIC REPORT +# =============================== +if (generate_diagnostics){ +diagnostic_dir <- "bsl_diagnostics" +if (!dir.exists(diagnostic_dir)) dir.create(diagnostic_dir) + +diag_results <- bsl_run_diagnostics(fits_multi) +trace_df <- bsl_make_trace_df(fits_multi) + +trace_long <- trace_df %>% + pivot_longer(cols = starts_with("theta"), + names_to = "parameter", values_to = "value") + +ggplot(trace_long, aes(x = iter, y = value, color = chain)) + + geom_line(alpha = 0.7, linewidth = 0.5) + + facet_grid(model ~ parameter, scales = "free_y") + + labs( + title = "Traceplots for BSL posterior samples", + x = "Iteration", + y = "Parameter value", + color = "Chain" + ) + + scale_color_lancet() + + theme_bw(base_size = 12) + + theme( + legend.position = "bottom", + strip.background = element_rect(fill = "grey90", color = "grey60"), + panel.spacing = unit(0.8, "lines") + ) + +param_summaries <- bsl_summarise_parameters(posterior_samples) + +# Print to console +print(param_summaries) + +# Save csv to diagnostics folder +write.csv(param_summaries, file = file.path(diagnostic_dir, "parameter_summaries_per_model.csv"), row.names = FALSE) + +# Optional: pretty table print using knitr::kable if running in RMarkdown / Notebook +if (interactive() && requireNamespace("knitr", quietly = TRUE)) { + message("\nParameter summaries (95% CrI):\n") + print(knitr::kable(param_summaries[, c("model", "parameter", "mean", "median", "ci_95")], + digits = 3, caption = "Posterior summaries for hierarchical parameters")) +} + + +# This will plot median and 95% CrI for each parameter grouped by model. +param_plot_df <- param_summaries %>% + mutate(parameter = factor(parameter, levels = c("mu0", "tau", "phi"))) + +ggplot(param_plot_df, aes(x = parameter, y = median, ymin = low_2.5, ymax = high_97.5, color = model)) + + geom_pointrange(position = position_dodge(width = 0.6), size = 0.7) + + geom_errorbar(position = position_dodge(width = 0.6), width = 0.2, size = 0.5) + + facet_wrap(~ model, nrow = 1, scales = "free_y") + + labs(title = "Posterior parameter medians and 95% credible intervals", + y = "Parameter value (tau & phi shown on natural scale)", + x = "Parameter") + + theme_bw(base_size = 13) + + theme(legend.position = "none") + +# Save the plot +ggsave(file.path(diagnostic_dir, "parameter_forestplot.png"), width = 10, height = 3.5) +} + +COMPARITIVE_ANALYSIS <- FALSE + +if(COMPARITIVE_ANALYSIS) +{ + # Comparison to meta-analysis --------------------------------------------- + datasets <- list( + d1 = list(median = 10.0, min = 9.0, max = 12.0, n = 4), + d2 = list(median = 4.0, min = 2.0, max = 7.0, n = 6), + d3 = list(median = 9.0, min = 6.0, max = 14.0, n = 11), + d4 = list(median = 9.5, min = 4.0, max = 14.0, n = 22), + d5 = list(median = 8.0, min = 3.0, max = 20.0, n = 15), + d6 = list(median = 9.0, min = 6.0, max = 11.0, n = 11), + d7 = list(median = 10.0, min = 8.0, max = 15.0, n = 14), + d8 = list(median = 9.0, min = 6.0, max = 11.0, n = 11) + ) + + params_in <- as_tibble(parameters) %>% filter(parameter_type == 'Human delay - incubation period' & + parameter_value_type == 'Median' & + !is.na(population_sample_size) & + population_sample_size < 23 ) + + params_in %>% dplyr::select(covidence_id, parameter_value, population_sample_size, parameter_2_lower_bound, parameter_2_upper_bound) + + params_in$parameter_uncertainty_type <- 'range' + params_in$parameter_uncertainty_lower_value <- params_in$parameter_2_lower_bound + params_in$parameter_uncertainty_upper_value <- params_in$parameter_2_upper_bound + + d_in <- bind_rows(datasets, .id = "dataset") + d_in$parameter_type <- 'median' + d_in <- d_in %>% rename(parameter_value=median) + + ip_same_data <- metamean_wrap(dataframe = params_in, estmeansd_method = "Cai", + plot_study = TRUE, digits = 2, lims = c(2,15), colour = "dodgerblue3", label = "Mean Onset-Admission Delay (days)", + width = 9500, height = 4200, resolution = 1000) + + + params_ip_all <- as_tibble(parameters) %>% filter(parameter_type == 'Human delay - incubation period' & + !is.na(population_sample_size) & !is.na(parameter_value) ) %>% + mutate(parameter_uncertainty_type = replace_na(parameter_uncertainty_type, 'range'), + parameter_uncertainty_lower_value = coalesce(parameter_uncertainty_lower_value, parameter_2_lower_bound), + parameter_uncertainty_upper_value = coalesce(parameter_uncertainty_upper_value, parameter_2_upper_bound) + ) + + ip_all_data <- metamean_wrap(dataframe = params_ip_all, estmeansd_method = "Cai", + plot_study = TRUE, digits = 2, lims = c(2,15), colour = "darkorange2", label = "Median Incubation Period (days)", + width = 9500, height = 4200, resolution = 1000) + + ggsave("nipah_ip_meta_analysis_same_data.pdf", ip_same_data$plot, width = 12, height = 6 ) + ggsave("nipah_ip_meta_analysis_all_data.pdf", ip_all_data$plot, width = 12, height = 6 ) +} diff --git a/src/nipah_delays/nipah_delays.R b/src/nipah_delays/nipah_delays.R new file mode 100644 index 00000000..c1aa0d61 --- /dev/null +++ b/src/nipah_delays/nipah_delays.R @@ -0,0 +1,636 @@ +# *=============================== Nipah delays ===============================* +library(dplyr) +library(ggplot2) +library(ggsci) +library(orderly2) +library(patchwork) +library(readr) +library(stringr) + +# *--------------------------------- Orderly ----------------------------------* +orderly_parameters(pathogen = NULL) + +orderly_dependency("db_cleaning", "latest(parameter:pathogen == this:pathogen)", + c("articles.csv", "outbreaks.csv", "models.csv", "params.csv")) + +orderly_dependency("nipah_bsl_data_synthesis", + "latest(parameter:pathogen == this:pathogen)", + c("bsl_main_cdf_plot.RDS")) + +orderly_shared_resource("nipah_functions.R" = "nipah_functions.R") +source("nipah_functions.R") + +orderly_artefact(description="Nipah delay figures", + c("figure_5_delays.pdf", + "figure_5_delays.png", + "figure_5SI_allqa_delays.pdf", + "figure_5SI_allqa_delays.png", + "all/figure_5SI_allqa_admis_outcome_pt.pdf", + "all/figure_5SI_allqa_incubation_pc.pdf", + "all/figure_5SI_allqa_incubation_pg.pdf", + "all/figure_5SI_allqa_incubation_pst.pdf", + "all/figure_5SI_allqa_onset_admis_outcome_pt.pdf", + "all/figure_5SI_allqa_onset_admis_pc.pdf", + "all/figure_5SI_allqa_onset_admis_pg.pdf", + "all/figure_5SI_allqa_onset_admis_pst.pdf", + "all/figure_5SI_allqa_onset_death_pc.pdf", + "all/figure_5SI_allqa_onset_death_pg.pdf", + "all/figure_5SI_allqa_onset_death_pst.pdf", + "all/figure_5SI_allqa_onset_outcome_pt.pdf", + "qa/figure_5_admis_outcome_pt.pdf", + "qa/figure_5_incubation_pc.pdf", + "qa/figure_5_incubation_pg.pdf", + "qa/figure_5_incubation_pst.pdf", + "qa/figure_5_onset_admis_outcome_pt.pdf", + "qa/figure_5_onset_admis_pc.pdf", + "qa/figure_5_onset_admis_pg.pdf", + "qa/figure_5_onset_admis_pst.pdf", + "qa/figure_5_onset_death_pc.pdf", + "qa/figure_5_onset_death_pg.pdf", + "qa/figure_5_onset_death_pst.pdf", + "qa/figure_5_onset_outcome_pt.pdf")) + +# *------------------------------ Data curation -------------------------------* +articles <- read_csv("articles.csv") +outbreaks <- read_csv("outbreaks.csv") +models <- read_csv("models.csv") +parameters <- read_csv("params.csv") + + +# 2 Gamma uncertainties: +# 6289bd0b84d80771220a16da295c90a2 : Nikolay (2019) Human delay - serial interval +# 7eb2ec3c3268d44a1edfab0f7c95f9ff : Nikolay (2019) Human delay - incubation period +dfs <- curation(articles, outbreaks, models, parameters, plotting = TRUE) + +articles <- dfs$articles +articles <- epireview::assign_qa_score(articles = articles)$articles +qa_scores <- articles |> dplyr::select(covidence_id,qa_score) + +parameters <- dfs$parameters |> + left_join(qa_scores) + +# Symptom Onset/Fever -> Recovery/Death +parameters[parameters$access_param_id=="121_003", + "parameter_type"] <- "Human delay - symptom onset>recovery/death" + +severe_illness_ids <- c("046_001", + "040_002", + "040_004", + "040_005", + "033_007", + "033_008") +parameters[parameters$access_param_id%in% severe_illness_ids, + "parameter_type"] <- "Human delay - symptom onset>severe illness" + +parameters <- parameters |> + mutate(parameter_type = str_replace(parameter_type, "Human delay - ", ""), + parameter_type = str_to_sentence(parameter_type)) + +# *--------------------------------- Summary ----------------------------------* +num_delays <- NROW(parameters) + +cat("\nIn total", num_delays, "delays were extracted.") + +cat("\nThe composition is as follows:\n") +parameters |> + group_by(parameter_type) |> + count() |> + arrange(desc(n)) |> + print() + +cat("\nThe other delays excluded from plotting are as follows + (note,",NROW(severe_illness_ids), "other delays have been mapped to", + "Symptom onset>severe illness and one has been mapped to", + "Symptom onset>recovery/death):\n") + +parameters |> + filter(parameter_type == "Other human delay (go to section)") |> + select(parameter_type, other_delay_start, other_delay_end) |> + print() + +# Eight rows with variability only +varb_only_rows <- parameters |> + filter(is.na(parameter_value) & + is.na(parameter_lower_bound) & + is.na(parameter_upper_bound)) |> + NROW() + +cat("Number of variability only rows:", varb_only_rows) +# *------------------------------ Plot datasets -------------------------------* +# Filter varb only rows +# Remove Chua quantile only (only range and quantile no central) +# Upper bound is 62 of incb with varb due to Chua +# To only filter Chua quantile: +# parameters <- parameters |> +# filter(parameter_data_id!="b9236a13a7879c0488778f27b20e1c3d") +parameters <- parameters |> + filter(!is.na(parameter_value) | + !is.na(parameter_lower_bound) | + !is.na(parameter_upper_bound)) + +# In order of initial outbreak per country +parameters <- parameters |> + mutate(population_country=factor(population_country, + levels=c("Malaysia", "Bangladesh", + "India", "Philippines")) + ) + +# Incubation period +d1 <- parameters %>% filter(tolower(parameter_type) == 'incubation period') + +# Deduplication +# Nikolay (2019) is duplicated (reference below is a subset of the first) +# 37d6d213b05ac303ee32de21186977d4 large sample 82 +# CI is based on gamma dist but extracted central parameter is median +# bb5bdf26abeda50067007b8db5d4bb15 small subset 11 +# d1 <- d1 |> +# filter(parameter_data_id!="bb5bdf26abeda50067007b8db5d4bb15") + +# Onset to admission +d2 <- parameters |> + filter(tolower(parameter_type) == 'symptom onset>admission to care') + +# Hospital admission to outcome +d3 <- parameters |> + filter(tolower(parameter_type) %in% c('time in care (length of stay)', + 'admission to care>discharge/recovery', + 'admission to care>death') + ) + +# Symptom-onset to outcome +# CovID: 4057, symptom onset>discharge/recovery is duration of illness +d4 <- parameters |> + filter(tolower(parameter_type) %in% c( + "symptom onset>admission to care", + 'symptom onset>discharge/recovery', + 'symptom onset>death', + 'symptom onset>recovery/death', + "symptom onset>severe illness") + ) + +d5 <- parameters %>% filter(tolower(parameter_type) == 'serial interval') + +# Combine before updating variable names +d6 <- d3 |> + bind_rows(d4 |> + filter(parameter_type!="Symptom onset>death")) + +# Convert to factors +d3 <- d3 |> + mutate(parameter_type=factor(parameter_type, + levels=c("Time in care (length of stay)", + "Admission to care>discharge/recovery", + "Admission to care>death"), + labels=c("Time in care", + "Discharge/recovery", + "Death"))) + +d4 <- d4 |> + mutate(parameter_type=factor(parameter_type, + levels=c("Symptom onset>admission to care", + "Symptom onset>severe illness", + 'Symptom onset>death', + "Symptom onset>recovery/death", + "Symptom onset>discharge/recovery"), + labels=c("Admission", + "Severe illness", + "Death", + "Recovery/death", + "Discharge/recovery"))) + +d6 <- d6 |> + mutate(parameter_type=factor(parameter_type, + levels=c("Symptom onset>admission to care", + "Symptom onset>severe illness", + "Symptom onset>recovery/death", + "Symptom onset>discharge/recovery", + "Admission to care>death", + "Admission to care>discharge/recovery", + "Time in care (length of stay)"), + labels=c("Onset>admission", + "Onset>severe illness", + "Onset>recovery/death", + "Onset>discharge/recovery", + "Admission>death", + "Admission>discharge/recovery", + "Time in care (length of stay)"))) +# *---------------------------------- Plots -----------------------------------* +lanonc_colours <- ggsci::pal_lancet("lanonc")(9) + +# Plot properties +text_size <- 28 + +qa_thresh_vec <- c("all"=-1, "qa"=0.5) +qa_alpha_vec <- c(0.3, 1) + +labels <- c("SI_allqa", "") +colour_columns <- c("parameter_type", + "population_group", + "population_country", + "population_sample_type") + +p1_incb_plots <- list("all"=list(), "qa"=list()) +p2_oa_plots <- list("all"=list(), "qa"=list()) +p3_ao_plots <- list("all"=list(), "qa"=list()) +p4_oo_plots <- list("all"=list(), "qa"=list()) +p5_si_plots <- list("all"=list(), "qa"=list()) +p6_oa_o_plots <- list("all"=list(), "qa"=list()) +p7_o_a_plots <- list("all"=list()) +p7_oo_reduced_plots <- list("all"=list()) + +# Read in BSL plot - incubation period +bsl_main_cdf_plot <- readRDS("bsl_main_cdf_plot.RDS") +bsl_main_cdf_plot <- bsl_main_cdf_plot & + theme(text = element_text(size = 28)) + +for (i in seq_along(qa_thresh_vec)){ + label <- labels[i] + qa_threshold <- qa_thresh_vec[i] + qa_alpha <- qa_alpha_vec[i] + plot_type <- names(qa_thresh_vec)[i] + dir.create(plot_type, showWarnings = FALSE) + for (colour_col in colour_columns){ + if (colour_col!= "parameter_type"){ + # Same colours if not param type + # Incubation period + colour_col_label <- paste0(substr(unlist(strsplit(colour_col, "_")), 1, 1), + collapse = "") + + all_groups <- bind_rows(d1, d2, d3, d4) |> + distinct(.data[[colour_col]]) |> + arrange(.data[[colour_col]]) |> + pull() + + # # Since we plot parameter_type and country in the same plot shift colours + # # for parameter_type by the number of countries (4) + # if (colour_col=="parameter_type"){ + # shift <- 4 + # }else{ + # shift <- 0 + # } + + custom_colours <- lanonc_colours[seq_along(all_groups)] + custom_colours <- setNames(custom_colours, all_groups) + + # 65 with Chua + p1_incb_plots[[plot_type]][[colour_col]] <- forest_plot( + d1 |> filter(qa_score>qa_threshold), "Incubation period (days)", + colour_col, c(0,35), text_size=text_size, segment_show.legend = NA, + sort=TRUE, custom_colours = custom_colours, qa_alpha=qa_alpha) + + ggsave(file.path(plot_type, + paste0("figure_5", label, "_incubation_", + colour_col_label, ".pdf")), + plot = p1_incb_plots[[plot_type]][[colour_col]], + width = 11, height = 15) + + # Onset to admissions + p2_oa_plots[[plot_type]][[colour_col]] <- forest_plot( + d2 |> filter(qa_score>qa_threshold), + 'Symptom onset-to-hospitalisation delay (days)', colour_col, c(0,20), + text_size = text_size, sort=TRUE, custom_colours = custom_colours, + qa_alpha=qa_alpha) + + ggsave(file.path(plot_type, + paste0("figure_5", label, "_onset_admis_", + colour_col_label, ".pdf")), + plot = p2_oa_plots[[plot_type]][[colour_col]], + width = 11, height = 15) + } + + if (colour_col== "parameter_type"){ + colour_col_label <- paste0(substr(unlist(strsplit(colour_col, "_")), 1, 1), + collapse = "") + + all_groups <- d3 |> + distinct(parameter_type) |> + arrange(parameter_type) |> + pull() + + custom_colours <- lanonc_colours[seq_along(all_groups)] + custom_colours <- setNames(custom_colours, all_groups) + + p3_ao_plots[[plot_type]][[colour_col]] <- forest_plot( + d3 |> filter(qa_score>qa_threshold), 'Hospitalisation-to-outcome (days)', + colour_col, c(0,45), text_size = text_size, sort=TRUE, + custom_colours = custom_colours, qa_alpha=qa_alpha) + ggsave(file.path(plot_type, + paste0("figure_5", label, "_admis_outcome_", + colour_col_label, ".pdf")), + plot = p3_ao_plots[[plot_type]][[colour_col]], + width = 11, height = 15) + }else if(plot_type=="all"){ + p3_ao_plots[[plot_type]][[colour_col]] <- forest_plot( + d3 |> filter(qa_score>qa_threshold), 'Hospitalisation-to-outcome (days)', + colour_col, c(0,45), text_size = text_size, sort=TRUE, + custom_colours = custom_colours, qa_alpha=qa_alpha) + + ggforce::facet_col(facets = vars(parameter_type), + scales = "free_y", + space = "free") + + ggsave(file.path(plot_type, + paste0("figure_5", label, "_admis_outcome_facet_", + colour_col_label, ".pdf")), + plot = p7_oo_reduced_plots[[plot_type]][[colour_col]], + width = 15, height = 15) + + p7_oo_reduced_plots[[plot_type]][[colour_col]] <- + p7_oo_reduced_plots[[plot_type]][[colour_col]] + + guides(shape = guide_legend(title = "Parameter type", order=1), + color = guide_legend(title = "Outcome"), + linetype = guide_legend(title = "Variation type")) + } + + # Potential typo in paper so no upper bound for the range is recorded, set to + # param value so that the error bar plots + # Manually draw line + if (colour_col== "parameter_type"){ + d4_plot <- d4 + d4_plot_label <- "outcome" + d4_x_axis_label <- 'Symptom onset-to-outcome (days)' + xlim <- c(-2,85) + + all_groups <- d4_plot |> + distinct(parameter_type) |> + arrange(parameter_type) |> + pull() + + custom_colours <- lanonc_colours[seq_along(all_groups)] + custom_colours <- setNames(custom_colours, all_groups) + } else{ + # for other plot types remove Symptom onset>recovery/death and + # Symptom onset>discharge/recovery. Only Symptom onset>death is included + # (makes more sense when colouring by a variable other than paramter_type) + d4_plot <- d4 |> filter(parameter_type=="Death") + d4_plot_label <- "death" + d4_x_axis_label <- 'Symptom onset-to-death (days)' + xlim <- c(0,50) + } + + # Sim is duplicated + sim_duplicated_row <- d4_plot |> + filter(access_param_id=="171_002") + + d4_plot <- d4_plot |> + filter(access_param_id!="171_002") + + p4_oo <- forest_plot( + d4_plot |> filter(qa_score>qa_threshold), + d4_x_axis_label, colour_col, xlim, + text_size = text_size, sort=TRUE, + segment_show.legend = c(shape=FALSE, colour=TRUE), + custom_colours = custom_colours, + qa_alpha=qa_alpha) + + # Showing Sim overlaid + geom_point(data=sim_duplicated_row, + aes(x = parameter_value, y = refs, + shape = parameter_value_type, fill = .data[[colour_col]]), + size = 3, stroke = 1, + color = "black", alpha = 1) + + geom_linerange(data=d4_plot |> filter(qa_score>qa_threshold, + covidence_id==275), + aes(xmin = parameter_2_lower_bound, + xmax = parameter_value, y=refs), + linetype="dashed") + + # send linerange to the back + # Keep forest plot point geom last to maintain plot order + p4_oo$layers <- c(tail(p4_oo$layers, 1), head(p4_oo$layers, -3), + tail(p4_oo$layers,2)[1], tail(p4_oo$layers,3)[1]) + + p4_oo_plots[[plot_type]][[colour_col]] <- p4_oo + + ggsave(file.path(plot_type, + paste0("figure_5", label, "_onset_", d4_plot_label, "_", + colour_col_label, ".pdf")), + plot = p4_oo_plots[[plot_type]][[colour_col]] , + width = 15, height = 15) + + # Serial interval + p5_si_plots[[plot_type]][[colour_col]] <- forest_plot( + d5, 'Serial interval (days)', colour_col, c(0,22), + text_size = text_size, sort=TRUE, custom_colours = custom_colours, + qa_alpha=qa_alpha) + + if (colour_col== "parameter_type"){ + # Do we want consistent colours across the SI and main plot? + # If so, remove the filter + if (plot_type=="all"){ + xlim <- c(0,85) + }else{ + xlim <- c(0,40) + } + all_groups <- d6 |> + filter(qa_score>qa_threshold) |> + distinct(parameter_type) |> + arrange(parameter_type) |> + pull() + + custom_colours <- lanonc_colours[seq_along(all_groups)] + custom_colours <- setNames(custom_colours, all_groups) + + p6_oa_o_plots[[plot_type]][[colour_col]] <- forest_plot( + d6 |> filter(qa_score>qa_threshold), + 'Symptom onset/Hospitalisation-to-outcome (days)', + colour_col, xlim, text_size = text_size, sort=TRUE, + custom_colours = custom_colours, qa_alpha=qa_alpha) + ggsave(file.path(plot_type, + paste0("figure_5", label, "_onset_admis_outcome_", + colour_col_label, ".pdf")), + plot = p6_oa_o_plots[[plot_type]][[colour_col]], + width = 15, height = 15) + + p6_oa_o_plots[[plot_type]][[colour_col]] <- + p6_oa_o_plots[[plot_type]][[colour_col]] + + guides(shape = guide_none(), + linetype = guide_none(), + color = guide_legend(title = "Outcome")) + } + + if (colour_col== "parameter_type" & plot_type=="all"){ + # Do we want consistent colours across the SI and main plot? + # If so, remove the filter + d7 <- d4 |> + filter(!(parameter_type %in% c("Death"))) + + all_groups <- d7 |> + filter(qa_score>qa_threshold) |> + distinct(parameter_type) |> + arrange(parameter_type) |> + pull() + + custom_colours <- lanonc_colours[seq_along(all_groups)] + custom_colours <- setNames(custom_colours, all_groups) + + p7_oo_reduced_plots[[plot_type]][[colour_col]] <- forest_plot( + d7 |> filter(qa_score>qa_threshold), + 'Symptom onset-to-outcome (days)', + colour_col, c(0,85), text_size = text_size, sort=TRUE, + custom_colours = custom_colours, qa_alpha=qa_alpha) + + facet_wrap(~parameter_type, ncol=1, scales="free_x") + ggsave(file.path(plot_type, + paste0("figure_5", label, "_onset_outcome_reduced_", + colour_col_label, ".pdf")), + plot = p7_oo_reduced_plots[[plot_type]][[colour_col]], + width = 15, height = 15) + + p7_oo_reduced_plots[[plot_type]][[colour_col]] <- + p7_oo_reduced_plots[[plot_type]][[colour_col]] + + guides(shape = guide_legend(title = "Parameter type", order=1), + color = guide_legend(title = "Outcome"), + linetype = guide_legend(title = "Variation type")) + }else if(plot_type=="all"){ + # Note:: removing two estimates + d4_filtered <- d4 |> + filter(!(parameter_type %in% c("Recovery/death"))) + + # update x-lim to 85 if including the above + p7_oo_reduced_plots[[plot_type]][[colour_col]] <- forest_plot( + d4_filtered, 'Symptom onset-to-outcome (days)', + colour_col, c(0,85), text_size = text_size, sort=TRUE, + custom_colours = custom_colours, qa_alpha=qa_alpha) + + ggforce::facet_col(facets = vars(parameter_type), + scales = "free_y", + space = "free") + + theme(strip.text.y = element_text(angle=0)) + + ggsave(file.path(plot_type, + paste0("figure_5", label, "_onset_outcome_facet_", + colour_col_label, ".pdf")), + plot = p7_oo_reduced_plots[[plot_type]][[colour_col]], + width = 15, height = 15) + + p7_oo_reduced_plots[[plot_type]][[colour_col]] <- + p7_oo_reduced_plots[[plot_type]][[colour_col]] + + guides(shape = guide_legend(title = "Parameter type", order=1), + color = guide_legend(title = "Outcome"), + linetype = guide_legend(title = "Variation type")) + } + } + + # Update legends for final plot + if(colour_col=="population_country"){ + p1_incb_plots[[plot_type]][["population_country"]] <- + p1_incb_plots[[plot_type]][["population_country"]] + + guides(shape = guide_none(), + fill = guide_none(), + color=guide_legend(title="Country"), + linetype = guide_none()) + + p4_oo_plots[[plot_type]][["population_country"]] <- + p4_oo_plots[[plot_type]][["population_country"]] + + scale_colour_manual(values=custom_colours, + limits=all_groups) + + scale_fill_manual(values=custom_colours, + limits=all_groups) + + guides(shape = guide_none(), + linetype = guide_none(), + color=guide_legend(title="Country")) + } + + common_left_legend <- theme( + legend.position = "right", + legend.justification = "left", + legend.box.just = "left", + legend.direction = "vertical", + legend.key.width = unit(0.8, "cm"), + legend.key.height = unit(0.4, "cm"), + legend.spacing.y = unit(0.08, "cm"), + legend.title.align = 0, + plot.margin = margin(t = 5.5, l = 5.5, b = 5.5, r = 5.5) + ) + + + p4_oo_plots[[plot_type]][["population_country"]] <- + p4_oo_plots[[plot_type]][["population_country"]] + common_left_legend + + if (plot_type=="qa"){ + p6_oa_o_plots[[plot_type]][["parameter_type"]] <- + p6_oa_o_plots[[plot_type]][["parameter_type"]] + common_left_legend + + # Alternative is to use guides="collect" (legends) in plot_layout + delays_plot <- (p1_incb_plots[[plot_type]][["population_country"]] + + p4_oo_plots[[plot_type]][["population_country"]])/( + bsl_model_plot + + p6_oa_o_plots[[plot_type]][["parameter_type"]]) + + plot_layout(heights = c(1, 1), widths = c(1, 1)) + + plot_annotation(tag_levels = 'A') + + ggsave(paste0("figure_5", label,"_delays.pdf"), plot = delays_plot, + width = 25, height = 13) + ggsave(paste0("figure_5", label,"_delays.png"), plot = delays_plot, + width = 25, height = 13) + }else{ + + p1_incb <- p1_incb_plots[[plot_type]][["population_country"]] + + guides(shape = guide_legend(title = "Parameter type", order=1), + color = guide_legend(title = "Outcome"), + linetype = guide_legend(title = "Variation type")) + + theme(legend.position = c(0.8,0.375)) + + p3_ao <- p3_ao_plots[[plot_type]][["population_country"]] + + guides(shape = guide_none(), + linetype = guide_none(), + color = guide_none()) + + p5_si <- p5_si_plots[[plot_type]][["population_country"]] + + guides(shape = guide_none(), + linetype = guide_none(), + color = guide_none()) + + p7_oo <- p7_oo_reduced_plots[[plot_type]][["population_country"]] + + guides(shape = guide_none(), + linetype = guide_none(), + color = guide_none()) +# +# left_col <- p1_incb / p5_si / free(bsl_model_plot) + +# plot_layout(heights = c(21, 2.75, 20)) + +# plot_annotation(tag_levels = "A") +# +# right_col <- p7_oo / p3_ao + +# plot_layout(heights = c(31, 8)) +# delays_plot <- (left_col | right_col) + +# plot_layout(widths = c(1, 1)) + + + + # p1_incb / p5_si / free(bsl_model_plot) | p7_oo / p3_ao + design <- " + A#D + B#D + B#D + B#E + C#E" + + delays_plot <- + p1_incb + free(bsl_main_cdf_plot) + p5_si + p7_oo + p3_ao + + plot_layout( + design = design, + widths = c(1, 0.05, 1), + heights = c(21, 8.25, 5, 5.25, 2.75) # makes D = 21+3+7 taller + ) + plot_annotation( + # tag_levels="A" + tag_levels = list(c("A", "B", "", "C", "D", "E")) + ) & theme(plot.tag.position = c(0, 1), + plot.tag = element_text(size = 30)) + + + ggsave(paste0("figure_5", label,"_delays.pdf"), plot = delays_plot, + width = 26, height = 20) + ggsave(paste0("figure_5", label,"_delays.png"), plot = delays_plot, + width = 26, height = 20) + } +} +# ============================================================================== +# *--------------------------------- Not used ---------------------------------* +# Incubation facet: +incubation_pc_facet <- forest_plot(d1, + "Incubation period (days)", + "population_sample_type", c(0,35), + text_size=text_size, + segment_show.legend = NA, + sort=TRUE) + + facet_wrap("population_country", scales="free") + + +ggsave(paste0("figure_5_incubation_facet.pdf"), plot = incubation_pc_facet, + width = 15, height = 9) diff --git a/src/nipah_latex_tables/nipah_latex_tables.R b/src/nipah_latex_tables/nipah_latex_tables.R new file mode 100644 index 00000000..8d32dea1 --- /dev/null +++ b/src/nipah_latex_tables/nipah_latex_tables.R @@ -0,0 +1,1057 @@ +library(dplyr) +library(orderly2) +library(purrr) +library(readr) +library(stringr) +library(tibble) +library(tidyr) + +# *============================= Helper functions =============================* +create_cleaning_table <- function(data_table, save_name, article_table){ + article_table <- article_table |> + select(c("id", "article_id", "covidence_id", "name_data_entry", + "article_title", "doi")) + data_table <- inner_join(article_table, data_table) + data_table <- data_table |> + select(-id) + write_csv(data_table, save_name) +} + +# *============================================================================* +# *------------------------------ Orderly config ------------------------------* +orderly_strict_mode() + +orderly_parameters(pathogen = NULL) + +orderly_dependency( + "db_cleaning", + "latest(parameter:pathogen == this:pathogen)", + c("articles.csv", "models.csv", "params.csv", "outbreaks.csv")) + +orderly_shared_resource("nipah_functions.R"="nipah_functions.R") + +source("nipah_functions.R") + +orderly_artefact( + description="Merged single and double extracted data as csv and rds files", + c("latex_models.csv", "latex_delays.csv", "latex_outbreaks.csv", + "latex_riskfactors.csv", "latex_seroprevalence.csv", "latex_severity.csv", + "latex_transmission.csv", "cleaning_models.csv", "cleaning_delays.csv", + "cleaning_outbreaks.csv", "cleaning_riskfactors.csv", + "cleaning_seroprevalence.csv", "cleaning_severity.csv", + "cleaning_transmission.csv") + ) +# *------------------------------- Read in data -------------------------------* +articles <- read_csv("articles.csv") +models <- read_csv("models.csv") +outbreaks <- read_csv("outbreaks.csv") +parameters <- read_csv("params.csv") + +# TODO: Check data_curation +dfs <- data_curation(articles, outbreaks,models,parameters, plotting = FALSE) + +# *================================== Models ==================================* +models <- dfs$models + +# Unspecified transmission route +# Last ID possibly to remove? +# Foodborne (captured as Vector/Animal to human) +# "134c4f546d4fe709e5752e14eba11272" foodborne but already has animal-to-human +foodbourne_trans_filter <- (models$access_model_id %in% c("042_001", "041_001")) + + +models[foodbourne_trans_filter, "transmission_route"] <- str_replace_all( + models[foodbourne_trans_filter, ][["transmission_route"]], + c("Unspecified"="Vector/Animal to human") + ) + +# From notes transmission route, foodborne and contact with dead cases +# Currently listed as Human to human (direct contact),Vector/Animal to human +branching_process_filter <- models$access_model_id == "133_001" + +models[branching_process_filter,"transmission_route"] <- "Human to human (direct contact)" + +mods <- models |> +filter(!is.na(refs) | + !(is.na(model_type) & is.na(covidence_id)) + ) |> +select(model_type, + stoch_deter, + transmission_route, + assumptions, + compartmental_type, + model_compartmental_other, + theoretical_model, + interventions_type, + model_spatial, + model_spillover, + model_fitting_method, + model_uncertainty, + model_data, + code_available, + model_language, + model_readme, + model_notes, + refs, + id, + access_model_id) + +# Replace all commas with semicolons +mods <- mods |> + mutate(across(where(is.character), ~ gsub(",", ";", .))) + +mods$model_type <- paste(mods$model_type, mods$stoch_deter, sep = " - ") + +# Substitutions +model_type_replacements <- c("branching process - stochastic"="branching process", + " model"="") + +transmission_route_replacements <- c("human to human \\(direct contact\\)"="Human-human", + "vector/animal"="animal", + "animal to human"="animal-human", + "unspecified"="", + "^;|;$"="") + +assumptions_replacements <- c( + "homogeneous mixing"="", + "other"="", + "unspecified"="", + # Possible leading or trailing semi colons based on the above + "^;|;$"="", + "heterogenity in transmission rates - over time"="time", + "heterogenity in transmission rates - between human groups"="groups", + "heterogenity in transmission rates - between human and vector"="animal", + "age dependent susceptibility"="age") + +compartmental_type_replacements <- c("not compartmental"="", + "other compartmental; please specify"="other") + +interventions_type_replacements <- c("unspecified"="", + "vector/animal"="animal") + +theoretical_model_replacements <- c( + "yes"="theoretical", + "no"="fitted" +) + +mod_value_replacements <- list( + "model_type"=model_type_replacements, + "transmission_route"=transmission_route_replacements, + "assumptions"=assumptions_replacements, + "compartmental_type"=compartmental_type_replacements, + "interventions_type"=interventions_type_replacements, + "theoretical_model"=theoretical_model_replacements +) + +# Replacements from above +mods[names(mod_value_replacements)] <- lapply( + names(mod_value_replacements), + function(name) str_replace_all(tolower(mods[[name]]), + mod_value_replacements[[name]]) + ) + +# Sentence case +mods[names(mod_value_replacements)] <- lapply( + names(mod_value_replacements), + function(name) str_to_sentence(mods[[name]])) + +# Assuming only NA and compartmental models if not Other or "" +# Names were likely in correct format before tolower above +# when doing replacements... +mods["compartmental_type"] <- sapply( + mods["compartmental_type"], function(val) ifelse(!val %in% c("Other", ""), + toupper(val), val)) + +# na replacements +# Named replacement +# Single col but vectorised so that additiomods["compartmental_type"]nal columns can be added if necessary +na_replacement <- list( + theoretical_model = "Theoretical" # Confirm +) + +mods <- replace_na(mods, na_replacement) + +# Create fitted variable (Redcap coding is the opposite) +# Add superscripts +# Map model_data to Yes/No +# Combine Code text +mods <- mods |> + mutate(fitted = ifelse(theoretical_model=="Theoretical", + "No", "Yes"), + fitted=ifelse( + model_fitting_method=="" | is.na(model_fitting_method), + fitted, paste0(fitted, "$^*$")), + model_data=ifelse(model_data %in% c("","Not available"), "No", "Yes"), + code=ifelse(code_available=="No" | is.na(code_available), "No", "Yes"), + code=ifelse(model_readme=="No" | is.na(model_readme), code, + paste0(code, "$^+$")), + code=ifelse(is.na(model_language), code, paste0(code, " (", + model_language, ")")) + ) + +# Replace all remaining NAs with "" +mods <- mods |> + mutate_all(~ ifelse(is.na(.), "", .)) + +# Ordering +mods <- mods[order(mods$model_type,mods$transmission_route, + mods$compartmental_type, + mods$assumptions),] + +mods <- mods |> + # recoded theoretical model to match other pathogens + relocate(fitted, .after = theoretical_model) |> + relocate(refs, .after = last_col()) + +# Cleaning table +create_cleaning_table(mods, "cleaning_models.csv", articles) + +mods <- mods |> + select(-c(id, + access_model_id, + model_language, + model_readme, + code_available, + model_fitting_method, + theoretical_model, + stoch_deter, + model_notes, + model_compartmental_other) + ) + +# Latex table +mods <- insert_blank_rows(mods,"model_type") +mods <- mods |> + mutate(transmission_route = str_replace( + transmission_route, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) +write.table(mods, file = "latex_models.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) + + # *================================ Outbreaks =================================* +outbreaks <- dfs$outbreaks + +# Dates +# sdate and edate are for sorting, we need to generate dates +# for sorting where values are missing. We want missing dates to be last so +# choose 1/1/0 for both since we sort in desc order. +outbreaks <- outbreaks |> + mutate(sort_start_day = coalesce(as.numeric(outbreak_start_day),1), + sort_start_month = coalesce(as.numeric(outbreak_start_month),1), + sort_start_year = coalesce(outbreak_start_year,0), + sdate = as.Date(paste(sort_start_day,sort_start_month, sort_start_year, + sep = "-"), format = "%d-%m-%Y"), + sort_end_day = coalesce(as.numeric(outbreak_end_day), 1), + sort_end_month = coalesce(as.numeric(outbreak_end_month), 1), + sort_end_year = coalesce(outbreak_end_year, 0), + edate = as.Date(paste(sort_end_day,sort_end_month, sort_end_year, + sep = "-"), format = "%d-%m-%Y"), + outbreak_start_day = as.numeric(gsub("x+", "", outbreak_start_day)), + outbreak_start_month = as.numeric(gsub("x+", "", outbreak_start_month)), + outbreak_start_year = as.numeric(gsub("x+", "", outbreak_start_year)), + outbreak_end_day = as.numeric(gsub("x+", "", outbreak_end_day)), + outbreak_end_month = as.numeric(gsub("x+", "", outbreak_end_month)), + outbreak_end_year = as.numeric(gsub("x+", "", outbreak_end_year)), + start_month_abbr = ifelse(!is.na(outbreak_start_month), + month.abb[outbreak_start_month], + NA), + start_date = paste(outbreak_start_day, + start_month_abbr, + outbreak_start_year), + start_date=na_if(start_date, "NA NA NA"), + end_month_abbr = ifelse(!is.na(outbreak_end_month), + month.abb[outbreak_end_month], + NA), + end_date = paste(outbreak_end_day, + end_month_abbr, + outbreak_end_year), + end_date=na_if(end_date, "NA NA NA"), + dates = case_when( + start_date==end_date~start_date, + !is.na(start_date) & is.na(end_date)~paste0(start_date, " - Unspecified"), + is.na(start_date) & !is.na(end_date)~paste0("Unspecified - ", end_date), + !is.na(start_date) & !is.na(end_date) ~ paste0(start_date, " - ", end_date), + TRUE ~ "Unspecified"), + dates = gsub("NA","",dates), + dates = trimws(gsub("\\s{2,}"," ",dates)), + dates = gsub("\\b(\\d{4})\\s*-\\s*\\1\\b","\\1",dates,perl = TRUE)) + +# Columns not included: +# outbreak_duration_months, +# ongoing, +# outbreak_location_type, +# pre_outbreak, +# cases_severe, # no severe cases +# population_size, +# male_cases, +# female_cases, +# prop_female_cases, +# outbreak_notes, +outs <- outbreaks |> + select(outbreak_country, + outbreak_location, + dates, + outbreak_source, + cases_mode_detection, + cases_confirmed, + cases_suspected, + outbreak_probable, + cases_unspecified, + cases_asymptomatic, # Star + asymptomatic_transmission, # Plus + deaths, + type_cases_sex_disagg, + prop_male_cases, + refs, + sdate, + edate, + id, + outbreak_id) + +# Replace all commas with semicolons +outs <- outs |> + mutate(across(where(is.character), ~ gsub(",", ";", .))) + +outs <- outs |> + mutate(# Add superscripts + superscript=ifelse((!is.na(asymptomatic_transmission) & + asymptomatic_transmission=="Yes"),"*",""), + superscript=ifelse((!is.na(cases_asymptomatic) & + outs$cases_asymptomatic > 0), + paste0(superscript,"+"), superscript), + dates=ifelse(superscript!="", + paste0(dates, "$^", superscript, "$"), + dates), + # Convert proportions and round + prop_male_cases=ifelse(prop_male_cases>1, prop_male_cases/100, prop_male_cases), + prop_male_cases=round(prop_male_cases, 2), + # Since we use + as the superscript, replace + in strings to & + # will only apply to Confirmed + Suspected + cases_mode_detection=str_replace_all(cases_mode_detection, "\\+", "\\\\&") + ) + +# Replace all NAs with "" +outs <- outs |> + mutate_all(~ ifelse(is.na(.), "", .)) + +# Order rows +# earliest date to latest date +outs <- outs |> arrange( + tolower(outbreak_country), + desc(sdate), desc(edate)) + +# Cleaning table +create_cleaning_table(outs, "cleaning_outbreaks.csv", articles) + +outs <- outs |> + select(-c(id, outbreak_id, + cases_asymptomatic, asymptomatic_transmission, superscript, + sdate, edate)) + +# Latex table +# Saves weird but displays correctly? +outs$outbreak_country <- gsub(";", "\\, ", outs$outbreak_country) + +outs <- insert_blank_rows(outs,"outbreak_country") + +outs <- outs |> + mutate(outbreak_location = str_replace( + outbreak_location, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) + +write.table(outs, file = "latex_outbreaks.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) + +# *================================ Parameters ================================* +# *----------------------------- General cleaning -----------------------------* +# Parameters not mapped: +# parameter_paired +# parameter_context_location_type +parameters <- dfs$parameters + +# From Zika: round to 10 decimal places and remove any trailing zeroes +parameters <- mutate_at( + parameters, + vars(parameter_value, parameter_lower_bound, parameter_upper_bound, + parameter_uncertainty_lower_value, parameter_uncertainty_upper_value, + parameter_uncertainty_single_value, distribution_par1_value, + distribution_par2_value, parameter_2_value, parameter_2_lower_bound, + parameter_2_upper_bound, parameter_2_uncertainty_lower_value, + parameter_2_uncertainty_upper_value, + parameter_2_uncertainty_single_value, distribution_2_par1_value, + distribution_2_par2_value), + ~sub("\\.?0+$", "", sprintf("%.10f", round(., 10)))) + +# TODO: Unspecified to ""? +p_unit_replacements <- c( + "substitutions/site/year" = "s/s/y", + "no units" = "", + "percentage \\(%\\)" = "\\\\%", + "max. nr. of cases superspreading \\(related to case\\)"="mnc") + +unc_replacements <- c( + " \\(paired\\)" = "", + " \\(paired or unpaired\\)" = "", + "Inter Quartile Range \\(IQR\\)" = "IQR", + "Standard Error" = "SE", + "Standard Deviation" = "SD", + "Standard deviation \\(Sd\\)" = "SD", + "Gamma Standard deviation" = "Gamma SD", + "Highest Posterior Density Interval 95%" = "HPDI95%", + "CRI95%" = "CrI95%", + "%" = "\\\\%" +) + +combine_cols <- function(df, columns, collapse=" "){ + output_vec <- apply(df[,columns], 1, + function(col) paste(na.omit(col), collapse = collapse)) + + output_vec[output_vec == "NA"] <- NA + output_vec[output_vec == ""] <- NA + + return(output_vec) +} + +# Treat both parameter value + uncertainty and variability the same +param_identifier <- c("", "_2") +new_col_identifier <- c("", "_var") + +for (i in 1:length(param_identifier)) { + # identifiers + id <- param_identifier[i] + nc_id <- new_col_identifier[i] + + # col names + value_col <- paste0("parameter", id, "_value") + value_type_col <- paste0("parameter", id, "_value_type") + value_bounds_col <- paste0("parameter",id,"_bounds") + + unit_col <- paste0("parameter", id, "_unit") + exp_col <- paste0("exponent", id) + + # Clean parameter unit + # Ignores central - but presumably fine since presumably any case where + # central is used the unit is consistent (e.g. CFR) + non_blank_unit_filter <- (is.na(parameters[[unit_col]]) & + parameters[[value_col]]!="NA") + parameters[[unit_col]][non_blank_unit_filter] <- "Unspecified" + parameters[[unit_col]] <- tolower(parameters[[unit_col]]) + + # Unit replacements + parameters[[unit_col]] <- str_replace_all(parameters[[unit_col]], + p_unit_replacements) + + # Unit replacement based on exponents, assuming no units provided and not R + unit_r_condition <- (parameters[[unit_col]] == "" & + parameters[["parameter_class"]] != "Reproduction number") + + # Exponents + # 5.6 exponent? Fixed (changed d to f -> for float exponents) + parameters[[unit_col]] <- case_when( + parameters[[exp_col]] == 0 ~ parameters[[unit_col]], + parameters[[exp_col]] == -2 & unit_r_condition ~ "\\%", + parameters[[exp_col]] == -3 & unit_r_condition ~ "per 1000", + parameters[[exp_col]] == -4 & unit_r_condition ~ "per 10k", + parameters[[exp_col]] == -5 & unit_r_condition ~ "per 100k", + TRUE ~ paste0( + parameters[[unit_col]], " ", + "10^{", sub("\\.?0+$", "", sprintf("%.5f", parameters[[exp_col]])), "}" + ) + ) + + parameters[[value_col]] <- coalesce( + na_if(parameters[[value_col]], "NA"), # coalesce only works with NA, so convert string + parameters[[value_bounds_col]], + "") + + # Adding units to values + parameters[[value_col]] <- ifelse( + parameters[[unit_col]] == "" | parameters[[unit_col]] == "Unspecified", + parameters[[value_col]], + paste(parameters[[value_col]], parameters[[unit_col]], sep = " ")) + + if (id=="_2"){ + parameters[["parameter_2_value_type"]] <- str_replace_all( + parameters[["parameter_2_value_type"]], unc_replacements) + + # Variability needs a type + parameters[[value_col]] <- ifelse( + parameters[["parameter_2_value_type"]] %in% c("Unspecified","", NA), + "", + paste0(parameters[["parameter_2_value_type"]], ": ", + parameters[[value_col]]) + ) + } + + # Loop across dist par 1 and 2 for params 1 and 2 + # Add a superscript if distribution uncertainty is available + for (j in 1:2){ + dist_par_type <- paste0("distribution", id, "_par",j,"_type") + dist_par_unc <- paste0("distribution", id, "_par",j,"_uncertainty") + # quick fix for SD + parameters[[dist_par_type]] <- str_replace(parameters[[dist_par_type]], + "Standard deviation", "SD") + + parameters[[dist_par_type]] <- ifelse( + !is.na(parameters[[dist_par_unc]]), + paste0(parameters[[dist_par_type]], "$^+$"), + parameters[[dist_par_type]] + ) + } + + # colnames + dist_1 <- paste0("distribution", id, "_1") + dist_type_1 <- paste0("distribution", id, "_par1_type") + dist_value_1 <- paste0("distribution", id, "_par1_value") + + dist_2 <- paste0("distribution", id, "_2") + dist_type_2 <- paste0("distribution", id, "_par2_type") + dist_value_2 <- paste0("distribution", id, "_par2_value") + + dist_type <- paste0("distribution", id, "_type") + + combined_dist <- paste0("distribution", nc_id) + + parameters[[dist_1]] <- combine_cols(parameters, + c(dist_type_1, dist_value_1), + ": ") + + parameters[[dist_2]] <- combine_cols(parameters, + c(dist_type_2, dist_value_2), + ": ") + + parameters[[combined_dist]] <- combine_cols(parameters, + c(dist_1, dist_2), + ", ") + + parameters[[combined_dist]] <- combine_cols(parameters, + c(dist_type, combined_dist), + " - ") + + # colnames + param_unc_single_value <- paste0("parameter", + id, + "_uncertainty_single_value") + param_unc_single_type <- paste0("parameter", + id, + "_uncertainty_single_type") + param_unc_type <- paste0("parameter", id, + "_uncertainty_type") + + unc_bounds <- paste0("uncertainty", id, "_bounds") + + unc <- paste0("uncertainty", nc_id) + unc_type <- paste0("unc", nc_id, "_type") + + # Is distribution_par2_value mutually exclusive for uncertainty bounds?? + parameters[[unc]] <- coalesce( + na_if(parameters[[param_unc_single_value]],"NA"), + parameters[[unc_bounds]], + "" + ) + + # Check if combined var can be used? When value is missing combined var is NA + parameters[[unc_type]] <- coalesce(parameters[[param_unc_type]], + parameters[[param_unc_single_type]], + NA) + + parameters[[unc_type]] <- str_replace_all(parameters[[unc_type]], + unc_replacements) + + parameters[[unc_type]] <- ifelse( + parameters[[unc_type]] %in% c("Unspecified","", NA), + "", + paste(parameters[[unc_type]], ": ", parameters[[unc]], sep = "") + ) + + # Since dist is favoured show dist but indicate that there is also uncertainty + parameters[[combined_dist]] <- ifelse( + !is.na(parameters[[combined_dist]]) & !is.na(parameters[[unc_type]]), + paste0(parameters[[combined_dist]], "$^*$"), + parameters[[unc_type]]) + + # Favour distribution + parameters[[unc_type]] <- coalesce(parameters[[combined_dist]], + parameters[[unc_type]], + NA) +} + +# Dates +parameters <- parameters |> + mutate(population_study_start_day = as.numeric(gsub("x+", "", population_study_start_day)), + population_study_start_month = as.numeric(gsub("x+", "", population_study_start_month)), + population_study_start_year = as.numeric(gsub("x+", "", population_study_start_year)), + population_study_end_day = as.numeric(gsub("x+", "", population_study_end_day)), + population_study_end_month = as.numeric(gsub("x+", "", population_study_end_month)), + population_study_end_year = as.numeric(gsub("x+", "", population_study_end_year)), + start_month_abbr = ifelse(!is.na(population_study_start_month), + month.abb[population_study_start_month], + NA), + start_date = paste(population_study_start_day, + start_month_abbr, + population_study_start_year), + start_date=na_if(start_date, "NA NA NA"), + end_month_abbr = ifelse(!is.na(population_study_end_month), + month.abb[population_study_end_month], + NA), + end_date = paste(population_study_end_day, + end_month_abbr, + population_study_end_year), + end_date=na_if(end_date, "NA NA NA"), + dates = case_when( + start_date==end_date~start_date, + !is.na(start_date) & is.na(end_date)~paste0(start_date, " - Unspecified"), + is.na(start_date) & !is.na(end_date)~paste0("Unspecified - ", end_date), + !is.na(start_date) & !is.na(end_date) ~ paste0(start_date, " - ", end_date), + TRUE ~ "Unspecified"), + dates = gsub("NA","",dates), + dates = trimws(gsub("\\s{2,}"," ",dates)), + dates = gsub("\\b(\\d{4})\\s*-\\s*\\1\\b","\\1",dates,perl = TRUE)) + + +# Replacements +population_sample_type_replacements <- c( + "Trade / business"="Trade/business", + "\\s.*"=""# keep the first word only +) + +# Decide if sentence case, done separately because of Level 'of' Exposure case +method_disaggregated_by_replacements <- c( + "Level of exposure"="Level of Exposure", + "Disease generation"="Disease Generation" +) + +param_value_replacements <- list( + "population_sample_type"=population_sample_type_replacements, + "method_disaggregated_by"=method_disaggregated_by_replacements +) + +parameters[names(param_value_replacements)] <- lapply( + names(param_value_replacements), + function(name) str_replace_all(parameters[[name]], + param_value_replacements[[name]])) + +parameters <- parameters |> + mutate(across(c(population_group, population_sample_type), + ~ replace_na(na_if(.x, ""), "Unspecified")) + ) + +parameters$population_group <- str_to_title(parameters$population_group) + +# CFR and Serology +# Copy population sample if CFR is na +# CHECK MOVE +parameters$cfr_ifr_denominator[is.na(parameters$cfr_ifr_denominator)] <- + parameters$population_sample_size[is.na(parameters$cfr_ifr_denominator)] + +# Replace all NAs with "" +parameters <- parameters |> + mutate_all(~ ifelse(is.na(.), "", .)) + +# Replace all commas with semicolons +parameters <- parameters |> + mutate(across(where(is.character), ~ gsub(",", ";", .))) + +# *------------------------------- Transmission -------------------------------* +# Check what should still be added +# No variability +trns_params <- parameters |> + filter( + grepl(paste0("Attack|Relative contribution|Growth rate|Reproduction|", + "Mutations|Overdispersion|proportion of symptomatic cases"), + parameter_type, ignore.case = TRUE)) |> + select(parameter_type, parameter_value, unc_type, + method_disaggregated_by, + genome_site, method_r, + population_sample_size, + population_country, dates, + population_sample_type, + population_group, + refs, + central, + id, + access_param_id) + +trns_params_pt_replacements <- c( + "Reproduction number \\(Basic R0\\)" = "Reproduction number R0", + "Severity - proportion of symptomatic cases" = "Proportion of symptomatic cases", + "Mutations - evolutionary rate" = "Evolutionary rate", + "Mutations - substitution rate" = "Substitution rate", + # Only primary attack rate + "Attack rate" = "Primary attack rate") + +trns_params$parameter_type <- str_replace_all(trns_params$parameter_type, + trns_params_pt_replacements) + +trns_params$method_r <- str_to_sentence(trns_params$method_r) + +trns_params$parameter_type <- factor( + trns_params$parameter_type, + levels = c("Reproduction number R0", + "Overdispersion", + "Primary attack rate", + "Proportion of symptomatic cases", + "Evolutionary rate", + "Substitution rate")) + +trns_params <- trns_params[order(trns_params$parameter_type, + as.numeric(trns_params$central)),] + +trns_params <- trns_params |> + select(-c(central)) + +# Cleaning table +create_cleaning_table(trns_params, "cleaning_transmission.csv", articles) + +trns_params <- trns_params |> + select(-c(id, access_param_id)) + +# Latex table +trns_params <- insert_blank_rows(trns_params,"parameter_type") + + +trns_params <- trns_params |> + mutate(parameter_value = str_replace( + parameter_value, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) + +write.table(trns_params, file = "latex_transmission.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) +# *------------------------------- Human delays -------------------------------* +hdel_params <- parameters |> + filter(grepl("delay", parameter_type, ignore.case = TRUE)) |> + select(parameter_type, other_delay_start, other_delay_end, + parameter_value, parameter_value_type, unc_type, + parameter_2_value, + method_disaggregated_by, + population_sample_size, + population_country, dates, + population_sample_type, population_group, refs, central, id, + access_param_id) + +hdel_params$parameter_type <- sub("^.* - ", "", hdel_params$parameter_type) +hdel_params$parameter_type <- sub(">", " - ", hdel_params$parameter_type) +hdel_params$parameter_type <- str_to_title(hdel_params$parameter_type) +hdel_params$parameter_type <- gsub(" \\(.*?\\)", "", hdel_params$parameter_type) + +hdel_params <- hdel_params |> mutate(parameter_type = case_when( + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Diagnosis/test result") ~ "Onset - diagnosis/test result", + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Nadir") ~ "Onset - nadir", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Intubation") ~ "Onset - intubation", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Lymphopenia") ~ "Onset - lymphopaenia", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Thrombocytopenia") ~ "Onset - thrombocytopaenia", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "altered mental status") ~ "Onset - fever with altered mental status", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Cough with respiratory difficulty") ~ "Onset - respiratory difficulty", #(or Symptom onset>severe illness) + (other_delay_start =="Symptom Onset/Fever" & other_delay_end == "Recovery/Death") ~ "Onset - recovery/death", + (other_delay_start =="Start of febrile illness" & other_delay_end == "End of febrile illness (recovery or progression)") ~ "Duration of febrile illness", + (other_delay_start =="Start of severe illness" & other_delay_end == "End of severe illness (recovery or death)") ~ "Duration of severe illness", + (other_delay_start =="Begin ventilation" & other_delay_end == "End ventilation") ~ "Duration of ventilation", + (other_delay_start =="Onset of ventilation" & other_delay_end == "End of ventilation") ~ "Duration of ventilation", + (other_delay_start =="First neurological episode" & other_delay_end == "Second neurological episode") ~ "Duration between initial neurological episodes", + (other_delay_start =="Exposure/Infection" & other_delay_end == "Neurological episode") ~ "Exposure - neurological episode", + TRUE ~ parameter_type)) + +# No other for Nipah (all mapped) +# hdel_params <- hdel_params |> mutate( +# other = paste(other_delay_start, ":", other_delay_start), +# parameter_type = coalesce(na_if(other, " : "), +# parameter_type) +# ) + +# hdel_params <- hdel_params |> +# select(-c(other_delay_start, +# other_delay_end, +# other) +# ) + +hdel_params <- hdel_params |> + select(-c(other_delay_start, + other_delay_end)) + +# "Discharge/recovery"="Recovery" <- Not correct for current Discharge/recovery delay? +parameter_type_replacement <- c("Symptom Onset"="Onset", + "Admission To Care"="Admission") +hdel_params$parameter_type <- str_replace_all(hdel_params$parameter_type, + parameter_type_replacement) + +hdel_params$parameter_type <- str_to_sentence(hdel_params$parameter_type) + +hdel_params$parameter_value_type[hdel_params$parameter_value_type==""] <- "Unspecified" + +hdel_params |> + distinct(parameter_type) |> print(n=21) + +hdel_params$parameter_type <- factor( + hdel_params$parameter_type, + levels = c("Incubation period", + "Onset - admission", + "Onset - death", + "Onset - recovery/death", + "Onset - discharge/recovery", + "Admission - death", + "Admission - discharge/recovery", + "Time in care (length of stay)", + "Serial interval", + "Onset - respiratory difficulty", + "Onset - intubation", + "Onset - fever with altered mental status", + "Onset - nadir", + "Onset - lymphopaenia", + "Onset - thrombocytopaenia", + "Onset - diagnosis/test result", + "Duration of ventilation", + "Duration of severe illness", + "Duration of febrile illness", + "Duration between initial neurological episodes", + "Exposure - neurological episode")) + +hdel_params <- hdel_params[order(hdel_params$parameter_type, + as.numeric(hdel_params$central), + hdel_params$population_country),] + +hdel_params <- hdel_params |> + select(-c(central)) + +# Cleaning table +create_cleaning_table(hdel_params, "cleaning_delays.csv", articles) + +hdel_params <- hdel_params |> + select(-c(id, access_param_id)) + +# Latex table +hdel_params <- insert_blank_rows(hdel_params, "parameter_type") + +hdel_params <- hdel_params |> + mutate(parameter_value = str_replace( + parameter_value, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) + +write.table(hdel_params, file = "latex_delays.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) + +# *----------------------------------- CFR ------------------------------------* +cfrs_params <- parameters |> + filter(grepl("(CFR)", parameter_type, ignore.case = TRUE)) |> + mutate(parameter_type = ifelse( + parameter_type == 'Severity - case fatality rate (CFR)', + 'Case fatality ratio', + parameter_type)) |> + select(parameter_value, unc_type, + parameter_2_value, unc_var_type, + method_disaggregated_by, + cfr_ifr_method, cfr_ifr_numerator,cfr_ifr_denominator, + population_country, dates, + population_sample_type, population_group, + parameter_notes, refs, central, id, access_param_id) + +cfrs_params[, c("parameter_value", "unc_type")] <- sapply( + c("parameter_value", "unc_type"), + function(col) gsub(" \\\\%", "", cfrs_params[[col]])) + +cfrs_params$population_country <- gsub(";", "\\, ", + cfrs_params$population_country) + +cfrs_params$cfr_ifr_method[cfrs_params$cfr_ifr_method==""] <- "Unspecified" +cfrs_params$population_country[cfrs_params$population_country==""] <- "Unspecified" + +cfrs_params <- cfrs_params |> + mutate(# Add central to parameter_value with * and format all to 1 decimal + parameter_value=str_replace_all(parameter_value, " unspecified", ""), + # param_sort = coalesce(ifelse(parameter_value=="", NA, parameter_value), + # central), + parameter_value=case_when( + parameter_value=="" & central!=""~paste0( + sprintf("%.1f", as.numeric(central)), "$^*$"), + parameter_value=="" ~ "", + TRUE~ sprintf("%.1f", as.numeric(parameter_value))), + # CI to 1 decimal + unc_type=str_replace_all(unc_type, + "(\\d+(?:\\.\\d+)?)", + function(x) sprintf("%.1f", as.numeric(x))) + ) + + + +cfrs_params <- cfrs_params |> + arrange(tolower(population_country), + desc(as.numeric(central))) + +cfrs_params |> + filter(parameter_2_value != "" | unc_var_type != "") |> + NROW() + +cfrs_params <- cfrs_params |> select(-c(parameter_2_value, + unc_var_type)) + +# Cleaning table +create_cleaning_table(cfrs_params, "cleaning_severity.csv", articles) + +cfrs_params <- cfrs_params |> + select(-c(parameter_notes, id, access_param_id, central)) + +# Latex table +cfrs_params <- insert_blank_rows(cfrs_params, "population_country") +cfrs_params <- cfrs_params |> + mutate(parameter_value = str_replace( + parameter_value, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) + +write.table(cfrs_params, file = "latex_severity.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) + +# *--------------------------------- Serology ---------------------------------* +sero_params <- parameters |> + filter(grepl("Seroprevalence", parameter_type, ignore.case = TRUE)) |> + select(parameter_value, unc_type, + parameter_2_value, unc_var_type, + method_disaggregated_by, + parameter_type,cfr_ifr_numerator,cfr_ifr_denominator, + population_country, dates, + population_sample_type, population_group, + parameter_notes, refs, central, id, access_param_id) + +sero_params <- sero_params |> + mutate(in_CSF = case_when(str_detect(parameter_notes,'CSF')~TRUE, + TRUE~FALSE)) + +sero_params[, c("parameter_value", "unc_type")] <- sapply( + c("parameter_value", "unc_type"), + function(col) gsub(" \\\\%", "", sero_params[[col]])) + +# Get rid of Seroprevalence - +sero_params$parameter_type <- sub("^.* - ", "", sero_params$parameter_type) + +sero_params <- sero_params |> + mutate(# Add central to parameter_value with * and format all to 1 decimal + parameter_value=str_replace_all(parameter_value, " unspecified", ""), + parameter_value=case_when( + parameter_value=="" & central!=""~paste0( + sprintf("%.1f", as.numeric(central)), "$^*$"), + parameter_value=="" ~ "", + # Format this way since there are ranges + TRUE~ str_replace_all(parameter_value, + "(\\d+(?:\\.\\d+)?)", + function(x) sprintf("%.1f", as.numeric(x)))), + parameter_value=ifelse(in_CSF==TRUE, + paste0(parameter_value, "$^+$"), + parameter_value), + # CI to 1 decimal + unc_type=str_replace_all(unc_type, + "(\\d+(?:\\.\\d+)?)", + function(x) sprintf("%.1f", as.numeric(x))) + ) + +sero_params <- sero_params |> + arrange(tolower(population_country), + parameter_type, + desc(as.numeric(central))) + +# No variability for sero +sero_params |> + filter(parameter_2_value != "" | unc_var_type != "") |> + NROW() + +sero_params <- sero_params |> + select(-c(parameter_2_value, unc_var_type)) + +# Cleaning table +create_cleaning_table(sero_params, "cleaning_seroprevalence.csv", articles) + +sero_params <- sero_params |> + select(-c(parameter_notes, id, access_param_id, central)) + +# Latex table +sero_params <- insert_blank_rows(sero_params,"population_country") + +sero_params <- sero_params |> + mutate(parameter_value = str_replace( + parameter_value, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) +write.table(sero_params, file = "latex_seroprevalence.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) + +# *------------------------------- Risk factors -------------------------------* +risk_params <- parameters |> + filter(grepl("Risk factors", parameter_type, ignore.case = TRUE)) |> + select(riskfactor_outcome, + riskfactor_name, riskfactor_significant, + riskfactor_adjusted, population_sample_size, + population_country, dates, + population_sample_type, population_group, + parameter_notes, refs, id, access_param_id) + +risk_params |> count(riskfactor_outcome) + +risk_params$riskfactor_outcome <- factor(risk_params$riskfactor_outcome, + levels = c("Infection", + "Serology", + "Death (in general population)", + "Other neurological symptoms in general population", + "Spillover risk", + "Other"), + labels=c("Infection", + "Serology", + "Death", + "Neurological symptoms", + "Spillover", + "Other")) + +risk_params$riskfactor_significant[risk_params$riskfactor_significant==""] <- "Unspecified" + +risk_params$riskfactor_significant <- str_to_sentence(risk_params$riskfactor_significant) + +risk_params$riskfactor_significant <- factor(risk_params$riskfactor_significant, + levels = c("Significant","Not significant","Unspecified")) + +risk_params$riskfactor_adjusted <- str_to_sentence(risk_params$riskfactor_adjusted) +risk_params$riskfactor_adjusted <- replace_na( + na_if(risk_params$riskfactor_adjusted, ""), "Unspecified") +risk_params$riskfactor_adjusted <- factor( + risk_params$riskfactor_adjusted, + levels = c("Adjusted","Not adjusted","Unspecified")) + +risk_params <- risk_params[ + order( + risk_params$riskfactor_outcome, + risk_params$riskfactor_significant, + risk_params$riskfactor_adjusted, + # Other last + risk_params$riskfactor_name == "Other", + risk_params$riskfactor_name, + na.last = TRUE + ), +] + +# Do this before insert_blank_rows else factors are cast to numbers +risk_params$riskfactor_significant <- as.character(risk_params$riskfactor_significant) +risk_params$riskfactor_adjusted <- as.character(risk_params$riskfactor_adjusted) + +# Cleaning table +create_cleaning_table(risk_params, "cleaning_riskfactors.csv", articles) + +risk_params <- risk_params |> + select(-c(parameter_notes, id, access_param_id)) + +# Latex table +risk_params <- insert_blank_rows(risk_params,"riskfactor_outcome") +risk_params <- risk_params |> + mutate(riskfactor_name = str_replace( + riskfactor_name, + "\\\\bfseries", + "\\\\rowcolor{imperial_cool_grey!50}\\\\bfseries") + ) + +write.table(risk_params, file = "latex_riskfactors.csv", sep = ",", + row.names = FALSE, col.names = FALSE, quote = FALSE) diff --git a/src/nipah_map/nipah_map.R b/src/nipah_map/nipah_map.R new file mode 100644 index 00000000..89abd601 --- /dev/null +++ b/src/nipah_map/nipah_map.R @@ -0,0 +1,526 @@ +library(orderly2) +library(tidyverse) +library(stringr) +library(metafor) +library(meta) +library(estmeansd) +library(mixdist) +library(ggplot2) +library(ggsci) +library(sf) +library(ragg) +library(ggspatial) +library(ggforce) +library(png) +library(grid) +library(patchwork) +library(gridExtra) + +# *============================================================================* +# *------------------------------ Orderly config ------------------------------* +orderly_strict_mode() + +orderly_parameters(pathogen = "NIPAH") + +orderly_dependency("db_cleaning", "latest(parameter:pathogen == this:pathogen)", + c("articles.csv", "models.csv", "params.csv","outbreaks.csv")) + +orderly_shared_resource("nipah_functions.R"="nipah_functions.R") +orderly_shared_resource("nipah_bangladesh_district_data.csv"="nipah_bangladesh_district_data.csv") +orderly_shared_resource("NIPAH_Bangladesh_IEDCR.csv"="NIPAH_Bangladesh_IEDCR.csv") + +source("nipah_functions.R") + +orderly_artefact("nipah-specific figures",c("nipha_outbreaks_map.pngf")) + +################### +## DATA CURATION ## +################### + +articles <- read_csv("articles.csv") +outbreaks <- read_csv("outbreaks.csv") +models <- read_csv("models.csv") +parameters <- read_csv("params.csv") + +dfs <- curation(articles,outbreaks,models,parameters, plotting = TRUE) + +articles <- dfs$articles + +articles <- epireview::assign_qa_score(articles = articles)$articles +qa_scores <- articles %>% dplyr::select(covidence_id,qa_score) + +outbreaks <- dfs$outbreaks +models <- dfs$models +parameters <- dfs$parameters %>% left_join(qa_scores) %>% + mutate(article_label = make.unique(refs)) %>% + mutate(article_label = factor(article_label,levels=rev(unique(article_label)))) %>% + mutate(in_CSF = case_when(str_detect(parameter_notes,'CSF')~TRUE, + TRUE~FALSE), + population_location = coalesce(population_location, population_country)) + +nipah_bangladesh <-read_csv('nipah_bangladesh_district_data.csv') + +# *============================= LOCATIONS ===============================================* +parameter_locs <- str_to_title(unique(str_trim(na.omit(unlist(lapply(parameters$population_location, FUN=function(x) unlist(str_split(x,';')))))))) +outbreak_locs <- str_to_title(unique(str_trim(na.omit(unlist(lapply(outbreaks$outbreak_location, FUN=function(x) unlist(str_split(x,';')))))))) +locations <- unique(c(parameter_locs, outbreak_locs)) + +#prepare shapefiles for maps +l0_in <- read_sf('../../shared/World_Bank_Official_Boundaries_adm0/WB_GAD_ADM0.shp') %>% #this is the shapefile with country boundaries + rename(COUNTRY = NAM_0) #store country names in column COUNTRY +# + +# +l1_in <- read_sf('../../shared/World_Bank_Official_Boundaries_adm1/WB_GAD_ADM1.shp') %>% #this is the shapefile with level 1 regions + rename(COUNTRY = NAM_0) %>% + mutate(COUNTRY = case_when( #country names must be consistent between shapefiles + COUNTRY == "Cabo Verde" ~ "Cape Verde", + COUNTRY == "Democratic Republic of Congo" ~ "Democratic Republic of the Congo", + COUNTRY == "Guinea Bissau" ~ "Guinea-Bissau", + TRUE ~ COUNTRY)) %>% + rename(REG_CODE = ADM1CD_c) #store region codes, e.g. SL01, in column REG_CODE + +l2_in <- read_sf('../../shared/World_Bank_Official_Boundaries_adm2/WB_GAD_ADM2.shp') %>% #this is the shapefile with level 1 regions + rename(COUNTRY = NAM_0) + +om <- read_sf('../../shared/World_Bank_Official_Boundaries_Ocean_Mask/WB_GAD_ocean_mask.shp') + +mapped_locations <- locations[(locations %in% l2_in$NAM_2)|(locations %in% l2_in$NAM_1)|(locations %in% l2_in$COUNTRY)] +unmapped_locations <- locations[!(locations %in% l2_in$NAM_2) & !(locations %in% l2_in$NAM_1) & !(locations %in% l2_in$COUNTRY)] + + +location_mapping <- tribble( + ~location, ~iso3, ~district, ~division_or_state, ~notes, + # ---- Bangladesh ---- + "Haripur Upazila", "BGD", "Thakurgaon", "Rangpur", "Subdistrict of Thakurgaon", + "Haripur Upazila (Subdistrict) Of Thakurgaon District", "BGD", "Thakurgaon", "Rangpur", "Full location specification", + "Sadar Upazila", "BGD", NA, NA, "Requires specific district context", + "Northwest Bangladesh", "BGD", NA, "Rangpur; Rajshahi", "Regional designation", + "Manikgonj", "BGD", "Manikganj", "Dhaka", NA, + "Rangpur District", "BGD", "Rangpur", "Rangpur", NA, + "Rajshahi District", "BGD", "Rajshahi", "Rajshahi", NA, + "Lalmohirhat", "BGD", "Lalmonirhat", "Rangpur", "Common misspelling of Lalmonirhat", + "Comilla", "BGD", "Cumilla", "Chittagong", "Alternate spelling", + "Joypurhat", "BGD", "Joypurhat", "Rajshahi", NA, + "Bogra", "BGD", "Bogra", "Rajshahi", NA, + "Jessore", "BGD", "Jashore", "Khulna", "Official spelling update", + "Goalando", "BGD", "Rajbari", "Dhaka", "Subdistrict of Rajbari", + "7 Other Northwestern Districts", "BGD", NA, "Rangpur; Rajshahi", "Regional grouping", + "Unspecified 7 Districts", "BGD", NA, NA, "Northwest region unspecified", + "Barishal Division", "BGD", NA, "Barishal", "Division-level entry", + "Rajshahi Division", "BGD", NA, "Rajshahi", "Division-level entry", + "Chattogram Division", "BGD", NA, "Chittagong", "Division-level entry", + "Rangpur Division", "BGD", NA, "Rangpur", "Division-level entry", + "Dhaka Division", "BGD", NA, "Dhaka", "Division-level entry", + "Khulna Division", "BGD", NA, "Khulna", "Division-level entry", + "Mymensingh Division", "BGD", NA, "Mymensingh", "Division-level entry", + + # ---- India ---- + "Siliguri", "IND", "Darjeeling", "West Bengal", NA, + "Nearby Districts Of Kozhikode", "IND", "Kozhikode", "Kerala", "Primary reference district", + "Kerela", "IND", NA, "Kerala", "Common misspelling", + "West Bangal", "IND", NA, "West Bengal", "Common misspelling", + + # ---- Malaysia ---- + "Seremban Hospital", "MYS", "Seremban", "Negeri Sembilan", NA, + "Kuala Lumpur Hospital", "MYS", "Kuala Lumpur", "Kuala Lumpur", NA, + "Ipoh Hospital", "MYS", "Kinta", "Perak", "District of Kinta", + "University Of Malaya Medical Center", "MYS", "Kuala Lumpur", "Kuala Lumpur", NA, + "University Malaya Medical Centre", "MYS", "Kuala Lumpur", "Kuala Lumpur", "Alternate spelling", + "Kelang Hospita", "MYS", "Klang", "Selangor", "Misspelling of Klang", + "Tioman Island", "MYS", "Rompin", "Pahang", NA, + "Kampung Sungai Nipah", "MYS", "Seremban", "Negeri Sembilan", NA, + "Malaysia", "MYS", NA, NA, "Country-level entry", + "Peninsular Malaysia", "MYS", NA, NA, "Regional designation", + "Negri Sembilan State", "MYS", NA, "Negeri Sembilan", "Common alternate spelling", + "University Hospital", "MYS", "Kuala Lumpur", "Kuala Lumpur", "Generic reference", + "Bukit Pelandok", "MYS", "Port Dickson", "Negeri Sembilan", NA, + "Negeri Sembalin", "MYS", NA, "Negeri Sembilan", "Misspelling", + "Fatimah Hospital Ipoh", "MYS", "Kinta", "Perak", NA, + "Sibu Hospital Sarawak", "MYS", "Sibu", "Sarawak", NA, + + # ---- Other Countries ---- + "Villages Across The South Of Cameroon", "CMR", "Océan", "South", "Approximate district", + "Senator Ninoy Aquino", "PHL", "Sultan Kudarat", "Sultan Kudarat", NA, + "Wat Luang", "THA", NA, NA, "Needs precise district info", + + # ---- Empty Entry ---- + "", NA, NA, NA, "Blank entry" +) + +# Remove empty row if needed +location_mapping <- location_mapping %>% filter(location != "") + +location_mapping <- location_mapping %>% + mutate(across(where(is.list), ~map_chr(., ~paste(., collapse = "; ")))) %>% + separate_rows(district, sep = ";") %>% + mutate(district=str_trim(district)) + +location_mapping[!((location_mapping$district %in% l2_in$NAM_2)|(location_mapping$district %in% l2_in$NAM_1)| + location_mapping$division_or_state %in% l2_in$NAM_1),] + +# *=============== DEDUPLICATE OUTBREAKS =============================================================* +outbreaks <- outbreaks %>% mutate(outbreak_location = coalesce(outbreak_location, outbreak_country), + outbreak_end_year = coalesce(outbreak_end_year,outbreak_start_year), + outbreak_duriation_years = outbreak_end_year - outbreak_start_year, + type_cases_sex_disagg = replace_na(type_cases_sex_disagg,'Unspecified'), + outbreak_notes = replace_na(outbreak_notes,''), + outbreak_location_type = str_to_title(replace_na(outbreak_location_type,'Unspecified'))) +outbreaks$is_duplicate <- FALSE +outbreaks[outbreaks$outbreak_duriation_years>5,]$is_duplicate <- TRUE +outbreaks[outbreaks$outbreak_country == 'Malaysia,Singapore',]$is_duplicate <- TRUE +outbreaks[outbreaks$outbreak_country == 'Malaysia' & outbreaks$outbreak_location_type != 'State',]$is_duplicate <- TRUE #we take the individual state outbreaks rather than the national aggregate one. +outbreaks[outbreaks$outbreak_country == 'Singapore' & (is.na(outbreaks$deaths) | outbreaks$type_cases_sex_disagg=='Confirmed'),]$is_duplicate <- TRUE #we take the report with confirmed cases, also not the sero study +outbreaks[str_detect(outbreaks$outbreak_notes,'cluster'),]$is_duplicate <- TRUE #we take the individual outbreaks rather than the cluster + +exclude_ids <- c( + # India outbreaks to exclude + "1150|India|Siliguri|2001|1", + "292|India|Siliguri; West Bangal|2001|1", + + # Bangladesh outbreaks to exclude + "1150|Bangladesh|Meherpur|2001|4", + "851|Bangladesh|Meherpur|2001|4", + "1150|Bangladesh|Naogaon|2003|1", + "851|Bangladesh|Naogaon|2003|1", + "192|Bangladesh|Rajbari|2004|1", + "851|Bangladesh|Rajbari; 7 Other Northwestern Districts|2004|1", + "851|Bangladesh|Faridpur|2004|2", + "1150|Bangladesh|Faridpur|2004|4", + "186|Bangladesh|Rajbari; Faridpur|2004|NA", + "186|Bangladesh|Unspecified 7 Districts|2004|NA", + "1150|Bangladesh|Tangail|2005|1", + "960|Bangladesh|Haripur Upazila (Subdistrict) Of Thakurgaon District|2007|1", + "976|Bangladesh|Sadar Upazila|2007|3", + "1150|India|Nadia|2007|4", + "1110|Bangladesh|Manikgonj|2008|2", + "1110|Bangladesh|Rajbari|2008|2", + "947|Bangladesh|Faridpur|2010|1", + "956|Bangladesh|Lalmonirhat; Dinajpur; Rajbari; Rangpur|2010|12", + "2709|Bangladesh|Chattogram Division|2011|NA", + "2709|Bangladesh|Mymensingh Division|2013|NA", + + # Other outbreaks to exclude + "2886|India|Kerala|2018|5", + "2979|India|Kozhikode|2018|5", + "4358|India|Kerela|2018|5" +) + +outbreaks <- outbreaks %>% filter( !is_duplicate ) %>% + mutate( unique_id = paste(covidence_id, outbreak_country, outbreak_location, + outbreak_start_year, str_remove(outbreak_start_month, "^0+"), sep = "|"), + EXCLUDE = ifelse(unique_id %in% exclude_ids, 1, 0)) %>% + filter(!EXCLUDE) + +subcolumns_outbreak <- outbreaks %>% dplyr::select(outbreak_country,outbreak_location,outbreak_source,cases_confirmed,cases_suspected,cases_asymptomatic,cases_unspecified,outbreak_probable,deaths,outbreak_start_month,outbreak_start_year,refs) %>% + mutate( cases_confirmed_raw = cases_confirmed) %>% + mutate( cases_confirmed = coalesce(cases_confirmed,cases_suspected)) %>% # only use cases suspected if we don't have confirmed cases + mutate( cases_confirmed = case_when(cases_confirmed