From 408acb3354470e099276577a2ae7ebb4015765a7 Mon Sep 17 00:00:00 2001 From: Will Beasley Date: Sun, 19 Apr 2020 13:28:53 -0500 Subject: [PATCH] update pkgdown; include redcap_survey_link_export_oneshot --- _pkgdown.yml | 1 + docs/404.html | 61 +-- docs/CONDUCT.html | 61 +-- docs/apple-touch-icon-120x120.png | Bin 0 -> 11270 bytes docs/apple-touch-icon-152x152.png | Bin 0 -> 15963 bytes docs/apple-touch-icon-180x180.png | Bin 0 -> 20313 bytes docs/apple-touch-icon-60x60.png | Bin 0 -> 4808 bytes docs/apple-touch-icon-76x76.png | Bin 0 -> 6537 bytes docs/apple-touch-icon.png | Bin 0 -> 20313 bytes docs/articles/BasicREDCapROperations.html | 316 ++++++------- docs/articles/SecurityDatabase.html | 292 ++++-------- docs/articles/TroubleshootingApiCalls.html | 447 ++++++++---------- .../articles/advanced-redcapr-operations.html | 365 +++++++------- docs/articles/index.html | 71 ++- docs/authors.html | 63 +-- docs/bootstrap-toc.css | 60 +++ docs/bootstrap-toc.js | 159 +++++++ docs/docsearch.json | 2 +- docs/favicon-16x16.png | Bin 0 -> 1570 bytes docs/favicon-32x32.png | Bin 0 -> 2302 bytes docs/favicon.ico | Bin 0 -> 15086 bytes docs/index.html | 98 ++-- docs/news/index.html | 163 +++---- docs/pkgdown.css | 121 ++++- docs/pkgdown.js | 5 - docs/pkgdown.yml | 3 +- docs/reference/REDCapR-package.html | 66 +-- docs/reference/collapse_vector.html | 71 +-- docs/reference/constant.html | 86 ++-- docs/reference/create_batch_glossary.html | 79 ++-- docs/reference/index.html | 101 ++-- docs/reference/kernel_api.html | 72 +-- docs/reference/metadata_utilities.html | 79 ++-- docs/reference/redcap_column_sanitize.html | 72 +-- .../redcap_download_file_oneshot.html | 92 ++-- .../reference/redcap_download_instrument.html | 77 ++- docs/reference/redcap_metadata_read.html | 73 +-- docs/reference/redcap_metadata_write.html | 72 +-- .../redcap_next_free_record_name.html | 71 +-- docs/reference/redcap_project.html | 73 ++- docs/reference/redcap_read.html | 75 +-- docs/reference/redcap_read_oneshot.html | 79 ++-- docs/reference/redcap_read_oneshot_eav.html | 75 +-- .../redcap_survey_link_export_oneshot.html | 73 +-- .../reference/redcap_upload_file_oneshot.html | 75 +-- docs/reference/redcap_users_export.html | 88 ++-- docs/reference/redcap_variables.html | 73 +-- docs/reference/redcap_version.html | 70 +-- docs/reference/redcap_write.html | 79 ++-- docs/reference/redcap_write_oneshot.html | 79 ++-- docs/reference/replace_nas_with_explicit.html | 70 +-- docs/reference/retrieve_credential.html | 75 +-- docs/reference/sanitize_token.html | 72 +-- docs/reference/validate.html | 73 +-- 54 files changed, 1929 insertions(+), 2499 deletions(-) create mode 100644 docs/apple-touch-icon-120x120.png create mode 100644 docs/apple-touch-icon-152x152.png create mode 100644 docs/apple-touch-icon-180x180.png create mode 100644 docs/apple-touch-icon-60x60.png create mode 100644 docs/apple-touch-icon-76x76.png create mode 100644 docs/apple-touch-icon.png create mode 100644 docs/bootstrap-toc.css create mode 100644 docs/bootstrap-toc.js create mode 100644 docs/favicon-16x16.png create mode 100644 docs/favicon-32x32.png create mode 100644 docs/favicon.ico diff --git a/_pkgdown.yml b/_pkgdown.yml index 541ec157..0c387c97 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -50,6 +50,7 @@ reference: - redcap_next_free_record_name - redcap_metadata_read - redcap_metadata_write + - redcap_survey_link_export_oneshot - redcap_users_export - redcap_variables - redcap_version diff --git a/docs/404.html b/docs/404.html index 28be2bff..49fa6436 100644 --- a/docs/404.html +++ b/docs/404.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,15 +46,14 @@ - + - - + @@ -68,7 +71,7 @@ - +
@@ -97,26 +100,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -124,7 +109,7 @@
  • + + @@ -165,7 +156,7 @@

    Page not found (404)

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/CONDUCT.html b/docs/CONDUCT.html index 31b27e3c..8d643a98 100644 --- a/docs/CONDUCT.html +++ b/docs/CONDUCT.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,15 +46,14 @@ - + - - + @@ -68,7 +71,7 @@ - +
    @@ -97,26 +100,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -124,7 +109,7 @@
  • + + @@ -173,7 +164,7 @@

    Contributor Code of Conduct

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..c357b3685c8d82ed3dd97133e96869ed8f166fb0 GIT binary patch literal 11270 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 literal 0 HcmV?d00001 diff --git a/docs/apple-touch-icon-152x152.png b/docs/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba8038101f35e89290827194b009d4100965d38 GIT binary patch literal 15963 zcmZ{LWmMeU_w@{3+@XVZkmBwX_hLl`9i+H3xWfRY#ap1bmZF2Z6d5R5tWaDBDQ*uG zw?Ds+?}v9~B{#Xrxi{;an`CF7ePiBfsSx0TZ~*`SftsqK?sJ*(zZD1Tc}v~P`0Ba9 zu$R-60|4qidna|2YcoOYcz z&nK{~)KwG#PybsAI!jZYYp}i5G?lP7Ur?YC;jz$B1pokV?$s3K^!*o)I-S2T8>a5u zNX|)t&&-Tdiz{_g^Hdo>eEH(=&mdg(x9qutL&^L0^h~g}w5{8_TNRIez_EXfoGfp%vjlfTF^nmb|OG!X|Hrtasa8owm!wwGBBTB!;0 zS5&sKvw7=G+mI|ECAC~*@iZ84Khd_+Tl05LKrU&89w3W#{{n{7N^6A4&zSktjfM+` z`wUJ$Rl->dD7|ro(9_^Qe>}X){(4f%u2wU6d*5M{grTa)j7h2^Y?Jw_LzIM~HWXKo zWSCrFxW2Njxn!1l)%B=adZHS5C}&B~id#f5<@qGaPJJ-IvVmj?%_;1!3qCY?^T8?O z&`$9C!l=HmDcK|?Y%mJ%hsbc`)(gg^A5>!kJsDVhQA3SoTGmJ8zX7^HIYj^kq}D*E zX`|aR+Nif7?w?|ldRkMRuh}>5-<{u9n#1N?&Z@QSRq{PlfR_yLFw8dze^kx*u;L|t zQ@@(i2flkB?}LhcNqoL;t%8VTQi&74i5s^>fRTq{O5gy@iQ9pdt%R zF#51(5mVpZ11oAjI1EZ2eMChxrTDV(cpjENl3ouey(bQF^V z{c#;Z*m-^`fXguSCvF(+HAP0+kD3@E@~?8tp|CnE1#AGP%mj6k0iN){gPE`l5v1bx ze<>@+^1LMLmrYGEGEd*{u2KLmi=s#4n(lN~ut#x6wogwvHIe*Bo>nS+vc@TlY9!c7?k|K5X`D{q?YdlNbdF*;@jU{v|oYvmfec@?F zSd18qMU9ZhU0MmRAnMMxteIjKV=)HNG;o?1N7Zt1!(e9aJ5eIRgcw1}Sprpy(b!&? zlm$JYyt||%ndwg*bV`*sxIG0_gJ;l$k z!ziRy1&W~~Arh~pDIWu1uf|FovIep^JC+|OC_qv^uVV#&wB!Vpqz#J38vor`3gEdK+;;*p3GDRhxf~RU_t198 z$Kwzo0TcA0JAE;({XL3+ONMZF;1k|Z)_K!y<7c?y_`NJaKMdC9=+uM@0|I4f;1$2& z$Nhfc6gr)!Mx}p#NNKh;%+VaQedgi)KK{uBZ52#tGkDGHGFcgH}&q*VNRaqHH-<+gRC1Pq`3T=eixr0LjJ#L`~?+(WvA`iQu8ku(eEPEpLw8nWQ%wrcP@DLG`FEh*le1R)nS+#4zZQ1;f&p^36!`% zmL_QqbGE8!xr-pnWeISJjqFD6Iutg%2XCggD#0l11T~}V^c4H(Xs~#Qx}?K+eIJz+ zQ!xG`DeF$e9LLMa5-4fNvR!U#-$(i^*!E1c`!(Ja-nF_BoB5CTAiNQ1$!0OqU*FifRB-gMBLj1{d`8{Go!5pM`WVW|Xi zfx`M_ho1;>)WB0t;_nn?_t3}6P-sG$O7TfJmHetph(LKu%-=KpO2nCR7iMVg*r2@Y zM)HzsK1T|MIQeV}P!(Uc?c2ifd`}bh%dw%81Aq}B$cc?0I=DUb?PdhFvF{S)O|L6( zUKCCb8@l0d+jL`sLF9B3KuoZHGIwA_!GHx3ab}hPvs&So4V)4E9#qbS39LV>@vW&t zay0WWBP?pu0A*u!bg+|_b{RL6TSh?z#^7_k;~ux46}I>M zO2PB46FHx7hJTE1gtP0H>bPF-u*ov`H#rf%JFv3y%B7DeL#Mc+pk;3cXIF$fbB-=`<>5a|Kis`BaN!2$h z8h$9}65NQ06R%u}+oy;6BHbdUc3*TL5YCG(o`ac!l0B$BxUfCgkfqDZFhWu8u3;|4g0`bSL3YJ zc>Xf}Qb-e>QqbS~f;p`u5wFEpzDR2?it+FUTagfV37;XwJ8nLp-}?fMin zU|fp9b_}r4gWUrcCmFS}xzVbEY0;6X&Qqby7H?YLB^60Y-f3l*oPdjb6&E=?O}?4U zSh6ILtHA1F@V(_d+_2v8B4jj`3?vcDKa{4<|GNnwCaD?bQL#yUj#i1#ZPUw+LfER! z%NEy&c0TK{-jM?_2tPV0(iRJ5uv+&i0{y3K5dG{xM~5dvv-w!FKkn7dc`Atd z#8DsU>*h9sLTh!ljWSOzi_YoKuqP3ZB=a#1Nwp|3^zp+nxN)iVI#l;e zv4R3i2%Q!Q5r{5f-*Ay_TLho|>3h&zYG^R@EiG9k(opFl6N8~F2yrX+Wevn0de%5( z4X;IPe|N(7zsv5dzAzAe6Nm!DFlm*Bw|ti%yRX5q@%f5{JZPQ^5?0f5yLy8vt7j*> zQ4v#NMpwhC{TI5S-jN2BB*=}^po9WiT9$g$E%c0rW2Q-ZW^%Jk4z)B_Vuql6UOo4d z?zlUBH^JkLAG*Z_t@%nOTml7~5{LAt|9qRw*bSx?56#iQ(CNhKh`{OLQf6)7TT$B> zZKFBwQ2V1V>anH?Jmd*3w-uLIj#kCot(JRi%4l4kb^AU59}3V+b|Xl_{R-9qOlLF- z3ZBzAjRLvzUTOFOG9|a~`8VnIj0w7f!qhvvl`yz)*A4@YF0?pcC+fVK!P1F2(nr%} z`|J>@nlF|bghkQ?FRfKc_-+30QRL==i%A>yKi8UbeAe=HmtL{9yL zK<&oZfr3^!F%$5V)~#@wu*0oSb(D)-Gt8MRYS)*&z5Z8A(~RMLnH{8a`aav%=WJg( z(Y@UUOQweDsCZ!aTWaJ6O!)LN+n(ZOj(M|Sh+!aMV~|tfVE}R zuEy4fUPsL1CEyXo)_9@77Oj>cH9^jM<7~B}F;a>bive5<C$Q zV3vaeBNbB&xLS?{e#&ZY)}nRFmO#YzSInsl-@-^gF2(FK&2E>|k(ph9%c?C;gx}P;~_%)L-6rC*r@*|N3n+Wer|_zuu4T12sg) zo&F+MJgw{XxZU?$+4PGG$NI2=<%lze zZRH)bfmusn(mD%7-P1`!`*8OpOI6xM!0MC+eE_4&*+faB?BkGd`j!Hbbc{n8GX&x@ z*dNBjb*>HRyXL?pa}=zA>A;D)uQ#ekqhbrdR+X+B=H=%^o!x))h77~0Hyf)>_tF5% z0?M=RUEsElPcOuWEH_nk;Wj(yXZ6t|VDb`nIA^?RFpsoYv$XGj09=YixswlGefgiU z7$t}?6J*UDb}g8HFU&+QieJZo1X&Vya3}sofJo$fmjZAiO7%#W*Oa?vO4i!w2%v3j z%r8%K&9e0HyyJ|1I%c9lt)L8_tRFwj7hxW;g3je%*-pFD)5#_bJE5b$HZ@hNgLr@t zF?h;Fir+riS4!Ny=c%;K>DZeGaVcvTI~CsU-23_P3QaO6VSMGT)?bLn`Az<+Vb+nG zih!b7JGJpoz_&SvMh`Q$Wzj|P*6`SO`d$f2|5XtQeVi!%12HsCDln;3`?oLan@#4u z=zulD-jS?hkNXo*TEEb!lbVcUmki?a@8BOSe%R)_uiB-VbSbfO`lVVSe9YaVQdu0* zV_1FjNKqW2K=Q}PLWTuVs?R)}>;I(52b< zU^So4XpV&)9MpUc?ydu-t=AWco&PqB)CThS6-?rUFya3mQoNqzao{KEDJk!X+J1Fq zG;1R}wbz0153QE`R+chVRUPw|NPV0asWGDi?fNwhrUJ10j>)YD`voMJOcWI$Nve5 zAXj6)vw>BFvEQ*LYv@hdHPoVyv%7&7=(=X8hDANNg2E_!Yrbi;ui#l7yANoGElou$%o>D{d6Nv*%PmmgO1se;p#M~8C_*Bjm|Vl|}ADVJNsq-6iD z&o5q8qzsokjHBQ^(G|9HEA>hm@bHQ0eWjS(5eo)X*;SHTd=aMDOOV{I>iAn5{f$1UmaCFJtPZyP#b2fJ4GF~sCJh5Mi%~(5Eov*FlAf%0GxefOFh=<<{ zA#|+oHvpG6n01mO*u;4zmyGo}-8HRNEl+qPVVUDhg}$Tw?zomO_$Z3a&U!#hQ!b>D zoHcITzmiL*Z{#Jp-_MA?AC)$vOQ~j4opQ^UzmPA!Ty-$ErkI4h7YOQ;HdRC#G%g5% z-614h|IM}>5B-$!Ua-C1k;E8HD@$kVHsQ~HaZC$I^1@w~RK|FbjWI7#eH;b$`YMWI zaYCAwi6&HV>xQ$VzmXOc{4eHV{qf;iXoA))#HKEk5i9*kw=7z%eMMMDDoVAmj){S# z&01@e!3z*aHfW2G2WzG?dgdZW6GJ8y-&yM_R_m8CA^s|t6phjT?u)D(V?CIAMh%iU zW-_}s&}`L)7z2YNoF)Q)f@-3UBFS1cWVX8m z@eJO7g+#Ya$!ydI8i~cXN1vOFjSn!-+ZkFhGcq#o4@P*2E-XGxXV}ITD7~$ixEm|E zwsav#YRC@7&VE28?Bq_o=E-SM2r5$Uv+I-5jBy$%JL|(}ocFste6j6OBk}0W42!CJ z-D$og8jcs=6%#BFGva?gGHhj1__mSow_Qx^G6Ed*y0~8>xs?)FZTj=;KnbsTh{1Gz9kdyY$cTJdPGm4aEtVw(WuTO#P16!~>UNeNv^9+I}qtBqjA0EcQ! zW4;Ra1PagQ`KlD7ek`lAd04JuOd7(esn`f-?bu;0?c3~297NC%ABVm`y4oQWtz)-{ z*G$C$hbL6&dMy9mM$dYl6zOJR@mf#m+h+RT^d87|H_l+8R~EIPdfI3)hBapweEGb7}2w#v83m8FIk^F=r$@7Yhy zQOQTR0bQXNGsnh?tA*h7_SXrrW;;v+!MXfpLvb9*dz5H(+}$&IO+8NzJG{TTkvLZ& zIT;|PWajYiSroKYwGf?B9n;nluO>w&??4Ku+j19+?9_o7`P@%Vee$h~_iYPaPmMe$ zMx{*!A~>>2gmFV8$scOEtPkkk^ifxuN?h?2h!-TOH*F0m${|6gxQOMevyp82!8D++ z$`87?9<%>V+RQLixFWN+`m2=9LXy>5RE^&>*CP9s(Zg*mMObw?Q5@N48D!_|Jc@lb z#xyf=ELCK`ym7lVgb*EN6@_JAZ}4aBU_`U#Z8Lsnb8}F#&<^~h7RAg@as>Yni(ER^ z<_Z_f27~q7zQc1SJ~~IJi>S073g#M<-@WAF74LHlP=nb;TwRhfpLJ}TmvYI(P-7cN z&*S@y(wA&I+PSO^&7bz2s_U@y4Tw3|I8tk@odkQ7IvCKVsvP(U&Url>Vn+w83weBI zh(a;*=9ueDi?y2v|Em)@jPaY4L9u0PLNXtuIKT&c+XAYc8v#5JYm?Bwqm0!R0K?Q~ z#>LA46V7q{4}VPqV$_Q|nfb1LvJexZ6(!lf#MO!02$KB3y@n!q0)DxXt!~D;F(%F- z)o=g#(ncWr!X|AfAHe~RX8oKRi@<3n3s`bCy=UAg_h=1*&eoaH|MQwdn zW%H4w+y{j)XaPqU1=X2Ik<9IUD${e;uwrl0*JLIt5qjs34ZbS)Ww;+-^G9im$~eoZnZWsVGl3<0==+kTR`#z@@zZP9Gb|+!9pc*Sm4$^_G2f@U zD9n=TR2KVLDs{iw&QQ3XF&ouyj`>jocS@&n>`JucRFRLx2zjbUg=Dtck zl43kSqx~|qBffYncKXjN)c5G3P7-l>h6f%-&+LzMyT7(usztczKe4@u9J=*wx?EmO zrK;wB_whjQb#dA%mHrEJugBILUP{6EH1MurdO2!{FtuN+(>wm5I+e6wR;$6N21;f|t(~7MmZ<$vvc_NguOfVZ>&26(2j|yx4ixUx z;1o8@QL6R!UPR~UCLNNYZ1};@p;jWVybE5ls8{*cQGcXrCtQ2OS7Z6zbcQiXi^36K zXym=iGcMIh+EMiRSGA)2#nnQxL@fgJCyBXDRjT#=758i8D{WOyE@SJD$6W6djn0=5~2Nz|qig?CWC~kp8Hi3Zp&rwzmPbu(;y=_#@vcL5a zRMC4NAsR|HpueB5qmcRTQP&%uZ)B}6qDC<@+>BnC%B-4&=nWuPap2H_YP|T`s7kUh zw&ApUqouj|Gtof zHZJ>LVpMyMlt!%hZR)P@B0@|KcQ?TF@6N^GGtSIJu|qFv-1#ZO)eAjz9Td64IeZV9 z&gZca^V3Rpj+KnaKa7v!GC-lH`ojLMz@G%+Mx8)^Q_SmE*JYZXDr!NPq4BCgKb+5- z=_~<8>f68ktm>=Dn;h>8S3<@9i^H5_v>`&afGxN@7&ZDb2WHcvr)3L1cD~|7P1QCi z1;`8qPgV`EmUJCxeQVo~gsKz-Khk#F3*Dw(9HVigt*i6WPlyYK7-JMcJ3R z;R*A5z*m~vK|H}g`=vMn>CJR%@imiK&~;#uEuNZ@&-qcmQvL`m@xdTQUziok(1VUj zP8VeQbt^IFzX*GT#AK@G+Za8O>`A+E*K6|Hxv-aJGfLk&-A*lOI_L|uD%yERKUeYZ zu+|+6*$7d8&`fVf22=&b0HHb|!Pk`^{fV{-xInbuVsQpSOo=KE=;w*5J));yp{A^$ z#b3WrvX;5fACN8zFLDL$g%J8qFwp7r9ZD>MjV$cs~XCU|HIXf8buYh@x-on^H#q2hzZw#0ovG%X30`IN%?@mvzmX|n3kyf;+IJxu&yE{4g!Dl)@TPj_a#}I&#c3RnxtB# zd$iRTlZ;^Dopx^wFl1zLB7{ev3c!&(V8{QYp=kV1DcWbz#i+h*K(r!3Yh~FC0nSG@ z0Ua36UgdOiG;P;XtLOrKBZfFm&4iU@ZqM_(ZvegrQFu`AtnJE=kN+k&;-C%sZLi;| z-;pU2MyqnbhD58!fI2`!w`~!dJ!g#yWfJ?=L~J9_Us`Lj1%_9YT2Gd)20o3SFo6#` z#Q>FeA+KSby+6E;gyEM3PM#|P<+1nVNmQ&c;W4~xSMauI=ck75sg<^Arc{pBoX ztPXko^hOIWeyslim;TV`^%F!j)B9E1k5-=#YGn+*naR6{kW{#(uqTK($;PhUuHG@Z zR6_nO@Lrz#27IV}CBKWg1%mJb!nDmYZ#xin|6QElMLFMby9oX3@$0t0pf{W&aj+5y zfE(jEA`pQl@eAr5+V9%@sJ{vu5@xBAVJ6T-s?RegWqtlOq(hnSL!%hOs+Q7G&NQxa zZhD1+6W?0OcRxE1f*VqoZNPT6_yYIxEVpSy%!K484 z&vJNt6my1a@zAZEvPU!$>C1nA$bz28gp&Y%<{i#zU-L^rI4SM{C~Qp3c9f>HLU+dx)7W3M^BZpb{?=N=&#!&uPE|# z{CiW1ZO2_}EIvb-_FmR43;dr`~1 z;b%zP{tM;ljOAsihF^^%JDXv=k!Rsiy0@`o^L0jo#;M`eUdh}3y*YgwiaDZ98nKZt zeOZ--W1gWJN)jArd;^t4oUHzOKz!7N0iMs^_c`I|BSSsO2lYEayur$7$WDrFbVn@z zO`_wHY!M}Z>%RL7m2eibS9nQuYjKYE(H~v@-%hI9$}@I8mfmmXwZmT*mWN>ZlTuN* z>3gN2$zbQ{qR6scuunf?%)i#kf%)7aI5#-Be{Gi;y?%+bg}Ks90GC5<8&x86faCAB z+xMpw`nTL~B9g&>lSiBBOz(mwe%48Qa7U`@lnGP%W|QG$NODaFzT*2B?BBpy zmZ#8%zeiJ7qNV5YoRNe7v66o928rpVEOFiGK+?M277bjTH>!5vuCS^(rP!F`og3-v zk}p>Fwd-Lw0x8IKL<$VDmAYSx9bKez)RW$6J-(j}cMqg0bX!-87?L<8P~_19mrJSo zl3M~~JT(Kj!GnAyR32u3AFE+gWxg&fD%*3Kc1TY0A9HSrs@xHA(y(u_nt#}RY)57w z8#7qm0dw0X*xiV+kJ!NC*&K8A5~MbK5E!~M{QCUn`iSA4u`w}_ROK(TFh~$`O#+rt z{Gk1~t0H;X(sIFHpUj zCM*A7eMY1HnBk^r;E7@*+=4Hhs);^@NGCr;pYdpf25HAz7H zFX51dKOEzJG(nshRlgF^@sZvVuc|!pEqE!ne?3V??(Y{&TrGdFLyl0V5Nx&!nXBn5 z*eaq51+ePvytEQBS*I+;*+GRvXf93M+518>8DEuShyEa20HHfS){e42Yd@f{0c>v& zVEe}Tp^@v|vmm4%Apd@y$nVnZWOt=w*<(FoX~Sp>4OVY8D-cD-Q5czQb0X=5mCfvs zoTHocrz}fO(FwnrbdCZ!Lv(D3wkMn&G@Zeo03J$KBOKBoTw=Vkey zEHt3Ytnp##2O-tP-pS)vgTPJXX17IV`i2I-DOX>NgAzhynH(xwU9xa&@L|W!jm9Ji zvw9$iYZ_Wu+z=BWKVTy!{CwTjkI0`m=^`5N$a<=W`8d=4bS3$i=SN^ErirhEa!4MoOVTArkS#KjsUioiA4$7a;JJkV~$+<%mS<))~}6 zbPihUQi~b`YghLB>i*Lb&AX9WTXfh>Lrw|lMEC;p0+G@ZfPJ(y=Argoh$OzOLP$e9 zMoZj%XyK_Qd?NU6iDu%{-5Ty`ZF|>)h5FLbj_+dKXWKd93`{;dI{#-UPnsFEmND_% zzwzAHpO4(ZNTi`rE!tPsS3Yd4uu3U%OtG;D?pDqIyQ8j=Ls(u}He>gbJ%JuY@q_rWHegEsnIb&-bEd=N%V(;B?|avjM7Vp14UV2{VxTRcc|FTExyDbA4<1 zQs-zUwTUUB$`_o-zl3E|&O#+K8U6c55h8eVpH=4;`{@*#7A)Hfzk#(Yh9Wt7Poy8O zhyJX`_J|dqvgFv#L!O%tu|6?}rPMRR#1U!|$`%Nw*IFME^0ZLFb)HrL$sRYgPG|Xt9QbgNv1um#0b-WQkm19!sv_LR~MCCd!8rPY|Z5 zX4vzU{6?aQ=wa$B;9L{yGR@aqG*+e@ z|Fda<@$L6-r$XQ`g42aTdYS|N9%M)m`jD%vsWKYf1r^Skxo z=S{8xUpUpfCSep}vz=CjlAHX6?4B@a#9CTQ&Tv{Op615xxPbr~GB*d1zN>Oi@bK#q zUBCN;Y@D<6V}t%6i;9Z0F$A*mm}H}+730G>2~B>ez*VkJ81_t55*e;IS^q&4$CYU* z^m{0>o66E;6r)7cbhAq~(c-VozdJSH{?=FODjSGz;@`|)3wS+i%kn5)ogn)KJvx|} zq|5*Ah%6*M(q<0e>%G=>I*^WGr@khTt-aw6c|mA$#X3O$LlKzc{=l zVR%3ZCy?+qUgkses1N834lOZimnA*kdn`yRug?e%QBx3@_a>6G+T3l2c~VM&{d3ur ztH{nwhSbt&MiW<5KZl@6bF?`7yt-X2fe` zTy(G+d`&XYyD08)=f?@5OelU5k<)U1A>e`>-2FHA(KWbe(#8NxZb;5k5`kPl_vP z{Gc0iH6>FXj{7ta)BnOj7TlQSSNGiyy$kY=Xau)9!yT4LZ22}JAiKoTdfNReiR^VN zDe{8W3~#OyX7&z9#h6t>kX@33Vbtor{QcmdEV1L`p-lHx=Q{WVUD`0^MVXVj+?Kh1 zP1dQ`#c;I)pU=uSB3-z%U=us#`(p!R7K;YPRyk>Hh z;+M^6fIVa@RM>6{qY_i!##rf*0NjI%Uol0D!i6dhYdO`?Va|V7TJ>P4<$Jq^Q`1C> zTGUG829eNHW7-%~`oe?E^(BGO)M+ip{+3pbS6VYE5_kM@rv8BHCyxrGhe4ELRb=Z?R}`OarVQUR=`AG-X;o zSlt|yqtKBm=83WaS98KE0NE8^isxK-623$(^EjekZMMiQt3DpC2CWbw{5bE)mLn|e z2}OC_^p{1#{TO@msYrGeZ3h9DxZgyRco^%8j-v?87cC}*T4xnLkyjsjOT6(sMGc7h zRD=tl(z_&tM0-L|XEIk=W9WynrkuQM*z{=EHT1!-pD7{4^$gc1#NzsT5p*rAHKxYW zaYL_39FO%=`xAkOHxG9Kos)28@v?!&(-D3SlvQNxG`V%PdTA*Y#r1z!Q88Ctms!qq zwxj$Ow^jw@-_kC57Q=A_C^5U>ocxRL9{)X@47PV-JhFpNu0Z8HHJJ`!UqOv8#ilN9 z=>i9G(KBLe*A^WqJa~VnN?y(UBtkRPPm=h&FR3pqB^juuZMtrFov357%xg1@$*7)e zmsav!iNrL02VR35SUk{{ISv0p7|08L5^y7t?e@y&l^>P_q&6+o_YO{*bipR1$ijx` zfb-TPJnmd>+WQM{6ZwXId+z)e?G3vW2yYqH(Dd*Q@YlM1sObW^{Ue3FLQ5xBsX;s| zJ1RkffiDJUw>YEU$oz_trt_9ndL$Ox>Zab*cl;VGs39P{me!4tSfz%;_bj<#Jy6b`b5taXM zS+2?bLy9o8Gf>pv?&*pYRX4$8w*n3=l#^XhP-hD8koOlvX3}2E)!W z!_|foGgQOH!_`Gl?Y}@yjh^=C9cHN7Xg++KeX&*^L^p13S`30+pLyXG_R|T@bRRmA zi}x}9sSMglb^h$*xKs!PbTP7v(PFky3b#pS%wR*(|3^W*@6?4B@G`O@Yo2w=De_ji z@9%i@QpP%^J{5+)P1kDFEpmkS2YKB0ErS>2QP`~(*y1L`1G8H|eG6LO-iND|9SPzd z8MILM$OD3ksWP57YG7Ba(;l^SeQk2fyd9_YU!KprFlKA)A~%*nQQCtLW*Tu@CbQ#w zRMfXke#FkSPsMnUM!{QNP5b>>Ik$#NU|3AF)AugWuD0|k@JgY^596BQG$`q_*b0r? zExn_l+?J;W=RkhvNeEd0Dh9~KQMI5w?-j_GB%!+&t=s1HrcR5@EMecrs)|<1+X2;D z$sap}7r^wsWnF$q&domQeeN5AH!n_aYQj1%F&GY@SobxpQv8ES9#nbENO!%jnyx=I z@GUpWV*0doN$qMDS2BCc8O)nEdsw0zxo+M)(uK6?wh{Jg&Czde!v z48r{wBZ2{QVl@WOvOV;BZKQ$GZyl<<0@(N7J95^-epV;&18JkI?!}3X!TUY-^rNqo zHd~r%W!!#*JL7E2C86CXpPXe`Wx@5a&NQi140Z_vr2UI_{Mz>^{E2?2#VsBGYz(dVTPp-5s=e{; zH5wmNuS?cAF0Ca_(taozmZzCcTSKBj5=a9DL2HS2Iy<#ZPaU|NG_)WXee{5y=;~Nc zIlaz(G1LUK(uP%P1gau_G=Z-9&#?fwo@Y%O0rc9Esa!1xF2Y?+_BT2k4ja~ z_2p3N1O7!iQzvmG{i3e|3p-KnT!_#iTo2Zv{3ze)rGPA^OPCwjRj{qafAB5jYeR!6|l9Z2sP(~q+pwuZP#2msP z+?Enpl+j3J5-Zu<89RDn9EWl8DE>iF1HqZZsWp7<^F6OS$Ua;KLt3Ke&al`?`v3&vBHC+E|dUJ|5l zBT09FxEHGPWx4l!3b}f}oFPMW4-EL_YslQngu9IEauEB)6*GgP2P9Yn{-*lu;4GPE zj!Oi(NK|}0UK~5U>mHTAee7kl9^KnGCQwLI6ElRl43oYfn0wqPJVbTOb6{OT`n(SI3CDYzPtE=z{wwEBUkT3}srLBOOH7!=_ zCYcBnPln`*leb|dH6y^cvBHZvGw$EODC!MuR>l}F;C5DTbr=iX^lQ%i@>nsn%9@&i=3yDd-wI2$NM zFB6*M&LGoM*W?pukg1lkWi@-FvLl&G)~b58g8THk8hTT<>8IZsSJlN$+3 z{3m2zwb8>yMTAIJ=@~|M&}LX1$v71E#R&XW7WX`Yj>qj`4yCY3^Y zQV6Z1F)&>4D46EISIMU%=Tt^V7rr_F7C$UUI^Q+2EC?W>UE#*^ijA1yrV{r)K5&zM zk_phTT(d+cwPCiI$7EY&T~IJe@aS^Lt9EsymI*Uoe$ZqU1B4HCZ(hT+;k5Hq2S`4T zUDCl%@Rt_vj1FzKi*T#&uW+FK&0OZn%(~VRg=y;OwP1l1W@7~hs<>&aIGoY=*4zZN zyAl&2l`OT9JUgZm&eh#B{$}ccda z_3P0Y!#^PFZe~ovvGMwvnXSJw=as&aTL;6#4%8#ucUPxGYnKLT_I9gWi=0C&$Sb(L zwAYw$@Lqa1?ZMA%U#$CoN5C}O51u=xZ85~<7pOw-5J(;PKC-_*-+aL(@8Rqw)zo6w zxB58K=0rbB%S=LWgbq8c%{3siTr-0Ycr5P!#rf)RUFEg*Sw$*dV?%sr73<0Tk93;L zBWnpwg{tLjwGxl7{d4b*67SYEl}6S&wn(?9zRsARD3i3&ThEt)Qw8W=MFtkRC985v z-p$y0gqB13zLiJ&R%x0a`Ic&*tUWzGr~Zy_lp_t2KWJ)+a=$9gEH6Yb-)y=Zwg2E6 z^f~WAf<65ODazZ$VQmdqj>z{YPo|;I7t5??&{daeGjYi!)2yt* z_xQdvvZy=Q76k?FlIMz98alF6$;ZVm%mpr0-+^CUz9bi)SyOgT@SI3{9%n|uZer>( zUsR9O)gkEd`w|*+E?Qg}8b$xH3Yq?Rm9LxRG3S^_#OE^}i~y%sIMrc}!k$^J0fZ_Y zR`ue;$6F+Y>Ke5RJv8YiZ%eo7NoM$>RhRylsA59pOC7+s(SfJ_gHzXP619-WV@(&h zi4b~RNe$&ARc9FZJ=ejr?~(Lb5Y6zh%>vy;UkyHi*6_0(4Pwg$kKq^q?%>9DSWCr8 zo40v|v1>;i?EeUTQz_88za&qAD)d~fcK>zDn*0O41U!EF{Ym*2X_Rt6Hyc2Z&8Em} z!U;`JA0sXo;7KxRw|EJ~oOe!~fnUrCKq+B;74Q3k_lE$Ifv1)z7~y8}lH6H3Z)A+V zpLym1hlf3jt0*;8%PCs_V`N;``G$3O+T`Ew$R%Z|02_E)nyVFT)GZ)vu)X-VP`mke0RiY}MKDCye-x%MZN$Th^!OQ^3X z$&A(K!y^{m75hO(-JkZ2AD=j?hV_dl-MZsV7oVJ8a@oVA9-e@wywu+f!t@>oCx3pb z8({2Q6{_WOi%Yk)q_+l5la&9YwE6dk#5RFEye#biBwKWeiRq^OD_OZQLHS_$>})Wo zYF5(simvNh-^Ojm1IC>8r8~UzU1ynE@6OYj>G&<-+LQL=1*h7jWb@I!&r5R^R z!!=hh*oQnVl)PG9`ER@D*s~u7r(K&UdAYbB>}nQ*4}3?5v)=`Zwd|y~(u1^768zGi z_^E1r|BTEv`v@?Ic}Kr2IMO%~;(4C!Geimw(#h3p`BES^X+Xo_^7H{ok=KI3b0V4i zOw>Ea#kF|b*}3JxN^@7z=wbA8rI+c*wGGOJN7|N&n*gMnkCe@qm@rcYiC}8Hpc5~kGJzw&k1H5A3ymq_1?9*9Z z-m=KNPy_z4AZo=q1vG$_91EiYP%lx&w6*5I@mPL32widUZHbNHXwMq0#0OuAB0W8< zIXg$(j2_ob0U|C8)GL9_pi&Vy`3&<^D5RPb3tCOkBsPo9^UKCHTAIaK$gW*aZ)C;b z0QO8GJ|{==L4p-a-NyHJeQ0LO(kYy+bW2(r@PA-8i;{F0U5NQ$X19+{lf}dQVC&P` z;}RXsF3tFw|Ml-z?^x9Jn7$zRHE98*?{Wu#9+dVGr8>C=NomnSGsQKavXbbc4_&9# zugrGUoFWF$td6!tA*B72{8E)iXs+2ME9MQEKBXn~Y-S;vE}I>GF2+`HiMwH(&? zZ$>kcY^JECOKXq*dnsB62{8#vg1Lz&G(yHwcDOehc8=cTym(lsDWu9#Mk;nB zMd&eVU<&>E9%qTCJ8A0)eH%SbJ6&{7`FUzIi?@=Ix6ONRTM27V+vfrxz{fAn%_q(+ zz^~6IAi*yz!Oze6yu-(L#j&~n{}{Ns+c??<{QnI;`k5L$8yE)a8+q%#_hW>4y4yLr z*fM$tz-$>EVcymNfPc>B89t7O0UO&d?U7Nnzq$Z)COjT%JTfLS^%Qb+GDbzX&`%q5 trUre+k@@MNzR^C~KI{>=YQb9`z&;g;_nEwK>T?$WH6<;@YI)0u{{x@GlPLfI literal 0 HcmV?d00001 diff --git a/docs/apple-touch-icon-180x180.png b/docs/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9ce0e57f8395808e0955bce6ec15184bdfa0a8 GIT binary patch literal 20313 zcmV*8Kykl`P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/docs/apple-touch-icon-60x60.png b/docs/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..6efeee7d8813c5fe1454ddd686c092840515aefb GIT binary patch literal 4808 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 b*C4>E5Kqh>GwtUmEdVPE8}m9d@B9A;;VVEx literal 0 HcmV?d00001 diff --git a/docs/apple-touch-icon-76x76.png b/docs/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba4fa2f0e5b04177585f7e92311ba63fcdbcaa5 GIT binary patch literal 6537 zcmV;48FuE0P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/docs/articles/BasicREDCapROperations.html b/docs/articles/BasicREDCapROperations.html index 7ea98e5b..9735b0ac 100644 --- a/docs/articles/BasicREDCapROperations.html +++ b/docs/articles/BasicREDCapROperations.html @@ -12,22 +12,22 @@ - - - - - + + + + + + - - - + + - +

    Read all records and fields

    If no information is passed about the desired records or fields, then the entire data set is returned. Only two parameters are required, redcap_uri and token. Unless the verbose parameter is set to FALSE, a message will be printed on the R console with the number of records and fields returned.

    -
    #Return all records and all variables.
    -ds_all_rows_all_fields <- redcap_read(redcap_uri=uri, token=token)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.5 seconds.  The http status code was 200.
    -
    5 records and 1 columns were read from REDCap in 0.4 seconds.  The http status code was 200.
    -
    Starting to read 5 records  at 2020-02-18 10:35:33.
    +
    # Return all records and all variables.
    +ds_all_rows_all_fields <- redcap_read(redcap_uri = uri, token = token)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.4 seconds.  The http status code was 200.
    +
    5 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    Starting to read 5 records  at 2020-04-19 13:31:36.
    Reading batch 1 of 1, with subjects 1 through 5 (ie, 5 unique subject records).
    -
    5 records and 24 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    5 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       .default = col_double(),
    @@ -155,7 +137,7 @@ 

    mugshot = col_character() )

    See spec(...) for full column specifications.
    -
    ds_all_rows_all_fields #Inspect the returned dataset
    +
    ds_all_rows_all_fields # Inspect the returned dataset
      record_id name_first name_last                                 address
     1         1     Nutmeg  Nutmouse 14 Rose Cottage St.\nKenning UK, 323232
     2         2     Tumtum  Nutmouse 14 Rose Cottage Blvd.\nKenning UK 34243
    @@ -198,18 +180,18 @@ 

    Read a subset of the records

    If only a subset of the records is desired, the two approaches are shown below. The first is to pass an array (where each element is an ID) to the records parameter. The second is to pass a single string (where the elements are separated by commas) to the records_collapsed parameter.

    The first format is more natural for more R users. The second format is what is expected by the REDCap API. If a value for records is specified, but records_collapsed is not specified, then redcap_read_oneshot automatically converts the array into the format needed by the API.

    -
    #Return only records with IDs of 1 and 3
    -desired_records_v1 <- c(1, 3)
    -ds_some_rows_v1 <- redcap_read(
    -   redcap_uri = uri,
    -   token      = token,
    -   records    = desired_records_v1
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    2 records and 1 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    Starting to read 2 records  at 2020-02-18 10:35:35.
    +
    # Return only records with IDs of 1 and 3
    +desired_records_v1 <- c(1, 3)
    +ds_some_rows_v1 <- redcap_read(
    +  redcap_uri = uri,
    +  token      = token,
    +  records    = desired_records_v1
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    2 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    Starting to read 2 records  at 2020-04-19 13:31:37.
    Reading batch 1 of 1, with subjects 1 through 3 (ie, 2 unique subject records).
    -
    2 records and 24 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    2 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       .default = col_double(),
    @@ -223,18 +205,18 @@ 

    mugshot = col_character() )

    See spec(...) for full column specifications.
    -
    #Return only records with IDs of 1 and 3 (alternate way)
    -desired_records_v2 <- "1, 3"
    -ds_some_rows_v2 <- redcap_read(
    -   redcap_uri        = uri,
    -   token             = token,
    -   records_collapsed = desired_records_v2
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    2 records and 1 columns were read from REDCap in 0.7 seconds.  The http status code was 200.
    -
    Starting to read 2 records  at 2020-02-18 10:35:37.
    +
    # Return only records with IDs of 1 and 3 (alternate way)
    +desired_records_v2 <- "1, 3"
    +ds_some_rows_v2 <- redcap_read(
    +  redcap_uri        = uri,
    +  token             = token,
    +  records_collapsed = desired_records_v2
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    2 records and 1 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    Starting to read 2 records  at 2020-04-19 13:31:38.
    Reading batch 1 of 1, with subjects 1 through 3 (ie, 2 unique subject records).
    -
    2 records and 24 columns were read from REDCap in 0.4 seconds.  The http status code was 200.
    +
    2 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       .default = col_double(),
    @@ -248,7 +230,7 @@ 

    mugshot = col_character() )

    See spec(...) for full column specifications.
    -
    ds_some_rows_v2 #Inspect the returned dataset
    +
    ds_some_rows_v2 # Inspect the returned dataset
      record_id name_first name_last                                 address
     1         1     Nutmeg  Nutmouse 14 Rose Cottage St.\nKenning UK, 323232
     2         3     Marcus      Wood          243 Hill St.\nGuthrie OK 73402
    @@ -269,43 +251,43 @@ 

    Read a subset of the fields

    If only a subset of the fields is desired, then two approaches exist. The first is to pass an array (where each element is an field) to the fields parameter. The second is to pass a single string (where the elements are separated by commas) to the fields_collapsed parameter. Like with records and records_collapsed described above, this function converts the more natural format (i.e., fields) to the format required by the API (ie, fields_collapsed) if fields is specified and fields_collapsed is not.

    -
    #Return only the fields record_id, name_first, and age
    -desired_fields_v1 <- c("record_id", "name_first", "age")
    -ds_some_fields_v1 <- redcap_read(
    -   redcap_uri = uri,
    -   token      = token,
    -   fields     = desired_fields_v1
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    #Return only the fields record_id, name_first, and age
    +desired_fields_v1 <- c("record_id", "name_first", "age")
    +ds_some_fields_v1 <- redcap_read(
    +  redcap_uri = uri,
    +  token      = token,
    +  fields     = desired_fields_v1
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    5 records and 1 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    Starting to read 5 records  at 2020-02-18 10:35:38.
    +
    Starting to read 5 records  at 2020-04-19 13:31:40.
    Reading batch 1 of 1, with subjects 1 through 5 (ie, 5 unique subject records).
    -
    5 records and 3 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    5 records and 3 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       record_id = col_double(),
       name_first = col_character(),
       age = col_double()
     )
    -
    #Return only the fields record_id, name_first, and age (alternate way)
    -desired_fields_v2 <- "record_id, name_first, age"
    -ds_some_fields_v2 <- redcap_read(
    -   redcap_uri       = uri,
    -   token            = token,
    -   fields_collapsed = desired_fields_v2
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    5 records and 1 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    Starting to read 5 records  at 2020-02-18 10:35:40.
    +
    #Return only the fields record_id, name_first, and age (alternate way)
    +desired_fields_v2 <- "record_id, name_first, age"
    +ds_some_fields_v2 <- redcap_read(
    +  redcap_uri       = uri,
    +  token            = token,
    +  fields_collapsed = desired_fields_v2
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    5 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    Starting to read 5 records  at 2020-04-19 13:31:41.
    Reading batch 1 of 1, with subjects 1 through 5 (ie, 5 unique subject records).
    -
    5 records and 3 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    5 records and 3 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       record_id = col_double(),
       name_first = col_character(),
       age = col_double()
     )
    -
    ds_some_fields_v2 #Inspect the returned dataset
    +
    ds_some_fields_v2 #Inspect the returned dataset
      record_id name_first age
     1         1     Nutmeg  11
     2         2     Tumtum  11
    @@ -317,51 +299,51 @@ 

    Read a subset of records, conditioned on the values in some variables

    The two techniques above can be combined when your datasets are large and you don’t want to pull records with certain values. Suppose you want to select subjects from the previous dataset if the were born before 1960 and their weight was over 70kg. Two calls to the server are required. The first call to REDCap pulls all the records, but for only three columns: record_id, dob, and weight. From this subset, identify the records that you want to pull all the data for; in this case, the desired record_id values are 3 & 5. The second call to REDCap pulls all the columns, but only for the identified records.

    -
    ######
    -## Step 1: First call to REDCap
    -desired_fields_v3 <- c("record_id", "dob", "weight")
    -ds_some_fields_v3 <- redcap_read(
    -   redcap_uri = uri,
    -   token      = token,
    -   fields     = desired_fields_v3
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    ######
    +## Step 1: First call to REDCap
    +desired_fields_v3 <- c("record_id", "dob", "weight")
    +ds_some_fields_v3 <- redcap_read(
    +  redcap_uri = uri,
    +  token      = token,
    +  fields     = desired_fields_v3
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    5 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    -
    Starting to read 5 records  at 2020-02-18 10:35:41.
    +
    Starting to read 5 records  at 2020-04-19 13:31:42.
    Reading batch 1 of 1, with subjects 1 through 5 (ie, 5 unique subject records).
    -
    5 records and 3 columns were read from REDCap in 0.4 seconds.  The http status code was 200.
    +
    5 records and 3 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       record_id = col_double(),
       dob = col_date(format = ""),
       weight = col_double()
     )
    -
    ds_some_fields_v3 #Examine the these three variables.
    +
    ds_some_fields_v3 #Examine the these three variables.
      record_id        dob weight
     1         1 2003-08-30      1
     2         2 2003-03-10      1
     3         3 1934-04-09     80
     4         4 1952-11-02     54
     5         5 1955-04-15    104
    -
    ######
    -## Step 2: identify desired records, based on age & weight
    -before_1960 <- (ds_some_fields_v3$dob <= as.Date("1960-01-01"))
    -heavier_than_70_kg <- (ds_some_fields_v3$weight > 70)
    -desired_records_v3 <- ds_some_fields_v3[before_1960 & heavier_than_70_kg, ]$record_id
    -
    -desired_records_v3 #Peek at IDs of the identified records
    +
    ######
    +## Step 2: identify desired records, based on age & weight
    +before_1960 <- (ds_some_fields_v3$dob <= as.Date("1960-01-01"))
    +heavier_than_70_kg <- (ds_some_fields_v3$weight > 70)
    +desired_records_v3 <- ds_some_fields_v3[before_1960 & heavier_than_70_kg, ]$record_id
    +
    +desired_records_v3 #Peek at IDs of the identified records
    [1] 3 5
    -
    ######
    -## Step 3: second call to REDCap
    -#Return only records that met the age & weight criteria.
    -ds_some_rows_v3 <- redcap_read(
    -   redcap_uri = uri,
    -   token      = token,
    -   records    = desired_records_v3
    -)$data
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    2 records and 1 columns were read from REDCap in 0.4 seconds.  The http status code was 200.
    -
    Starting to read 2 records  at 2020-02-18 10:35:43.
    +
    ######
    +## Step 3: second call to REDCap
    +#Return only records that met the age & weight criteria.
    +ds_some_rows_v3 <- redcap_read(
    +  redcap_uri = uri,
    +  token      = token,
    +  records    = desired_records_v3
    +)$data
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    2 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    Starting to read 2 records  at 2020-04-19 13:31:44.
    Reading batch 1 of 1, with subjects 3 through 5 (ie, 2 unique subject records).
    2 records and 24 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    Parsed with column specification:
    @@ -377,7 +359,7 @@ 

    mugshot = col_character() )

    See spec(...) for full column specifications.
    -
    ds_some_rows_v3 #Examine the results.
    +
    ds_some_rows_v3 #Examine the results.
      record_id name_first name_last                            address
     1         3     Marcus      Wood     243 Hill St.\nGuthrie OK 73402
     2         5   John Lee    Walker Hotel Suite\nNew Orleans LA, 70115
    @@ -410,24 +392,24 @@ 

  • The fields_collapsed fields passed to the API. This shows which field subsets, if any, were requested.
  • The elapsed_seconds measures the duration of the call.
  • -
    #Return only the fields record_id, name_first, and age
    -all_information <- redcap_read(
    -   redcap_uri = uri,
    -   token      = token,
    -   fields     = desired_fields_v1
    -)
    -
    The data dictionary describing 16 fields was read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    5 records and 1 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    Starting to read 5 records  at 2020-02-18 10:35:44.
    +
    #Return only the fields record_id, name_first, and age
    +all_information <- redcap_read(
    +  redcap_uri = uri,
    +  token      = token,
    +  fields     = desired_fields_v1
    +)
    +
    The data dictionary describing 16 fields was read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    5 records and 1 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    Starting to read 5 records  at 2020-04-19 13:31:45.
    Reading batch 1 of 1, with subjects 1 through 5 (ie, 5 unique subject records).
    -
    5 records and 3 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    +
    5 records and 3 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    Parsed with column specification:
     cols(
       record_id = col_double(),
       name_first = col_character(),
       age = col_double()
     )
    -
    all_information #Inspect the additional information
    +
    all_information #Inspect the additional information
    $data
       record_id name_first age
     1         1     Nutmeg  11
    @@ -443,7 +425,7 @@ 

    [1] "200" $outcome_messages -[1] "5 records and 3 columns were read from REDCap in 0.3 seconds. The http status code was 200." +[1] "5 records and 3 columns were read from REDCap in 0.2 seconds. The http status code was 200." $records_collapsed [1] "" @@ -461,7 +443,7 @@

    [1] "" $elapsed_seconds -[1] 1.400878

    +[1] 1.284016

    @@ -471,7 +453,7 @@

    Environment

    ─ Session info ───────────────────────────────────────────────────────────────
      setting  value                       
    - version  R version 3.6.2 (2019-12-12)
    + version  R version 3.6.3 (2020-02-29)
      os       Ubuntu 19.10                
      system   x86_64, linux-gnu           
      ui       X11                         
    @@ -479,102 +461,76 @@ 

    collate en_US.UTF-8 ctype en_US.UTF-8 tz America/Chicago - date 2020-02-18 + date 2020-04-19 ─ Packages ─────────────────────────────────────────────────────────────────── package * version date lib source assertthat 0.2.1 2019-03-21 [2] CRAN (R 3.6.1) - backports 1.1.5 2019-10-02 [2] CRAN (R 3.6.1) - callr 3.4.2 2020-02-12 [2] CRAN (R 3.6.2) + backports 1.1.6 2020-04-05 [2] CRAN (R 3.6.3) checkmate 2.0.0 2019-12-03 [2] local - cli 2.0.1 2020-01-08 [2] CRAN (R 3.6.1) + cli 2.0.2 2020-02-28 [2] CRAN (R 3.6.2) colorspace 1.4-1 2019-03-18 [2] CRAN (R 3.6.1) crayon 1.3.4 2017-09-16 [2] CRAN (R 3.6.1) curl 4.3 2019-12-02 [2] CRAN (R 3.6.1) desc 1.2.0 2018-05-01 [2] CRAN (R 3.6.1) - devtools 2.2.1 2019-09-24 [2] CRAN (R 3.6.1) - digest 0.6.24 2020-02-12 [2] CRAN (R 3.6.2) - dplyr 0.8.4 2020-01-31 [2] CRAN (R 3.6.2) + digest 0.6.25 2020-02-23 [2] CRAN (R 3.6.2) + dplyr 0.8.5 2020-03-07 [2] CRAN (R 3.6.3) ellipsis 0.3.0 2019-09-20 [2] CRAN (R 3.6.1) evaluate 0.14 2019-05-28 [2] CRAN (R 3.6.1) fansi 0.4.1 2020-01-08 [2] CRAN (R 3.6.1) - fs 1.3.1 2019-05-06 [2] CRAN (R 3.6.1) - glue 1.3.1 2019-03-12 [2] CRAN (R 3.6.1) + fs 1.4.1 2020-04-04 [2] CRAN (R 3.6.3) + glue 1.4.0 2020-04-03 [2] CRAN (R 3.6.3) hms 0.5.3 2020-01-08 [2] CRAN (R 3.6.1) htmltools 0.4.0 2019-10-04 [2] CRAN (R 3.6.1) httr 1.4.1 2019-08-05 [2] CRAN (R 3.6.1) kableExtra 1.1.0 2019-03-16 [2] CRAN (R 3.6.1) knitr * 1.28 2020-02-06 [2] CRAN (R 3.6.2) - lifecycle 0.1.0 2019-08-01 [2] CRAN (R 3.6.1) + lifecycle 0.2.0 2020-03-06 [2] CRAN (R 3.6.3) magrittr * 1.5 2014-11-22 [2] CRAN (R 3.6.1) MASS 7.3-51.5 2019-12-20 [5] CRAN (R 3.6.2) memoise 1.1.0 2017-04-21 [2] CRAN (R 3.6.1) munsell 0.5.0 2018-06-12 [2] CRAN (R 3.6.1) pillar 1.4.3 2019-12-20 [2] CRAN (R 3.6.1) - pkgbuild 1.0.6 2019-10-09 [2] CRAN (R 3.6.1) pkgconfig 2.0.3 2019-09-22 [2] CRAN (R 3.6.1) - pkgdown 1.4.1 2019-09-15 [2] CRAN (R 3.6.1) - pkgload 1.0.2 2018-10-29 [2] CRAN (R 3.6.1) - prettyunits 1.1.1 2020-01-24 [2] CRAN (R 3.6.2) - processx 3.4.2 2020-02-09 [2] CRAN (R 3.6.2) - ps 1.3.2 2020-02-13 [2] CRAN (R 3.6.2) + pkgdown 1.5.0 2020-03-25 [2] CRAN (R 3.6.3) purrr 0.3.3 2019-10-18 [2] CRAN (R 3.6.1) R6 2.4.1 2019-11-12 [2] CRAN (R 3.6.1) - Rcpp 1.0.3 2019-11-08 [2] CRAN (R 3.6.1) + Rcpp 1.0.4 2020-03-17 [2] CRAN (R 3.6.3) readr 1.3.1 2018-12-21 [2] CRAN (R 3.6.1) - REDCapR * 0.10.2.9005 2020-02-18 [1] local - remotes 2.1.1 2020-02-15 [2] CRAN (R 3.6.2) - rlang 0.4.4 2020-01-28 [2] CRAN (R 3.6.2) + REDCapR * 0.10.2.9006 2020-04-19 [1] local + rlang 0.4.5 2020-03-01 [2] CRAN (R 3.6.2) rmarkdown 2.1 2020-01-20 [2] CRAN (R 3.6.2) rprojroot 1.3-2 2018-01-03 [2] CRAN (R 3.6.1) rstudioapi 0.11 2020-02-07 [2] CRAN (R 3.6.2) rvest 0.3.5 2019-11-08 [2] CRAN (R 3.6.1) scales 1.1.0 2019-11-18 [2] CRAN (R 3.6.1) sessioninfo 1.1.1 2018-11-05 [2] CRAN (R 3.6.1) - stringi 1.4.5 2020-01-11 [2] CRAN (R 3.6.1) + stringi 1.4.6 2020-02-17 [2] CRAN (R 3.6.2) stringr 1.4.0 2019-02-10 [2] CRAN (R 3.6.1) - testthat 2.3.1 2019-12-01 [2] CRAN (R 3.6.1) - tibble 2.1.3 2019-06-06 [2] CRAN (R 3.6.1) + tibble 3.0.0 2020-03-30 [2] CRAN (R 3.6.3) tidyselect 1.0.0 2020-01-27 [2] CRAN (R 3.6.2) - usethis 1.5.1 2019-07-04 [2] CRAN (R 3.6.1) - vctrs 0.2.2 2020-01-24 [2] CRAN (R 3.6.2) + vctrs 0.2.4 2020-03-10 [2] CRAN (R 3.6.3) viridisLite 0.3.0 2018-02-01 [2] CRAN (R 3.6.1) webshot 0.5.2 2019-11-22 [2] CRAN (R 3.6.1) withr 2.1.2 2018-03-15 [2] CRAN (R 3.6.1) xfun 0.12 2020-01-13 [2] CRAN (R 3.6.1) - xml2 1.2.2 2019-08-09 [2] CRAN (R 3.6.1) + xml2 1.3.0 2020-04-01 [2] CRAN (R 3.6.3) yaml 2.2.1 2020-02-01 [2] CRAN (R 3.6.2) -[1] /tmp/RtmpQwpj1Q/temp_libpath20fe13c92d77 +[1] /tmp/Rtmp5avAp4/temp_libpath4e6a183ad817 [2] /home/wibeasley/R/x86_64-pc-linux-gnu-library/3.6 [3] /usr/local/lib/R/site-library [4] /usr/lib/R/site-library [5] /usr/lib/R/library

    -

    Report rendered by wibeasley at 2020-02-18, 10:35 -0600 in 15 seconds.

    +

    Report rendered by wibeasley at 2020-04-19, 13:31 -0500 in 15 seconds.

    - @@ -585,7 +541,7 @@

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/articles/SecurityDatabase.html b/docs/articles/SecurityDatabase.html index 360ce19f..27c5a7de 100644 --- a/docs/articles/SecurityDatabase.html +++ b/docs/articles/SecurityDatabase.html @@ -12,22 +12,22 @@ - - - - - + + + + + + - - - + + - +

    @@ -444,22 +343,11 @@

    - @@ -470,7 +358,7 @@

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/articles/TroubleshootingApiCalls.html b/docs/articles/TroubleshootingApiCalls.html index b1ee5f83..c286a245 100644 --- a/docs/articles/TroubleshootingApiCalls.html +++ b/docs/articles/TroubleshootingApiCalls.html @@ -12,22 +12,22 @@ - - - - - + + + + + + - - - + + - +
    - @@ -564,7 +517,7 @@

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/articles/advanced-redcapr-operations.html b/docs/articles/advanced-redcapr-operations.html index 98ef4a33..98d88ac2 100644 --- a/docs/articles/advanced-redcapr-operations.html +++ b/docs/articles/advanced-redcapr-operations.html @@ -12,22 +12,22 @@ - - - - - + + + + + + - - - + + - +

    Converting from tall/long to wide

    Disclaimer: Occasionally we’re asked for a longitudinal dataset to be converted from a “long/tall format” (where typically each row is one observation for a participant) to a “wide format” (where each row is on participant). Usually we advise against it. Besides all the database benefits of a long structure, a wide structure restricts your options with the stat routine. No modern longitudinal analysis procedures (e.g., growth curve models or multilevel/hierarchical models) accept wide. You’re pretty much stuck with repeated measures anova, which is very inflexible for real-world medical-ish analyses. It requires a patient to have a measurement at every time point; otherwise the anova excludes the patient entirely.

    However we like going wide to produce visual tables for publications, and here’s one way to do it in R. First retrieve the dataset from REDCap.

    -
    library(magrittr);
    -suppressPackageStartupMessages(requireNamespace("dplyr"))
    -suppressPackageStartupMessages(requireNamespace("tidyr"))
    -events_to_retain  <- c("dose_1_arm_1", "visit_1_arm_1", "dose_2_arm_1", "visit_2_arm_1")
    -
    -ds_long <- REDCapR::redcap_read_oneshot(redcap_uri=uri, token=token_longitudinal)$data
    -
    #> 18 records and 125 columns were read from REDCap in 0.6 seconds.  The http status code was 200.
    -
    ds_long %>%
    -  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4)
    +
    library(magrittr);
    +suppressPackageStartupMessages(requireNamespace("dplyr"))
    +suppressPackageStartupMessages(requireNamespace("tidyr"))
    +events_to_retain  <- c("dose_1_arm_1", "visit_1_arm_1", "dose_2_arm_1", "visit_2_arm_1")
    +
    +ds_long <- REDCapR::redcap_read_oneshot(redcap_uri = uri, token = token_longitudinal)$data
    +
    #> 18 records and 125 columns were read from REDCap in 0.5 seconds.  The http status code was 200.
    +
    ds_long %>%
    +  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4)
    #>    study_id        redcap_event_name pmq1 pmq2 pmq3 pmq4
     #> 1       100         enrollment_arm_1   NA   NA   NA   NA
     #> 2       100             dose_1_arm_1    2    2    1    1
    @@ -166,44 +148,44 @@ 

    #> 17 304 final_visit_arm_2 NA NA NA NA #> 18 304 deadline_to_return_arm_2 NA NA NA NA

    When widening only one variable (e.g., pmq1), the code’s pretty simple:

    -
    ds_wide <-
    -  ds_long %>%
    -  dplyr::select(study_id, redcap_event_name, pmq1) %>%
    -  dplyr::filter(redcap_event_name %in% events_to_retain) %>%
    -  tidyr::pivot_wider(
    -    id_cols     = study_id,
    -    names_from  = redcap_event_name,
    -    values_from = pmq1
    -  )
    -  # For old versions of tidyr that predate `pivot_wider()`:
    -  # tidyr::spread(key=redcap_event_name, value=pmq1)
    -ds_wide
    +
    ds_wide <-
    +  ds_long %>%
    +  dplyr::select(study_id, redcap_event_name, pmq1) %>%
    +  dplyr::filter(redcap_event_name %in% events_to_retain) %>%
    +  tidyr::pivot_wider(
    +    id_cols     = study_id,
    +    names_from  = redcap_event_name,
    +    values_from = pmq1
    +  )
    +  # For old versions of tidyr that predate `pivot_wider()`:
    +  # tidyr::spread(key=redcap_event_name, value=pmq1)
    +ds_wide
    #> # A tibble: 2 x 5
     #>   study_id dose_1_arm_1 visit_1_arm_1 dose_2_arm_1 visit_2_arm_1
     #>      <dbl>        <dbl>         <dbl>        <dbl>         <dbl>
     #> 1      100            2             1            3             0
     #> 2      220            0             0            1             3

    In some scenarios, multiple variables (e.g., pmq1 - pmq4) can be widened in a single tidyr::pivot_wider() operation. This example contains the additional wrinkle that the REDCap event names “first_dose” and “first_visit” are renamed “dose_1” and “visit_1”, which will help all the values be dose and visit values be proper numbers.

    -
    pattern <- "^(\\w+?)_arm_(\\d)$"
    -ds_wide <-
    -  ds_long %>%
    -  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4) %>%
    -  dplyr::mutate(
    -    event = sub(pattern, "\\1", redcap_event_name),
    -    event = dplyr::recode(event, "first_dose"="dose_1", "first_visit"="visit_1"),
    -    arm   = as.integer(sub(pattern, "\\2", redcap_event_name))
    -  ) %>%
    -  dplyr::select(study_id, event, arm, pmq1, pmq2, pmq3, pmq4) %>%
    -  dplyr::filter(!(event %in% c(
    -    "enrollment", "final_visit", "deadline_to_return", "deadline_to_opt_ou")
    -  )) %>%
    -  tidyr::pivot_wider(
    -    id_cols     = c(study_id, arm),
    -    names_from  = event,
    -    values_from = c(pmq1, pmq2, pmq3, pmq4)
    -  )
    -
    -ds_wide
    +
    pattern <- "^(\\w+?)_arm_(\\d)$"
    +ds_wide <-
    +  ds_long %>%
    +  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4) %>%
    +  dplyr::mutate(
    +    event = sub(pattern, "\\1", redcap_event_name),
    +    event = dplyr::recode(event, "first_dose"="dose_1", "first_visit"="visit_1"),
    +    arm   = as.integer(sub(pattern, "\\2", redcap_event_name))
    +  ) %>%
    +  dplyr::select(study_id, event, arm, pmq1, pmq2, pmq3, pmq4) %>%
    +  dplyr::filter(!(event %in% c(
    +    "enrollment", "final_visit", "deadline_to_return", "deadline_to_opt_ou")
    +  )) %>%
    +  tidyr::pivot_wider(
    +    id_cols     = c(study_id, arm),
    +    names_from  = event,
    +    values_from = c(pmq1, pmq2, pmq3, pmq4)
    +  )
    +
    +ds_wide
    #> # A tibble: 3 x 18
     #>   study_id   arm pmq1_dose_1 pmq1_visit_1 pmq1_dose_2 pmq1_visit_2 pmq2_dose_1
     #>      <dbl> <int>       <dbl>        <dbl>       <dbl>        <dbl>       <dbl>
    @@ -215,33 +197,33 @@ 

    #> # pmq3_dose_2 <dbl>, pmq3_visit_2 <dbl>, pmq4_dose_1 <dbl>, #> # pmq4_visit_1 <dbl>, pmq4_dose_2 <dbl>, pmq4_visit_2 <dbl>

    However, in other widening scenarios, it can be easier to go even longer/taller (e.g., ds_eav) before reversing direction and going wide.

    -
    ds_eav <-
    -  ds_long %>%
    -  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4) %>%
    -  dplyr::mutate(
    -    event = sub(pattern, "\\1", redcap_event_name),
    -    event = dplyr::recode(event, "first_dose"="dose_1", "first_visit"="visit_1"),
    -    arm   = as.integer(sub(pattern, "\\2", redcap_event_name))
    -  ) %>%
    -  dplyr::select(study_id, event, arm, pmq1, pmq2, pmq3, pmq4) %>%
    -  tidyr::pivot_longer(
    -    cols      = c(pmq1, pmq2, pmq3, pmq4),
    -    names_to  = "key",
    -    values_to = "value"
    -  ) %>%
    -  # For old versions of tidyr that predate `pivot_wider()`:
    -  # tidyr::gather(key=key, value=value, pmq1, pmq2, pmq3, pmq4) %>%
    -  dplyr::filter(!(event %in% c(
    -    "enrollment", "final_visit", "deadline_to_return", "deadline_to_opt_ou")
    -  )) %>%
    -  dplyr::mutate( # Simulate correcting for mismatched names across arms:
    -    key = paste0(key, "_", event)
    -  ) %>%
    -  dplyr::select(-event)
    -
    -# Show the first 10 rows of the EAV table.
    -ds_eav %>%
    -  head(10)
    +
    ds_eav <-
    +  ds_long %>%
    +  dplyr::select(study_id, redcap_event_name, pmq1, pmq2, pmq3, pmq4) %>%
    +  dplyr::mutate(
    +    event = sub(pattern, "\\1", redcap_event_name),
    +    event = dplyr::recode(event, "first_dose" = "dose_1", "first_visit" = "visit_1"),
    +    arm   = as.integer(sub(pattern, "\\2", redcap_event_name))
    +  ) %>%
    +  dplyr::select(study_id, event, arm, pmq1, pmq2, pmq3, pmq4) %>%
    +  tidyr::pivot_longer(
    +    cols      = c(pmq1, pmq2, pmq3, pmq4),
    +    names_to  = "key",
    +    values_to = "value"
    +  ) %>%
    +  # For old versions of tidyr that predate `pivot_wider()`:
    +  # tidyr::gather(key=key, value=value, pmq1, pmq2, pmq3, pmq4) %>%
    +  dplyr::filter(!(event %in% c(
    +    "enrollment", "final_visit", "deadline_to_return", "deadline_to_opt_ou")
    +  )) %>%
    +  dplyr::mutate( # Simulate correcting for mismatched names across arms:
    +    key = paste0(key, "_", event)
    +  ) %>%
    +  dplyr::select(-event)
    +
    +# Show the first 10 rows of the EAV table.
    +ds_eav %>%
    +  head(10)
    #> # A tibble: 10 x 4
     #>    study_id   arm key          value
     #>       <dbl> <int> <chr>        <dbl>
    @@ -255,17 +237,17 @@ 

    #> 8 100 1 pmq4_visit_1 0 #> 9 100 1 pmq1_dose_2 3 #> 10 100 1 pmq2_dose_2 1

    -
    # Spread the EAV to wide.
    -ds_wide_2 <-
    -  ds_eav %>%
    -  tidyr::pivot_wider(
    -    id_cols     = c(study_id, arm),
    -    names_from  = key,
    -    values_from = value
    -  )
    -  # For old versions of tidyr that predate `pivot_wider()`:
    -  # tidyr::spread(key=key, value=value)
    -ds_wide_2
    +
    # Spread the EAV to wide.
    +ds_wide_2 <-
    +  ds_eav %>%
    +  tidyr::pivot_wider(
    +    id_cols     = c(study_id, arm),
    +    names_from  = key,
    +    values_from = value
    +  )
    +  # For old versions of tidyr that predate `pivot_wider()`:
    +  # tidyr::spread(key=key, value=value)
    +ds_wide_2
    #> # A tibble: 3 x 18
     #>   study_id   arm pmq1_dose_1 pmq2_dose_1 pmq3_dose_1 pmq4_dose_1 pmq1_visit_1
     #>      <dbl> <int>       <dbl>       <dbl>       <dbl>       <dbl>        <dbl>
    @@ -278,35 +260,64 @@ 

    #> # pmq2_visit_2 <dbl>, pmq3_visit_2 <dbl>, pmq4_visit_2 <dbl>

    Lots of packages and documentation exist. Our current preference is the tidyverse approach to pivoting, but the data.table approach is worth considering if you’re comfortable with that package. This Stack Overflow post describes several ways. We recommend against the reshape and reshape2 packages, because their developers have replaced them with the tidyr functions described above.

    +
    +

    +Query the Underlying MySQL Database

    +

    If you require a feature that is not available from your instance’s API, first upgrade your institution’s REDcap instance and see if the feature has been added recently. Second, check if someone has released the desired API-like features as an REDCap External Module.

    +

    Third, you may need to query the database underneath REDCap’s web server. The Transfer Credentials section of the Security Database Vignette provides a complete example of using R to query the MySQL database through odbc.

    +

    We find it’s best to develop the query in MySQL Workbench, then copy the code to R (or alternatively, use OuhscMunge::execute_sql_file()).

    +

    Here is an example that retrieves the first_submit_time, which is helpful if you need a timestamp from surveys that were not marked as completed. Replace ‘444’ with your pid, and 1001 through 1003 with the desired events.

    +
    SELECT 
    +  p.participant_id      as participant_survey_id
    +  ,r.record             as record_id
    +  ,p.event_id
    +  ,e.descrip            as event_name
    +  ,r.first_submit_time
    +  ,r.completion_time
    +  
    +  -- ,p.*
    +  -- ,r.*
    +FROM redcapv3.redcap_surveys_participants     as p
    +  left  join redcapv3.redcap_surveys_response as r on p.participant_id = r.participant_id
    +  left  join redcapv3.redcap_events_metadata  as e on p.event_id       = e.event_id
    +where 
    +  p.survey_id = 444
    +  and
    +  p.event_id in (
    +    1001, -- start of the year
    +    1002, -- mid term
    +    1003  -- end of year
    +  )
    +

    SSL Options

    The official cURL site discusses the process of using SSL to verify the server being connected to.

    Use the SSL cert file that come with the openssl package.

    -
    cert_location <- system.file("cacert.pem", package="openssl")
    -if( file.exists(cert_location) ) {
    -  config_options         <- list(cainfo=cert_location)
    -  ds_different_cert_file <- redcap_read_oneshot(
    -    redcap_uri     = uri,
    -    token          = token_simple,
    -    config_options = config_options
    -  )$data
    -}
    +
    cert_location <- system.file("cacert.pem", package = "openssl")
    +if (file.exists(cert_location)) {
    +  config_options         <- list(cainfo = cert_location)
    +  ds_different_cert_file <- redcap_read_oneshot(
    +    redcap_uri     = uri,
    +    token          = token_simple,
    +    config_options = config_options
    +  )$data
    +}
    #> 5 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.

    Force the connection to use SSL=3 (which is not preferred, and possibly insecure).

    -
    config_options <- list(sslversion=3)
    -ds_ssl_3 <- redcap_read_oneshot(
    -  redcap_uri     = uri,
    -  token          = token_simple,
    -  config_options = config_options
    -)$data
    -
    #> 5 records and 24 columns were read from REDCap in 0.3 seconds.  The http status code was 200.
    -
    config_options <- list(ssl.verifypeer=FALSE)
    -ds_no_ssl <- redcap_read_oneshot(
    -   redcap_uri     = uri,
    -   token          = token_simple,
    -   config_options = config_options
    -)$data
    +
    config_options <- list(sslversion = 3)
    +ds_ssl_3 <- redcap_read_oneshot(
    +  redcap_uri     = uri,
    +  token          = token_simple,
    +  config_options = config_options
    +)$data
    +
    #> 5 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    +
    config_options <- list(ssl.verifypeer = FALSE)
    +ds_no_ssl <- redcap_read_oneshot(
    +  redcap_uri     = uri,
    +  token          = token_simple,
    +  config_options = config_options
    +)$data
    #> 5 records and 24 columns were read from REDCap in 0.2 seconds.  The http status code was 200.
    @@ -325,35 +336,6 @@

    SEX 0, Male | 1, Female LANGUAGE 1, English | 2, Spanish | 3, Other | 6, Unknown

    -
    -

    -Query the Underlying MySQL Database

    -

    If you require a feature that is not available from your instance’s API, first upgrade your institution’s REDcap instance and see if the feature has been added recently. Second, check if someone has released the desired API-like features as an REDCap External Module.

    -

    Third, you may need to query the database underneath REDCap’s web server. The Transfer Credentials section of the Security Database Vignette provides a complete example of using R to query the MySQL database through odbc.

    -

    We find it’s best to develop the query in MySQL Workbench, then copy the code to R (or alternatively, use OuhscMunge::execute_sql_file()).

    -

    Here is an example that retrieves the first_submit_time, which is helpful if you need a timestamp from surveys that were not marked as completed. Replace ‘444’ with your pid, and 1001 through 1003 with the desired events.

    -
    SELECT 
    -  p.participant_id      as participant_survey_id
    -  ,r.record             as record_id
    -  ,p.event_id
    -  ,e.descrip            as event_name
    -  ,r.first_submit_time
    -  ,r.completion_time
    -  
    -  -- ,p.*
    -  -- ,r.*
    -FROM redcapv3.redcap_surveys_participants     as p
    -  left  join redcapv3.redcap_surveys_response as r on p.participant_id = r.participant_id
    -  left  join redcapv3.redcap_events_metadata  as e on p.event_id       = e.event_id
    -where 
    -  p.survey_id = 444
    -  and
    -  p.event_id in (
    -    1001, -- start of the year
    -    1002, -- mid term
    -    1003  -- end of year
    -  )
    -

    Session Information

    @@ -369,27 +351,25 @@

    #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz America/Chicago -#> date 2020-03-13 +#> date 2020-04-19 #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date lib source #> assertthat 0.2.1 2019-03-21 [2] CRAN (R 3.6.1) -#> backports 1.1.5 2019-10-02 [2] CRAN (R 3.6.1) -#> callr 3.4.2 2020-02-12 [2] CRAN (R 3.6.2) +#> backports 1.1.6 2020-04-05 [2] CRAN (R 3.6.3) #> checkmate 2.0.0 2019-12-03 [2] local #> cli 2.0.2 2020-02-28 [2] CRAN (R 3.6.2) #> colorspace 1.4-1 2019-03-18 [2] CRAN (R 3.6.1) #> crayon 1.3.4 2017-09-16 [2] CRAN (R 3.6.1) #> curl 4.3 2019-12-02 [2] CRAN (R 3.6.1) #> desc 1.2.0 2018-05-01 [2] CRAN (R 3.6.1) -#> devtools 2.2.2 2020-02-17 [2] CRAN (R 3.6.2) #> digest 0.6.25 2020-02-23 [2] CRAN (R 3.6.2) #> dplyr 0.8.5 2020-03-07 [2] CRAN (R 3.6.3) #> ellipsis 0.3.0 2019-09-20 [2] CRAN (R 3.6.1) #> evaluate 0.14 2019-05-28 [2] CRAN (R 3.6.1) #> fansi 0.4.1 2020-01-08 [2] CRAN (R 3.6.1) -#> fs 1.3.2 2020-03-05 [2] CRAN (R 3.6.3) -#> glue 1.3.2 2020-03-12 [2] CRAN (R 3.6.3) +#> fs 1.4.1 2020-04-04 [2] CRAN (R 3.6.3) +#> glue 1.4.0 2020-04-03 [2] CRAN (R 3.6.3) #> hms 0.5.3 2020-01-08 [2] CRAN (R 3.6.1) #> htmltools 0.4.0 2019-10-04 [2] CRAN (R 3.6.1) #> httr 1.4.1 2019-08-05 [2] CRAN (R 3.6.1) @@ -401,19 +381,13 @@

    #> memoise 1.1.0 2017-04-21 [2] CRAN (R 3.6.1) #> munsell 0.5.0 2018-06-12 [2] CRAN (R 3.6.1) #> pillar 1.4.3 2019-12-20 [2] CRAN (R 3.6.1) -#> pkgbuild 1.0.6 2019-10-09 [2] CRAN (R 3.6.1) #> pkgconfig 2.0.3 2019-09-22 [2] CRAN (R 3.6.1) -#> pkgdown 1.4.1 2019-09-15 [2] CRAN (R 3.6.1) -#> pkgload 1.0.2 2018-10-29 [2] CRAN (R 3.6.1) -#> prettyunits 1.1.1 2020-01-24 [2] CRAN (R 3.6.2) -#> processx 3.4.2 2020-02-09 [2] CRAN (R 3.6.2) -#> ps 1.3.2 2020-02-13 [2] CRAN (R 3.6.2) +#> pkgdown 1.5.0 2020-03-25 [2] CRAN (R 3.6.3) #> purrr 0.3.3 2019-10-18 [2] CRAN (R 3.6.1) #> R6 2.4.1 2019-11-12 [2] CRAN (R 3.6.1) -#> Rcpp 1.0.3 2019-11-08 [2] CRAN (R 3.6.1) +#> Rcpp 1.0.4 2020-03-17 [2] CRAN (R 3.6.3) #> readr 1.3.1 2018-12-21 [2] CRAN (R 3.6.1) -#> REDCapR * 0.10.2.9005 2020-03-14 [1] local -#> remotes 2.1.1 2020-02-15 [2] CRAN (R 3.6.2) +#> REDCapR * 0.10.2.9006 2020-04-19 [1] local #> rlang 0.4.5 2020-03-01 [2] CRAN (R 3.6.2) #> rmarkdown 2.1 2020-01-20 [2] CRAN (R 3.6.2) #> rprojroot 1.3-2 2018-01-03 [2] CRAN (R 3.6.1) @@ -423,45 +397,32 @@

    #> sessioninfo 1.1.1 2018-11-05 [2] CRAN (R 3.6.1) #> stringi 1.4.6 2020-02-17 [2] CRAN (R 3.6.2) #> stringr 1.4.0 2019-02-10 [2] CRAN (R 3.6.1) -#> testthat 2.3.2 2020-03-02 [2] CRAN (R 3.6.3) -#> tibble 2.1.3 2019-06-06 [2] CRAN (R 3.6.1) +#> tibble 3.0.0 2020-03-30 [2] CRAN (R 3.6.3) #> tidyr 1.0.2 2020-01-24 [2] CRAN (R 3.6.2) #> tidyselect 1.0.0 2020-01-27 [2] CRAN (R 3.6.2) -#> usethis 1.5.1 2019-07-04 [2] CRAN (R 3.6.1) #> utf8 1.1.4 2018-05-24 [2] CRAN (R 3.6.1) #> vctrs 0.2.4 2020-03-10 [2] CRAN (R 3.6.3) #> viridisLite 0.3.0 2018-02-01 [2] CRAN (R 3.6.1) #> webshot 0.5.2 2019-11-22 [2] CRAN (R 3.6.1) #> withr 2.1.2 2018-03-15 [2] CRAN (R 3.6.1) #> xfun 0.12 2020-01-13 [2] CRAN (R 3.6.1) -#> xml2 1.2.5 2020-03-11 [2] CRAN (R 3.6.3) +#> xml2 1.3.0 2020-04-01 [2] CRAN (R 3.6.3) #> yaml 2.2.1 2020-02-01 [2] CRAN (R 3.6.2) #> -#> [1] /tmp/Rtmp830zQN/temp_libpath1f7158fa5947 +#> [1] /tmp/Rtmp5avAp4/temp_libpath4e6a183ad817 #> [2] /home/wibeasley/R/x86_64-pc-linux-gnu-library/3.6 #> [3] /usr/local/lib/R/site-library #> [4] /usr/lib/R/site-library #> [5] /usr/lib/R/library -

    Report rendered by wibeasley at 2020-03-13, 20:40 -0500 in 4 seconds.

    +

    Report rendered by wibeasley at 2020-04-19, 13:32 -0500 in 7 seconds.

    - @@ -472,7 +433,7 @@

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/articles/index.html b/docs/articles/index.html index 97bec46b..87448b36 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,15 +46,14 @@ - + - - + @@ -68,7 +71,7 @@ - +
    @@ -97,26 +100,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -124,7 +109,7 @@
  • @@ -172,7 +161,7 @@

    Getting Started

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/authors.html b/docs/authors.html index 3364d87c..32ba9174 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,15 +46,14 @@ - + - - + @@ -68,7 +71,7 @@ - +
    @@ -97,26 +100,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -124,7 +109,7 @@
  • @@ -202,7 +191,7 @@

    Authors

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css new file mode 100644 index 00000000..5a859415 --- /dev/null +++ b/docs/bootstrap-toc.css @@ -0,0 +1,60 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ + +/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ + +/* All levels of nav */ +nav[data-toggle='toc'] .nav > li > a { + display: block; + padding: 4px 20px; + font-size: 13px; + font-weight: 500; + color: #767676; +} +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 19px; + color: #563d7c; + text-decoration: none; + background-color: transparent; + border-left: 1px solid #563d7c; +} +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + border-left: 2px solid #563d7c; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} +nav[data-toggle='toc'] .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; +} +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 29px; +} +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 28px; + font-weight: 500; +} + +/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ +nav[data-toggle='toc'] .nav > .active > ul { + display: block; +} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js new file mode 100644 index 00000000..1cdd573b --- /dev/null +++ b/docs/bootstrap-toc.js @@ -0,0 +1,159 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +(function() { + 'use strict'; + + window.Toc = { + helpers: { + // return all matching elements in the set, or their descendants + findOrFilter: function($el, selector) { + // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ + // http://stackoverflow.com/a/12731439/358804 + var $descendants = $el.find(selector); + return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); + }, + + generateUniqueIdBase: function(el) { + var text = $(el).text(); + var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); + return anchor || el.tagName.toLowerCase(); + }, + + generateUniqueId: function(el) { + var anchorBase = this.generateUniqueIdBase(el); + for (var i = 0; ; i++) { + var anchor = anchorBase; + if (i > 0) { + // add suffix + anchor += '-' + i; + } + // check if ID already exists + if (!document.getElementById(anchor)) { + return anchor; + } + } + }, + + generateAnchor: function(el) { + if (el.id) { + return el.id; + } else { + var anchor = this.generateUniqueId(el); + el.id = anchor; + return anchor; + } + }, + + createNavList: function() { + return $(''); + }, + + createChildNavList: function($parent) { + var $childList = this.createNavList(); + $parent.append($childList); + return $childList; + }, + + generateNavEl: function(anchor, text) { + var $a = $(''); + $a.attr('href', '#' + anchor); + $a.text(text); + var $li = $('
  • '); + $li.append($a); + return $li; + }, + + generateNavItem: function(headingEl) { + var anchor = this.generateAnchor(headingEl); + var $heading = $(headingEl); + var text = $heading.data('toc-text') || $heading.text(); + return this.generateNavEl(anchor, text); + }, + + // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). + getTopLevel: function($scope) { + for (var i = 1; i <= 6; i++) { + var $headings = this.findOrFilter($scope, 'h' + i); + if ($headings.length > 1) { + return i; + } + } + + return 1; + }, + + // returns the elements for the top level, and the next below it + getHeadings: function($scope, topLevel) { + var topSelector = 'h' + topLevel; + + var secondaryLevel = topLevel + 1; + var secondarySelector = 'h' + secondaryLevel; + + return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + }, + + getNavLevel: function(el) { + return parseInt(el.tagName.charAt(1), 10); + }, + + populateNav: function($topContext, topLevel, $headings) { + var $context = $topContext; + var $prevNav; + + var helpers = this; + $headings.each(function(i, el) { + var $newNav = helpers.generateNavItem(el); + var navLevel = helpers.getNavLevel(el); + + // determine the proper $context + if (navLevel === topLevel) { + // use top level + $context = $topContext; + } else if ($prevNav && $context === $topContext) { + // create a new level of the tree and switch to it + $context = helpers.createChildNavList($prevNav); + } // else use the current $context + + $context.append($newNav); + + $prevNav = $newNav; + }); + }, + + parseOps: function(arg) { + var opts; + if (arg.jquery) { + opts = { + $nav: arg + }; + } else { + opts = arg; + } + opts.$scope = opts.$scope || $(document.body); + return opts; + } + }, + + // accepts a jQuery object, or an options object + init: function(opts) { + opts = this.helpers.parseOps(opts); + + // ensure that the data attribute is in place for styling + opts.$nav.attr('data-toggle', 'toc'); + + var $topContext = this.helpers.createChildNavList(opts.$nav); + var topLevel = this.helpers.getTopLevel(opts.$scope); + var $headings = this.helpers.getHeadings(opts.$scope, topLevel); + this.helpers.populateNav($topContext, topLevel, $headings); + } + }; + + $(function() { + $('nav[data-toggle="toc"]').each(function(i, el) { + var $nav = $(el); + Toc.init($nav); + }); + }); +})(); diff --git a/docs/docsearch.json b/docs/docsearch.json index 3df6fce9..cdc94736 100644 --- a/docs/docsearch.json +++ b/docs/docsearch.json @@ -74,7 +74,7 @@ "selector": ".contents h2, .contents h3", "default_value": "Context" }, - "text": ".contents p, .contents li, .tempate-article .contents .pre" + "text": ".contents p, .contents li" } }, "selectors_exclude": [ diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..20d5957754577f371ae4ba3bf6b8a1d22a8042de GIT binary patch literal 1570 zcma)6X;4#V6#bHrog^#a1cM|7vJfhutm1}MK?s(LiWsZXR^!rEwAR+G z*dl5zo8p3?vWN&oWC<#2tz9*xbUIE)XXp<*)~UUjXlMGPGktUOzW3fe_ndR@m-ni& zGiNbq;WUI0BQ4dD3oGXTQ3!BWMYHC@612jWVMC~8Fa3ET5$>f$sks>lRVom2??C7o zJaYev(0VOGj|vbnRU;HuUelRlMhJf)drn@;077>V8m3TgA~YBrd;_5oGPy@6^l&(% za80GUD=WLEP8~zYOCk-?=^c@g15D->k?68S(kYV-2?T=-Mq55$;rKZ{uQwpsZ<~V-2m(wn|+k|i;0$1ZK@4CR^fF2y zcqtUpKS`s8H5)Y5!H>~=o`Z1k%XYH!b0oIpvf)wV$!S8KH%N=$n3;zix~zN_$Wd+5r|^uGlE>%ftj z9E?a)7_^Zr9EpTQ%vii6K2)e?1W|E#`Ic&DFisswVd0bqo6AVJ1U-dM4vML2ui`WF zV}m5TFtfY=)O>?W6t2dmJKVRrkL%a3Bn9iE9O=6s-t_D|l7yFV?Kwv$#|Q1pFdjv- zsQqa*J0*x{Qeun7es|34k@B;01nCo9@pu0y#Tg2+7ED&3?Z>d}WzN;zPyT$Gp;=n8 zYF+*FS^_U2YkB#u+m9w6Kkyu$vvzymW@r$%eD*BIFTG{?{mG*Qtpv09xzZaN+jR0ehYj0B@;ra3XmVhut>n?0H2 zNO^5mY8p9x_8bbLW@Kj3=-D~BbMu1d&0oMk%!P~cS&Ls^vUFJiR=B)~jA+Hq684HW zO5a>r7P4yf8VB<{J|+t=?IAHO!>^Iad5BgN40h)~-SV=vhDH{@dh{{R30 literal 0 HcmV?d00001 diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..02f147c021cd999d02e00b4b2182616b6940e289 GIT binary patch literal 2302 zcmZ`)dpHyN8~<*@T!z+kqFibPx)=v4HhnHjZ6Lb=RXxvbe3N?WCNDwoc(HWa60 zgyfndw|1gaGUSqLSh?hW55H2*`t$e4?|Gm1{k+fT^L(DqU+?q&cFYZ@s=PxP0HBI@ zb|lFV{i78XWHTx*Zbb%iAr3?b07_F-HUi{-h(XRIA^>rQ0I;tC@I^+kCjek#0GRRz zz)k?bc3Nij@n22sVFIc3mD%#=sePq7!^XX&Y31t3&kjXEG)W@95xhsv*g1 zAjOZV<#+y4{Cw1`Z~vsLIm!9_&yP~USRm3o6uNknEf9nTau)};>s>^Da9>EmUHTo~ zwI1kdwMPRAL2(qf61SZ@p#n$Ro&>Eo{s&%`MK=14JIGH)vpvZxG?<_i|Z91=#l=q_n=Bv$Pa=qk75X@?D?% z540UV{OrR}{DmG?ZDP}83lG#QN_VjVRFxKx4USb6C~G+N=FTd;-ly^M%hX0~kX3r# zrK=V(Sj*5Ji8eOMG2StrCp`ap!~E6AKAiMP`ve_&IsCGwqO};pR+!=1=XI72miw_y zOt7M)B%x5g*QWi+X)%#vX1t8BunFB>Q6sUMy#?I9?8UKtL8xFq>WoVBcM%0Ek@uLO4a(f3< z(dh+w#;2QjVgWl6PMb!#i-pv$wYLIM_F)Kx8%Dvgc_MipK@01g-^#U_DyS~8)&96V zJ)LBklXkZ?r|YRz7O4$+4@J|Dso3ogp0#ApF{BSMGq?77jzp}T#7WX;(%%Qu4fVT8 zc3E5N<37p(>BN$SHUt+&b~F+N6m}Uv2M~RNWJG0lCv)wMvMbbnmfL|mVDa!C@*r-- zGSHt&-)!PBE8h{lT%7ZR^5?k;E}oTgH)ox8Y{{W{dNPkc){iPYVBXU5w=fAmZFeWu zx_OCmCow$3gu3>fwSYDapN)?mK2-GtLccfr^Uk0hM64>OD9@m};01|OZFX9}GI)3T zC2gP>Tz~k^u34y9fvq+J<12vfO0N{|6(L;E2e-YzyPm@GkM5phoFmB3C`apoGx@)S z>3eJSQuDcstd}H;qmBN}+Y`BrI#C0E;cG_3xz&A3^KO&&M^{KYd`>@?z;J+Nb%lcs z>oYrjBC$}}TOzUX+&(WwjxpYMYj!N{jND&lNF9sg|$UsuBY z@7?-Q?jNFL{h@S^ce#HddvzNqnq8kMM}14I@aR&b+LLJKd z#|5ibPG)oNk3aqFL|g*cDxa-E`)lc zqq@%20K<|4MX$b-?v2r14exEcD1=9x^$Tw-o@Vll(E-wmrWoQw`QbC)GDU9ZOLFB~ zn5oEO!9_dKn#D(77juZ%X6WLw1=On|Ti}YBVj#Z4fC1anN@|Q=OGg0g-sS{9jb(np zNyrrhnU5Z3j?eq@n+v8t0kWT`USs9e*Phz|`#?`m-iZr39a_#plIqeZU)kQZ;GA{F z`|W#~<-)~pt3|BaVxRD`?P*}Gc_AZP zMo)Na@bKQc6)U{k0>Wej0cY}I@=shbQJR>TIQfAL5ohB6u%%sW9aSUjG~DDl9e?Lk z%Gd@qhq2npuR7c+9~77ZF8B4kYAY_atVtmG0_s{8+b%!#6TX_BNgW&BQRB1bFS`xuyswUXWinkU`|kDo-08)|Lb-*(qScDohEkD1cI@VG zPqNQb=}T)p4fL(C>bd$My+b9D)J2tYPbE-=5lY{WD-!C=TqaTb{k6n4klLy-j&)oO zm|0z^q4i%O=sim02vQ!+3$pw&W<5GDX==!;A>f0(=`;BD_1`}A8Yx_Tj@JKS168rxR zsCnH)nZYa0;}nAw5QC=CBPrCdU^F9^7L2CS7(oEAGDnsWiWg4q+4IJ|S%M!U0hqpu zS&#}!A4TA4z))yMwp9ZereE%XZtm@R-6(0)ZiF|powHrcz|?jmW9i7gG+6||JGnVN IIpTliUu8WY00000 literal 0 HcmV?d00001 diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d334a2998d97727848c7cfdc593ff8e2beda6cab GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 5eddc9a1..28ed8634 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,11 +12,12 @@ - - - - - + + + + + + - - + - +
    -
    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/collapse_vector.html b/docs/reference/collapse_vector.html index b6814cef..4938672f 100644 --- a/docs/reference/collapse_vector.html +++ b/docs/reference/collapse_vector.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -54,8 +58,7 @@ In the R world, it's easier to keep these values as separate elements in a vector. This functions squashes them together in a single character element (presumably right before the return value is passed to the API)" /> - - + @@ -73,7 +76,7 @@ - +
    @@ -102,26 +105,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -129,7 +114,7 @@
  • #> [1] ""
    REDCapR:::collapse_vector(elements=letters, collapsed=NULL)
    #> [1] "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
    REDCapR:::collapse_vector(elements=NULL, collapsed="4,5,6")
    #> [1] "4,5,6"
    - @@ -211,7 +190,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/constant.html b/docs/reference/constant.html index 9cb46b71..4682ba7d 100644 --- a/docs/reference/constant.html +++ b/docs/reference/constant.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/create_batch_glossary.html b/docs/reference/create_batch_glossary.html index a170181f..ed2b7a9b 100644 --- a/docs/reference/create_batch_glossary.html +++ b/docs/reference/create_batch_glossary.html @@ -18,23 +18,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -43,7 +47,7 @@ - + @@ -56,8 +60,7 @@ multiple, smaller REDCap calls. The goal is to (1) reduce the chance of time-outs, and (2) introduce little breaks between batches so that the server isn't continually tied up." /> - - + @@ -75,7 +78,7 @@ - +
    @@ -104,26 +107,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -131,7 +116,7 @@
  • -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/index.html b/docs/reference/index.html index 95576147..b561a209 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,15 +46,14 @@ - + - - + @@ -68,7 +71,7 @@ - +
    @@ -97,26 +100,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -124,7 +109,7 @@
  • - @@ -383,7 +394,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/kernel_api.html b/docs/reference/kernel_api.html index 58d2d5b8..4f195924 100644 --- a/docs/reference/kernel_api.html +++ b/docs/reference/kernel_api.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -51,8 +55,7 @@ - - + @@ -70,7 +73,7 @@ - +
    @@ -99,26 +102,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -126,7 +111,7 @@
  • #> Response [https://bbmc.ouhsc.edu/redcap/api/] -#> Date: 2020-02-18 16:35 +#> Date: 2020-04-19 18:31 #> Status: 200 #> Content-Type: text/csv; charset=utf-8 #> Size: 557 B @@ -312,15 +297,10 @@

    Examp #> [1] 0 #>

    - @@ -331,7 +311,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/metadata_utilities.html b/docs/reference/metadata_utilities.html index 235650b2..d0081f5a 100644 --- a/docs/reference/metadata_utilities.html +++ b/docs/reference/metadata_utilities.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -51,8 +55,7 @@ - - + @@ -70,7 +73,7 @@ - +
    @@ -99,26 +102,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -126,7 +111,7 @@
  • #> id label +REDCapR::regex_named_captures(pattern=pattern_boxes, text=choices_1)
    #> id label #> 1 1 American Indian/Alaska Native #> 2 2 Asian #> 3 3 Native Hawaiian or Other Pacific Islander @@ -234,7 +219,7 @@

    Examp #> 5 5 White #> 6 6 Unknown / Not Reported

    # This function is designed specifically for the checkbox values. -REDCapR::checkbox_choices(select_choices=choices_1)
    #> id label +REDCapR::checkbox_choices(select_choices=choices_1)
    #> id label #> 1 1 American Indian/Alaska Native #> 2 2 Asian #> 3 3 Native Hawaiian or Other Pacific Islander @@ -248,13 +233,13 @@

    Examp ds_metadata <- redcap_metadata_read(redcap_uri=uri, token=token)$data choices_2 <- ds_metadata[ds_metadata$field_name=="race", "select_choices_or_calculations"] -REDCapR::regex_named_captures(pattern=pattern_boxes, text=choices_2) +REDCapR::regex_named_captures(pattern=pattern_boxes, text=choices_2) } path_3 <- system.file(package="REDCapR", "test-data/project-simple/simple-metadata.csv") ds_metadata_3 <- read.csv(path_3, stringsAsFactors=FALSE) choices_3 <- ds_metadata_3[ds_metadata_3$field_name=="race", "select_choices_or_calculations"] -REDCapR::regex_named_captures(pattern=pattern_boxes, text=choices_3)

    #> id label +REDCapR::regex_named_captures(pattern=pattern_boxes, text=choices_3)
    #> id label #> 1 1 American Indian/Alaska Native #> 2 2 Asian #> 3 3 Native Hawaiian or Other Pacific Islander @@ -262,18 +247,10 @@

    Examp #> 5 5 White #> 6 6 Unknown / Not Reported

    - @@ -284,7 +261,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_column_sanitize.html b/docs/reference/redcap_column_sanitize.html index f295d152..8001f4d5 100644 --- a/docs/reference/redcap_column_sanitize.html +++ b/docs/reference/redcap_column_sanitize.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -51,8 +55,7 @@ - - + @@ -70,7 +73,7 @@ - +
    @@ -99,26 +102,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -126,7 +111,7 @@
  • #> id names +REDCapR::redcap_column_sanitize(dirty)
    #> id names #> 1 1 Ekstrom #> 2 2 Joreskog #> 3 3 bisschen Zurcher
    - @@ -239,7 +217,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_download_file_oneshot.html b/docs/reference/redcap_download_file_oneshot.html index f06e2360..f8776549 100644 --- a/docs/reference/redcap_download_file_oneshot.html +++ b/docs/reference/redcap_download_file_oneshot.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -319,7 +311,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_download_instrument.html b/docs/reference/redcap_download_instrument.html index 2e041fd2..2b854bc8 100644 --- a/docs/reference/redcap_download_instrument.html +++ b/docs/reference/redcap_download_instrument.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -316,7 +293,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_metadata_read.html b/docs/reference/redcap_metadata_read.html index 15d9406a..d03c3248 100644 --- a/docs/reference/redcap_metadata_read.html +++ b/docs/reference/redcap_metadata_read.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -52,8 +56,7 @@ - - + @@ -71,7 +74,7 @@ - +
    @@ -100,26 +103,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -127,7 +112,7 @@
  • - @@ -287,7 +264,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_metadata_write.html b/docs/reference/redcap_metadata_write.html index 638098b6..50dc1b30 100644 --- a/docs/reference/redcap_metadata_write.html +++ b/docs/reference/redcap_metadata_write.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -52,8 +56,7 @@ - - + @@ -71,7 +74,7 @@ - +
    @@ -100,26 +103,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -127,7 +112,7 @@
  • - @@ -273,7 +251,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_next_free_record_name.html b/docs/reference/redcap_next_free_record_name.html index 34a2742e..5d146e09 100644 --- a/docs/reference/redcap_next_free_record_name.html +++ b/docs/reference/redcap_next_free_record_name.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • #> The next free record name in REDCap was successfully determined in 0.2 seconds. The http status code was 200. Is is 6.
    #> [1] "6"
    - @@ -255,7 +234,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_project.html b/docs/reference/redcap_project.html index b11cb20b..1d59fbe5 100644 --- a/docs/reference/redcap_project.html +++ b/docs/reference/redcap_project.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -53,8 +57,7 @@ Once some values are set that are specific to a REDCap project (such as the URI and token), later calls are less verbose (such as reading and writing data)." /> - - + @@ -72,7 +75,7 @@ - +
    @@ -101,26 +104,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -128,7 +113,7 @@
  • - @@ -262,7 +243,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_read.html b/docs/reference/redcap_read.html index 99dcf3bd..5d10d3c5 100644 --- a/docs/reference/redcap_read.html +++ b/docs/reference/redcap_read.html @@ -18,23 +18,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -43,7 +47,7 @@ - + @@ -57,8 +61,7 @@ (among other objects) a single base::data.frame(). This function can be more appropriate than redcap_read_oneshot() when returning large datasets that could tie up the server." /> - - + @@ -76,7 +79,7 @@ - +
    @@ -105,26 +108,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -132,7 +117,7 @@
  • - @@ -446,7 +423,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_read_oneshot.html b/docs/reference/redcap_read_oneshot.html index 27a79d1c..4506be18 100644 --- a/docs/reference/redcap_read_oneshot.html +++ b/docs/reference/redcap_read_oneshot.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -409,7 +386,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_read_oneshot_eav.html b/docs/reference/redcap_read_oneshot_eav.html index d17dcf8c..80b46918 100644 --- a/docs/reference/redcap_read_oneshot_eav.html +++ b/docs/reference/redcap_read_oneshot_eav.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -51,8 +55,7 @@ - - + @@ -70,7 +73,7 @@ - +
    @@ -99,26 +102,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -126,7 +111,7 @@
  • - @@ -363,7 +340,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_survey_link_export_oneshot.html b/docs/reference/redcap_survey_link_export_oneshot.html index 05148c80..728d1100 100644 --- a/docs/reference/redcap_survey_link_export_oneshot.html +++ b/docs/reference/redcap_survey_link_export_oneshot.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -283,7 +260,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_upload_file_oneshot.html b/docs/reference/redcap_upload_file_oneshot.html index 56fcc80b..8e6b6ebc 100644 --- a/docs/reference/redcap_upload_file_oneshot.html +++ b/docs/reference/redcap_upload_file_oneshot.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -307,7 +284,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_users_export.html b/docs/reference/redcap_users_export.html index bf1520d2..0275268a 100644 --- a/docs/reference/redcap_users_export.html +++ b/docs/reference/redcap_users_export.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -242,7 +222,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_variables.html b/docs/reference/redcap_variables.html index 91da6971..94c9b1d9 100644 --- a/docs/reference/redcap_variables.html +++ b/docs/reference/redcap_variables.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -51,8 +55,7 @@ - - + @@ -70,7 +73,7 @@ - +
    @@ -99,26 +102,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -126,7 +111,7 @@
  • - @@ -253,7 +230,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_version.html b/docs/reference/redcap_version.html index 8c370e06..4aea7636 100644 --- a/docs/reference/redcap_version.html +++ b/docs/reference/redcap_version.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • #> The REDCap version was successfully determined in 0.2 seconds. The http status code was 200. Is is 9.0.0.
    #> [1] ‘9.0.0’
    - @@ -222,7 +202,7 @@

    Contents

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_write.html b/docs/reference/redcap_write.html index 979b7212..9a452dcb 100644 --- a/docs/reference/redcap_write.html +++ b/docs/reference/redcap_write.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -309,7 +286,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/redcap_write_oneshot.html b/docs/reference/redcap_write_oneshot.html index 6bf5503f..4f96faa1 100644 --- a/docs/reference/redcap_write_oneshot.html +++ b/docs/reference/redcap_write_oneshot.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -50,8 +54,7 @@ - - + @@ -69,7 +72,7 @@ - +
    @@ -98,26 +101,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -125,7 +110,7 @@
  • - @@ -283,7 +260,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/replace_nas_with_explicit.html b/docs/reference/replace_nas_with_explicit.html index b1fbc08e..68fd9dab 100644 --- a/docs/reference/replace_nas_with_explicit.html +++ b/docs/reference/replace_nas_with_explicit.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -53,8 +57,7 @@ This explicit assignment can reduce the chances that missing values are inadvertently ignored. It also allows the presence of a missing to become a predictor in models." /> - - + @@ -72,7 +75,7 @@ - +
    @@ -101,26 +104,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -128,7 +113,7 @@
  • - @@ -231,7 +209,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/retrieve_credential.html b/docs/reference/retrieve_credential.html index 5b6abb9a..62495a60 100644 --- a/docs/reference/retrieve_credential.html +++ b/docs/reference/retrieve_credential.html @@ -18,23 +18,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -43,7 +47,7 @@ - + @@ -53,8 +57,7 @@ database or file — retrieve_credential" /> - - + @@ -72,7 +75,7 @@ - +
    @@ -101,26 +104,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -128,7 +113,7 @@
  • - @@ -304,7 +281,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/sanitize_token.html b/docs/reference/sanitize_token.html index cab9374f..c3744d7b 100644 --- a/docs/reference/sanitize_token.html +++ b/docs/reference/sanitize_token.html @@ -17,23 +17,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -42,7 +46,7 @@ - + @@ -52,8 +56,7 @@ - - + @@ -71,7 +74,7 @@ - +
    @@ -100,26 +103,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -127,7 +112,7 @@
  • #> [1] "12345678901234567890123456ABCDEF"
    REDCapR::sanitize_token(secret_token_2)
    #> [1] "12345678901234567890123456ABCDEF"
    - @@ -207,7 +185,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.

    diff --git a/docs/reference/validate.html b/docs/reference/validate.html index bc972298..98e30b5b 100644 --- a/docs/reference/validate.html +++ b/docs/reference/validate.html @@ -18,23 +18,27 @@ - + - + - + + + + + - - + + - + - - + + @@ -43,7 +47,7 @@ - + @@ -53,8 +57,7 @@ writing to a REDCap project — validate" /> - - + @@ -72,7 +75,7 @@ - +
    @@ -101,26 +104,8 @@
  • Reference
  • -
  • + Articles
  • Changelog @@ -128,7 +113,7 @@
  • #> # A tibble: 2 x 4 +REDCapR::validate_for_write(d = d)
    #> # A tibble: 2 x 4 #> field_name field_index concern suggestion #> <chr> <int> <chr> <chr> #> 1 flag_logical 2 The REDCap API does not … Convert the variable with … #> 2 flag_Upperc… 3 A REDCap project does no… Change the uppercase lette…
    - @@ -277,7 +254,7 @@

    Author

    -

    Site built with pkgdown 1.4.1.

    +

    Site built with pkgdown 1.5.0.