FluentFileImporter.Library
0.0.3
See the version list below for details.
dotnet add package FluentFileImporter.Library --version 0.0.3
NuGet\Install-Package FluentFileImporter.Library -Version 0.0.3
<PackageReference Include="FluentFileImporter.Library" Version="0.0.3" />
paket add FluentFileImporter.Library --version 0.0.3
#r "nuget: FluentFileImporter.Library, 0.0.3"
// Install FluentFileImporter.Library as a Cake Addin #addin nuget:?package=FluentFileImporter.Library&version=0.0.3 // Install FluentFileImporter.Library as a Cake Tool #tool nuget:?package=FluentFileImporter.Library&version=0.0.3
FluentFileImporter
A small library to briefly create file importers using a fluent syntax.
Currently, these are the only importers available:
- Fixed-width column text files
- Pipe-character separated columns text files
Usage example for text file with fixed-width data columns
This example is included in the solution as the Example project.
It imports a text file with ICD10 diagnostics, icd10cm_order_2019.txt
, which can be found here.
This is a sample of its content:
00037 A039 1 Shigellosis, unspecified Shigellosis, unspecified
00038 A04 0 Other bacterial intestinal infections Other bacterial intestinal infections
00039 A040 1 Enteropathogenic Escherichia coli infection Enteropathogenic Escherichia coli infection
00040 A041 1 Enterotoxigenic Escherichia coli infection Enterotoxigenic Escherichia coli infection
00041 A042 1 Enteroinvasive Escherichia coli infection Enteroinvasive Escherichia coli infection
The data from the previous file will be adapted to this entity:
public class Icd10Diagnostic
{
public int Order { get; set; }
public string Code { get; set; }
public bool ValidForSubmission { get; set; }
public string ShortDescription { get; set; }
public string LongDescription { get; set; }
}
To adapt the file, the importer must be defined.
For this importer, the columns are defined by position in line and column length. Other file importers (to be implemented) may require to be defined differently. For this particular example, the importer will be defined this way:
// Create importer
var fileTextImporterForDiagnostics = FileImporter
.ForTextFile()
.WithFixedWidthColumns()
.IgnoringFirstLine(false)
.HasColumn(0, 5)
.HasColumn(6, 7)
.HasColumn(14, 1)
.HasColumn(16, 60)
.HasColumn(77)
.AdaptTo<Icd10Diagnostic>((e, columns) =>
{
e.Order = int.Parse(columns[0].Trim());
// Get code and add point
var code = columns[1].Trim();
e.Code = (code.Length > 3 ? code.Insert(3, ".") : code);
// Boolean is true if marked as "1", which is billable.
e.ValidForSubmission = columns[2].Trim() == "1";
// Code Descriptions
e.ShortDescription = columns[3].Trim();
e.LongDescription = columns[4].Trim();
});
To get the entities from the importer, the file must be provided as input to the importer
to get the entities using .GenerateEntitiesFromFile()
. These entities are lazily created
and filled as defined in the AdaptTo
method.
For instance:
var filename = "icd10cm_order_2019.txt";
var entities = fileTextImporterForDiagnostics
.GenerateEntitiesFromFile(filename)
.ToList();
These entities can be used as intended.
For example, in this case an entity is being written to console:
Console.WriteLine($"The {(entity.ValidForSubmission ? "billable" : "non-billable")}" +
$" code {entity.Code} is described as \n {entity.LongDescription}.\n");
Sample output of the previous:
The billable code M67.922 is described as
Unspecified disorder of synovium and tendon, left upper arm.
Example for Pipe files
There is another type of importer used in the Example file. This importer support pipe-separated value files.
To define the importer, this syntax is provided:
var valueSetsTextFileImporter = FileImporter
.ForTextFile()
.WithPipeDelimitedColumns()
.IgnoringFirstLine()
.HasColumn(0, "ValueSetName")
.HasColumn(1, "ValueSetOid")
.HasColumn(8, "Code")
.HasColumn(9, "Description")
.HasColumn(10, "CodeSystem")
.AdaptTo<ValueSet>((e, columns) =>
{
e.ValueSetName = columns["ValueSetName"];
e.ValueSetOid = columns["ValueSetOid"];
e.Code = columns["Code"];
e.Description = columns["Description"];
e.CodeSystem = columns["CodeSystem"];
});
More documentation on this last example can be found in this project's README.md, at Github.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 is compatible. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
-
.NETCoreApp 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.