static void InitializeDemo() { /* * Change this token for your demo project * Using one created from a local dev instance */ string _token = string.Empty; /* * Change this token for your demo project * Using one created from a local dev instance */ string _superToken = "2E59CA118ABC17D393722524C501CF0BAC51689746E24BFDAF47B38798BD827A"; /* * Using a local redcap development instsance */ string _uri = string.Empty; var fieldName = "file_upload"; var eventName = "event_1_arm_1"; /* * Output to console */ Console.WriteLine("Starting Redcap Api Demo.."); Console.WriteLine("Please make sure you include a working redcap api token."); Console.WriteLine("Enter your redcap instance uri, example: http://localhost/redcap"); _uri = Console.ReadLine(); if (string.IsNullOrEmpty(_uri)) { // provide a default one here.. _uri = "http://localhost/redcap"; } _uri = _uri + "/api/"; Console.WriteLine("Enter your api token for the project to test: "); var token = Console.ReadLine(); if (string.IsNullOrEmpty(token)) { _token = "DF70F2EC94AE05021F66423B386095BD"; } else { _token = token; } Console.WriteLine($"Using Endpoint=> {_uri} Token => {_token}"); Console.WriteLine("-----------------------------Starting API Version 1.0.5+-------------"); Console.WriteLine("Starting demo for API Version 1.0.0+"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); Console.WriteLine("Creating a new instance of RedcapApi"); var redcap_api_1_1_0 = new RedcapApi(_uri); Console.WriteLine($"Using {_uri.ToString()} for redcap api endpoint."); #region ExportLoggingAsync() Console.WriteLine("Calling ExportLoggingAsync() . . ."); Console.WriteLine($"Exporting logs for User . . ."); var ExportLoggingAsync = redcap_api_1_1_0.ExportLoggingAsync(_token, Content.Log, ReturnFormat.json, LogType.User).Result; Console.WriteLine($"ExportLoggingAsync Results: {JsonConvert.DeserializeObject(ExportLoggingAsync)}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion #region ImportDagsAsync() Console.WriteLine("Calling ImportDagsAsync() . . ."); Console.WriteLine($"Importing Dags . . ."); var dags = CreateDags(5); var ImportDagsAsyncResult = redcap_api_1_1_0.ImportDagsAsync(_token, Content.Dag, RedcapAction.Import, ReturnFormat.json, dags).Result; Console.WriteLine($"ImportDagsAsync Results: {JsonConvert.DeserializeObject(ImportDagsAsyncResult)}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion #region ExportDagsAsync() Console.WriteLine("Calling ExportDagsAsync() . . ."); Console.WriteLine($"Exporting Dags . . ."); var ExportDagsAsyncResult = redcap_api_1_1_0.ExportDagsAsync(_token, Content.Dag, ReturnFormat.json).Result; Console.WriteLine($"ExportDagsAsync Results: {JsonConvert.DeserializeObject(ExportDagsAsyncResult)}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion #region DeleteDagsAsync() Console.WriteLine("Calling DeleteDagsAsync() . . ."); Console.WriteLine($"Deleting Dags . . ."); var dagsToDelete = JsonConvert.DeserializeObject <List <RedcapDag> >(ExportDagsAsyncResult).Select(x => x.UniqueGroupName).ToArray(); var DeleteDagsAsyncResult = redcap_api_1_1_0.DeleteDagsAsync(_token, Content.Dag, RedcapAction.Delete, dagsToDelete).Result; Console.WriteLine($"DeleteDagsAsync Results: {JsonConvert.DeserializeObject(DeleteDagsAsyncResult)}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion #region ImportRecordsAsync() Console.WriteLine("Calling ImportRecordsAsync() . . ."); // get demographics data var importDemographicsData = CreateDemographics(includeBio: true, 5); Console.WriteLine("Serializing the data . . ."); Console.WriteLine($"Importing record {string.Join(",", importDemographicsData.Select(x => x.RecordId).ToList())} . . ."); var ImportRecordsAsync = redcap_api_1_1_0.ImportRecordsAsync(_token, Content.Record, ReturnFormat.json, RedcapDataType.flat, OverwriteBehavior.normal, false, importDemographicsData, "MDY", CsvDelimiter.tab, ReturnContent.count, OnErrorFormat.json).Result; var ImportRecordsAsyncData = JsonConvert.DeserializeObject(ImportRecordsAsync); Console.WriteLine($"ImportRecordsAsync Result: {ImportRecordsAsyncData}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion ImportRecordsAsync() #region ExportRecordsAsync() Console.WriteLine($"Calling ExportRecordsAsync()"); Console.WriteLine($"Using records from the imported method.."); var recordsToExport = importDemographicsData.Select(x => x.RecordId).ToArray(); var instrumentName = new string[] { "demographics" }; var ExportRecordsAsyncResult = redcap_api_1_1_0.ExportRecordsAsync(_token, Content.Record, ReturnFormat.json, RedcapDataType.flat, recordsToExport, null, instrumentName).Result; Console.WriteLine($"ExportRecordsAsyncResult: {ExportRecordsAsyncResult}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion ExportRecordsAsync() #region DeleteRecordsAsync() Console.WriteLine("Calling DeleteRecordsAsync() . . ."); var records = importDemographicsData.Select(x => x.RecordId).ToArray(); Console.WriteLine($"Deleting record {string.Join(",", recordsToExport)} . . ."); var DeleteRecordsAsync = redcap_api_1_1_0.DeleteRecordsAsync(_token, Content.Record, RedcapAction.Delete, recordsToExport, 1).Result; var DeleteRecordsAsyncData = JsonConvert.DeserializeObject(DeleteRecordsAsync); Console.WriteLine($"DeleteRecordsAsync Result: {DeleteRecordsAsyncData}"); Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #endregion DeleteRecordsAsync() #region ExportArmsAsync() var arms = new string[] { }; Console.WriteLine("Calling ExportArmsAsync()"); var ExportArmsAsyncResult = redcap_api_1_1_0.ExportArmsAsync(_token, Content.Arm, ReturnFormat.json, arms, OnErrorFormat.json).Result; Console.WriteLine($"ExportArmsAsyncResult: {JsonConvert.DeserializeObject(ExportArmsAsyncResult)}"); #endregion ExportArmsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportArmsAsync() var ImportArmsAsyncData = CreateArms(count: 3); Console.WriteLine("Calling ImportArmsAsync()"); var ImportArmsAsyncResult = redcap_api_1_1_0.ImportArmsAsync(_token, Content.Arm, Override.False, RedcapAction.Import, ReturnFormat.json, ImportArmsAsyncData, OnErrorFormat.json).Result; Console.WriteLine($"ImportArmsAsyncResult: {JsonConvert.DeserializeObject(ImportArmsAsyncResult)}"); #endregion ImportArmsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region DeleteArmsAsync() var DeleteArmsAsyncData = ImportArmsAsyncData.Select(x => x.ArmNumber).ToArray(); Console.WriteLine("Calling DeleteArmsAsync()"); var DeleteArmsAsyncResult = redcap_api_1_1_0.DeleteArmsAsync(_token, Content.Arm, RedcapAction.Delete, DeleteArmsAsyncData).Result; Console.WriteLine($"DeleteArmsAsyncResult: {JsonConvert.DeserializeObject(DeleteArmsAsyncResult)}"); #endregion DeleteArmsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportEventsAsync() var ExportEventsAsyncData = new string[] { "1" }; Console.WriteLine("Calling ExportEventsAsync()"); var ExportEventsAsyncResult = redcap_api_1_1_0.ExportEventsAsync(_token, Content.Event, ReturnFormat.json, ExportEventsAsyncData, OnErrorFormat.json).Result; Console.WriteLine($"ExportEventsAsyncResult: {JsonConvert.DeserializeObject(ExportEventsAsyncResult)}"); #endregion ExportEventsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportEventsAsync() Console.WriteLine("Calling ExportEventsAsync()"); var eventList = new List <RedcapEvent> { new RedcapEvent { EventName = "baseline", ArmNumber = "1", DayOffset = "1", MinimumOffset = "0", MaximumOffset = "0", UniqueEventName = "baseline_arm_1", CustomEventLabel = "hello baseline" }, new RedcapEvent { EventName = "clinical", ArmNumber = "1", DayOffset = "1", MinimumOffset = "0", MaximumOffset = "0", UniqueEventName = "clinical_arm_1", CustomEventLabel = "hello clinical" } }; var ImportEventsAsyncResult = redcap_api_1_1_0.ImportEventsAsync(_token, Content.Event, RedcapAction.Import, Override.False, ReturnFormat.json, eventList, OnErrorFormat.json).Result; Console.WriteLine($"ImportEventsAsyncResult: {ImportEventsAsyncResult}"); #endregion ImportEventsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region DeleteEventsAsync() var DeleteEventsAsyncData = new string[] { "baseline_arm_1" }; Console.WriteLine("Calling DeleteEventsAsync()"); var DeleteEventsAsyncResult = redcap_api_1_1_0.DeleteEventsAsync(_token, Content.Event, RedcapAction.Delete, DeleteEventsAsyncData).Result; Console.WriteLine($"DeleteEventsAsyncResult: {DeleteEventsAsyncResult}"); #endregion DeleteEventsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportFieldNamesAsync() Console.WriteLine("Calling ExportFieldNamesAsync(), first_name"); var ExportFieldNamesAsyncResult = redcap_api_1_1_0.ExportFieldNamesAsync(_token, Content.ExportFieldNames, ReturnFormat.json, "first_name", OnErrorFormat.json).Result; Console.WriteLine($"ExportFieldNamesAsyncResult: {ExportFieldNamesAsyncResult}"); #endregion ExportFieldNamesAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportFileAsync() var recordId = "1"; var fileName = "Demographics_TestProject_DataDictionary.csv"; DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory); string parentDirectory = myDirectory.Parent.FullName; var parent = Directory.GetParent(parentDirectory).FullName; var filePath = Directory.GetParent(parent).FullName + @"\Docs\"; Console.WriteLine($"Calling ImportFileAsync(), {fileName}"); var ImportFileAsyncResult = redcap_api_1_1_0.ImportFileAsync(_token, Content.File, RedcapAction.Import, recordId, fieldName, eventName, null, fileName, filePath, OnErrorFormat.json).Result; Console.WriteLine($"ImportFileAsyncResult: {ImportFileAsyncResult}"); #endregion ImportFileAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportFileAsync() Console.WriteLine($"Calling ExportFileAsync(), {fileName} for field name {fieldName}, not save the file."); var ExportFileAsyncResult = redcap_api_1_1_0.ExportFileAsync(_token, Content.File, RedcapAction.Export, recordId, fieldName, eventName, null, OnErrorFormat.json).Result; Console.WriteLine($"ExportFileAsyncResult: {ExportFileAsyncResult}"); #endregion ExportFileAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportFileAsync() var filedDownloadPath = @"C:\redcap_download_files"; Console.WriteLine($"Calling ExportFileAsync(), {fileName} for field name {fieldName}, saving the file."); var ExportFileAsyncResult2 = redcap_api_1_1_0.ExportFileAsync(_token, Content.File, RedcapAction.Export, recordId, fieldName, eventName, null, OnErrorFormat.json, filedDownloadPath).Result; Console.WriteLine($"ExportFileAsyncResult2: {ExportFileAsyncResult2}"); #endregion ExportFileAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region DeleteFileAsync() Console.WriteLine($"Calling DeleteFileAsync(), deleting file: {fileName} for field: {fieldName}"); var DeleteFileAsyncResult = redcap_api_1_1_0.DeleteFileAsync(_token, Content.File, RedcapAction.Delete, recordId, fieldName, eventName, "1", OnErrorFormat.json).Result; Console.WriteLine($"DeleteFileAsyncResult: {DeleteFileAsyncResult}"); #endregion DeleteFileAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportInstrumentsAsync() Console.WriteLine($"Calling DeleteFileAsync()"); var ExportInstrumentsAsyncResult = redcap_api_1_1_0.ExportInstrumentsAsync(_token, Content.Instrument, ReturnFormat.json).Result; Console.WriteLine($"ExportInstrumentsAsyncResult: {ExportInstrumentsAsyncResult}"); #endregion ExportInstrumentsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportPDFInstrumentsAsync() Console.WriteLine($"Calling ExportPDFInstrumentsAsync(), returns raw"); var ExportPDFInstrumentsAsyncResult = redcap_api_1_1_0.ExportPDFInstrumentsAsync(_token, Content.Pdf, recordId, eventName, "demographics", true, OnErrorFormat.json).Result; Console.WriteLine($"ExportInstrumentsAsyncResult: {JsonConvert.SerializeObject(ExportPDFInstrumentsAsyncResult)}"); #endregion ExportPDFInstrumentsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportPDFInstrumentsAsync() Console.WriteLine($"Calling ExportPDFInstrumentsAsync(), saving pdf file to {filedDownloadPath}"); var ExportPDFInstrumentsAsyncResult2 = redcap_api_1_1_0.ExportPDFInstrumentsAsync(_token, recordId, eventName, "demographics", true, filedDownloadPath, OnErrorFormat.json).Result; Console.WriteLine($"ExportPDFInstrumentsAsyncResult2: {ExportPDFInstrumentsAsyncResult2}"); #endregion ExportPDFInstrumentsAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); //#region ExportInstrumentMappingAsync() //Console.WriteLine($"Calling ExportInstrumentMappingAsync()"); //var armsToExportInstrumentMapping = arms; //var ExportInstrumentMappingAsyncResult = redcap_api_1_1_0.ExportInstrumentMappingAsync(_token, Content.FormEventMapping, ReturnFormat.json, armsToExportInstrumentMapping, OnErrorFormat.json).Result; //Console.WriteLine($"ExportInstrumentMappingAsyncResult: {ExportInstrumentMappingAsyncResult}"); //#endregion ExportInstrumentMappingAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportInstrumentMappingAsync() var importInstrumentMappingData = new List <FormEventMapping> { new FormEventMapping { arm_num = "1", unique_event_name = "clinical_arm_1", form = "demographics" } }; Console.WriteLine($"Calling ImportInstrumentMappingAsync()"); var ImportInstrumentMappingAsyncResult = redcap_api_1_1_0.ImportInstrumentMappingAsync(_token, Content.FormEventMapping, ReturnFormat.json, importInstrumentMappingData, OnErrorFormat.json).Result; Console.WriteLine($"ImportInstrumentMappingAsyncResult: {ImportInstrumentMappingAsyncResult}"); #endregion ImportInstrumentMappingAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportMetaDataAsync() Console.WriteLine($"Calling ExportMetaDataAsync()"); var ExportMetaDataAsyncResult = redcap_api_1_1_0.ExportMetaDataAsync(_token, Content.MetaData, ReturnFormat.json, null, null, OnErrorFormat.json).Result; Console.WriteLine($"ExportMetaDataAsyncResult: {ExportMetaDataAsyncResult}"); #endregion ExportMetaDataAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportMetaDataAsync() /* * This imports 1 field into the data dictionary */ var importMetaData = new List <RedcapMetaData> { new RedcapMetaData { field_name = "first_name", form_name = "demographics", field_type = "text", field_label = "First Name" } }; Console.WriteLine($"Not calling ImportMetaDataAsync(), still change data dictionary to include 1 field"); //var ImportMetaDataAsyncResult = redcap_api_1_0_7.ImportMetaDataAsync(_token, "metadata", ReturnFormat.json, importMetaData, OnErrorFormat.json).Result; //Console.WriteLine($"ImportMetaDataAsyncResult: {ImportMetaDataAsyncResult}"); #endregion ImportMetaDataAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region CreateProjectAsync() var projectData = new List <RedcapProject> { new RedcapProject { project_title = "Amazing Project ", purpose = ProjectPurpose.Other, purpose_other = "Test" } }; Console.WriteLine($"Calling CreateProjectAsync(), creating a new project with Amazing Project as title, purpose 1 (other) "); Console.WriteLine($"-----------------------Notice the use of SUPER TOKEN------------------------"); var CreateProjectAsyncResult = redcap_api_1_1_0.CreateProjectAsync(_superToken, Content.Project, ReturnFormat.json, projectData, OnErrorFormat.json, null).Result; Console.WriteLine($"CreateProjectAsyncResult: {CreateProjectAsyncResult}"); #endregion CreateProjectAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ImportProjectInfoAsync() var projectInfo = new RedcapProjectInfo { ProjectTitle = "Updated Amazing Project ", Purpose = ProjectPurpose.QualityImprovement, SurveysEnabled = 1 }; Console.WriteLine($"Calling ImportProjectInfoAsync()"); var ImportProjectInfoAsyncResult = redcap_api_1_1_0.ImportProjectInfoAsync(_token, Content.ProjectSettings, ReturnFormat.json, projectInfo).Result; Console.WriteLine($"ImportProjectInfoAsyncResult: {ImportProjectInfoAsyncResult}"); #endregion ImportProjectInfoAsync() Console.WriteLine("----------------------------Press Enter to Continue-------------"); Console.ReadLine(); #region ExportProjectInfoAsync() Console.WriteLine($"Calling ExportProjectInfoAsync()"); var ExportProjectInfoAsyncResult = redcap_api_1_1_0.ExportProjectInfoAsync(_token, Content.ProjectSettings, ReturnFormat.json).Result; Console.WriteLine($"ExportProjectInfoAsyncResult: {ExportProjectInfoAsyncResult}"); #endregion ExportProjectInfoAsync() Console.WriteLine("----------------------------Demo completed! Press Enter to Exit-------------"); Console.ReadLine(); }