private static async Task <int> Citizen(CitizenOptions opts) { var api = new NexusApi(); if (opts.CitizenId == null) { var list = await api.GetCitizensAsync().ConfigureAwait(false); Console.WriteLine($"{list.Count:N0} citizens fetched"); foreach (var citizen in list) { Console.WriteLine($"{citizen.Id,6:D} {citizen.Name}"); } } else { var details = await api.GetCitizenAsync(opts.CitizenId.Value).ConfigureAwait(false); if (details == null) { Console.WriteLine($"Citizen {opts.CitizenId.Value} does not exist"); return(0); } Console.WriteLine($"Citizen {details.Id} fetched"); var serialiser = new YamlDotNet.Serialization.Serializer(); var yml = serialiser.Serialize(details); Console.WriteLine(yml); } return(0); }
private static async Task <int> Patient(PatientOptions opts) { var api = new NexusApi(); var patient = (await api.GetPatients(opts.PatientId.ToString()).ConfigureAwait(false)).FirstOrDefault(); if (patient == null) { Console.WriteLine($"Patient {opts.PatientId} does not exist"); return(0); } var serialiser = new YamlDotNet.Serialization.Serializer(); var yml = serialiser.Serialize(patient); Console.WriteLine(yml); return(0); }
private static async Task <int> Patients(PatientsOptions opts) { var api = new NexusApi(); var filter = await api.FilterPatientsAsync(opts.CitizenId).ConfigureAwait(false); if (filter.TotalItems == 0) { Console.WriteLine("Citizen has no patients"); return(1); } foreach (var page in filter.Pages) { var data = page.Links.FirstOrDefault(x => x.Key == "patientData"); if (data.Value == null) { Console.WriteLine("Unable to fetch a page of patients"); return(255); } var match = Regex.Match(data.Value?.Href ?? string.Empty, @"\?ids=(\d+(,\d+)*)"); if (!match.Success) { Console.WriteLine("Unable to determine patient ids"); return(255); } var idList = match.Groups[1].ToString(); var patients = await api.GetPatients(idList).ConfigureAwait(false); foreach (var patient in patients) { Console.WriteLine($"{patient.Id,6:D} {patient.FullReversedName}"); } } return(0); }