From d67b6c61d867536facd6d34e009747557a16af79 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Wed, 4 Dec 2024 14:13:25 +0500 Subject: [PATCH 1/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20WITS0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WitsDataController.cs | 81 ++++++ Persistence.API/DependencyInjection.cs | 7 + Persistence.API/Startup.cs | 2 +- Persistence.Client/Clients/IWitsDataClient.cs | 20 ++ ...3120141_ParameterDataMigration.Designer.cs | 257 ++++++++++++++++++ .../20241203120141_ParameterDataMigration.cs | 36 +++ .../PersistenceDbContextModelSnapshot.cs | 24 ++ .../PersistenceDbContext.cs | 4 +- Persistence.Database/Entity/ParameterData.cs | 21 ++ .../Controllers/WitsDataControllerTest.cs | 223 +++++++++++++++ Persistence.Repository/DependencyInjection.cs | 1 + .../Repositories/ParameterRepository.cs | 66 +++++ Persistence/API/ISyncWithDiscriminatorApi.cs | 28 ++ Persistence/API/IWitsDataApi.cs | 26 ++ Persistence/Models/ParameterDto.cs | 32 +++ Persistence/Models/WitsDataDto.cs | 25 ++ Persistence/Models/WitsValueDto.cs | 26 ++ .../Repositories/IParameterRepository.cs | 38 +++ .../Services/Interfaces/IWitsDataService.cs | 10 + Persistence/Services/WitsDataService.cs | 89 ++++++ 20 files changed, 1013 insertions(+), 3 deletions(-) create mode 100644 Persistence.API/Controllers/WitsDataController.cs create mode 100644 Persistence.Client/Clients/IWitsDataClient.cs create mode 100644 Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.Designer.cs create mode 100644 Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs create mode 100644 Persistence.Database/Entity/ParameterData.cs create mode 100644 Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs create mode 100644 Persistence.Repository/Repositories/ParameterRepository.cs create mode 100644 Persistence/API/ISyncWithDiscriminatorApi.cs create mode 100644 Persistence/API/IWitsDataApi.cs create mode 100644 Persistence/Models/ParameterDto.cs create mode 100644 Persistence/Models/WitsDataDto.cs create mode 100644 Persistence/Models/WitsValueDto.cs create mode 100644 Persistence/Repositories/IParameterRepository.cs create mode 100644 Persistence/Services/Interfaces/IWitsDataService.cs create mode 100644 Persistence/Services/WitsDataService.cs diff --git a/Persistence.API/Controllers/WitsDataController.cs b/Persistence.API/Controllers/WitsDataController.cs new file mode 100644 index 0000000..6e74b2b --- /dev/null +++ b/Persistence.API/Controllers/WitsDataController.cs @@ -0,0 +1,81 @@ +using System.Net; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Persistence.Models; +using Persistence.Services.Interfaces; + +namespace Persistence.API.Controllers; + +[ApiController] +[Authorize] +[Route("api/[controller]")] +public class WitsDataController : ControllerBase, IWitsDataApi +{ + private readonly IWitsDataService witsDataService; + + public WitsDataController(IWitsDataService witsDataService) + { + this.witsDataService = witsDataService; + } + + /// + /// Получить диапазон дат, для которых есть данные в репозитории + /// + /// + /// + /// + [HttpGet("datesRange")] + public async Task> GetDatesRangeAsync([FromQuery] int discriminatorId, CancellationToken token) + { + var result = await witsDataService.GetDatesRangeAsync(discriminatorId, token); + + return Ok(result); + } + + /// + /// Получить порцию записей, начиная с заданной даты + /// + /// + /// + /// + /// + /// + [HttpGet("part")] + public async Task>> GetPart([FromQuery] int discriminatorId, [FromQuery] DateTimeOffset dateBegin, [FromQuery] int take, CancellationToken token) + { + var result = await witsDataService.GetPart(discriminatorId, dateBegin, take, token); + + return Ok(result); + } + + /// + /// Получить набор параметров (Wits) для построения графика + /// + /// + /// + /// + /// + /// + [HttpGet("graph")] + public async Task>> GetValuesForGraph([FromQuery] DateTimeOffset dateFrom, [FromQuery] DateTimeOffset dateTo, [FromQuery] int limit, CancellationToken token) + { + var result = await witsDataService.GetValuesForGraph(dateFrom, dateTo); + + return Ok(result); + } + + /// + /// Сохранить набор параметров (Wits) + /// + /// + /// + /// + [HttpPost] + [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] + public async Task InsertRange([FromBody] IEnumerable dtos, CancellationToken token) + { + var result = await witsDataService.InsertRange(dtos, token); + + return CreatedAtAction(nameof(InsertRange), result); + } +} diff --git a/Persistence.API/DependencyInjection.cs b/Persistence.API/DependencyInjection.cs index 19cedc9..8506b4c 100644 --- a/Persistence.API/DependencyInjection.cs +++ b/Persistence.API/DependencyInjection.cs @@ -8,6 +8,8 @@ using Microsoft.OpenApi.Models; using Persistence.Database.Entity; using Persistence.Models; using Persistence.Models.Configurations; +using Persistence.Services; +using Persistence.Services.Interfaces; using Swashbuckle.AspNetCore.SwaggerGen; namespace Persistence.API; @@ -55,6 +57,11 @@ public static class DependencyInjection }); } + public static void AddServices(this IServiceCollection services) + { + services.AddTransient(); + } + #region Authentication public static void AddJWTAuthentication(this IServiceCollection services, IConfiguration configuration) { diff --git a/Persistence.API/Startup.cs b/Persistence.API/Startup.cs index 98ad4aa..9869754 100644 --- a/Persistence.API/Startup.cs +++ b/Persistence.API/Startup.cs @@ -24,13 +24,13 @@ public class Startup services.AddPersistenceDbContext(Configuration); services.AddJWTAuthentication(Configuration); services.AddMemoryCache(); + services.AddServices(); DependencyInjection.MapsterSetup(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - app.UseSwagger(); app.UseSwaggerUI(); diff --git a/Persistence.Client/Clients/IWitsDataClient.cs b/Persistence.Client/Clients/IWitsDataClient.cs new file mode 100644 index 0000000..d7b2035 --- /dev/null +++ b/Persistence.Client/Clients/IWitsDataClient.cs @@ -0,0 +1,20 @@ +using Persistence.Models; +using Refit; + +namespace Persistence.Client.Clients; +public interface IWitsDataClient +{ + private const string BaseRoute = "/api/witsData"; + + [Get($"{BaseRoute}/graph")] + Task>> GetValuesForGraph([Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int limit, CancellationToken token); + + [Post($"{BaseRoute}/")] + Task> InsertRange([Body] IEnumerable dtos, CancellationToken token); + + [Get($"{BaseRoute}/part")] + Task>> GetPart([Query] int discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); + + [Get($"{BaseRoute}/datesRange")] + Task> GetDatesRangeAsync([Query] int discriminatorId, CancellationToken token); +} diff --git a/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.Designer.cs b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.Designer.cs new file mode 100644 index 0000000..c0f01fc --- /dev/null +++ b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.Designer.cs @@ -0,0 +1,257 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Persistence.Database.Model; + +#nullable disable + +namespace Persistence.Database.Postgres.Migrations +{ + [DbContext(typeof(PersistenceDbContext))] + [Migration("20241203120141_ParameterDataMigration")] + partial class ParameterDataMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("Russian_Russia.1251") + .HasAnnotation("ProductVersion", "8.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "adminpack"); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Persistence.Database.Entity.DrillingSystem", b => + { + b.Property("SystemId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasComment("Id системы автобурения"); + + b.Property("Description") + .HasColumnType("text") + .HasComment("Описание системы автобурения"); + + b.Property("Name") + .IsRequired() + .HasColumnType("varchar(256)") + .HasComment("Наименование системы автобурения"); + + b.HasKey("SystemId"); + + b.ToTable("DrillingSystem"); + }); + + modelBuilder.Entity("Persistence.Database.Entity.ParameterData", b => + { + b.Property("DiscriminatorId") + .HasColumnType("integer") + .HasComment("Дискриминатор системы"); + + b.Property("ParameterId") + .HasColumnType("integer") + .HasComment("Id параметра"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasComment("Временная отметка"); + + b.Property("Value") + .IsRequired() + .HasColumnType("varchar(256)") + .HasComment("Значение параметра в виде строки"); + + b.HasKey("DiscriminatorId", "ParameterId", "Timestamp"); + + b.ToTable("ParameterData"); + }); + + modelBuilder.Entity("Persistence.Database.Entity.TechMessage", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasComment("Id события"); + + b.Property("CategoryId") + .HasColumnType("integer") + .HasComment("Id Категории важности"); + + b.Property("Depth") + .HasColumnType("double precision") + .HasComment("Глубина забоя"); + + b.Property("MessageText") + .IsRequired() + .HasColumnType("varchar(512)") + .HasComment("Текст сообщения"); + + b.Property("SystemId") + .HasColumnType("uuid") + .HasComment("Id системы автобурения, к которой относится сообщение"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasComment("Дата возникновения"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasComment("Id пользователя за пультом бурильщика"); + + b.HasKey("EventId"); + + b.HasIndex("SystemId"); + + b.ToTable("TechMessage"); + }); + + modelBuilder.Entity("Persistence.Database.Entity.TimestampedSet", b => + { + b.Property("IdDiscriminator") + .HasColumnType("uuid") + .HasComment("Дискриминатор ссылка на тип сохраняемых данных"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasComment("Отметка времени, строго в UTC"); + + b.Property("Set") + .IsRequired() + .HasColumnType("jsonb") + .HasComment("Набор сохраняемых данных"); + + b.HasKey("IdDiscriminator", "Timestamp"); + + b.ToTable("TimestampedSets", t => + { + t.HasComment("Общая таблица данных временных рядов"); + }); + }); + + modelBuilder.Entity("Persistence.Database.Model.DataSaub", b => + { + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("AxialLoad") + .HasColumnType("double precision") + .HasColumnName("axialLoad"); + + b.Property("BitDepth") + .HasColumnType("double precision") + .HasColumnName("bitDepth"); + + b.Property("BlockPosition") + .HasColumnType("double precision") + .HasColumnName("blockPosition"); + + b.Property("BlockSpeed") + .HasColumnType("double precision") + .HasColumnName("blockSpeed"); + + b.Property("Flow") + .HasColumnType("double precision") + .HasColumnName("flow"); + + b.Property("HookWeight") + .HasColumnType("double precision") + .HasColumnName("hookWeight"); + + b.Property("IdFeedRegulator") + .HasColumnType("integer") + .HasColumnName("idFeedRegulator"); + + b.Property("Mode") + .HasColumnType("integer") + .HasColumnName("mode"); + + b.Property("Mse") + .HasColumnType("double precision") + .HasColumnName("mse"); + + b.Property("MseState") + .HasColumnType("smallint") + .HasColumnName("mseState"); + + b.Property("Pressure") + .HasColumnType("double precision") + .HasColumnName("pressure"); + + b.Property("Pump0Flow") + .HasColumnType("double precision") + .HasColumnName("pump0Flow"); + + b.Property("Pump1Flow") + .HasColumnType("double precision") + .HasColumnName("pump1Flow"); + + b.Property("Pump2Flow") + .HasColumnType("double precision") + .HasColumnName("pump2Flow"); + + b.Property("RotorSpeed") + .HasColumnType("double precision") + .HasColumnName("rotorSpeed"); + + b.Property("RotorTorque") + .HasColumnType("double precision") + .HasColumnName("rotorTorque"); + + b.Property("User") + .HasColumnType("text") + .HasColumnName("user"); + + b.Property("WellDepth") + .HasColumnType("double precision") + .HasColumnName("wellDepth"); + + b.HasKey("Date"); + + b.ToTable("DataSaub"); + }); + + modelBuilder.Entity("Persistence.Database.Model.Setpoint", b => + { + b.Property("Key") + .HasColumnType("uuid") + .HasComment("Ключ"); + + b.Property("Created") + .HasColumnType("timestamp with time zone") + .HasComment("Дата создания уставки"); + + b.Property("IdUser") + .HasColumnType("uuid") + .HasComment("Id автора последнего изменения"); + + b.Property("Value") + .IsRequired() + .HasColumnType("jsonb") + .HasComment("Значение уставки"); + + b.HasKey("Key", "Created"); + + b.ToTable("Setpoint"); + }); + + modelBuilder.Entity("Persistence.Database.Entity.TechMessage", b => + { + b.HasOne("Persistence.Database.Entity.DrillingSystem", "System") + .WithMany() + .HasForeignKey("SystemId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("System"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs new file mode 100644 index 0000000..049e506 --- /dev/null +++ b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs @@ -0,0 +1,36 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Persistence.Database.Postgres.Migrations +{ + /// + public partial class ParameterDataMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ParameterData", + columns: table => new + { + DiscriminatorId = table.Column(type: "integer", nullable: false, comment: "Дискриминатор системы"), + ParameterId = table.Column(type: "integer", nullable: false, comment: "Id параметра"), + Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Временная отметка"), + Value = table.Column(type: "varchar(256)", nullable: false, comment: "Значение параметра в виде строки") + }, + constraints: table => + { + table.PrimaryKey("PK_ParameterData", x => new { x.DiscriminatorId, x.ParameterId, x.Timestamp }); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ParameterData"); + } + } +} diff --git a/Persistence.Database.Postgres/Migrations/PersistenceDbContextModelSnapshot.cs b/Persistence.Database.Postgres/Migrations/PersistenceDbContextModelSnapshot.cs index e53c81a..e1c9683 100644 --- a/Persistence.Database.Postgres/Migrations/PersistenceDbContextModelSnapshot.cs +++ b/Persistence.Database.Postgres/Migrations/PersistenceDbContextModelSnapshot.cs @@ -45,6 +45,30 @@ namespace Persistence.Database.Postgres.Migrations b.ToTable("DrillingSystem"); }); + modelBuilder.Entity("Persistence.Database.Entity.ParameterData", b => + { + b.Property("DiscriminatorId") + .HasColumnType("integer") + .HasComment("Дискриминатор системы"); + + b.Property("ParameterId") + .HasColumnType("integer") + .HasComment("Id параметра"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone") + .HasComment("Временная отметка"); + + b.Property("Value") + .IsRequired() + .HasColumnType("varchar(256)") + .HasComment("Значение параметра в виде строки"); + + b.HasKey("DiscriminatorId", "ParameterId", "Timestamp"); + + b.ToTable("ParameterData"); + }); + modelBuilder.Entity("Persistence.Database.Entity.TechMessage", b => { b.Property("EventId") diff --git a/Persistence.Database.Postgres/PersistenceDbContext.cs b/Persistence.Database.Postgres/PersistenceDbContext.cs index 89b09db..abde7b7 100644 --- a/Persistence.Database.Postgres/PersistenceDbContext.cs +++ b/Persistence.Database.Postgres/PersistenceDbContext.cs @@ -1,7 +1,5 @@ using Microsoft.EntityFrameworkCore; -using Npgsql; using Persistence.Database.Entity; -using System.Data.Common; namespace Persistence.Database.Model; public partial class PersistenceDbContext : DbContext @@ -14,6 +12,8 @@ public partial class PersistenceDbContext : DbContext public DbSet TimestampedSets => Set(); + public DbSet ParameterData => Set(); + public PersistenceDbContext() : base() { diff --git a/Persistence.Database/Entity/ParameterData.cs b/Persistence.Database/Entity/ParameterData.cs new file mode 100644 index 0000000..627bf48 --- /dev/null +++ b/Persistence.Database/Entity/ParameterData.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; + +namespace Persistence.Database.Entity; + +[PrimaryKey(nameof(DiscriminatorId), nameof(ParameterId), nameof(Timestamp))] +public class ParameterData +{ + [Required, Comment("Дискриминатор системы")] + public int DiscriminatorId { get; set; } + + [Comment("Id параметра")] + public int ParameterId { get; set; } + + [Column(TypeName = "varchar(256)"), Comment("Значение параметра в виде строки")] + public required string Value { get; set; } + + [Comment("Временная отметка")] + public DateTimeOffset Timestamp { get; set; } +} diff --git a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs new file mode 100644 index 0000000..1364d5b --- /dev/null +++ b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs @@ -0,0 +1,223 @@ +using System.Net; +using Microsoft.Extensions.DependencyInjection; +using Persistence.Client; +using Persistence.Client.Clients; +using Persistence.Database.Entity; +using Persistence.Models; +using Xunit; + +namespace Persistence.IntegrationTests.Controllers; +public class WitsDataControllerTest : BaseIntegrationTest +{ + private IWitsDataClient witsDataClient; + + public WitsDataControllerTest(WebAppFactoryFixture factory) : base(factory) + { + var scope = factory.Services.CreateScope(); + var persistenceClientFactory = scope.ServiceProvider + .GetRequiredService(); + + witsDataClient = persistenceClientFactory.GetClient(); + } + + [Fact] + public async Task GetDatesRangeAsync_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + var discriminatorId = 1; + + //act + var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + } + + [Fact] + public async Task GetPart_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + var discriminatorId = 1; + var dateBegin = DateTimeOffset.UtcNow; + var take = 1; + + //act + var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Empty(response.Content); + } + + [Fact] + public async Task InsertRange_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + //act + await InsertRange(); + } + + [Fact] + public async Task GetValuesForGraph_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + //act + + //assert + } + + #region AfterSave + [Fact] + public async Task GetDatesRangeAsync_AfterSave_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + var dtos = await InsertRange(); + var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; + + //act + var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + + var expectedDateFrom = dtos + .Select(e => e.Timestamped) + .Min() + .ToString("dd.MM.yyyy-HH:mm:ss"); + var actualDateFrom = response.Content.From.DateTime + .ToString("dd.MM.yyyy-HH:mm:ss"); + Assert.Equal(expectedDateFrom, actualDateFrom); + + var expectedDateTo = dtos + .Select(e => e.Timestamped) + .Min() + .ToString("dd.MM.yyyy-HH:mm:ss"); + var actualDateTo = response.Content.From.DateTime + .ToString("dd.MM.yyyy-HH:mm:ss"); + Assert.Equal(expectedDateTo, actualDateTo); + } + + [Fact] + public async Task GetPart_AfterSave_returns_success() + { + //arrange + dbContext.CleanupDbSet(); + + var dtos = await InsertRange(); + var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; + var dateBegin = dtos.FirstOrDefault()!.Timestamped; + var take = 1; + + //act + var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.NotEmpty(response.Content); + Assert.Equal(take, response.Content.Count()); + } + + [Fact] + public async Task GetValuesForGraph_AfterSave_returns_success() + { + + } + #endregion + + #region BadRequest + [Fact] + public async Task InsertRange_returns_BadRequest() + { + //arrange + var dtos = new List() + { + new WitsDataDto() + { + DiscriminatorId = -1, // < 0 + Timestamped = DateTimeOffset.UtcNow, + Values = new List() + { + new WitsValueDto() + { + RecordId = -1, // < 0 + ItemId = 101, // > 100 + Value = "string value" + } + } + } + }; + + //act + var response = await witsDataClient.InsertRange(dtos, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + #endregion + + private async Task> InsertRange() + { + //arrange + var dtos = new List() + { + new WitsDataDto() + { + DiscriminatorId = 1, + Timestamped = DateTimeOffset.UtcNow, + Values = new List() + { + new WitsValueDto() + { + RecordId = 11, + ItemId = 22, + Value = "string value" + }, + new WitsValueDto() + { + RecordId = 11, + ItemId = 27, + Value = 2.22 + } + } + }, + new WitsDataDto() + { + DiscriminatorId = 2, + Timestamped = DateTimeOffset.UtcNow, + Values = new List() + { + new WitsValueDto() + { + RecordId = 13, + ItemId = 14, + Value = "string value" + } + } + } + }; + + //act + var response = await witsDataClient.InsertRange(dtos, new CancellationToken()); + + //assert + var count = dtos.SelectMany(e => e.Values).Count(); + Assert.Equal(HttpStatusCode.Created, response.StatusCode); + Assert.Equal(count, response.Content); + + return dtos; + } +} diff --git a/Persistence.Repository/DependencyInjection.cs b/Persistence.Repository/DependencyInjection.cs index e353d30..ffcf3dc 100644 --- a/Persistence.Repository/DependencyInjection.cs +++ b/Persistence.Repository/DependencyInjection.cs @@ -20,6 +20,7 @@ public static class DependencyInjection services.AddTransient, TimeSeriesDataCachedRepository>(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); return services; } diff --git a/Persistence.Repository/Repositories/ParameterRepository.cs b/Persistence.Repository/Repositories/ParameterRepository.cs new file mode 100644 index 0000000..be97a74 --- /dev/null +++ b/Persistence.Repository/Repositories/ParameterRepository.cs @@ -0,0 +1,66 @@ +using Mapster; +using Microsoft.EntityFrameworkCore; +using Persistence.Database.Entity; +using Persistence.Models; +using Persistence.Repositories; + +namespace Persistence.Repository.Repositories; +public class ParameterRepository : IParameterRepository +{ + private DbContext db; + + public ParameterRepository(DbContext db) + { + this.db = db; + } + + protected virtual IQueryable GetQueryReadOnly() => db.Set(); + + public async Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token) + { + var query = GetQueryReadOnly() + .Where(e => e.DiscriminatorId == idDiscriminator) + .GroupBy(e => 1) + .Select(group => new + { + Min = group.Min(e => e.Timestamp), + Max = group.Max(e => e.Timestamp), + }); + var values = await query.FirstOrDefaultAsync(token); + var result = new DatesRangeDto() + { + From = values?.Min ?? DateTimeOffset.MinValue, + To = values?.Max ?? DateTimeOffset.MaxValue + }; + + return result; + } + + public async Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) + { + var query = GetQueryReadOnly(); + var universalDate = dateBegin.ToUniversalTime(); + var entities = await query + .Where(e => e.DiscriminatorId == idDiscriminator && e.Timestamp >= universalDate) + .Take(take) + .ToArrayAsync(token); + var dtos = entities.Select(e => e.Adapt()); + + return dtos; + } + + public Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo) + { + throw new NotImplementedException(); + } + + public async Task InsertRange(IEnumerable dtos, CancellationToken token) + { + var entities = dtos.Select(e => e.Adapt()); + + await db.Set().AddRangeAsync(entities, token); + var result = await db.SaveChangesAsync(token); + + return result; + } +} diff --git a/Persistence/API/ISyncWithDiscriminatorApi.cs b/Persistence/API/ISyncWithDiscriminatorApi.cs new file mode 100644 index 0000000..1665b01 --- /dev/null +++ b/Persistence/API/ISyncWithDiscriminatorApi.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Mvc; +using Persistence.Models; + +namespace Persistence.API; + +/// +/// Интерфейс для API, предназначенного для синхронизации данных, у которых есть дискриминатор +/// +public interface ISyncWithDiscriminatorApi +{ + /// + /// Получить порцию записей, начиная с заданной даты + /// + /// + /// + /// количество записей + /// + /// + Task>> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default); + + /// + /// Получить диапазон дат, для которых есть данные в репозитории + /// + /// + /// + /// + Task> GetDatesRangeAsync(int idDiscriminator, CancellationToken token); +} \ No newline at end of file diff --git a/Persistence/API/IWitsDataApi.cs b/Persistence/API/IWitsDataApi.cs new file mode 100644 index 0000000..8186445 --- /dev/null +++ b/Persistence/API/IWitsDataApi.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Mvc; +using Persistence.Models; + +namespace Persistence.API; + +/// +/// Интерфейс для работы с параметрами Wits +/// +public interface IWitsDataApi : ISyncWithDiscriminatorApi +{ + /// + /// Получить набор параметров (Wits) для построения графика + /// + /// + /// + /// + Task>> GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo, int limit, CancellationToken token); + + /// + /// Сохранить набор параметров (Wits) + /// + /// + /// + /// + Task InsertRange(IEnumerable dtos, CancellationToken token); +} diff --git a/Persistence/Models/ParameterDto.cs b/Persistence/Models/ParameterDto.cs new file mode 100644 index 0000000..a1155ce --- /dev/null +++ b/Persistence/Models/ParameterDto.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; + +namespace Persistence.Models; + +/// +/// Модель параметра +/// +public class ParameterDto +{ + /// + /// Дискриминатор системы + /// + [Range(0, int.MaxValue, ErrorMessage = "Дискриминатор системы не может быть меньше 0")] + public int DiscriminatorId { get; set; } + + /// + /// Id параметра + /// + [Range(0, int.MaxValue, ErrorMessage = "Id параметра не может быть меньше 0")] + public int ParameterId { get; set; } + + /// + /// Значение параметра в виде строки + /// + [StringLength(256, MinimumLength = 1, ErrorMessage = "Допустимая длина значения параметра от 1 до 256 символов")] + public required string Value { get; set; } + + /// + /// Временная отметка + /// + public DateTimeOffset Timestamp { get; set; } +} diff --git a/Persistence/Models/WitsDataDto.cs b/Persistence/Models/WitsDataDto.cs new file mode 100644 index 0000000..7293067 --- /dev/null +++ b/Persistence/Models/WitsDataDto.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; + +namespace Persistence.Models; + +/// +/// Группа параметров Wits +/// +public class WitsDataDto +{ + /// + /// Временная отметка + /// + public required DateTimeOffset Timestamped { get; set; } + + /// + /// Дискриминатор системы + /// + [Range(0, int.MaxValue, ErrorMessage = "Дискриминатор системы не может быть меньше 0")] + public required int DiscriminatorId { get; set; } + + /// + /// Параметры + /// + public IEnumerable Values { get; set; } = []; +} diff --git a/Persistence/Models/WitsValueDto.cs b/Persistence/Models/WitsValueDto.cs new file mode 100644 index 0000000..0c68453 --- /dev/null +++ b/Persistence/Models/WitsValueDto.cs @@ -0,0 +1,26 @@ +using System.ComponentModel.DataAnnotations; + +namespace Persistence.Models; + +/// +/// Параметр Wits +/// +public class WitsValueDto +{ + /// + /// Wits - Record Number + /// + [Range(1, 100, ErrorMessage = "Значение \"Record Number\" обязано находиться в диапозоне от 1 до 100")] + public int RecordId { get; set; } + + /// + /// Wits - Record Item + /// + [Range(1, 100, ErrorMessage = "Значение \"Wits Record Item\" обязано находиться в диапозоне от 1 до 100")] + public int ItemId { get; set; } + + /// + /// Значение параметра + /// + public required object Value { get; set; } +} diff --git a/Persistence/Repositories/IParameterRepository.cs b/Persistence/Repositories/IParameterRepository.cs new file mode 100644 index 0000000..fdf9bff --- /dev/null +++ b/Persistence/Repositories/IParameterRepository.cs @@ -0,0 +1,38 @@ +using Persistence.Models; + +namespace Persistence.Repositories; +public interface IParameterRepository +{ + /// + /// Получить порцию записей, начиная с заданной даты + /// + /// + /// + /// + /// + Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); + + /// + /// Получить диапазон дат, для которых есть данные в репозитории + /// + /// + /// + Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + + /// + /// Получить набор параметров (Wits) для построения графика + /// + /// + /// + /// + Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo); + + /// + /// Сохранить набор параметров (Wits) + /// + /// + /// + /// + /// + Task InsertRange(IEnumerable dtos, CancellationToken token); +} diff --git a/Persistence/Services/Interfaces/IWitsDataService.cs b/Persistence/Services/Interfaces/IWitsDataService.cs new file mode 100644 index 0000000..4e431fe --- /dev/null +++ b/Persistence/Services/Interfaces/IWitsDataService.cs @@ -0,0 +1,10 @@ +using Persistence.Models; + +namespace Persistence.Services.Interfaces; +public interface IWitsDataService +{ + Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); + Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo); + Task InsertRange(IEnumerable dtos, CancellationToken token); +} \ No newline at end of file diff --git a/Persistence/Services/WitsDataService.cs b/Persistence/Services/WitsDataService.cs new file mode 100644 index 0000000..1cb52fb --- /dev/null +++ b/Persistence/Services/WitsDataService.cs @@ -0,0 +1,89 @@ +using Persistence.Models; +using Persistence.Repositories; +using Persistence.Services.Interfaces; + +namespace Persistence.Services; +public class WitsDataService : IWitsDataService +{ + private readonly IParameterRepository witsDataRepository; + private const int multiplier = 1000; + public WitsDataService(IParameterRepository witsDataRepository) + { + this.witsDataRepository = witsDataRepository; + } + + public Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token) + { + var result = witsDataRepository.GetDatesRangeAsync(idDiscriminator, token); + + return result; + } + + public async Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) + { + var dtos = await witsDataRepository.GetPart(idDiscriminator, dateBegin, take, token); + + var result = new List(); + foreach (var dto in dtos) + { + var witsDataDto = result.FirstOrDefault(e => e.DiscriminatorId == dto.DiscriminatorId && e.Timestamped == dto.Timestamp); + if (witsDataDto == null) + { + witsDataDto = new WitsDataDto() + { + DiscriminatorId = dto.DiscriminatorId, + Timestamped = dto.Timestamp + }; + result.Add(witsDataDto); + } + var witsValueDto = new WitsValueDto() + { + RecordId = DecodeRecordId(dto.ParameterId), + ItemId = DecodeItemId(dto.ParameterId), + Value = dto.Value + }; + witsDataDto.Values.Append(witsValueDto); + } + + return result; + } + + public Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo) + { + throw new NotImplementedException(); + } + + public async Task InsertRange(IEnumerable dtos, CancellationToken token) + { + var parameterDtos = dtos.SelectMany(e => e.Values.Select(t => new ParameterDto() + { + DiscriminatorId = e.DiscriminatorId, + ParameterId = EncodeId(t.RecordId, t.ItemId), + Value = t.Value.ToString()!, + Timestamp = e.Timestamped + })); + var result = await witsDataRepository.InsertRange(parameterDtos, token); + + return result; + } + + private int EncodeId(int recordId, int itemId) + { + var resultId = multiplier * recordId + itemId; + return resultId; + } + + private int DecodeRecordId(int id) + { + var resultId = id / multiplier; + + return resultId; + } + + private int DecodeItemId(int id) + { + var resultId = id % multiplier; + + return resultId; + } +} From 632e2a9f60134c5f1922abaeda40656d3d72c7a9 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Wed, 4 Dec 2024 14:13:45 +0500 Subject: [PATCH 2/7] =?UTF-8?q?=D0=92=D1=8B=D0=BD=D0=B5=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Persistence/Services/{ => Interfaces}/IArchiveService.cs | 2 +- .../Services/{ => Interfaces}/ITimeSeriesDataObserverService.cs | 2 +- .../Services/{ => Interfaces}/TimeSeriesDataObserverService.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename Persistence/Services/{ => Interfaces}/IArchiveService.cs (94%) rename Persistence/Services/{ => Interfaces}/ITimeSeriesDataObserverService.cs (53%) rename Persistence/Services/{ => Interfaces}/TimeSeriesDataObserverService.cs (65%) diff --git a/Persistence/Services/IArchiveService.cs b/Persistence/Services/Interfaces/IArchiveService.cs similarity index 94% rename from Persistence/Services/IArchiveService.cs rename to Persistence/Services/Interfaces/IArchiveService.cs index 9733dc1..73abf3f 100644 --- a/Persistence/Services/IArchiveService.cs +++ b/Persistence/Services/Interfaces/IArchiveService.cs @@ -1,4 +1,4 @@ -namespace Persistence.Services; +namespace Persistence.Services.Interfaces; /// /// Сервис по работе с БД diff --git a/Persistence/Services/ITimeSeriesDataObserverService.cs b/Persistence/Services/Interfaces/ITimeSeriesDataObserverService.cs similarity index 53% rename from Persistence/Services/ITimeSeriesDataObserverService.cs rename to Persistence/Services/Interfaces/ITimeSeriesDataObserverService.cs index 12994bb..9cbe04f 100644 --- a/Persistence/Services/ITimeSeriesDataObserverService.cs +++ b/Persistence/Services/Interfaces/ITimeSeriesDataObserverService.cs @@ -1,4 +1,4 @@ -namespace Persistence.Services; +namespace Persistence.Services.Interfaces; public interface ITimeSeriesDataObserverService { diff --git a/Persistence/Services/TimeSeriesDataObserverService.cs b/Persistence/Services/Interfaces/TimeSeriesDataObserverService.cs similarity index 65% rename from Persistence/Services/TimeSeriesDataObserverService.cs rename to Persistence/Services/Interfaces/TimeSeriesDataObserverService.cs index 7785928..7da510e 100644 --- a/Persistence/Services/TimeSeriesDataObserverService.cs +++ b/Persistence/Services/Interfaces/TimeSeriesDataObserverService.cs @@ -1,4 +1,4 @@ -namespace Persistence.Services; +namespace Persistence.Services.Interfaces; public abstract class TimeSeriesDataObserverService : ITimeSeriesDataObserverService { } From 0638806ea4e5b602f58311b94758ebe67017e310 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Fri, 6 Dec 2024 11:40:18 +0500 Subject: [PATCH 3/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B8=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WitsDataController.cs | 21 +- Persistence.Client/Clients/IWitsDataClient.cs | 4 +- .../Controllers/WitsDataControllerTest.cs | 81 +- .../Repositories/ParameterRepository.cs | 26 +- Persistence/API/IWitsDataApi.cs | 8 +- Persistence/Models/Configurations/WitsInfo.cs | 12 + Persistence/Models/Enumerations/WitsType.cs | 24 + Persistence/Persistence.csproj | 8 + .../Repositories/IParameterRepository.cs | 9 +- Persistence/Services/Config/WitsConfig.json | 12866 ++++++++++++++++ .../Services/Interfaces/IWitsDataService.cs | 42 +- Persistence/Services/WitsDataService.cs | 137 +- 12 files changed, 13151 insertions(+), 87 deletions(-) create mode 100644 Persistence/Models/Configurations/WitsInfo.cs create mode 100644 Persistence/Models/Enumerations/WitsType.cs create mode 100644 Persistence/Services/Config/WitsConfig.json diff --git a/Persistence.API/Controllers/WitsDataController.cs b/Persistence.API/Controllers/WitsDataController.cs index 6e74b2b..f66b0c3 100644 --- a/Persistence.API/Controllers/WitsDataController.cs +++ b/Persistence.API/Controllers/WitsDataController.cs @@ -6,6 +6,9 @@ using Persistence.Services.Interfaces; namespace Persistence.API.Controllers; +/// +/// Работа с параметрами Wits +/// [ApiController] [Authorize] [Route("api/[controller]")] @@ -51,15 +54,17 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// Получить набор параметров (Wits) для построения графика /// - /// - /// - /// + /// Дискриминатор системы + /// Начало временного интервала + /// Конец временного интервала + /// Количество точек /// /// [HttpGet("graph")] - public async Task>> GetValuesForGraph([FromQuery] DateTimeOffset dateFrom, [FromQuery] DateTimeOffset dateTo, [FromQuery] int limit, CancellationToken token) + public async Task>> GetValuesForGraph([FromQuery] int discriminatorId, + [FromQuery] DateTimeOffset dateFrom, [FromQuery] DateTimeOffset dateTo, [FromQuery] int approxPointsCount, CancellationToken token) { - var result = await witsDataService.GetValuesForGraph(dateFrom, dateTo); + var result = await witsDataService.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointsCount, token); return Ok(result); } @@ -72,10 +77,10 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// [HttpPost] [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] - public async Task InsertRange([FromBody] IEnumerable dtos, CancellationToken token) + public async Task AddRange([FromBody] IEnumerable dtos, CancellationToken token) { - var result = await witsDataService.InsertRange(dtos, token); + var result = await witsDataService.AddRange(dtos, token); - return CreatedAtAction(nameof(InsertRange), result); + return CreatedAtAction(nameof(AddRange), result); } } diff --git a/Persistence.Client/Clients/IWitsDataClient.cs b/Persistence.Client/Clients/IWitsDataClient.cs index d7b2035..528cb0c 100644 --- a/Persistence.Client/Clients/IWitsDataClient.cs +++ b/Persistence.Client/Clients/IWitsDataClient.cs @@ -7,10 +7,10 @@ public interface IWitsDataClient private const string BaseRoute = "/api/witsData"; [Get($"{BaseRoute}/graph")] - Task>> GetValuesForGraph([Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int limit, CancellationToken token); + Task>> GetValuesForGraph([Query] int discriminatorId, [Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int approxPointsCount, CancellationToken token); [Post($"{BaseRoute}/")] - Task> InsertRange([Body] IEnumerable dtos, CancellationToken token); + Task> AddRange([Body] IEnumerable dtos, CancellationToken token); [Get($"{BaseRoute}/part")] Task>> GetPart([Query] int discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); diff --git a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs index 1364d5b..fc0a02d 100644 --- a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs @@ -62,7 +62,7 @@ public class WitsDataControllerTest : BaseIntegrationTest dbContext.CleanupDbSet(); //act - await InsertRange(); + await AddRange(); } [Fact] @@ -71,19 +71,27 @@ public class WitsDataControllerTest : BaseIntegrationTest //arrange dbContext.CleanupDbSet(); + var discriminatorId = 1; + var dateFrom = DateTimeOffset.UtcNow; + var dateTo = DateTimeOffset.UtcNow; + var approxPointCount = 12; + //act + var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, new CancellationToken()); //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Empty(response.Content); } - #region AfterSave [Fact] public async Task GetDatesRangeAsync_AfterSave_returns_success() { //arrange dbContext.CleanupDbSet(); - var dtos = await InsertRange(); + var dtos = await AddRange(); var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; //act @@ -116,7 +124,7 @@ public class WitsDataControllerTest : BaseIntegrationTest //arrange dbContext.CleanupDbSet(); - var dtos = await InsertRange(); + var dtos = await AddRange(); var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; var dateBegin = dtos.FirstOrDefault()!.Timestamped; var take = 1; @@ -134,11 +142,24 @@ public class WitsDataControllerTest : BaseIntegrationTest [Fact] public async Task GetValuesForGraph_AfterSave_returns_success() { + //arrange + dbContext.CleanupDbSet(); + var dtos = await AddRange(37); + var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; + var dateFrom = dtos.Select(e => e.Timestamped).Min(); + var dateTo = dtos.Select(e => e.Timestamped).Max(); + var approxPointCount = 12; + + //act + var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, new CancellationToken()); + + //assert + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.NotNull(response.Content); + Assert.Equal(approxPointCount, response.Content.Count()); } - #endregion - #region BadRequest [Fact] public async Task InsertRange_returns_BadRequest() { @@ -155,63 +176,43 @@ public class WitsDataControllerTest : BaseIntegrationTest { RecordId = -1, // < 0 ItemId = 101, // > 100 - Value = "string value" + Value = string.Empty } } } }; //act - var response = await witsDataClient.InsertRange(dtos, new CancellationToken()); + var response = await witsDataClient.AddRange(dtos, new CancellationToken()); //assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } - #endregion - private async Task> InsertRange() + private async Task> AddRange(int countToCreate = 10) { - //arrange - var dtos = new List() + var dtos = new List(); + var timestamped = DateTimeOffset.UtcNow; + for (var i = 0; i < countToCreate && i < 100; i++) { - new WitsDataDto() + dtos.Add(new WitsDataDto() { DiscriminatorId = 1, - Timestamped = DateTimeOffset.UtcNow, + Timestamped = timestamped.AddSeconds(i), Values = new List() { new WitsValueDto() { - RecordId = 11, - ItemId = 22, - Value = "string value" - }, - new WitsValueDto() - { - RecordId = 11, - ItemId = 27, - Value = 2.22 + RecordId = i + 1, + ItemId = i + 1, + Value = new Random().Next(1, 100) } } - }, - new WitsDataDto() - { - DiscriminatorId = 2, - Timestamped = DateTimeOffset.UtcNow, - Values = new List() - { - new WitsValueDto() - { - RecordId = 13, - ItemId = 14, - Value = "string value" - } - } - } - }; + }); + } //act - var response = await witsDataClient.InsertRange(dtos, new CancellationToken()); + var response = await witsDataClient.AddRange(dtos, new CancellationToken()); //assert var count = dtos.SelectMany(e => e.Values).Count(); diff --git a/Persistence.Repository/Repositories/ParameterRepository.cs b/Persistence.Repository/Repositories/ParameterRepository.cs index be97a74..51510ec 100644 --- a/Persistence.Repository/Repositories/ParameterRepository.cs +++ b/Persistence.Repository/Repositories/ParameterRepository.cs @@ -1,5 +1,6 @@ using Mapster; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json.Linq; using Persistence.Database.Entity; using Persistence.Models; using Persistence.Repositories; @@ -49,12 +50,31 @@ public class ParameterRepository : IParameterRepository return dtos; } - public Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo) + public async Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + int approxPointsCount, int? ratio, CancellationToken token) { - throw new NotImplementedException(); + var query = db.Set().AsNoTracking(); + var universalDateFrom = dateFrom.ToUniversalTime(); + var universalDateTo = dateTo.ToUniversalTime(); + + query = query + .Where(e => e.DiscriminatorId == discriminatorId && e.Timestamp >= universalDateFrom && e.Timestamp <= universalDateTo) + .OrderBy(e => e.Timestamp); + if (ratio != null) + { + query = query.Where(e => ((int) (e.Timestamp - dateFrom).TotalSeconds) % ratio == 0); + } + + var entities = await query + .Take((int)(2.5 * approxPointsCount)) + .ToListAsync(token); + + var dtos = entities.Select(e => e.Adapt()); + + return dtos; } - public async Task InsertRange(IEnumerable dtos, CancellationToken token) + public async Task AddRange(IEnumerable dtos, CancellationToken token) { var entities = dtos.Select(e => e.Adapt()); diff --git a/Persistence/API/IWitsDataApi.cs b/Persistence/API/IWitsDataApi.cs index 8186445..8bd3e6f 100644 --- a/Persistence/API/IWitsDataApi.cs +++ b/Persistence/API/IWitsDataApi.cs @@ -11,10 +11,14 @@ public interface IWitsDataApi : ISyncWithDiscriminatorApi /// /// Получить набор параметров (Wits) для построения графика /// + /// /// /// + /// + /// /// - Task>> GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo, int limit, CancellationToken token); + Task>> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + int approxPointsCount, CancellationToken token); /// /// Сохранить набор параметров (Wits) @@ -22,5 +26,5 @@ public interface IWitsDataApi : ISyncWithDiscriminatorApi /// /// /// - Task InsertRange(IEnumerable dtos, CancellationToken token); + Task AddRange(IEnumerable dtos, CancellationToken token); } diff --git a/Persistence/Models/Configurations/WitsInfo.cs b/Persistence/Models/Configurations/WitsInfo.cs new file mode 100644 index 0000000..79e40bb --- /dev/null +++ b/Persistence/Models/Configurations/WitsInfo.cs @@ -0,0 +1,12 @@ +using Persistence.Models.Enumerations; + +namespace Persistence.Models.Configurations; + +public class WitsInfo +{ + public int RecordId { get; set; } + + public int ItemId { get; set; } + + public WitsType ValueType { get; set; } +} \ No newline at end of file diff --git a/Persistence/Models/Enumerations/WitsType.cs b/Persistence/Models/Enumerations/WitsType.cs new file mode 100644 index 0000000..888e237 --- /dev/null +++ b/Persistence/Models/Enumerations/WitsType.cs @@ -0,0 +1,24 @@ +namespace Persistence.Models.Enumerations; + +/// +/// WITS Data Type Codes +/// +public enum WitsType +{ + /// + /// Alphanumeric, Rep Code = 65 + /// + A, + /// + /// 32 bit 2's complement signed integer, Rep Code = 73 + /// + L, + /// + /// 16 bit 2's complement signed integer, Rep Code = 79 + /// + S, + /// + /// 32 bit IEEE single precision floating point, Rep Code = 128 + /// + F, +} \ No newline at end of file diff --git a/Persistence/Persistence.csproj b/Persistence/Persistence.csproj index c857356..3e63047 100644 --- a/Persistence/Persistence.csproj +++ b/Persistence/Persistence.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/Persistence/Repositories/IParameterRepository.cs b/Persistence/Repositories/IParameterRepository.cs index fdf9bff..a3728da 100644 --- a/Persistence/Repositories/IParameterRepository.cs +++ b/Persistence/Repositories/IParameterRepository.cs @@ -22,10 +22,15 @@ public interface IParameterRepository /// /// Получить набор параметров (Wits) для построения графика /// + /// /// /// + /// + /// + /// /// - Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo); + Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + int approxPointsCount, int? ratio, CancellationToken token); /// /// Сохранить набор параметров (Wits) @@ -34,5 +39,5 @@ public interface IParameterRepository /// /// /// - Task InsertRange(IEnumerable dtos, CancellationToken token); + Task AddRange(IEnumerable dtos, CancellationToken token); } diff --git a/Persistence/Services/Config/WitsConfig.json b/Persistence/Services/Config/WitsConfig.json new file mode 100644 index 0000000..fe9a94a --- /dev/null +++ b/Persistence/Services/Config/WitsConfig.json @@ -0,0 +1,12866 @@ +[ + { + "RecordId": 1, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "Number/name assigned to the well by the operator for identification purposes. This item is common to all records. This includes a four-character code identifying the SENDER.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 1, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "Measured depth of the hole at the time the record is generated.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "Number of the sidetrack being drilled at the time the computer generated the record. Prior to having a sidetrack, this number is always 0. The sidetrack number indexes at the time drilling new formation commences (not while drilling the cement plug). This item is common to all records.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "Logical data record type identifier. This item is common to all records and, for current Pre-Defined Records, contains a value between 1 and 25, according to the record type. Types 26 through 49 inclusive are reserved for future expansion of the Pre-Defined records. Types 50 through 80 inclusive are open for Custom user definition. NOTE that the Logical Record Type for a record is this number plus 150, thus WITS Record 1 is Logical Record Type 151, WITS Record 2 is Logical Record Type 152, etc.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "Indicates the number of times this record has been generated (it is not reset to zero for a sidetrack). The computer should automatically increase the number by one each time it creates a new record. This item is common to all records. The sequence identifier in each individual record type keeps track of the count for that particular record only. Thus there is a sequence identifier for each record type used.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "Indicates the date the computer generated this record. The date is reported as a 6 digit integer in a YYMMDD type format. e.g. 910404 would represent April 4, 1991. It is common to all records. Note that, like Time below, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference. Note also that though this number should never decrease, there is no guarantee of this fact.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "Indicates the time of day (24 hour clock), when the computer generated the record, eg. 225015 would represent 10:50:15 pm. This item is common to all records. Note that, like Date above, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference.", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 8, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "Code indicating what activity is currently being performed on the rig. IT IS ESSENTIAL that this information be as accurate and current as possible. Acceptible codes are shownhere", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 9, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "Measured depth of the bit at the time the record is generated. This is the measured depth of the shoe when running casing or liner.", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "Vertical depth of the bit at the time the record is generated. This is the vertical depth of the shoe when running casing or liner.", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 11, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vet)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 12, + "ShortMnemonic": "BPOS", + "LongMnemonic": "BLKPOS", + "Description": "Block Position", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 13, + "ShortMnemonic": "ROPA", + "LongMnemonic": "ROPA", + "Description": "Rate of Penetration (avg)", + "Description2": "", + "MetricUnits": "M/HR", + "FPSUnits": "F/HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 14, + "ShortMnemonic": "HKLA", + "LongMnemonic": "HKLA", + "Description": "Hookload (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 15, + "ShortMnemonic": "HKLX", + "LongMnemonic": "HKLX", + "Description": "Hookload (max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 16, + "ShortMnemonic": "WOBA", + "LongMnemonic": "WOBA", + "Description": "Weight-on-Bit (surf,avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 17, + "ShortMnemonic": "WOBX", + "LongMnemonic": "WOBX", + "Description": "Weight-on-Bit (surf,max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 18, + "ShortMnemonic": "TQA", + "LongMnemonic": "TORQA", + "Description": "Rotary Torque (surf,avg)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 19, + "ShortMnemonic": "TQX", + "LongMnemonic": "TORQX", + "Description": "Rotary Torque (surf,max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 20, + "ShortMnemonic": "RPMA", + "LongMnemonic": "RPMA", + "Description": "Rotary Speed (surf,avg)", + "Description2": "", + "MetricUnits": "RPM", + "FPSUnits": "RPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 21, + "ShortMnemonic": "SPPA", + "LongMnemonic": "SPPA", + "Description": "Standpipe Pressure (avg)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 22, + "ShortMnemonic": "CHKP", + "LongMnemonic": "CHKP", + "Description": "Casing (Choke) Pressure", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 23, + "ShortMnemonic": "SPM1", + "LongMnemonic": "SPM1", + "Description": "Pump Stroke Rate #1", + "Description2": "", + "MetricUnits": "SPM", + "FPSUnits": "SPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 24, + "ShortMnemonic": "SPM2", + "LongMnemonic": "SPM2", + "Description": "Pump Stroke Rate #2", + "Description2": "", + "MetricUnits": "SPM", + "FPSUnits": "SPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 25, + "ShortMnemonic": "SPM3", + "LongMnemonic": "SPM3", + "Description": "Pump Stroke Rate #3", + "Description2": "", + "MetricUnits": "SPM", + "FPSUnits": "SPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 26, + "ShortMnemonic": "TVA", + "LongMnemonic": "TVOLACT", + "Description": "Tank Volume (active)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 27, + "ShortMnemonic": "TVCA", + "LongMnemonic": "TVOLCACT", + "Description": "Tank Volume Change (act)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 28, + "ShortMnemonic": "MFOP", + "LongMnemonic": "MFOP", + "Description": "Mud Flow Out %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 29, + "ShortMnemonic": "MFOA", + "LongMnemonic": "MFOA", + "Description": "Mud Flow Out (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 30, + "ShortMnemonic": "MFIA", + "LongMnemonic": "MFIA", + "Description": "Mud Flow In (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 31, + "ShortMnemonic": "MDOA", + "LongMnemonic": "MDOA", + "Description": "Mud Density Out (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 32, + "ShortMnemonic": "MDIA", + "LongMnemonic": "MDIA", + "Description": "Mud Density In (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 33, + "ShortMnemonic": "MTOA", + "LongMnemonic": "MTOA", + "Description": "Mud Temperature Out (avg)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 34, + "ShortMnemonic": "MTIA", + "LongMnemonic": "MTIA", + "Description": "Mud Temperature In (avg)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 35, + "ShortMnemonic": "MCOA", + "LongMnemonic": "MCOA", + "Description": "Mud Conductivity Out (avg)", + "Description2": "", + "MetricUnits": "MMHO", + "FPSUnits": "MMHO", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 36, + "ShortMnemonic": "MCIA", + "LongMnemonic": "MCIA", + "Description": "Mud Conductivity In (avg)", + "Description2": "", + "MetricUnits": "MMHO", + "FPSUnits": "MMHO", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 37, + "ShortMnemonic": "STKC", + "LongMnemonic": "STKC", + "Description": "Pump Stroke Count (cum)", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 38, + "ShortMnemonic": "LSTK", + "LongMnemonic": "LAGSTKS", + "Description": "Lag Strokes", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 1, + "ItemId": 39, + "ShortMnemonic": "DRTM", + "LongMnemonic": "DEPTRETM", + "Description": "Depth Returns (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 40, + "ShortMnemonic": "GASA", + "LongMnemonic": "GASA", + "Description": "Gas (avg)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 41, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 42, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 43, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 44, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 1, + "ItemId": 45, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 2, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 2, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 2, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 2, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 10, + "ShortMnemonic": "ROPA", + "LongMnemonic": "ROPA", + "Description": "Rate of Penetration (avg)", + "Description2": "", + "MetricUnits": "M/HR", + "FPSUnits": "F/HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 11, + "ShortMnemonic": "WOBA", + "LongMnemonic": "WOBA", + "Description": "Weight-on-Bit (surf,avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 12, + "ShortMnemonic": "HKLA", + "LongMnemonic": "HKLA", + "Description": "Hookload (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 13, + "ShortMnemonic": "SPPA", + "LongMnemonic": "SPPA", + "Description": "Standpipe Pressure (avg)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 14, + "ShortMnemonic": "TQA", + "LongMnemonic": "TORQA", + "Description": "Rotary Torque (surf,avg)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 15, + "ShortMnemonic": "RPMA", + "LongMnemonic": "RPMA", + "Description": "Rotary Speed (surf,avg)", + "Description2": "", + "MetricUnits": "RPM", + "FPSUnits": "RPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 2, + "ItemId": 16, + "ShortMnemonic": "BRVC", + "LongMnemonic": "BTREVC", + "Description": "Bit Revolutions (cum)", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 17, + "ShortMnemonic": "MDIA", + "LongMnemonic": "MDIA", + "Description": "Mud Density In (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 18, + "ShortMnemonic": "ECDT", + "LongMnemonic": "ECDTD", + "Description": "ECD at Total Depth", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 19, + "ShortMnemonic": "MFIA", + "LongMnemonic": "MFIA", + "Description": "Mud Flow In (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 20, + "ShortMnemonic": "MFOA", + "LongMnemonic": "MFOA", + "Description": "Mud Flow Out (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 21, + "ShortMnemonic": "MFOP", + "LongMnemonic": "MFOP", + "Description": "Mud Flow Out %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 2, + "ItemId": 22, + "ShortMnemonic": "TVA", + "LongMnemonic": "TVOLACT", + "Description": "Tank Volume (active)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 23, + "ShortMnemonic": "CPDI", + "LongMnemonic": "CPDI", + "Description": "Cost/Distance (inst)", + "Description2": "", + "MetricUnits": "$/M", + "FPSUnits": "$/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 24, + "ShortMnemonic": "CPDC", + "LongMnemonic": "CPDC", + "Description": "Cost/Distance (cum)", + "Description2": "", + "MetricUnits": "$/M", + "FPSUnits": "$/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 25, + "ShortMnemonic": "BDTI", + "LongMnemonic": "BTDTIME", + "Description": "Bit Drilled Time", + "Description2": "", + "MetricUnits": "HR", + "FPSUnits": "HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 26, + "ShortMnemonic": "BDDI", + "LongMnemonic": "BTDDIST", + "Description": "Bit Drilled Distance", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 27, + "ShortMnemonic": "DXC", + "LongMnemonic": "DXC", + "Description": "Corr. Drilling Exponent", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 28, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 29, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 30, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 31, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 32, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 33, + "ShortMnemonic": "SPR6", + "LongMnemonic": "SPARE6", + "Description": "< SPARE 6>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 34, + "ShortMnemonic": "SPR7", + "LongMnemonic": "SPARE7", + "Description": "< SPARE 7>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 35, + "ShortMnemonic": "SPR8", + "LongMnemonic": "SPARE8", + "Description": "< SPARE 8>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 2, + "ItemId": 36, + "ShortMnemonic": "SPR9", + "LongMnemonic": "SPARE9", + "Description": "< SPARE 9>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 3, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 8, + "ShortMnemonic": "DCNM", + "LongMnemonic": "DEPTCONM", + "Description": "Depth Connection (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 9, + "ShortMnemonic": "DCNV", + "LongMnemonic": "DEPTCONV", + "Description": "Depth Connection (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 11, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 12, + "ShortMnemonic": "ETBS", + "LongMnemonic": "ETIMEBTS", + "Description": "Elapsed Time Bottom-Slips", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 13, + "ShortMnemonic": "ETSL", + "LongMnemonic": "ETIMESLP", + "Description": "Elapsed Time In-Slips", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 14, + "ShortMnemonic": "ETSB", + "LongMnemonic": "ETIMESTB", + "Description": "Elapsed Time Slips-Bottom", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 15, + "ShortMnemonic": "ETPO", + "LongMnemonic": "ETIMEPOF", + "Description": "Elapsed Time Pumps-Off", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 3, + "ItemId": 16, + "ShortMnemonic": "RSUX", + "LongMnemonic": "RSUX", + "Description": "Running Speed - up (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 17, + "ShortMnemonic": "RSDX", + "LongMnemonic": "RSDX", + "Description": "Running Speed - down (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 18, + "ShortMnemonic": "HKLX", + "LongMnemonic": "HKLX", + "Description": "Hookload (max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 19, + "ShortMnemonic": "STWT", + "LongMnemonic": "STRGWT", + "Description": "String Weight (rot,avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 20, + "ShortMnemonic": "TQMX", + "LongMnemonic": "TORQMUX", + "Description": "Torque - Make Up (max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 21, + "ShortMnemonic": "TQBX", + "LongMnemonic": "TORQBOX", + "Description": "Torque - Breakout (max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 22, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 23, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 24, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 25, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 3, + "ItemId": 26, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 4, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 4, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 4, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 4, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 10, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 11, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 12, + "ShortMnemonic": "MDIA", + "LongMnemonic": "MDIA", + "Description": "Mud Density In (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 13, + "ShortMnemonic": "MFIA", + "LongMnemonic": "MFIA", + "Description": "Mud Flow In (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 14, + "ShortMnemonic": "SPPA", + "LongMnemonic": "SPPA", + "Description": "Standpipe Pressure (avg)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 15, + "ShortMnemonic": "PV", + "LongMnemonic": "PV", + "Description": "Plastic Viscosity", + "Description2": "", + "MetricUnits": "CP", + "FPSUnits": "CP", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 16, + "ShortMnemonic": "YP", + "LongMnemonic": "YP", + "Description": "Yield Point", + "Description2": "", + "MetricUnits": "PA", + "FPSUnits": "PHSF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 17, + "ShortMnemonic": "PLB", + "LongMnemonic": "PLB", + "Description": "Pressure Loss - bit", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 18, + "ShortMnemonic": "PLDS", + "LongMnemonic": "PLDS", + "Description": "Pressure Loss - string", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 19, + "ShortMnemonic": "PLA", + "LongMnemonic": "PLA", + "Description": "Pressure Loss - annulus", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 20, + "ShortMnemonic": "PLSU", + "LongMnemonic": "PLSU", + "Description": "Pressure Loss - surface", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 21, + "ShortMnemonic": "PLMM", + "LongMnemonic": "PLMM", + "Description": "Pressure Loss - mud motor", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 22, + "ShortMnemonic": "PLMW", + "LongMnemonic": "PLMWD", + "Description": "Pressure Loss - MWD tool", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 23, + "ShortMnemonic": "PLPB", + "LongMnemonic": "PLPB", + "Description": "Pressure Loss - % at bit", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 24, + "ShortMnemonic": "BHP", + "LongMnemonic": "BHP", + "Description": "Bit Hydraulic Power", + "Description2": "", + "MetricUnits": "KW", + "FPSUnits": "HP", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 25, + "ShortMnemonic": "BHPA", + "LongMnemonic": "BHPA", + "Description": "Bit Hydraulic Power/Area", + "Description2": "", + "MetricUnits": "KWM2", + "FPSUnits": "HSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 26, + "ShortMnemonic": "JIF", + "LongMnemonic": "JIF", + "Description": "Jet Impact Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "LB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 27, + "ShortMnemonic": "JV", + "LongMnemonic": "JV", + "Description": "Jet Velocity", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPS", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 28, + "ShortMnemonic": "AVN", + "LongMnemonic": "AVELN", + "Description": "Annular Velocity (min)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 29, + "ShortMnemonic": "AVX", + "LongMnemonic": "AVELX", + "Description": "Annular Velocity (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 30, + "ShortMnemonic": "ECDT", + "LongMnemonic": "ECDTD", + "Description": "ECD at Total Depth", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 31, + "ShortMnemonic": "ECDB", + "LongMnemonic": "ECDBIT", + "Description": "ECD at Bit", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 32, + "ShortMnemonic": "ECDC", + "LongMnemonic": "ECDCSG", + "Description": "ECD at Casing Shoe", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 33, + "ShortMnemonic": "PHP", + "LongMnemonic": "PHP", + "Description": "Pump Hydraulic Power", + "Description2": "", + "MetricUnits": "KW", + "FPSUnits": "HP", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 34, + "ShortMnemonic": "PLCO", + "LongMnemonic": "PLCO", + "Description": "Calc/Obs Press.Loss ratio", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 35, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 36, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 37, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 38, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 4, + "ItemId": 39, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 5, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 5, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 5, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 5, + "ItemId": 8, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 9, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 11, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 12, + "ShortMnemonic": "TNUM", + "LongMnemonic": "TRIPNUM", + "Description": "Trip Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 5, + "ItemId": 13, + "ShortMnemonic": "STIS", + "LongMnemonic": "STATUSIS", + "Description": "In-Slips Status", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 2 + }, + { + "RecordId": 5, + "ItemId": 14, + "ShortMnemonic": "HKLA", + "LongMnemonic": "HKLA", + "Description": "Hookload (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 15, + "ShortMnemonic": "BPOS", + "LongMnemonic": "BLKPOS", + "Description": "Block Position", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 16, + "ShortMnemonic": "RSUX", + "LongMnemonic": "RSUX", + "Description": "Running Speed - up (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 17, + "ShortMnemonic": "RSDX", + "LongMnemonic": "RSDX", + "Description": "Running Speed - down (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 18, + "ShortMnemonic": "FVOC", + "LongMnemonic": "FVOLOC", + "Description": "Fill/Gain Volume Obs.(cum)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 19, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 20, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 21, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 22, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 5, + "ItemId": 23, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 6, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 8, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 9, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 11, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 12, + "ShortMnemonic": "TNUM", + "LongMnemonic": "TRIPNUM", + "Description": "Trip Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 13, + "ShortMnemonic": "CDON", + "LongMnemonic": "CONNDONE", + "Description": "Connections Done", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 14, + "ShortMnemonic": "CREM", + "LongMnemonic": "CONNREM", + "Description": "Connections Remaining", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 15, + "ShortMnemonic": "ETSL", + "LongMnemonic": "ETIMESLP", + "Description": "Elapsed Time In-Slips", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 16, + "ShortMnemonic": "ETOS", + "LongMnemonic": "ETIMEOS", + "Description": "Elapsed Time Out-of-Slips", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 6, + "ItemId": 17, + "ShortMnemonic": "RSUX", + "LongMnemonic": "RSUX", + "Description": "Running Speed -up (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 18, + "ShortMnemonic": "RSUA", + "LongMnemonic": "RSUA", + "Description": "Running Speed -up (avg)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 19, + "ShortMnemonic": "RSDX", + "LongMnemonic": "RSDX", + "Description": "Running Speed -down (max)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 20, + "ShortMnemonic": "RSDA", + "LongMnemonic": "RSDA", + "Description": "Running Speed -down (avg)", + "Description2": "", + "MetricUnits": "M/S", + "FPSUnits": "FPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 21, + "ShortMnemonic": "HKLX", + "LongMnemonic": "HKLX", + "Description": "Hookload (max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 22, + "ShortMnemonic": "HKLN", + "LongMnemonic": "HKLN", + "Description": "Hookload (min)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 23, + "ShortMnemonic": "HKLA", + "LongMnemonic": "HKLA", + "Description": "Hookload (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 24, + "ShortMnemonic": "TQMX", + "LongMnemonic": "TORQMUX", + "Description": "Torque - Make Up (max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 25, + "ShortMnemonic": "TQBX", + "LongMnemonic": "TORQBOX", + "Description": "Torque - Breakout (max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 26, + "ShortMnemonic": "FVO", + "LongMnemonic": "FVOLO", + "Description": "Fill/Gain Volume Obs.", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 27, + "ShortMnemonic": "FVE", + "LongMnemonic": "FVOLE", + "Description": "Fill/Gain Volume Exp.", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 28, + "ShortMnemonic": "FVOC", + "LongMnemonic": "FVOLOC", + "Description": "Fill/Gain Volume Obs.(cum)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 29, + "ShortMnemonic": "FVEC", + "LongMnemonic": "FVOLEC", + "Description": "Fill/Gain Volume Exp (cum)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 30, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 31, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 32, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 33, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 6, + "ItemId": 34, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 7, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 7, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 7, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 7, + "ItemId": 8, + "ShortMnemonic": "DSVM", + "LongMnemonic": "DEPTSVYM", + "Description": "Depth Svy/reading (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 9, + "ShortMnemonic": "DSVV", + "LongMnemonic": "DEPTSVYV", + "Description": "Depth Svy/reading (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 10, + "ShortMnemonic": "PASS", + "LongMnemonic": "PASSNUM", + "Description": "Pass Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 7, + "ItemId": 11, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 12, + "ShortMnemonic": "STYP", + "LongMnemonic": "SVYTYPE", + "Description": "Svy Type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 7, + "ItemId": 13, + "ShortMnemonic": "SINC", + "LongMnemonic": "SVYINC", + "Description": "Svy Inclination", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 14, + "ShortMnemonic": "SAZU", + "LongMnemonic": "SVYAZU", + "Description": "Svy Azimuth (uncorrected)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 15, + "ShortMnemonic": "SAZC", + "LongMnemonic": "SVYAZC", + "Description": "Svy Azimuth (corrected)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 16, + "ShortMnemonic": "SMTF", + "LongMnemonic": "SVYMTF", + "Description": "Svy Magnetic Toolface", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 17, + "ShortMnemonic": "SGTF", + "LongMnemonic": "SVYGTF", + "Description": "Svy Gravity Toolface", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 18, + "ShortMnemonic": "SNS", + "LongMnemonic": "SVYNS", + "Description": "Svy North-South Position", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 19, + "ShortMnemonic": "SEW", + "LongMnemonic": "SVYEW", + "Description": "Svy East-West Position", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 20, + "ShortMnemonic": "SDLS", + "LongMnemonic": "SVYDLS", + "Description": "Svy Dog Leg Severity", + "Description2": "", + "MetricUnits": "DGHM", + "FPSUnits": "DGHF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 21, + "ShortMnemonic": "SWLK", + "LongMnemonic": "SVYWALK", + "Description": "Svy Rate of Walk", + "Description2": "", + "MetricUnits": "DGHM", + "FPSUnits": "DGHF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 22, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 23, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 24, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 25, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 7, + "ItemId": 26, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 8, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 8, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 8, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 8, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 10, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 11, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 12, + "ShortMnemonic": "PASS", + "LongMnemonic": "PASSNUM", + "Description": "Pass Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 8, + "ItemId": 13, + "ShortMnemonic": "DR1M", + "LongMnemonic": "DEPTRS1M", + "Description": "Depth Resis 1 sensor (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 14, + "ShortMnemonic": "DR1V", + "LongMnemonic": "DEPTRS1V", + "Description": "Depth Resis 1 sensor (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 15, + "ShortMnemonic": "MR1", + "LongMnemonic": "MR1", + "Description": "Resis 1 reading", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 16, + "ShortMnemonic": "MR1C", + "LongMnemonic": "MR1C", + "Description": "Resis 1 (borehole corr)", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 17, + "ShortMnemonic": "DR2M", + "LongMnemonic": "DEPTRS2M", + "Description": "Depth Resis 2 sensor (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 18, + "ShortMnemonic": "DR2V", + "LongMnemonic": "DEPTRS2V", + "Description": "Depth Resis 2 sensor (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 19, + "ShortMnemonic": "MR2", + "LongMnemonic": "MR2", + "Description": "Resis 2 reading", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 20, + "ShortMnemonic": "MR2C", + "LongMnemonic": "MR2C", + "Description": "Resis 2 (borehole corr)", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 21, + "ShortMnemonic": "DG1M", + "LongMnemonic": "DEPTGR1M", + "Description": "Depth G.Ray 1 sensor(meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 22, + "ShortMnemonic": "DG1V", + "LongMnemonic": "DEPTGR1V", + "Description": "Depth G.Ray 1 sensor(vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 23, + "ShortMnemonic": "MG1", + "LongMnemonic": "MG1", + "Description": "Gamma Ray 1 reading", + "Description2": "", + "MetricUnits": "API", + "FPSUnits": "API", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 24, + "ShortMnemonic": "MG1C", + "LongMnemonic": "MG1C", + "Description": "Gamma Ray 1(borehole corr)", + "Description2": "", + "MetricUnits": "API", + "FPSUnits": "API", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 25, + "ShortMnemonic": "DG2M", + "LongMnemonic": "DEPTGR2M", + "Description": "Depth G.Ray 2 sensor(meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 26, + "ShortMnemonic": "DG2V", + "LongMnemonic": "DEPTGR2V", + "Description": "Depth G.Ray 2 sensor(vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 27, + "ShortMnemonic": "MG2", + "LongMnemonic": "MG2", + "Description": "Gamma Ray 2 reading", + "Description2": "", + "MetricUnits": "API", + "FPSUnits": "API", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 28, + "ShortMnemonic": "MG2C", + "LongMnemonic": "MG2C", + "Description": "Gamma Ray 2(borehole corr)", + "Description2": "", + "MetricUnits": "API", + "FPSUnits": "API", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 29, + "ShortMnemonic": "DP1M", + "LongMnemonic": "DEPTP1M", + "Description": "Depth Por 1 sensor (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 30, + "ShortMnemonic": "DP1V", + "LongMnemonic": "DEPTP1V", + "Description": "Depth Por 1 sensor (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 31, + "ShortMnemonic": "MPO1", + "LongMnemonic": "MPO1", + "Description": "Porosity Tool 1 reading", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 32, + "ShortMnemonic": "DP2M", + "LongMnemonic": "DEPTP2M", + "Description": "Depth Por 2 sensor (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 33, + "ShortMnemonic": "DP2V", + "LongMnemonic": "DEPTP2V", + "Description": "Depth Por 2 sensor (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 34, + "ShortMnemonic": "MPO2", + "LongMnemonic": "MPO2", + "Description": "Porosity Tool 2 reading", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 35, + "ShortMnemonic": "MFTA", + "LongMnemonic": "MFTANN", + "Description": "Downhole Fluid Temp (ann)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 36, + "ShortMnemonic": "MFTP", + "LongMnemonic": "MFTPIPE", + "Description": "Downhole Fluid Temp (pipe)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 37, + "ShortMnemonic": "MFRA", + "LongMnemonic": "MFRANN", + "Description": "Downhole Fluid Resis (ann)", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 38, + "ShortMnemonic": "MFRP", + "LongMnemonic": "MFRPIPE", + "Description": "Downhole Fluid Resis (pipe)", + "Description2": "", + "MetricUnits": "OHMM", + "FPSUnits": "OHMM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 39, + "ShortMnemonic": "DFDM", + "LongMnemonic": "DEPTFDM", + "Description": "Depth Form Density (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 40, + "ShortMnemonic": "DFDV", + "LongMnemonic": "DEPTFDV", + "Description": "Depth Form Density (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 41, + "ShortMnemonic": "MFD", + "LongMnemonic": "MFD", + "Description": "Formation Density", + "Description2": "", + "MetricUnits": "G/CC", + "FPSUnits": "G/CC", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 42, + "ShortMnemonic": "DCLM", + "LongMnemonic": "DEPTCALM", + "Description": "Depth Caliper (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 43, + "ShortMnemonic": "DCLV", + "LongMnemonic": "DEPTCALV", + "Description": "Depth Caliper (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 44, + "ShortMnemonic": "MCLP", + "LongMnemonic": "MCLP", + "Description": "Caliper", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 45, + "ShortMnemonic": "MFPP", + "LongMnemonic": "MFPP", + "Description": "Pore Pressure Grad MWD", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 46, + "ShortMnemonic": "MFFP", + "LongMnemonic": "MFFP", + "Description": "Frac Pressure Grad MWD", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 47, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 48, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 49, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 50, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 51, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 52, + "ShortMnemonic": "SPR6", + "LongMnemonic": "SPARE6", + "Description": "< SPARE 6>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 53, + "ShortMnemonic": "SPR7", + "LongMnemonic": "SPARE7", + "Description": "< SPARE 7>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 54, + "ShortMnemonic": "SPR8", + "LongMnemonic": "SPARE8", + "Description": "< SPARE 8>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 8, + "ItemId": 55, + "ShortMnemonic": "SPR9", + "LongMnemonic": "SPARE9", + "Description": "< SPARE 9>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 9, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 10, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "Depth Bit (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 11, + "ShortMnemonic": "DBTV", + "LongMnemonic": "DEPTBITV", + "Description": "Depth Bit (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 12, + "ShortMnemonic": "PASS", + "LongMnemonic": "PASSNUM", + "Description": "Pass Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 13, + "ShortMnemonic": "MBPA", + "LongMnemonic": "MBHPANN", + "Description": "Bottom-hole annulus press", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 14, + "ShortMnemonic": "MBPI", + "LongMnemonic": "MBHPINT", + "Description": "Bottom-hole internal press", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 15, + "ShortMnemonic": "MWBA", + "LongMnemonic": "MWOBA", + "Description": "Downhole Wt-on-Bit (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 16, + "ShortMnemonic": "MWBX", + "LongMnemonic": "MWOBX", + "Description": "Downhole Wt-on-Bit (max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 17, + "ShortMnemonic": "MTQA", + "LongMnemonic": "MTORQA", + "Description": "Downhole Torque (avg)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 18, + "ShortMnemonic": "MTQX", + "LongMnemonic": "MTORQX", + "Description": "Downhole Torque (max)", + "Description2": "", + "MetricUnits": "KNM", + "FPSUnits": "KFLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 19, + "ShortMnemonic": "MMRP", + "LongMnemonic": "MMMRPM", + "Description": "Downhole Motor RPM", + "Description2": "", + "MetricUnits": "RPM", + "FPSUnits": "RPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 20, + "ShortMnemonic": "MALT", + "LongMnemonic": "MALTVOLT", + "Description": "MWD Tool Alternator Voltage", + "Description2": "", + "MetricUnits": "V", + "FPSUnits": "V", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 9, + "ItemId": 21, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 22, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 23, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 24, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 25, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 26, + "ShortMnemonic": "SPR6", + "LongMnemonic": "SPARE6", + "Description": "< SPARE 6>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 27, + "ShortMnemonic": "SPR7", + "LongMnemonic": "SPARE7", + "Description": "< SPARE 7>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 28, + "ShortMnemonic": "SPR8", + "LongMnemonic": "SPARE8", + "Description": "< SPARE 8>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 31, + "ShortMnemonic": "RS6WHRLAVG_1", + "LongMnemonic": "RS6WHRLAVG_1", + "Description": "", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 9, + "ItemId": 29, + "ShortMnemonic": "SPR9", + "LongMnemonic": "SPARE9", + "Description": "< SPARE 9>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 10, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 10, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 10, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 10, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 10, + "ShortMnemonic": "DSAM", + "LongMnemonic": "DEPTSAMM", + "Description": "Depth Sample (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 11, + "ShortMnemonic": "DSAV", + "LongMnemonic": "DEPTSAMV", + "Description": "Depth Sample (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 12, + "ShortMnemonic": "FPPG", + "LongMnemonic": "FPOREPG", + "Description": "Est. Form. Pore Press Grad.", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 13, + "ShortMnemonic": "FFPG", + "LongMnemonic": "FFRACPG", + "Description": "Est. Form. Frac Press Grad.", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 14, + "ShortMnemonic": "FOPG", + "LongMnemonic": "FOBPG", + "Description": "Est. Form. Overburden Grad.", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 15, + "ShortMnemonic": "KTOL", + "LongMnemonic": "KTOL", + "Description": "Est. Kick Tolerance", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 16, + "ShortMnemonic": "PSIP", + "LongMnemonic": "PSIPX", + "Description": "Max. Permitted SICP (init)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 17, + "ShortMnemonic": "CGSA", + "LongMnemonic": "CONNGASA", + "Description": "Connection Gas (avg)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 18, + "ShortMnemonic": "CGSX", + "LongMnemonic": "CONNGASX", + "Description": "Connection Gas (max)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 19, + "ShortMnemonic": "CGSL", + "LongMnemonic": "CONNGASL", + "Description": "Connection Gas (last)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 20, + "ShortMnemonic": "TGAS", + "LongMnemonic": "TRIPGAS", + "Description": "Last Trip Gas", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 21, + "ShortMnemonic": "SDEN", + "LongMnemonic": "SHALEDEN", + "Description": "Shale Density", + "Description2": "", + "MetricUnits": "G/CC", + "FPSUnits": "G/CC", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 22, + "ShortMnemonic": "CEC", + "LongMnemonic": "CEC", + "Description": "Cuttings CEC", + "Description2": "", + "MetricUnits": "MEHG", + "FPSUnits": "MEHG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 23, + "ShortMnemonic": "CAV", + "LongMnemonic": "CAVINGS", + "Description": "Cavings %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 10, + "ItemId": 24, + "ShortMnemonic": "DXC", + "LongMnemonic": "DXC", + "Description": "Corr. Drilling Exponent", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 25, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 26, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 27, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 28, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 29, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 30, + "ShortMnemonic": "SPR6", + "LongMnemonic": "SPARE6", + "Description": "< SPARE 6>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 31, + "ShortMnemonic": "SPR7", + "LongMnemonic": "SPARE7", + "Description": "< SPARE 7>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 32, + "ShortMnemonic": "SPR8", + "LongMnemonic": "SPARE8", + "Description": "< SPARE 8>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 10, + "ItemId": 33, + "ShortMnemonic": "SPR9", + "LongMnemonic": "SPARE9", + "Description": "< SPARE 9>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 11, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 11, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 11, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 11, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 10, + "ShortMnemonic": "TVT", + "LongMnemonic": "TVOLTOT", + "Description": "Tank Volume (total)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 11, + "ShortMnemonic": "TVA", + "LongMnemonic": "TVOLACT", + "Description": "Tank Volume (active)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 12, + "ShortMnemonic": "TVCT", + "LongMnemonic": "TVOLCTOT", + "Description": "Tank Volume Change (total)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 13, + "ShortMnemonic": "TVCA", + "LongMnemonic": "TVOLCACT", + "Description": "Tank Volume Change (active)", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 14, + "ShortMnemonic": "TVRT", + "LongMnemonic": "TVRESET", + "Description": "Tank Volume Reset Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 15, + "ShortMnemonic": "TV01", + "LongMnemonic": "TVOL01", + "Description": "Tank 01 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 16, + "ShortMnemonic": "TV02", + "LongMnemonic": "TVOL02", + "Description": "Tank 02 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 17, + "ShortMnemonic": "TV03", + "LongMnemonic": "TVOL03", + "Description": "Tank 03 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 18, + "ShortMnemonic": "TV04", + "LongMnemonic": "TVOL04", + "Description": "Tank 04 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 19, + "ShortMnemonic": "TV05", + "LongMnemonic": "TVOL05", + "Description": "Tank 05 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 20, + "ShortMnemonic": "TV06", + "LongMnemonic": "TVOL06", + "Description": "Tank 06 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 21, + "ShortMnemonic": "TV07", + "LongMnemonic": "TVOL07", + "Description": "Tank 07 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 22, + "ShortMnemonic": "TV08", + "LongMnemonic": "TVOL08", + "Description": "Tank 08 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 23, + "ShortMnemonic": "TV09", + "LongMnemonic": "TVOL09", + "Description": "Tank 09 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 24, + "ShortMnemonic": "TV10", + "LongMnemonic": "TVOL10", + "Description": "Tank 10 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 25, + "ShortMnemonic": "TV11", + "LongMnemonic": "TVOL11", + "Description": "Tank 11 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 26, + "ShortMnemonic": "TV12", + "LongMnemonic": "TVOL12", + "Description": "Tank 12 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 27, + "ShortMnemonic": "TV13", + "LongMnemonic": "TVOL13", + "Description": "Tank 13 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 28, + "ShortMnemonic": "TV14", + "LongMnemonic": "TVOL14", + "Description": "Tank 14 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 29, + "ShortMnemonic": "TTV1", + "LongMnemonic": "TTVOL1", + "Description": "Trip Tank 1 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 30, + "ShortMnemonic": "TTV2", + "LongMnemonic": "TTVOL2", + "Description": "Trip Tank 2 Volume", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 31, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 32, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 33, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 34, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 11, + "ItemId": 35, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 12, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 12, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 12, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 12, + "ItemId": 8, + "ShortMnemonic": "DCHM", + "LongMnemonic": "DEPTCHRM", + "Description": "Depth Chrom Sample (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 9, + "ShortMnemonic": "DCHV", + "LongMnemonic": "DEPTCHRV", + "Description": "Depth Chrom Sample (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 10, + "ShortMnemonic": "DCHR", + "LongMnemonic": "DATECHR", + "Description": "Date Chrom Sample", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 11, + "ShortMnemonic": "TCHR", + "LongMnemonic": "TIMECHR", + "Description": "Time Chrom Sample", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 12, + "ShortMnemonic": "METH", + "LongMnemonic": "METHANE", + "Description": "Methane (C1)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 13, + "ShortMnemonic": "ETH", + "LongMnemonic": "ETHANE", + "Description": "Ethane (C2)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 14, + "ShortMnemonic": "PRP", + "LongMnemonic": "PROPANE", + "Description": "Propane (C3)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 15, + "ShortMnemonic": "IBUT", + "LongMnemonic": "IBUTANE", + "Description": "Iso-Butane (IC4)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 16, + "ShortMnemonic": "NBUT", + "LongMnemonic": "NBUTANE", + "Description": "Nor-Butane (NC4)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 17, + "ShortMnemonic": "IPEN", + "LongMnemonic": "IPENTANE", + "Description": "Iso-Pentane (IC5)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 18, + "ShortMnemonic": "NPEN", + "LongMnemonic": "NPENTANE", + "Description": "Nor-Pentane (NC5)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 19, + "ShortMnemonic": "EPEN", + "LongMnemonic": "EPENTANE", + "Description": "Neo-Pentane (EC5)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 20, + "ShortMnemonic": "IHEX", + "LongMnemonic": "IHEXANE", + "Description": "Iso-Hexane (IC6)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 21, + "ShortMnemonic": "NHEX", + "LongMnemonic": "NHEXANE", + "Description": "Nor-Hexane (NC6)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 22, + "ShortMnemonic": "CO2", + "LongMnemonic": "CO2", + "Description": "Carbon Dioxide", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 23, + "ShortMnemonic": "ACET", + "LongMnemonic": "ACET", + "Description": "Acetylene", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 24, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 25, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 26, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 27, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 12, + "ItemId": 28, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 13, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 13, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 13, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 13, + "ItemId": 8, + "ShortMnemonic": "DRTM", + "LongMnemonic": "DEPTRETM", + "Description": "Depth Returns (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 9, + "ShortMnemonic": "DRTV", + "LongMnemonic": "DEPTRETV", + "Description": "Depth Returns (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 10, + "ShortMnemonic": "MTHA", + "LongMnemonic": "METHA", + "Description": "Methane (C1) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 11, + "ShortMnemonic": "MTHN", + "LongMnemonic": "METHN", + "Description": "Methane (C1) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 12, + "ShortMnemonic": "MTHX", + "LongMnemonic": "METHX", + "Description": "Methane (C1) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 13, + "ShortMnemonic": "ETHA", + "LongMnemonic": "ETHA", + "Description": "Ethane (C2) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 14, + "ShortMnemonic": "ETHN", + "LongMnemonic": "ETHN", + "Description": "Ethane (C2) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 15, + "ShortMnemonic": "ETHX", + "LongMnemonic": "ETHX", + "Description": "Ethane (C2) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 16, + "ShortMnemonic": "PRPA", + "LongMnemonic": "PROPA", + "Description": "Propane (C3) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 17, + "ShortMnemonic": "PRPN", + "LongMnemonic": "PROPN", + "Description": "Propane (C3) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 18, + "ShortMnemonic": "PRPX", + "LongMnemonic": "PROPX", + "Description": "Propane (C3) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 19, + "ShortMnemonic": "IBTA", + "LongMnemonic": "IBUTA", + "Description": "Iso-Butane (IC4) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 20, + "ShortMnemonic": "IBTN", + "LongMnemonic": "IBUTN", + "Description": "Iso-Butane (IC4) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 21, + "ShortMnemonic": "IBTX", + "LongMnemonic": "IBUTX", + "Description": "Iso-Butane (IC4) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 22, + "ShortMnemonic": "NBTA", + "LongMnemonic": "NBUTA", + "Description": "Nor-Butane (NC4) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 23, + "ShortMnemonic": "NBTN", + "LongMnemonic": "NBUTN", + "Description": "Nor-Butane (NC4) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 24, + "ShortMnemonic": "NBTX", + "LongMnemonic": "NBUTX", + "Description": "Nor-Butane (NC4) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 25, + "ShortMnemonic": "IPNA", + "LongMnemonic": "IPENTA", + "Description": "Iso-Pentane (IC5) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 26, + "ShortMnemonic": "IPNN", + "LongMnemonic": "IPENTN", + "Description": "Iso-Pentane (IC5) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 27, + "ShortMnemonic": "IPNX", + "LongMnemonic": "IPENTX", + "Description": "Iso-Pentane (IC5) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 28, + "ShortMnemonic": "NPNA", + "LongMnemonic": "NPENTA", + "Description": "Nor-Pentane (NC5) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 29, + "ShortMnemonic": "NPNN", + "LongMnemonic": "NPENTN", + "Description": "Nor-Pentane (NC5) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 30, + "ShortMnemonic": "NPNX", + "LongMnemonic": "NPENTX", + "Description": "Nor-Pentane (NC5) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 31, + "ShortMnemonic": "EPNA", + "LongMnemonic": "EPENTA", + "Description": "Neo-Pentane (EC5) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 32, + "ShortMnemonic": "EPNN", + "LongMnemonic": "EPENTN", + "Description": "Neo-Pentane (EC5) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 33, + "ShortMnemonic": "EPNX", + "LongMnemonic": "EPENTX", + "Description": "Neo-Pentane (EC5) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 34, + "ShortMnemonic": "IHXA", + "LongMnemonic": "IHEXA", + "Description": "Iso-Hexane (IC6) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 35, + "ShortMnemonic": "IHXN", + "LongMnemonic": "IHEXN", + "Description": "Iso-Hexane (IC6) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 36, + "ShortMnemonic": "IHXX", + "LongMnemonic": "IHEXX", + "Description": "Iso-Hexane (IC6) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 37, + "ShortMnemonic": "NHXA", + "LongMnemonic": "NHEXA", + "Description": "Nor-Hexane (NC6) (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 38, + "ShortMnemonic": "NHXN", + "LongMnemonic": "NHEXN", + "Description": "Nor-Hexane (NC6) (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 39, + "ShortMnemonic": "NHXX", + "LongMnemonic": "NHEXX", + "Description": "Nor-Hexane (NC6) (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 40, + "ShortMnemonic": "CO2A", + "LongMnemonic": "CO2A", + "Description": "Carbon Dioxide (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 41, + "ShortMnemonic": "CO2N", + "LongMnemonic": "CO2N", + "Description": "Carbon Dioxide (min)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 42, + "ShortMnemonic": "CO2X", + "LongMnemonic": "CO2X", + "Description": "Carbon Dioxide (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 43, + "ShortMnemonic": "ACET", + "LongMnemonic": "ACET", + "Description": "Acetylene", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 44, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 45, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 46, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 47, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 13, + "ItemId": 48, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 14, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 14, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 14, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 14, + "ItemId": 8, + "ShortMnemonic": "DRTM", + "LongMnemonic": "DEPTRETM", + "Description": "Depth Returns (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 9, + "ShortMnemonic": "DRTV", + "LongMnemonic": "DEPTRETV", + "Description": "Depth Returns (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 10, + "ShortMnemonic": "MDIL", + "LongMnemonic": "MDIL", + "Description": "Mud Density In (lagd)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 11, + "ShortMnemonic": "MDOA", + "LongMnemonic": "MDOA", + "Description": "Mud Density Out (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 12, + "ShortMnemonic": "MTIL", + "LongMnemonic": "MTIL", + "Description": "Mud Temperature In (lagd)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 13, + "ShortMnemonic": "MTOA", + "LongMnemonic": "MTOA", + "Description": "Mud Temperature Out (avg)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 14, + "ShortMnemonic": "MCIL", + "LongMnemonic": "MCIL", + "Description": "Mud Conductivity In (lagd)", + "Description2": "", + "MetricUnits": "MMHO", + "FPSUnits": "MMHO", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 15, + "ShortMnemonic": "MCOA", + "LongMnemonic": "MCOA", + "Description": "Mud Conductivity Out (avg)", + "Description2": "", + "MetricUnits": "MMHO", + "FPSUnits": "MMHO", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 16, + "ShortMnemonic": "HHPA", + "LongMnemonic": "HSHPA", + "Description": "Hyd.Sulfide Haz.Pot. (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 17, + "ShortMnemonic": "HPHA", + "LongMnemonic": "HSPHA", + "Description": "Hyd.Sulfide pH (avg)", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 18, + "ShortMnemonic": "HPSA", + "LongMnemonic": "HSPHSA", + "Description": "Hyd.Sulfide pHS (avg)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 19, + "ShortMnemonic": "GSIL", + "LongMnemonic": "GASIL", + "Description": "Gas In (lagd)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 20, + "ShortMnemonic": "GASA", + "LongMnemonic": "GASA", + "Description": "Gas (avg)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 21, + "ShortMnemonic": "GASX", + "LongMnemonic": "GASX", + "Description": "Gas (max)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 22, + "ShortMnemonic": "CO2A", + "LongMnemonic": "CO2A", + "Description": "Carbon Dioxide (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 23, + "ShortMnemonic": "HSA", + "LongMnemonic": "HSA", + "Description": "Hydrogen Sulfide (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 24, + "ShortMnemonic": "HSX", + "LongMnemonic": "HSX", + "Description": "Hydrogen Sulfide (max)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 25, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 26, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 27, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 28, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 14, + "ItemId": 29, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 8, + "ShortMnemonic": "DSAM", + "LongMnemonic": "DEPTSAMM", + "Description": "Depth Sample (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 9, + "ShortMnemonic": "DSAV", + "LongMnemonic": "DEPTSAMV", + "Description": "Depth Sample (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 10, + "ShortMnemonic": "DESC", + "LongMnemonic": "DESCTYPE", + "Description": "Description type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 15, + "ItemId": 11, + "ShortMnemonic": "L1TY", + "LongMnemonic": "L1TYPE", + "Description": "Lith 1 type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 12, + "ShortMnemonic": "L1PC", + "LongMnemonic": "L1PERC", + "Description": "Lith 1 %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 13, + "ShortMnemonic": "L1CL", + "LongMnemonic": "L1CLASS", + "Description": "Lith 1 classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 14, + "ShortMnemonic": "L1CO", + "LongMnemonic": "L1COLOR", + "Description": "Lith 1 color", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 15, + "ShortMnemonic": "L1TX", + "LongMnemonic": "L1TEXT", + "Description": "Lith 1 texture", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 16, + "ShortMnemonic": "L1HD", + "LongMnemonic": "L1HARD", + "Description": "Lith 1 hardness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 17, + "ShortMnemonic": "L1SZ", + "LongMnemonic": "L1SIZE", + "Description": "Lith 1 grain size", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 18, + "ShortMnemonic": "L1RD", + "LongMnemonic": "L1ROUND", + "Description": "Lith 1 roundness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 19, + "ShortMnemonic": "L1SO", + "LongMnemonic": "L1SORT", + "Description": "Lith 1 sorting", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 20, + "ShortMnemonic": "L1MC", + "LongMnemonic": "L1MATCEM", + "Description": "Lith 1 matrix/cement", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 21, + "ShortMnemonic": "L1AC", + "LongMnemonic": "L1ACC", + "Description": "Lith 1 accessories", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 22, + "ShortMnemonic": "L1PO", + "LongMnemonic": "L1POR", + "Description": "Lith 1 porosity", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 23, + "ShortMnemonic": "L1PE", + "LongMnemonic": "L1PERM", + "Description": "Lith 1 permeability", + "Description2": "", + "MetricUnits": "MD", + "FPSUnits": "MD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 24, + "ShortMnemonic": "L2TY", + "LongMnemonic": "L2TYPE", + "Description": "Lith 2 type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 25, + "ShortMnemonic": "L2PC", + "LongMnemonic": "L2PERC", + "Description": "Lith 2 %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 26, + "ShortMnemonic": "L2CL", + "LongMnemonic": "L2CLASS", + "Description": "Lith 2 classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 27, + "ShortMnemonic": "L2CO", + "LongMnemonic": "L2COLOR", + "Description": "Lith 2 color", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 28, + "ShortMnemonic": "L2TX", + "LongMnemonic": "L2TEXT", + "Description": "Lith 2 texture", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 29, + "ShortMnemonic": "L2HD", + "LongMnemonic": "L2HARD", + "Description": "Lith 2 hardness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 30, + "ShortMnemonic": "L2SZ", + "LongMnemonic": "L2SIZE", + "Description": "Lith 2 grain size", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 31, + "ShortMnemonic": "L2RD", + "LongMnemonic": "L2ROUND", + "Description": "Lith 2 roundness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 32, + "ShortMnemonic": "L2SO", + "LongMnemonic": "L2SORT", + "Description": "Lith 2 sorting", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 33, + "ShortMnemonic": "L2MC", + "LongMnemonic": "L2MATCEM", + "Description": "Lith 2 matrix/cement", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 34, + "ShortMnemonic": "L2AC", + "LongMnemonic": "L2ACC", + "Description": "Lith 2 accessories", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 35, + "ShortMnemonic": "L2PO", + "LongMnemonic": "L2POR", + "Description": "Lith 2 porosity", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 36, + "ShortMnemonic": "L2PE", + "LongMnemonic": "L2PERM", + "Description": "Lith 2 permeability", + "Description2": "", + "MetricUnits": "MD", + "FPSUnits": "MD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 37, + "ShortMnemonic": "L3TY", + "LongMnemonic": "L3TYPE", + "Description": "Lith 3 type", + "Description2": "", + "MetricUnits": "-----", + "FPSUnits": "---", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 38, + "ShortMnemonic": "L3PC", + "LongMnemonic": "L3PERC", + "Description": "Lith 3 %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 39, + "ShortMnemonic": "L3CL", + "LongMnemonic": "L3CLASS", + "Description": "Lith 3 classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 40, + "ShortMnemonic": "L4TY", + "LongMnemonic": "L4TYPE", + "Description": "Lith 4 type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 41, + "ShortMnemonic": "L4PC", + "LongMnemonic": "L4PERC", + "Description": "Lith 4 %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 42, + "ShortMnemonic": "L4CL", + "LongMnemonic": "L4CLASS", + "Description": "Lith 4 classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 43, + "ShortMnemonic": "L5TY", + "LongMnemonic": "L5TYPE", + "Description": "Lith 5 type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 44, + "ShortMnemonic": "L5PC", + "LongMnemonic": "L5PERC", + "Description": "Lith 5 %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 45, + "ShortMnemonic": "L5CL", + "LongMnemonic": "L5CLASS", + "Description": "Lith 5 classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 46, + "ShortMnemonic": "FOSS", + "LongMnemonic": "FOSS", + "Description": "Fossils", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 47, + "ShortMnemonic": "SHOW", + "LongMnemonic": "COMPSHOW", + "Description": "Composite Show", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 15, + "ItemId": 48, + "ShortMnemonic": "BDEN", + "LongMnemonic": "BULKDEN", + "Description": "Bulk Density", + "Description2": "", + "MetricUnits": "G/CC", + "FPSUnits": "G/CC", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 49, + "ShortMnemonic": "GCUT", + "LongMnemonic": "GASCUTT", + "Description": "Cuttings Gas", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 50, + "ShortMnemonic": "CCAL", + "LongMnemonic": "CCAL", + "Description": "Calcimetry Calcite %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 51, + "ShortMnemonic": "CDOL", + "LongMnemonic": "CDOL", + "Description": "Calcimetry Dolomite %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 52, + "ShortMnemonic": "CEC", + "LongMnemonic": "CEC", + "Description": "Cuttings CEC", + "Description2": "", + "MetricUnits": "MEHG", + "FPSUnits": "MEHG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 53, + "ShortMnemonic": "CAV", + "LongMnemonic": "CAVINGS", + "Description": "Cavings %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 15, + "ItemId": 54, + "ShortMnemonic": "SDEN", + "LongMnemonic": "SHALEDEN", + "Description": "Shale Density", + "Description2": "", + "MetricUnits": "G/CC", + "FPSUnits": "G/CC", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 55, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 56, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 57, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 58, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 15, + "ItemId": 59, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 16, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 16, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 16, + "ItemId": 8, + "ShortMnemonic": "SWNO", + "LongMnemonic": "SHOWNUM", + "Description": "Show Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 16, + "ItemId": 9, + "ShortMnemonic": "DSTM", + "LongMnemonic": "DEPTSITM", + "Description": "Show Intvl Top Depth (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 10, + "ShortMnemonic": "DSTV", + "LongMnemonic": "DEPTSITV", + "Description": "Show Intvl Top Depth (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 11, + "ShortMnemonic": "DSBM", + "LongMnemonic": "DEPTSIBM", + "Description": "Show Intvl Bott Depth(meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 12, + "ShortMnemonic": "DSBV", + "LongMnemonic": "DEPTSIBV", + "Description": "Show Intvl Bott Depth(vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 13, + "ShortMnemonic": "WLTY", + "LongMnemonic": "SHLTYPE", + "Description": "Show Lith type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 14, + "ShortMnemonic": "WLCL", + "LongMnemonic": "SHLCLASS", + "Description": "Show Lith classification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 15, + "ShortMnemonic": "WLCO", + "LongMnemonic": "SHLCOLOR", + "Description": "Show Lith color", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 16, + "ShortMnemonic": "WLTX", + "LongMnemonic": "SHLTEXT", + "Description": "Show Lith texture", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 17, + "ShortMnemonic": "WLHD", + "LongMnemonic": "SHLHARD", + "Description": "Show Lith hardness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 18, + "ShortMnemonic": "WLSZ", + "LongMnemonic": "SHLSIZE", + "Description": "Show Lith grain size", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 19, + "ShortMnemonic": "WLRD", + "LongMnemonic": "SHLROUND", + "Description": "Show Lith roundness", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 20, + "ShortMnemonic": "WLSO", + "LongMnemonic": "SHLSORT", + "Description": "Show Lith sorting", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 21, + "ShortMnemonic": "WLMC", + "LongMnemonic": "SHLMC", + "Description": "Show Lith matrix/cement", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 22, + "ShortMnemonic": "WLAC", + "LongMnemonic": "SHLACC", + "Description": "Show Lith accessories", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 23, + "ShortMnemonic": "WLPV", + "LongMnemonic": "SHLPORV", + "Description": "Show Lith porosity -visible", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 16, + "ItemId": 24, + "ShortMnemonic": "WLPM", + "LongMnemonic": "SHLPORM", + "Description": "Show Lith porosity -meas", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 25, + "ShortMnemonic": "WLPE", + "LongMnemonic": "SHLPERM", + "Description": "Show Lith permeability", + "Description2": "", + "MetricUnits": "MD", + "FPSUnits": "MD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 26, + "ShortMnemonic": "WLST", + "LongMnemonic": "SHLSTAIN", + "Description": "Show Lith stain description", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 64 + }, + { + "RecordId": 16, + "ItemId": 27, + "ShortMnemonic": "WLFL", + "LongMnemonic": "SHLFLUOR", + "Description": "Show Lith fluor description", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 64 + }, + { + "RecordId": 16, + "ItemId": 28, + "ShortMnemonic": "WLCT", + "LongMnemonic": "SHLCUT", + "Description": "Show Lith cut description", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 64 + }, + { + "RecordId": 16, + "ItemId": 29, + "ShortMnemonic": "WLGC", + "LongMnemonic": "SHLGCUT", + "Description": "Show Lith cuttings gas", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 30, + "ShortMnemonic": "WSAL", + "LongMnemonic": "SHSAL", + "Description": "Show titrated salinity", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 31, + "ShortMnemonic": "MTHM", + "LongMnemonic": "METHMUD", + "Description": "Show Mud Smple Methane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 32, + "ShortMnemonic": "ETHM", + "LongMnemonic": "ETHMUD", + "Description": "Show Mud Smple Ethane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 33, + "ShortMnemonic": "PRPM", + "LongMnemonic": "PROPMUD", + "Description": "Show Mud Smple Propane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 34, + "ShortMnemonic": "IBTM", + "LongMnemonic": "IBUTMUD", + "Description": "Show Mud Smple I-Butane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 35, + "ShortMnemonic": "NBTM", + "LongMnemonic": "NBUTMUD", + "Description": "Show Mud Smple N-Butane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 36, + "ShortMnemonic": "IPNM", + "LongMnemonic": "IPENMUD", + "Description": "Show Mud Smple I-Pentane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 37, + "ShortMnemonic": "NPNM", + "LongMnemonic": "NPENMUD", + "Description": "Show Mud Smple N-Pentane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 38, + "ShortMnemonic": "EPNM", + "LongMnemonic": "EPENMUD", + "Description": "Show Mud Smple N-Pentane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 39, + "ShortMnemonic": "IHXM", + "LongMnemonic": "IHEXMUD", + "Description": "Show Mud Smple I-Hexane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 40, + "ShortMnemonic": "NHXM", + "LongMnemonic": "NHEXMUD", + "Description": "Show Mud Smple N-Hexane", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 41, + "ShortMnemonic": "WCOM", + "LongMnemonic": "SHOWCOMM", + "Description": "Show Comments", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 128 + }, + { + "RecordId": 16, + "ItemId": 42, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 43, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 44, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 45, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 16, + "ItemId": 46, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 17, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 17, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 17, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 17, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 10, + "ShortMnemonic": "DCGM", + "LongMnemonic": "DEPTCSGM", + "Description": "Depth Casing Shoe (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 11, + "ShortMnemonic": "DCGV", + "LongMnemonic": "DEPTCSGV", + "Description": "Depth Casing Shoe (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 12, + "ShortMnemonic": "CPPA", + "LongMnemonic": "CEMPPA", + "Description": "Cem Pump Pressure (avg)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 13, + "ShortMnemonic": "HKLA", + "LongMnemonic": "HKLA", + "Description": "Hookload (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 14, + "ShortMnemonic": "BPOS", + "LongMnemonic": "BLKPOS", + "Description": "Block Position", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 15, + "ShortMnemonic": "CFIC", + "LongMnemonic": "CEMFIC", + "Description": "Cem Flow Rate In (calc)", + "Description2": "", + "MetricUnits": "M3/M", + "FPSUnits": "BPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 16, + "ShortMnemonic": "CFIA", + "LongMnemonic": "CEMFIA", + "Description": "Cem Flow Rate In (avg)", + "Description2": "", + "MetricUnits": "M3/M", + "FPSUnits": "BPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 17, + "ShortMnemonic": "CFOA", + "LongMnemonic": "CEMFOA", + "Description": "Cem Flow Rate Out (avg)", + "Description2": "", + "MetricUnits": "M3/M", + "FPSUnits": "BPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 18, + "ShortMnemonic": "CFOP", + "LongMnemonic": "CEMFOP", + "Description": "Cem Flow Out %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 17, + "ItemId": 19, + "ShortMnemonic": "CDIA", + "LongMnemonic": "CEMDIA", + "Description": "Cem Fluid Dens In (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 20, + "ShortMnemonic": "CDOA", + "LongMnemonic": "CEMDOA", + "Description": "Cem Fluid Dens Out (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 21, + "ShortMnemonic": "ECDC", + "LongMnemonic": "ECDCSG", + "Description": "ECD at Casing Shoe", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 22, + "ShortMnemonic": "CTIA", + "LongMnemonic": "CEMTIA", + "Description": "Cem Fluid Temp In (avg)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 23, + "ShortMnemonic": "CTOA", + "LongMnemonic": "CEMTOA", + "Description": "Cem Fluid Temp Out (avg)", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 24, + "ShortMnemonic": "CSTG", + "LongMnemonic": "CEMSTAGE", + "Description": "Cem Stage Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 17, + "ItemId": 25, + "ShortMnemonic": "DDVT", + "LongMnemonic": "DEPTDVT", + "Description": "Cem Depth to DV Tool", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 26, + "ShortMnemonic": "CTYP", + "LongMnemonic": "CEMFTYPE", + "Description": "Cem Fluid Type/Batch", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 17, + "ItemId": 27, + "ShortMnemonic": "CCRT", + "LongMnemonic": "CEMCUMRT", + "Description": "Cem Cumulative Returns", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 28, + "ShortMnemonic": "CIVL", + "LongMnemonic": "CEMIVOL", + "Description": "Cem Indiv Vol Pumped", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 29, + "ShortMnemonic": "CCVL", + "LongMnemonic": "CEMCVOL", + "Description": "Cem Cement Vol Pumped", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 30, + "ShortMnemonic": "CTVL", + "LongMnemonic": "CEMTVOL", + "Description": "Cem Total Vol Pumped", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 31, + "ShortMnemonic": "CBVL", + "LongMnemonic": "CEMBPVOL", + "Description": "Cem Volume to Bump Plug", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 32, + "ShortMnemonic": "CPLG", + "LongMnemonic": "CEMPLUGS", + "Description": "Cem No./Status of Plug(s)", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 17, + "ItemId": 33, + "ShortMnemonic": "CJTY", + "LongMnemonic": "CEMJTYP", + "Description": "Cem Job Type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 17, + "ItemId": 34, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 35, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 36, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 37, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 17, + "ItemId": 38, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 18, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 18, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 18, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 18, + "ItemId": 8, + "ShortMnemonic": "DSID", + "LongMnemonic": "DSTID", + "Description": "DST identification", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 18, + "ItemId": 9, + "ShortMnemonic": "DDTM", + "LongMnemonic": "DEPTDITM", + "Description": "DST Intvl Top Depth (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 10, + "ShortMnemonic": "DDTV", + "LongMnemonic": "DEPTDITV", + "Description": "DST Intvl Top Depth (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 11, + "ShortMnemonic": "DDBM", + "LongMnemonic": "DEPTDIBM", + "Description": "DST Intvl Bott Depth (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 12, + "ShortMnemonic": "DDBV", + "LongMnemonic": "DEPTDIBV", + "Description": "DST Intvl Bott Depth (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 13, + "ShortMnemonic": "DTTI", + "LongMnemonic": "DSTTTIME", + "Description": "DST Tool Time", + "Description2": "", + "MetricUnits": "HR", + "FPSUnits": "HR", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 14, + "ShortMnemonic": "DSTA", + "LongMnemonic": "DSTSTATE", + "Description": "DST State of Well", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 18, + "ItemId": 15, + "ShortMnemonic": "DSPT", + "LongMnemonic": "DSTSPTUB", + "Description": "DST Surf Pressure, Tubing", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 16, + "ShortMnemonic": "DSPC", + "LongMnemonic": "DSTSPCAS", + "Description": "DST Surf Pressure, Casing", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 17, + "ShortMnemonic": "DSTT", + "LongMnemonic": "DSTSTTUB", + "Description": "DST Surf Temp, Tubing", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 18, + "ShortMnemonic": "DBHP", + "LongMnemonic": "DSTBHP", + "Description": "DST Bottom Hole Pressure", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 19, + "ShortMnemonic": "DBHT", + "LongMnemonic": "DSTBHT", + "Description": "DST Bottom Hole Temp", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 20, + "ShortMnemonic": "DLFR", + "LongMnemonic": "DSTLIQFR", + "Description": "DST Liquid Flow Rate", + "Description2": "", + "MetricUnits": "M3/D", + "FPSUnits": "BPD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 21, + "ShortMnemonic": "DGFR", + "LongMnemonic": "DSTGASFR", + "Description": "DST Gas Flow Rate", + "Description2": "", + "MetricUnits": "MCMD", + "FPSUnits": "MCFD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 22, + "ShortMnemonic": "DTFR", + "LongMnemonic": "DSTTOTFR", + "Description": "DST Total Flow Rate", + "Description2": "", + "MetricUnits": "M3/D", + "FPSUnits": "BPD", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 23, + "ShortMnemonic": "DCLP", + "LongMnemonic": "DSTCLP", + "Description": "DST Cum Liquid Production", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 24, + "ShortMnemonic": "DCGP", + "LongMnemonic": "DSTCGP", + "Description": "DST Cum Gas Production", + "Description2": "", + "MetricUnits": "MCM", + "FPSUnits": "MCF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 25, + "ShortMnemonic": "DCTP", + "LongMnemonic": "DSTCTP", + "Description": "DST Cum Total Production", + "Description2": "", + "MetricUnits": "M3", + "FPSUnits": "BBL", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 26, + "ShortMnemonic": "HSA", + "LongMnemonic": "HSA", + "Description": "Hydrogen Sulfide (avg)", + "Description2": "", + "MetricUnits": "PPM", + "FPSUnits": "PPM", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 27, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 28, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 29, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 30, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 18, + "ItemId": 31, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 19, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 10, + "ShortMnemonic": "DSNO", + "LongMnemonic": "DSNUM", + "Description": "No. Drill String Sections", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 11, + "ShortMnemonic": "D1OD", + "LongMnemonic": "DS1OD", + "Description": "DS Section 1 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 12, + "ShortMnemonic": "D1ID", + "LongMnemonic": "DS1ID", + "Description": "DS Section 1 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 13, + "ShortMnemonic": "D1JI", + "LongMnemonic": "DS1JID", + "Description": "DS Section 1 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 14, + "ShortMnemonic": "D1JO", + "LongMnemonic": "DS1JOD", + "Description": "DS Section 1 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 15, + "ShortMnemonic": "D1MA", + "LongMnemonic": "DS1MASS", + "Description": "DS Section 1 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 16, + "ShortMnemonic": "D1LE", + "LongMnemonic": "DS1LEN", + "Description": "DS Section 1 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 17, + "ShortMnemonic": "D2OD", + "LongMnemonic": "DS2OD", + "Description": "DS Section 2 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 18, + "ShortMnemonic": "D2ID", + "LongMnemonic": "DS2ID", + "Description": "DS Section 2 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 19, + "ShortMnemonic": "D2JI", + "LongMnemonic": "DS2JID", + "Description": "DS Section 2 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 20, + "ShortMnemonic": "D2JO", + "LongMnemonic": "DS2JOD", + "Description": "DS Section 2 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 21, + "ShortMnemonic": "D2MA", + "LongMnemonic": "DS2MASS", + "Description": "DS Section 2 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 22, + "ShortMnemonic": "D2LE", + "LongMnemonic": "DS2LEN", + "Description": "DS Section 2 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 23, + "ShortMnemonic": "D3OD", + "LongMnemonic": "DS3OD", + "Description": "DS Section 3 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 24, + "ShortMnemonic": "D3ID", + "LongMnemonic": "DS3ID", + "Description": "DS Section 3 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 25, + "ShortMnemonic": "D3JI", + "LongMnemonic": "DS3JID", + "Description": "DS Section 3 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 26, + "ShortMnemonic": "D3JO", + "LongMnemonic": "DS3JOD", + "Description": "DS Section 3 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 27, + "ShortMnemonic": "D3MA", + "LongMnemonic": "DS3MASS", + "Description": "DS Section 3 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 28, + "ShortMnemonic": "D3LE", + "LongMnemonic": "DS3LEN", + "Description": "DS Section 3 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 29, + "ShortMnemonic": "D4OD", + "LongMnemonic": "DS4OD", + "Description": "DS Section 4 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 30, + "ShortMnemonic": "D4ID", + "LongMnemonic": "DS4ID", + "Description": "DS Section 4 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 31, + "ShortMnemonic": "D4JI", + "LongMnemonic": "DS4JID", + "Description": "DS Section 4 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 32, + "ShortMnemonic": "D4JO", + "LongMnemonic": "DS4JOD", + "Description": "DS Section 4 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 33, + "ShortMnemonic": "D4MA", + "LongMnemonic": "DS4MASS", + "Description": "DS Section 4 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 34, + "ShortMnemonic": "D4LE", + "LongMnemonic": "DS4LEN", + "Description": "DS Section 4 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 35, + "ShortMnemonic": "D5OD", + "LongMnemonic": "DS5OD", + "Description": "DS Section 5 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 36, + "ShortMnemonic": "D5ID", + "LongMnemonic": "DS5ID", + "Description": "DS Section 5 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 37, + "ShortMnemonic": "D5JI", + "LongMnemonic": "DS5JID", + "Description": "DS Section 5 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 38, + "ShortMnemonic": "D5JO", + "LongMnemonic": "DS5JOD", + "Description": "DS Section 5 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 39, + "ShortMnemonic": "D5MA", + "LongMnemonic": "DS5MASS", + "Description": "DS Section 5 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 40, + "ShortMnemonic": "D5LE", + "LongMnemonic": "DS5LEN", + "Description": "DS Section 5 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 41, + "ShortMnemonic": "D6OD", + "LongMnemonic": "DS6OD", + "Description": "DS Section 6 OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 42, + "ShortMnemonic": "D6ID", + "LongMnemonic": "DS6ID", + "Description": "DS Section 6 ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 43, + "ShortMnemonic": "D6JI", + "LongMnemonic": "DS6JID", + "Description": "DS Section 6 Tool Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 44, + "ShortMnemonic": "D6JO", + "LongMnemonic": "DS6JOD", + "Description": "DS Section 6 Tool Joint OD", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 45, + "ShortMnemonic": "D6MA", + "LongMnemonic": "DS6MASS", + "Description": "DS Section 6 Mass/Length", + "Description2": "", + "MetricUnits": "KG/M", + "FPSUnits": "LB/F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 46, + "ShortMnemonic": "KID", + "LongMnemonic": "KELLYID", + "Description": "Kelly ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 47, + "ShortMnemonic": "KLEN", + "LongMnemonic": "KELLYLEN", + "Description": "Kelly Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 48, + "ShortMnemonic": "SLEN", + "LongMnemonic": "DPSTDLEN", + "Description": "Drill Pipe Stand Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 49, + "ShortMnemonic": "SJNT", + "LongMnemonic": "DPSTDJNT", + "Description": "No. Joints/Stand", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 50, + "ShortMnemonic": "HLNO", + "LongMnemonic": "HOLENUM", + "Description": "No. Hole Sections", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 51, + "ShortMnemonic": "H1DI", + "LongMnemonic": "HL1DIAM", + "Description": "Hole Section 1 Diam", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 52, + "ShortMnemonic": "H1LE", + "LongMnemonic": "HL1LEN", + "Description": "Hole Section 1 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 53, + "ShortMnemonic": "H2DI", + "LongMnemonic": "HL2DIAM", + "Description": "Hole Section 2 Diam", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 54, + "ShortMnemonic": "H2LE", + "LongMnemonic": "HL2LEN", + "Description": "Hole Section 2 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 55, + "ShortMnemonic": "H3DI", + "LongMnemonic": "HL3DIAM", + "Description": "Hole Section 3 Diam", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 56, + "ShortMnemonic": "H3LE", + "LongMnemonic": "HL3LEN", + "Description": "Hole Section 3 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 57, + "ShortMnemonic": "H4DI", + "LongMnemonic": "HL4DIAM", + "Description": "Hole Section 4 Diam", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 58, + "ShortMnemonic": "H4LE", + "LongMnemonic": "HL4LEN", + "Description": "Hole Section 4 Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 59, + "ShortMnemonic": "H5DI", + "LongMnemonic": "HL5DIAM", + "Description": "Hole Section 5 Diam", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 60, + "ShortMnemonic": "P1CA", + "LongMnemonic": "PUMP1CAP", + "Description": "Pump 1 Capacity", + "Description2": "", + "MetricUnits": "M3ST", + "FPSUnits": "B/ST", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 61, + "ShortMnemonic": "P1EF", + "LongMnemonic": "PUMP1EFF", + "Description": "Pump 1 Efficiency", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 62, + "ShortMnemonic": "P2CA", + "LongMnemonic": "PUMP2CAP", + "Description": "Pump 2 Capacity", + "Description2": "", + "MetricUnits": "M3ST", + "FPSUnits": "B/ST", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 63, + "ShortMnemonic": "P2EF", + "LongMnemonic": "PUMP2EFF", + "Description": "Pump 2 Efficiency", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 64, + "ShortMnemonic": "P3CA", + "LongMnemonic": "PUMP3CAP", + "Description": "Pump 3 Capacity", + "Description2": "", + "MetricUnits": "M3ST", + "FPSUnits": "B/ST", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 65, + "ShortMnemonic": "P3EF", + "LongMnemonic": "PUMP3EFF", + "Description": "Pump 3 Efficiency", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 66, + "ShortMnemonic": "RIGC", + "LongMnemonic": "RIGCOST", + "Description": "Rig Operating Cost/Hour", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "$", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 67, + "ShortMnemonic": "TRRT", + "LongMnemonic": "TRIPRATE", + "Description": "Trip Rate (Dist/Time)", + "Description2": "", + "MetricUnits": "KPH", + "FPSUnits": "KF/H", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 68, + "ShortMnemonic": "KLID", + "LongMnemonic": "KILLID", + "Description": "Kill Line ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 69, + "ShortMnemonic": "KLJD", + "LongMnemonic": "KILLJID", + "Description": "Kill Line Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 70, + "ShortMnemonic": "KLJF", + "LongMnemonic": "KILLJF", + "Description": "Kill Line Joint Fraction", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 71, + "ShortMnemonic": "KLLE", + "LongMnemonic": "KILLLEN", + "Description": "Kill Line Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 72, + "ShortMnemonic": "CHID", + "LongMnemonic": "CHKID", + "Description": "Choke Line ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 73, + "ShortMnemonic": "CHJD", + "LongMnemonic": "CHKJID", + "Description": "Choke Line Joint ID", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 74, + "ShortMnemonic": "CHJF", + "LongMnemonic": "CHKJF", + "Description": "Choke Line Joint Fraction", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 19, + "ItemId": 75, + "ShortMnemonic": "CHLE", + "LongMnemonic": "CHKLEN", + "Description": "Choke Line Length", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 76, + "ShortMnemonic": "DCGM", + "LongMnemonic": "DEPTCSGM", + "Description": "Depth Casing Shoe (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 77, + "ShortMnemonic": "DCGV", + "LongMnemonic": "DEPTCSGV", + "Description": "Depth Casing Shoe (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 78, + "ShortMnemonic": "DPTM", + "LongMnemonic": "DEPTPITM", + "Description": "Depth PIT (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 79, + "ShortMnemonic": "DPTV", + "LongMnemonic": "DEPTPITV", + "Description": "Depth PIT (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 80, + "ShortMnemonic": "FPIT", + "LongMnemonic": "FPGPIT", + "Description": "Frac Pressure Grad at PIT", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 81, + "ShortMnemonic": "CONT", + "LongMnemonic": "DRLGCONT", + "Description": "Drilling Contractor", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 19, + "ItemId": 82, + "ShortMnemonic": "RIG", + "LongMnemonic": "RIGNAME", + "Description": "Rig Name", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 19, + "ItemId": 83, + "ShortMnemonic": "RTYP", + "LongMnemonic": "RIGTYPE", + "Description": "Rig Type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 19, + "ItemId": 84, + "ShortMnemonic": "VEN1", + "LongMnemonic": "VENDOR1", + "Description": "Vendor 1 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 85, + "ShortMnemonic": "VEN2", + "LongMnemonic": "VENDOR2", + "Description": "Vendor 2 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 86, + "ShortMnemonic": "VEN3", + "LongMnemonic": "VENDOR3", + "Description": "Vendor 3 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 87, + "ShortMnemonic": "VEN4", + "LongMnemonic": "VENDOR4", + "Description": "Vendor 4 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 88, + "ShortMnemonic": "VEN5", + "LongMnemonic": "VENDOR5", + "Description": "Vendor 5 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 89, + "ShortMnemonic": "VEN6", + "LongMnemonic": "VENDOR6", + "Description": "Vendor 6 Name/Service", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 19, + "ItemId": 90, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 91, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 92, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 93, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 19, + "ItemId": 94, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 20, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 8, + "ShortMnemonic": "MRDM", + "LongMnemonic": "MREPDM", + "Description": "Mud Rept Depth (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 9, + "ShortMnemonic": "MRDV", + "LongMnemonic": "MREPDV", + "Description": "Mud Rept Depth (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 10, + "ShortMnemonic": "MNUM", + "LongMnemonic": "MREPNUM", + "Description": "Mud Rept Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 11, + "ShortMnemonic": "MTYP", + "LongMnemonic": "MRMTYPE", + "Description": "Mud Rept Mud Type", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 20, + "ItemId": 12, + "ShortMnemonic": "MLOC", + "LongMnemonic": "MRSLOC", + "Description": "Mud Rept Sample Location", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 20, + "ItemId": 13, + "ShortMnemonic": "MDAT", + "LongMnemonic": "MRSDATE", + "Description": "Mud Rept Sample Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 14, + "ShortMnemonic": "MTIM", + "LongMnemonic": "MRSTIME", + "Description": "Mud Rept Sample Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 15, + "ShortMnemonic": "MDEN", + "LongMnemonic": "MRDENS", + "Description": "Mud Rept Mud Density", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 16, + "ShortMnemonic": "MFV", + "LongMnemonic": "MRFVIS", + "Description": "Mud Rept Funnel Vis", + "Description2": "", + "MetricUnits": "S/L", + "FPSUnits": "S/QT", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 17, + "ShortMnemonic": "MFVT", + "LongMnemonic": "MRFVIST", + "Description": "Mud Rept Funnel Vis Temp", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 18, + "ShortMnemonic": "MPV", + "LongMnemonic": "MRPV", + "Description": "Mud Rept Plastic Vis", + "Description2": "", + "MetricUnits": "CP", + "FPSUnits": "CP", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 19, + "ShortMnemonic": "MYP", + "LongMnemonic": "MRYP", + "Description": "Mud Rept Yield Point", + "Description2": "", + "MetricUnits": "PA", + "FPSUnits": "PHSF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 20, + "ShortMnemonic": "MGL1", + "LongMnemonic": "MRGEL10S", + "Description": "Mud Rept Gel - 10 sec", + "Description2": "", + "MetricUnits": "PA", + "FPSUnits": "PHSF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 21, + "ShortMnemonic": "MGL2", + "LongMnemonic": "MRGEL10M", + "Description": "Mud Rept Gel - 10 min", + "Description2": "", + "MetricUnits": "PA", + "FPSUnits": "PHSF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 22, + "ShortMnemonic": "MGL3", + "LongMnemonic": "MRGEL30M", + "Description": "Mud Rept Gel - 30 min", + "Description2": "", + "MetricUnits": "PA", + "FPSUnits": "PHSF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 23, + "ShortMnemonic": "MFIL", + "LongMnemonic": "MRFILT", + "Description": "Mud Rept Filtrate", + "Description2": "", + "MetricUnits": "C/30", + "FPSUnits": "C/30", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 24, + "ShortMnemonic": "MCAK", + "LongMnemonic": "MRCAKE", + "Description": "Mud Rept Filter Cake", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 25, + "ShortMnemonic": "MHT", + "LongMnemonic": "MRHT", + "Description": "Mud Rept HTHP Temp", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 26, + "ShortMnemonic": "MHP", + "LongMnemonic": "MRHP", + "Description": "Mud Rept HTHP Pressure", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 27, + "ShortMnemonic": "MHFI", + "LongMnemonic": "MRHFILT", + "Description": "Mud Rept HTHP Filtrate", + "Description2": "", + "MetricUnits": "C/30", + "FPSUnits": "C/30", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 28, + "ShortMnemonic": "MHCK", + "LongMnemonic": "MRHCAKE", + "Description": "Mud Rept HTHP Filter Cake", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 20, + "ItemId": 29, + "ShortMnemonic": "MSOL", + "LongMnemonic": "MRSOLRET", + "Description": "Mud Rept Solids % (retort)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 30, + "ShortMnemonic": "MWAT", + "LongMnemonic": "MRWATRET", + "Description": "Mud Rept Water % (retort)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 31, + "ShortMnemonic": "MOIL", + "LongMnemonic": "MROILRET", + "Description": "Mud Rept Oil % (retort)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 32, + "ShortMnemonic": "MSAN", + "LongMnemonic": "MRSAND", + "Description": "Mud Rept Sand %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 33, + "ShortMnemonic": "MLGS", + "LongMnemonic": "MRLGSOL", + "Description": "Mud Rept Low Grav Sol %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 34, + "ShortMnemonic": "MSCA", + "LongMnemonic": "MRSOLCAL", + "Description": "Mud Rept Solids % (calc)", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 35, + "ShortMnemonic": "MBRT", + "LongMnemonic": "MRBARITE", + "Description": "Mud Rept Barite content", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 36, + "ShortMnemonic": "MLCM", + "LongMnemonic": "MRLCM", + "Description": "Mud Rept LCM content", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 37, + "ShortMnemonic": "MMBT", + "LongMnemonic": "MRMBT", + "Description": "Mud Rept MBT capacity", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 38, + "ShortMnemonic": "MPH", + "LongMnemonic": "MRPH", + "Description": "Mud Rept pH", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 39, + "ShortMnemonic": "MPHT", + "LongMnemonic": "MRPHT", + "Description": "Mud Rept pH sample temp", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 40, + "ShortMnemonic": "MPM", + "LongMnemonic": "MRPM", + "Description": "Mud Rept Pm", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 41, + "ShortMnemonic": "MPF", + "LongMnemonic": "MRPF", + "Description": "Mud Rept Pf", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 42, + "ShortMnemonic": "MMF", + "LongMnemonic": "MRMF", + "Description": "Mud Rept Mf", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 43, + "ShortMnemonic": "MRP1", + "LongMnemonic": "MRP1", + "Description": "Mud Rept P1", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 44, + "ShortMnemonic": "MRP2", + "LongMnemonic": "MRP2", + "Description": "Mud Rept P2", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 45, + "ShortMnemonic": "MCHL", + "LongMnemonic": "MRCHLOR", + "Description": "Mud Rept Chlorides", + "Description2": "", + "MetricUnits": "MG/L", + "FPSUnits": "MG/L", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 46, + "ShortMnemonic": "MCAL", + "LongMnemonic": "MRCALC", + "Description": "Mud Rept Calcium", + "Description2": "", + "MetricUnits": "MG/L", + "FPSUnits": "MG/L", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 47, + "ShortMnemonic": "MMAG", + "LongMnemonic": "MRMAG", + "Description": "Mud Rept Magnesium", + "Description2": "", + "MetricUnits": "MG/L", + "FPSUnits": "MG/L", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 48, + "ShortMnemonic": "MPOT", + "LongMnemonic": "MRPOT", + "Description": "Mud Rept Potassium", + "Description2": "", + "MetricUnits": "MG/L", + "FPSUnits": "MG/L", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 49, + "ShortMnemonic": "MRHT", + "LongMnemonic": "MRRHETEM", + "Description": "Mud Rept Rheometer temp", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 50, + "ShortMnemonic": "M3", + "LongMnemonic": "MRVIS3", + "Description": "Mud Rept Viscom 3 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 51, + "ShortMnemonic": "M6", + "LongMnemonic": "MRVIS6", + "Description": "Mud Rept Viscom 6 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 52, + "ShortMnemonic": "M100", + "LongMnemonic": "MRVIS100", + "Description": "Mud Rept Viscom 100 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 53, + "ShortMnemonic": "M200", + "LongMnemonic": "MRVIS200", + "Description": "Mud Rept Viscom 200 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 54, + "ShortMnemonic": "M300", + "LongMnemonic": "MRVIS300", + "Description": "Mud Rept Viscom 300 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 55, + "ShortMnemonic": "M600", + "LongMnemonic": "MRVIS600", + "Description": "Mud Rept Viscom 600 rpm", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 56, + "ShortMnemonic": "MBRI", + "LongMnemonic": "MRBRINE", + "Description": "Mud Rept Brine %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 57, + "ShortMnemonic": "MALK", + "LongMnemonic": "MRALK", + "Description": "Mud Rept Alkalinity", + "Description2": "", + "MetricUnits": "MLML", + "FPSUnits": "MLML", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 58, + "ShortMnemonic": "MLIM", + "LongMnemonic": "MRLIME", + "Description": "Mud Rept Lime content", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 59, + "ShortMnemonic": "MELS", + "LongMnemonic": "MRELECST", + "Description": "Mud Rept Elect. Stability", + "Description2": "", + "MetricUnits": "V", + "FPSUnits": "V", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 60, + "ShortMnemonic": "MCCL", + "LongMnemonic": "MRCACL", + "Description": "Mud Rept CaCl, Wt %", + "Description2": "", + "MetricUnits": "%", + "FPSUnits": "%", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 61, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 62, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 63, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 64, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 20, + "ItemId": 65, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 21, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 21, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 21, + "ItemId": 8, + "ShortMnemonic": "BNUM", + "LongMnemonic": "BTNUM", + "Description": "Bit Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 21, + "ItemId": 9, + "ShortMnemonic": "BDIA", + "LongMnemonic": "BTDIAM", + "Description": "Bit Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "IN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 10, + "ShortMnemonic": "BMAN", + "LongMnemonic": "BTMANUF", + "Description": "Bit Manufacturer", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 11, + "ShortMnemonic": "BNAM", + "LongMnemonic": "BTNAME", + "Description": "Bit Name", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 12, + "ShortMnemonic": "BCOD", + "LongMnemonic": "BTCODE", + "Description": "Bit IADC Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 21, + "ItemId": 13, + "ShortMnemonic": "BSER", + "LongMnemonic": "BTSERNUM", + "Description": "Bit Serial Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 14, + "ShortMnemonic": "BCST", + "LongMnemonic": "BTCOST", + "Description": "Bit Cost", + "Description2": "", + "MetricUnits": "$", + "FPSUnits": "$", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 15, + "ShortMnemonic": "BJT1", + "LongMnemonic": "BTJET1", + "Description": "Bit Jet 1 Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 16, + "ShortMnemonic": "BJT2", + "LongMnemonic": "BTJET2", + "Description": "Bit Jet 2 Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 17, + "ShortMnemonic": "BJT3", + "LongMnemonic": "BTJET3", + "Description": "Bit Jet 3 Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 18, + "ShortMnemonic": "BJT4", + "LongMnemonic": "BTJET4", + "Description": "Bit Jet 4 Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 19, + "ShortMnemonic": "BJTC", + "LongMnemonic": "BTJETCEN", + "Description": "Bit Center Jet Diameter", + "Description2": "", + "MetricUnits": "MM", + "FPSUnits": "I/32", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 20, + "ShortMnemonic": "BTFA", + "LongMnemonic": "BTTFA", + "Description": "Bit Total Flow Area", + "Description2": "", + "MetricUnits": "MM2", + "FPSUnits": "SQIN", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 21, + "ShortMnemonic": "BDPI", + "LongMnemonic": "BTDEPIN", + "Description": "Bit Starting Depth (In)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 22, + "ShortMnemonic": "BDPO", + "LongMnemonic": "BTDEPOUT", + "Description": "Bit Ending Depth (Out)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 23, + "ShortMnemonic": "BDDI", + "LongMnemonic": "BTDDIST", + "Description": "Bit Run Drilled Distance", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 24, + "ShortMnemonic": "BDTI", + "LongMnemonic": "BTDTIME", + "Description": "Bit Run Drilled Time", + "Description2": "", + "MetricUnits": "HR", + "FPSUnits": "HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 25, + "ShortMnemonic": "BRTI", + "LongMnemonic": "BTRTIME", + "Description": "Bit Run Reamed Time", + "Description2": "", + "MetricUnits": "HR", + "FPSUnits": "HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 26, + "ShortMnemonic": "BRPA", + "LongMnemonic": "BTROPA", + "Description": "Bit Penetration Rate (avg)", + "Description2": "", + "MetricUnits": "M/HR", + "FPSUnits": "F/HR", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 27, + "ShortMnemonic": "BWBA", + "LongMnemonic": "BTWOBA", + "Description": "Bit Weight-on-Bit (avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 28, + "ShortMnemonic": "BWBX", + "LongMnemonic": "BTWOBX", + "Description": "Bit Weight-on-Bit (max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 29, + "ShortMnemonic": "BRMA", + "LongMnemonic": "BTRPMA", + "Description": "Bit Rotary Speed (avg)", + "Description2": "", + "MetricUnits": "RPM", + "FPSUnits": "RPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 21, + "ItemId": 30, + "ShortMnemonic": "BRMX", + "LongMnemonic": "BTRPMX", + "Description": "Bit Rotary Speed (max)", + "Description2": "", + "MetricUnits": "RPM", + "FPSUnits": "RPM", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 21, + "ItemId": 31, + "ShortMnemonic": "BMFA", + "LongMnemonic": "BTMFA", + "Description": "Bit Mud Flow Rate (avg)", + "Description2": "", + "MetricUnits": "L/M", + "FPSUnits": "GPM", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 32, + "ShortMnemonic": "BMDA", + "LongMnemonic": "BTMDA", + "Description": "Bit Mud Density (avg)", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 33, + "ShortMnemonic": "BSPA", + "LongMnemonic": "BTSPPA", + "Description": "Bit Standpipe Pressure (avg)", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "PSI", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 34, + "ShortMnemonic": "BRUN", + "LongMnemonic": "BTRUN", + "Description": "Bit Reason Run", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 35, + "ShortMnemonic": "BPUL", + "LongMnemonic": "BTPULL", + "Description": "Bit Reason Pulled", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 36, + "ShortMnemonic": "BGI", + "LongMnemonic": "BTGRDIN", + "Description": "Bit Grade In", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 37, + "ShortMnemonic": "BGO", + "LongMnemonic": "BTGRDOUT", + "Description": "Bit Grade Out", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 21, + "ItemId": 38, + "ShortMnemonic": "BSHK", + "LongMnemonic": "BTSHKSUB", + "Description": "Bit Shock Sub Used ?", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 1 + }, + { + "RecordId": 21, + "ItemId": 39, + "ShortMnemonic": "BMM", + "LongMnemonic": "BTMUDMOT", + "Description": "Bit Mud Motor Used ?", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 1 + }, + { + "RecordId": 21, + "ItemId": 40, + "ShortMnemonic": "BCOM", + "LongMnemonic": "BTCOMM", + "Description": "Bit Comments", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 128 + }, + { + "RecordId": 21, + "ItemId": 41, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 42, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 43, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 44, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 45, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 46, + "ShortMnemonic": "SPR6", + "LongMnemonic": "SPARE6", + "Description": "< SPARE 6>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 47, + "ShortMnemonic": "SPR7", + "LongMnemonic": "SPARE7", + "Description": "< SPARE 7>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 48, + "ShortMnemonic": "SPR8", + "LongMnemonic": "SPARE8", + "Description": "< SPARE 8>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 21, + "ItemId": 49, + "ShortMnemonic": "SPR9", + "LongMnemonic": "SPARE9", + "Description": "< SPARE 9>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 22, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 22, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 22, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 22, + "ItemId": 8, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "Depth Hole (meas)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 9, + "ShortMnemonic": "DVER", + "LongMnemonic": "DEPTVERT", + "Description": "Depth Hole (vert)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 22, + "ItemId": 10, + "ShortMnemonic": "COMM", + "LongMnemonic": "COMM", + "Description": "Comments", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 256 + }, + { + "RecordId": 23, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 23, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 23, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 23, + "ItemId": 8, + "ShortMnemonic": "WELL", + "LongMnemonic": "WELLNAME", + "Description": "Well Name", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 9, + "ShortMnemonic": "WNUM", + "LongMnemonic": "WELLNUM", + "Description": "Well Identification Number", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 10, + "ShortMnemonic": "OPER", + "LongMnemonic": "OPERATOR", + "Description": "Operator", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 11, + "ShortMnemonic": "WCLS", + "LongMnemonic": "WELLCLAS", + "Description": "Well Classification (Lahee)", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 12, + "ShortMnemonic": "WLOC", + "LongMnemonic": "LOCATION", + "Description": "Well Location", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 13, + "ShortMnemonic": "WUTM", + "LongMnemonic": "WELLUTM", + "Description": "Well Univ.Tran.Mercator", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 14, + "ShortMnemonic": "WLAT", + "LongMnemonic": "WELLLAT", + "Description": "Well Surface Latitude", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 15, + "ShortMnemonic": "WLON", + "LongMnemonic": "WELLLON", + "Description": "Well Surface Longitude", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 23, + "ItemId": 16, + "ShortMnemonic": "FLD", + "LongMnemonic": "FIELD", + "Description": "Field Name", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 17, + "ShortMnemonic": "ELDP", + "LongMnemonic": "ELEVDP", + "Description": "Elev : Datum-MSL", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 18, + "ShortMnemonic": "ELKB", + "LongMnemonic": "ELEVKB", + "Description": "Elev : Kelly Bushing-MSL", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 19, + "ShortMnemonic": "ELGL", + "LongMnemonic": "ELEVGL", + "Description": "Elev : Ground Level-MSL", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 20, + "ShortMnemonic": "WDPM", + "LongMnemonic": "WATDEPT", + "Description": "Water Depth (mean)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 21, + "ShortMnemonic": "SPDT", + "LongMnemonic": "SPUDDATE", + "Description": "Spud Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 22, + "ShortMnemonic": "CUS1", + "LongMnemonic": "CUS1", + "Description": "Custom Field 01 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 23, + "ShortMnemonic": "CUS2", + "LongMnemonic": "CUS2", + "Description": "Custom Field 02 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 24, + "ShortMnemonic": "CUS3", + "LongMnemonic": "CUS3", + "Description": "Custom Field 03 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 25, + "ShortMnemonic": "CUS4", + "LongMnemonic": "CUS4", + "Description": "Custom Field 04 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 26, + "ShortMnemonic": "CUS5", + "LongMnemonic": "CUS5", + "Description": "Custom Field 05 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 27, + "ShortMnemonic": "CUS6", + "LongMnemonic": "CUS6", + "Description": "Custom Field 06 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 28, + "ShortMnemonic": "CUS7", + "LongMnemonic": "CUS7", + "Description": "Custom Field 07 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 29, + "ShortMnemonic": "CUS8", + "LongMnemonic": "CUS8", + "Description": "Custom Field 08 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 30, + "ShortMnemonic": "CUS9", + "LongMnemonic": "CUS9", + "Description": "Custom Field 09 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 31, + "ShortMnemonic": "CUS0", + "LongMnemonic": "CUS0", + "Description": "Custom Field 10 Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 32 + }, + { + "RecordId": 23, + "ItemId": 32, + "ShortMnemonic": "UNIT", + "LongMnemonic": "UNIT", + "Description": "Units Type used", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 8 + }, + { + "RecordId": 23, + "ItemId": 33, + "ShortMnemonic": "TOFF", + "LongMnemonic": "TOFFSET", + "Description": "Time Zone Offset", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 34, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 35, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 36, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 23, + "ItemId": 37, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 24, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 24, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 24, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 24, + "ItemId": 8, + "ShortMnemonic": "WDPM", + "LongMnemonic": "WATDEPT", + "Description": "Water Depth (mean)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 9, + "ShortMnemonic": "TIDE", + "LongMnemonic": "TIDE", + "Description": "Tide", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 10, + "ShortMnemonic": "VHED", + "LongMnemonic": "VESSHEAD", + "Description": "Vessel Heading", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 11, + "ShortMnemonic": "RVCG", + "LongMnemonic": "RIGVCG", + "Description": "Rig VCG", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 12, + "ShortMnemonic": "RTEN", + "LongMnemonic": "RISTENS", + "Description": "Riser Tension", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 13, + "ShortMnemonic": "OFSA", + "LongMnemonic": "OFFSETA", + "Description": "Rig Offset (avg)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 14, + "ShortMnemonic": "OFSX", + "LongMnemonic": "OFFSETX", + "Description": "Rig Offset (max)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 15, + "ShortMnemonic": "OFSD", + "LongMnemonic": "OFFSETD", + "Description": "Rig Offset Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 16, + "ShortMnemonic": "LANA", + "LongMnemonic": "LMRPANA", + "Description": "LMRP Angle (avg)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 17, + "ShortMnemonic": "LANX", + "LongMnemonic": "LMRPANX", + "Description": "LMRP Angle (max)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 18, + "ShortMnemonic": "LAND", + "LongMnemonic": "LMRPAND", + "Description": "LMRP Angle, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 19, + "ShortMnemonic": "MDRI", + "LongMnemonic": "MDRISER", + "Description": "Fluid Density in Riser", + "Description2": "", + "MetricUnits": "KGM3", + "FPSUnits": "PPG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 20, + "ShortMnemonic": "TA01", + "LongMnemonic": "MLTA01", + "Description": "Mooring Line #01 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 21, + "ShortMnemonic": "TX01", + "LongMnemonic": "MLTX01", + "Description": "Mooring Line #01 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 22, + "ShortMnemonic": "TA02", + "LongMnemonic": "MLTA02", + "Description": "Mooring Line #02 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 23, + "ShortMnemonic": "TX02", + "LongMnemonic": "MLTX02", + "Description": "Mooring Line #02 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 24, + "ShortMnemonic": "TA03", + "LongMnemonic": "MLTA03", + "Description": "Mooring Line #03 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 25, + "ShortMnemonic": "TX03", + "LongMnemonic": "MLTX03", + "Description": "Mooring Line #03 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 26, + "ShortMnemonic": "TA04", + "LongMnemonic": "MLTA04", + "Description": "Mooring Line #04 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 27, + "ShortMnemonic": "TX04", + "LongMnemonic": "MLTX04", + "Description": "Mooring Line #04 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 28, + "ShortMnemonic": "TA05", + "LongMnemonic": "MLTA05", + "Description": "Mooring Line #05 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 29, + "ShortMnemonic": "TX05", + "LongMnemonic": "MLTX05", + "Description": "Mooring Line #05 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 30, + "ShortMnemonic": "TA06", + "LongMnemonic": "MLTA06", + "Description": "Mooring Line #06 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 31, + "ShortMnemonic": "TX06", + "LongMnemonic": "MLTX06", + "Description": "Mooring Line #06 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 32, + "ShortMnemonic": "TA07", + "LongMnemonic": "MLTA07", + "Description": "Mooring Line #07 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 33, + "ShortMnemonic": "TX07", + "LongMnemonic": "MLTX07", + "Description": "Mooring Line #07 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 34, + "ShortMnemonic": "TA08", + "LongMnemonic": "MLTA08", + "Description": "Mooring Line #08 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 35, + "ShortMnemonic": "TX08", + "LongMnemonic": "MLTX08", + "Description": "Mooring Line #08 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 36, + "ShortMnemonic": "TA09", + "LongMnemonic": "MLTA09", + "Description": "Mooring Line #09 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 37, + "ShortMnemonic": "TX09", + "LongMnemonic": "MLTX09", + "Description": "Mooring Line #09 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 38, + "ShortMnemonic": "TA10", + "LongMnemonic": "MLTA10", + "Description": "Mooring Line #10 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 39, + "ShortMnemonic": "TX10", + "LongMnemonic": "MLTX10", + "Description": "Mooring Line #10 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 40, + "ShortMnemonic": "TA11", + "LongMnemonic": "MLTA11", + "Description": "Mooring Line #11 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 41, + "ShortMnemonic": "TX11", + "LongMnemonic": "MLTX11", + "Description": "Mooring Line #11 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 42, + "ShortMnemonic": "TA12", + "LongMnemonic": "MLTA12", + "Description": "Mooring Line #12 Tens(avg)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 43, + "ShortMnemonic": "TX12", + "LongMnemonic": "MLTX12", + "Description": "Mooring Line #12 Tens(max)", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 44, + "ShortMnemonic": "TF01", + "LongMnemonic": "THRF01", + "Description": "Thruster #01, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 45, + "ShortMnemonic": "TD01", + "LongMnemonic": "THRD01", + "Description": "Thruster #01, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 46, + "ShortMnemonic": "TF02", + "LongMnemonic": "THRF02", + "Description": "Thruster #02, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 47, + "ShortMnemonic": "TD02", + "LongMnemonic": "THRD02", + "Description": "Thruster #02, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 48, + "ShortMnemonic": "TF03", + "LongMnemonic": "THRF03", + "Description": "Thruster #03, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 49, + "ShortMnemonic": "TD03", + "LongMnemonic": "THRD03", + "Description": "Thruster #03, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 50, + "ShortMnemonic": "TF04", + "LongMnemonic": "THRF04", + "Description": "Thruster #04, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 51, + "ShortMnemonic": "TD04", + "LongMnemonic": "THRD04", + "Description": "Thruster #04, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 52, + "ShortMnemonic": "TF05", + "LongMnemonic": "THRF05", + "Description": "Thruster #05, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 53, + "ShortMnemonic": "TD05", + "LongMnemonic": "THRD05", + "Description": "Thruster #05, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 54, + "ShortMnemonic": "TF06", + "LongMnemonic": "THRF06", + "Description": "Thruster #06, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 55, + "ShortMnemonic": "TD06", + "LongMnemonic": "THRD06", + "Description": "Thruster #06, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 56, + "ShortMnemonic": "TF07", + "LongMnemonic": "THRF07", + "Description": "Thruster #07, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 57, + "ShortMnemonic": "TD07", + "LongMnemonic": "THRD07", + "Description": "Thruster #07, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 58, + "ShortMnemonic": "TF08", + "LongMnemonic": "THRF08", + "Description": "Thruster #08, Force", + "Description2": "", + "MetricUnits": "KDN", + "FPSUnits": "KLB", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 59, + "ShortMnemonic": "TD08", + "LongMnemonic": "THRD08", + "Description": "Thruster #08, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 60, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 61, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 62, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 63, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 24, + "ItemId": 64, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 1, + "ShortMnemonic": "WID", + "LongMnemonic": "WELLID", + "Description": "Well Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 16 + }, + { + "RecordId": 25, + "ItemId": 2, + "ShortMnemonic": "SKNO", + "LongMnemonic": "STKNUM", + "Description": "Sidetrack/Hole Sect No.", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 3, + "ShortMnemonic": "RID", + "LongMnemonic": "RECID", + "Description": "Record Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 4, + "ShortMnemonic": "SQID", + "LongMnemonic": "SEQID", + "Description": "Sequence Identifier", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 5, + "ShortMnemonic": "DATE", + "LongMnemonic": "DATE", + "Description": "Date", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 6, + "ShortMnemonic": "TIME", + "LongMnemonic": "TIME", + "Description": "Time", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "L", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 7, + "ShortMnemonic": "ACTC", + "LongMnemonic": "ACTCOD", + "Description": "Activity Code", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 8, + "ShortMnemonic": "WDPM", + "LongMnemonic": "WATDEPT", + "Description": "Water Depth (mean)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 9, + "ShortMnemonic": "AIRT", + "LongMnemonic": "AIRTEMP", + "Description": "Air Temperature", + "Description2": "", + "MetricUnits": "DEGC", + "FPSUnits": "DEGF", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 10, + "ShortMnemonic": "BARP", + "LongMnemonic": "BARPRES", + "Description": "Barometric Pressure", + "Description2": "", + "MetricUnits": "KPA", + "FPSUnits": "IHG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 11, + "ShortMnemonic": "WVSH", + "LongMnemonic": "WVSHGHT", + "Description": "Waves, Significant Height", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 12, + "ShortMnemonic": "WVMH", + "LongMnemonic": "WVMHGHT", + "Description": "Waves, Maximum Height", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 13, + "ShortMnemonic": "WVMP", + "LongMnemonic": "WVMPER", + "Description": "Waves, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 14, + "ShortMnemonic": "WVDI", + "LongMnemonic": "WVDIR", + "Description": "Waves, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 15, + "ShortMnemonic": "SWSH", + "LongMnemonic": "SWSHGHT", + "Description": "Swell, Significant Height", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 16, + "ShortMnemonic": "SWMH", + "LongMnemonic": "SWMHGHT", + "Description": "Swell, Maximum Height", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 17, + "ShortMnemonic": "SWMP", + "LongMnemonic": "SWMPER", + "Description": "Swell, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 18, + "ShortMnemonic": "SWDI", + "LongMnemonic": "SWDIR", + "Description": "Swell, Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 19, + "ShortMnemonic": "WSPD", + "LongMnemonic": "WINDSPD", + "Description": "Wind Speed ( 1 min )", + "Description2": "", + "MetricUnits": "KPH", + "FPSUnits": "MPH", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 20, + "ShortMnemonic": "WGST", + "LongMnemonic": "WINDGUST", + "Description": "Wind Gusts ( 5 sec )", + "Description2": "", + "MetricUnits": "KPH", + "FPSUnits": "MPH", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 21, + "ShortMnemonic": "WDIR", + "LongMnemonic": "WINDDIR", + "Description": "Wind Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 22, + "ShortMnemonic": "ANEM", + "LongMnemonic": "ANEMHGHT", + "Description": "Anemometer Height", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 23, + "ShortMnemonic": "CSPD", + "LongMnemonic": "CURRSPD", + "Description": "Current Speed", + "Description2": "", + "MetricUnits": "KPH", + "FPSUnits": "MPH", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 24, + "ShortMnemonic": "CDIR", + "LongMnemonic": "CURRDIR", + "Description": "Current Direction", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 25, + "ShortMnemonic": "DCUR", + "LongMnemonic": "DEPTCURR", + "Description": "Depth current measured", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 26, + "ShortMnemonic": "VMD", + "LongMnemonic": "VESMDRFT", + "Description": "Vessel Mean Draft", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 27, + "ShortMnemonic": "HVSG", + "LongMnemonic": "HEAVSIG", + "Description": "Heave, Peak-to-Peak (sig)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 28, + "ShortMnemonic": "HVMX", + "LongMnemonic": "HEAVMAX", + "Description": "Heave, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 29, + "ShortMnemonic": "HVMP", + "LongMnemonic": "HEAVMPER", + "Description": "Heave, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 30, + "ShortMnemonic": "RLSG", + "LongMnemonic": "ROLLSIG", + "Description": "Roll, Peak-to-Peak (sig)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 31, + "ShortMnemonic": "RLMX", + "LongMnemonic": "ROLLMAX", + "Description": "Roll, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 32, + "ShortMnemonic": "RLMP", + "LongMnemonic": "ROLLMPER", + "Description": "Roll, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 33, + "ShortMnemonic": "PTSG", + "LongMnemonic": "PTCHSIG", + "Description": "Pitch, Peak-to-Peak (sig)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 34, + "ShortMnemonic": "PTMX", + "LongMnemonic": "PTCHMAX", + "Description": "Pitch, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 35, + "ShortMnemonic": "PTMP", + "LongMnemonic": "PTCHMPER", + "Description": "Pitch, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 36, + "ShortMnemonic": "YWSG", + "LongMnemonic": "YAWSIG", + "Description": "Yaw, Peak-to Peak (sig)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 37, + "ShortMnemonic": "YWMX", + "LongMnemonic": "YAWMAX", + "Description": "Yaw, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 38, + "ShortMnemonic": "YWMP", + "LongMnemonic": "YAWMPER", + "Description": "Yaw, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 39, + "ShortMnemonic": "SUSG", + "LongMnemonic": "SURGSIG", + "Description": "Surge, Peak-to-Peak (sig)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 40, + "ShortMnemonic": "SUMX", + "LongMnemonic": "SURGMAX", + "Description": "Surge, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 41, + "ShortMnemonic": "SUMP", + "LongMnemonic": "SURGMPER", + "Description": "Surge, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 42, + "ShortMnemonic": "SYSG", + "LongMnemonic": "SWAYSIG", + "Description": "Sway, Peak-to-Peak (sig)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 43, + "ShortMnemonic": "SYMX", + "LongMnemonic": "SWAYMAX", + "Description": "Sway, Peak-to-Peak (max)", + "Description2": "", + "MetricUnits": "M", + "FPSUnits": "F", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 44, + "ShortMnemonic": "SYMP", + "LongMnemonic": "SWAYMPER", + "Description": "Sway, Mean Period", + "Description2": "", + "MetricUnits": "SEC", + "FPSUnits": "SEC", + "ValueType": "S", + "Length": 2 + }, + { + "RecordId": 25, + "ItemId": 45, + "ShortMnemonic": "TRIM", + "LongMnemonic": "TRIM", + "Description": "Trim", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 46, + "ShortMnemonic": "HEEL", + "LongMnemonic": "HEEL", + "Description": "Heel", + "Description2": "", + "MetricUnits": "DEG", + "FPSUnits": "DEG", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 47, + "ShortMnemonic": "WSCM", + "LongMnemonic": "WSSCOMM", + "Description": "Weather Comments", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "A", + "Length": 128 + }, + { + "RecordId": 25, + "ItemId": 48, + "ShortMnemonic": "SPR1", + "LongMnemonic": "SPARE1", + "Description": "< SPARE 1>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 49, + "ShortMnemonic": "SPR2", + "LongMnemonic": "SPARE2", + "Description": "< SPARE 2>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 50, + "ShortMnemonic": "SPR3", + "LongMnemonic": "SPARE3", + "Description": "< SPARE 3>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 51, + "ShortMnemonic": "SPR4", + "LongMnemonic": "SPARE4", + "Description": "< SPARE 4>", + "Description2": "", + "MetricUnits": "----", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 25, + "ItemId": 52, + "ShortMnemonic": "SPR5", + "LongMnemonic": "SPARE5", + "Description": "< SPARE 5>", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 99, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "SibReceiver custom. Положение долота", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "SibReceiver custom. Точка Замера", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 11, + "ShortMnemonic": "Gtot", + "LongMnemonic": "Gtot", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 12, + "ShortMnemonic": "Gx", + "LongMnemonic": "Gx", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 13, + "ShortMnemonic": "Gy", + "LongMnemonic": "Gy", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 14, + "ShortMnemonic": "Gz", + "LongMnemonic": "Gz", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 15, + "ShortMnemonic": "Btot", + "LongMnemonic": "Btot", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 16, + "ShortMnemonic": "Bx", + "LongMnemonic": "Bx", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 17, + "ShortMnemonic": "By", + "LongMnemonic": "By", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 60, + "ItemId": 18, + "ShortMnemonic": "Bz", + "LongMnemonic": "Bz", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 99, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "SibReceiver custom. Положение долота", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 10, + "ShortMnemonic": "DMEA", + "LongMnemonic": "DEPTMEAS", + "Description": "SibReceiver custom. Точка Замера", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 11, + "ShortMnemonic": "PHL1F1", + "LongMnemonic": "PHL1F1", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 12, + "ShortMnemonic": "PHL1F2", + "LongMnemonic": "PHL1F2", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 13, + "ShortMnemonic": "PHL2F1", + "LongMnemonic": "PHL2F1", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 14, + "ShortMnemonic": "PHL2F2", + "LongMnemonic": "PHL2F2", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 15, + "ShortMnemonic": "ATT06H", + "LongMnemonic": "ATT06H", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 16, + "ShortMnemonic": "ATT06L", + "LongMnemonic": "ATT06L", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 17, + "ShortMnemonic": "ATT10H", + "LongMnemonic": "ATT10H", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 18, + "ShortMnemonic": "ATT10L", + "LongMnemonic": "ATT10L", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 61, + "ItemId": 19, + "ShortMnemonic": "Status", + "LongMnemonic": "Status", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 8, + "ShortMnemonic": "DBTM", + "LongMnemonic": "DEPTBITM", + "Description": "SibReceiver custom. Положение долота", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 10, + "ShortMnemonic": "DEPTMEAS_MCRSTAT", + "LongMnemonic": "DEPTMEAS_MCRSTAT", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 11, + "ShortMnemonic": "MCRSTAT", + "LongMnemonic": "MCRSTAT", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 12, + "ShortMnemonic": "DEPTMEAS_SLVL_mc", + "LongMnemonic": "DEPTMEAS_SLVL_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 13, + "ShortMnemonic": "SLVL_mc", + "LongMnemonic": "SLVL_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 14, + "ShortMnemonic": "DEPTMEAS_GDP_mc", + "LongMnemonic": "DEPTMEAS_GDP_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 15, + "ShortMnemonic": "GDP_mc", + "LongMnemonic": "GDP_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 16, + "ShortMnemonic": "DEPTMEAS_RA33F2_mc", + "LongMnemonic": "DEPTMEAS_RA33F2_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 17, + "ShortMnemonic": "RA33F2_mc", + "LongMnemonic": "RA33F2_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 18, + "ShortMnemonic": "DEPTMEAS_RP33F2_mc", + "LongMnemonic": "DEPTMEAS_RP33F2_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 19, + "ShortMnemonic": "RP33F2_mc", + "LongMnemonic": "RP33F2_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 20, + "ShortMnemonic": "DEPTMEAS_RA33F4_mc", + "LongMnemonic": "DEPTMEAS_RA33F4_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 21, + "ShortMnemonic": "RA33F4_mc", + "LongMnemonic": "RA33F4_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 22, + "ShortMnemonic": "DEPTMEAS_RP33F4_mc", + "LongMnemonic": "DEPTMEAS_RP33F4_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 23, + "ShortMnemonic": "RP33F4_mc", + "LongMnemonic": "RP33F4_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 46, + "ShortMnemonic": "DEPTMEAS_RA33_mc", + "LongMnemonic": "DEPTMEAS_RA33_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 47, + "ShortMnemonic": "RA33_mc", + "LongMnemonic": "RA33_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 28, + "ShortMnemonic": "DEPTMEAS_RP33_mc", + "LongMnemonic": "DEPTMEAS_RP33_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + }, + { + "RecordId": 50, + "ItemId": 29, + "ShortMnemonic": "RP33_mc", + "LongMnemonic": "RP33_mc", + "Description": "SibReceiver custom", + "Description2": "", + "MetricUnits": "---", + "FPSUnits": "----", + "ValueType": "F", + "Length": 4 + } +] \ No newline at end of file diff --git a/Persistence/Services/Interfaces/IWitsDataService.cs b/Persistence/Services/Interfaces/IWitsDataService.cs index 4e431fe..69137f1 100644 --- a/Persistence/Services/Interfaces/IWitsDataService.cs +++ b/Persistence/Services/Interfaces/IWitsDataService.cs @@ -1,10 +1,46 @@ using Persistence.Models; namespace Persistence.Services.Interfaces; + +/// +/// Сервис для работы с параметрами Wits +/// public interface IWitsDataService { - Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + /// + /// Получить набор параметров для построения графика + /// + /// + /// + /// + Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + + /// + /// Получить порцию записей, начиная с заданной даты + /// + /// + /// + /// + /// + /// Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); - Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo); - Task InsertRange(IEnumerable dtos, CancellationToken token); + + /// + /// Получить диапазон дат, для которых есть данные в репозитории + /// + /// + /// + /// + /// + /// + /// + Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token); + + /// + /// Сохранить набор параметров + /// + /// + /// + /// + Task AddRange(IEnumerable dtos, CancellationToken token); } \ No newline at end of file diff --git a/Persistence/Services/WitsDataService.cs b/Persistence/Services/WitsDataService.cs index 1cb52fb..3ff0c32 100644 --- a/Persistence/Services/WitsDataService.cs +++ b/Persistence/Services/WitsDataService.cs @@ -1,15 +1,28 @@ -using Persistence.Models; +using System.Text.Json.Serialization; +using System.Text.Json; +using Microsoft.Extensions.Configuration; +using Persistence.Models; using Persistence.Repositories; using Persistence.Services.Interfaces; +using Persistence.Models.Configurations; +using Persistence.Models.Enumerations; +using System.Globalization; namespace Persistence.Services; public class WitsDataService : IWitsDataService { private readonly IParameterRepository witsDataRepository; + + private readonly WitsInfo[] witsInfo; + private const int multiplier = 1000; - public WitsDataService(IParameterRepository witsDataRepository) + private const string witsConfigPath = "Persistence.Services.Config.WitsConfig.json"; + + public WitsDataService(IParameterRepository witsDataRepository, IConfiguration configuration) { this.witsDataRepository = witsDataRepository; + + this.witsInfo = GetWitsInfo(); } public Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token) @@ -23,37 +36,30 @@ public class WitsDataService : IWitsDataService { var dtos = await witsDataRepository.GetPart(idDiscriminator, dateBegin, take, token); - var result = new List(); - foreach (var dto in dtos) - { - var witsDataDto = result.FirstOrDefault(e => e.DiscriminatorId == dto.DiscriminatorId && e.Timestamped == dto.Timestamp); - if (witsDataDto == null) - { - witsDataDto = new WitsDataDto() - { - DiscriminatorId = dto.DiscriminatorId, - Timestamped = dto.Timestamp - }; - result.Add(witsDataDto); - } - var witsValueDto = new WitsValueDto() - { - RecordId = DecodeRecordId(dto.ParameterId), - ItemId = DecodeItemId(dto.ParameterId), - Value = dto.Value - }; - witsDataDto.Values.Append(witsValueDto); - } + var result = AdaptToWitsData(dtos); return result; } - public Task GetValuesForGraph(DateTimeOffset dateFrom, DateTimeOffset dateTo) + public async Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + int approxPointsCount, CancellationToken token) { - throw new NotImplementedException(); + var intervalSec = (dateTo - dateFrom).TotalSeconds; + + int? ratio = null; + if (intervalSec > 2 * approxPointsCount) + { + ratio = (int) intervalSec / approxPointsCount; + } + + var dtos = await witsDataRepository.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointsCount, ratio, token); + + var result = AdaptToWitsData(dtos); + + return result; } - public async Task InsertRange(IEnumerable dtos, CancellationToken token) + public async Task AddRange(IEnumerable dtos, CancellationToken token) { var parameterDtos = dtos.SelectMany(e => e.Values.Select(t => new ParameterDto() { @@ -62,7 +68,7 @@ public class WitsDataService : IWitsDataService Value = t.Value.ToString()!, Timestamp = e.Timestamped })); - var result = await witsDataRepository.InsertRange(parameterDtos, token); + var result = await witsDataRepository.AddRange(parameterDtos, token); return result; } @@ -86,4 +92,81 @@ public class WitsDataService : IWitsDataService return resultId; } + + private IEnumerable AdaptToWitsData(IEnumerable dtos) + { + var result = new List(); + foreach (var dto in dtos) + { + var witsDataDto = result.FirstOrDefault(e => e.DiscriminatorId == dto.DiscriminatorId && e.Timestamped == dto.Timestamp); + if (witsDataDto == null) + { + witsDataDto = new WitsDataDto() + { + DiscriminatorId = dto.DiscriminatorId, + Timestamped = dto.Timestamp + }; + result.Add(witsDataDto); + } + var recordId = DecodeRecordId(dto.ParameterId); + var itemId = DecodeItemId(dto.ParameterId); + var witsValueDto = new WitsValueDto() + { + RecordId = recordId, + ItemId = itemId, + Value = ConvertValue(recordId, itemId, dto.Value) + }; + + witsDataDto.Values.Append(witsValueDto); + } + + return result; + } + + private object ConvertValue(int recordId, int itemId, string value) + { + var witsType = witsInfo.FirstOrDefault(e => e.ItemId == itemId + && e.RecordId == recordId)?.ValueType; + + switch(witsType) + { + default: + { + return value; + } + case WitsType.S: + { + var result = Int16.Parse(value); + + return result; + } + case WitsType.L: + { + var result = Int32.Parse(value); + + return result; + } + case WitsType.F: + { + var result = float.Parse(value, CultureInfo.InvariantCulture); + + return result; + } + } + } + + private WitsInfo[] GetWitsInfo() + { + var stream = System.Reflection.Assembly.GetExecutingAssembly() + .GetManifestResourceStream(witsConfigPath); + var options = new JsonSerializerOptions + { + Converters = + { + new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) + }, + }; + var records = JsonSerializer.Deserialize(stream!, options) ?? []; + return records; + } } From 393bb9376083df01f463e51ce10991223f9ab81e Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Tue, 10 Dec 2024 17:10:27 +0500 Subject: [PATCH 4/7] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D1=82=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/WitsDataController.cs | 14 ++-- Persistence.Client/Clients/IWitsDataClient.cs | 17 ++--- .../Controllers/SetpointControllerTest.cs | 10 +-- .../Controllers/TechMessagesControllerTest.cs | 24 +++---- .../Controllers/WitsDataControllerTest.cs | 36 ++++++---- .../Repositories/ParameterRepository.cs | 5 +- Persistence/Models/Configurations/WitsInfo.cs | 3 + Persistence/Services/WitsDataService.cs | 68 +++++++++++++------ 8 files changed, 111 insertions(+), 66 deletions(-) diff --git a/Persistence.API/Controllers/WitsDataController.cs b/Persistence.API/Controllers/WitsDataController.cs index f66b0c3..10dd7c7 100644 --- a/Persistence.API/Controllers/WitsDataController.cs +++ b/Persistence.API/Controllers/WitsDataController.cs @@ -27,12 +27,12 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// /// - [HttpGet("datesRange")] - public async Task> GetDatesRangeAsync([FromQuery] int discriminatorId, CancellationToken token) + [HttpGet("{discriminatorId}/datesRange")] + public async Task> GetDatesRangeAsync([FromRoute] int discriminatorId, CancellationToken token) { var result = await witsDataService.GetDatesRangeAsync(discriminatorId, token); - return Ok(result); + return result == null ? NoContent() : Ok(result); } /// @@ -43,8 +43,8 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// /// - [HttpGet("part")] - public async Task>> GetPart([FromQuery] int discriminatorId, [FromQuery] DateTimeOffset dateBegin, [FromQuery] int take, CancellationToken token) + [HttpGet("{discriminatorId}/part")] + public async Task>> GetPart([FromRoute] int discriminatorId, [FromQuery] DateTimeOffset dateBegin, [FromQuery] int take, CancellationToken token) { var result = await witsDataService.GetPart(discriminatorId, dateBegin, take, token); @@ -60,8 +60,8 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// Количество точек /// /// - [HttpGet("graph")] - public async Task>> GetValuesForGraph([FromQuery] int discriminatorId, + [HttpGet("{discriminatorId}/graph")] + public async Task>> GetValuesForGraph([FromRoute] int discriminatorId, [FromQuery] DateTimeOffset dateFrom, [FromQuery] DateTimeOffset dateTo, [FromQuery] int approxPointsCount, CancellationToken token) { var result = await witsDataService.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointsCount, token); diff --git a/Persistence.Client/Clients/IWitsDataClient.cs b/Persistence.Client/Clients/IWitsDataClient.cs index 528cb0c..108a4d7 100644 --- a/Persistence.Client/Clients/IWitsDataClient.cs +++ b/Persistence.Client/Clients/IWitsDataClient.cs @@ -1,4 +1,5 @@ -using Persistence.Models; +using Microsoft.AspNetCore.Mvc; +using Persistence.Models; using Refit; namespace Persistence.Client.Clients; @@ -6,15 +7,15 @@ public interface IWitsDataClient { private const string BaseRoute = "/api/witsData"; - [Get($"{BaseRoute}/graph")] - Task>> GetValuesForGraph([Query] int discriminatorId, [Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int approxPointsCount, CancellationToken token); + [Get($"{BaseRoute}/{{discriminatorId}}/graph")] + Task>> GetValuesForGraph(int discriminatorId, [Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int approxPointsCount, CancellationToken token); [Post($"{BaseRoute}/")] - Task> AddRange([Body] IEnumerable dtos, CancellationToken token); + Task> AddRange(IEnumerable dtos, CancellationToken token); - [Get($"{BaseRoute}/part")] - Task>> GetPart([Query] int discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); + [Get($"{BaseRoute}/{{discriminatorId}}/part")] + Task>> GetPart(int discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); - [Get($"{BaseRoute}/datesRange")] - Task> GetDatesRangeAsync([Query] int discriminatorId, CancellationToken token); + [Get($"{BaseRoute}/{{discriminatorId}}/datesRange")] + Task> GetDatesRangeAsync(int discriminatorId, CancellationToken token); } diff --git a/Persistence.IntegrationTests/Controllers/SetpointControllerTest.cs b/Persistence.IntegrationTests/Controllers/SetpointControllerTest.cs index 2c455a0..ab3659c 100644 --- a/Persistence.IntegrationTests/Controllers/SetpointControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/SetpointControllerTest.cs @@ -140,7 +140,7 @@ namespace Persistence.IntegrationTests.Controllers dbContext.CleanupDbSet(); //act - var response = await setpointClient.GetDatesRangeAsync(new CancellationToken()); + var response = await setpointClient.GetDatesRangeAsync(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -159,10 +159,10 @@ namespace Persistence.IntegrationTests.Controllers var dateBegin = DateTimeOffset.MinValue; var take = 1; - var part = await setpointClient.GetPart(dateBegin, take, new CancellationToken()); + var part = await setpointClient.GetPart(dateBegin, take, CancellationToken.None); //act - var response = await setpointClient.GetDatesRangeAsync(new CancellationToken()); + var response = await setpointClient.GetDatesRangeAsync(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -188,7 +188,7 @@ namespace Persistence.IntegrationTests.Controllers var take = 2; //act - var response = await setpointClient.GetPart(dateBegin, take, new CancellationToken()); + var response = await setpointClient.GetPart(dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -205,7 +205,7 @@ namespace Persistence.IntegrationTests.Controllers await Add(); //act - var response = await setpointClient.GetPart(dateBegin, take, new CancellationToken()); + var response = await setpointClient.GetPart(dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); diff --git a/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs b/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs index 1f194ad..08eb120 100644 --- a/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs @@ -40,7 +40,7 @@ namespace Persistence.IntegrationTests.Controllers }; //act - var response = await techMessagesClient.GetPage(requestDto, new CancellationToken()); + var response = await techMessagesClient.GetPage(requestDto, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -64,7 +64,7 @@ namespace Persistence.IntegrationTests.Controllers }; //act - var response = await techMessagesClient.GetPage(requestDto, new CancellationToken()); + var response = await techMessagesClient.GetPage(requestDto, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -97,7 +97,7 @@ namespace Persistence.IntegrationTests.Controllers }; //act - var response = await techMessagesClient.AddRange(dtos, new CancellationToken()); + var response = await techMessagesClient.AddRange(dtos, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); @@ -112,7 +112,7 @@ namespace Persistence.IntegrationTests.Controllers dbContext.CleanupDbSet(); //act - var response = await techMessagesClient.GetSystems(new CancellationToken()); + var response = await techMessagesClient.GetSystems(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -131,7 +131,7 @@ namespace Persistence.IntegrationTests.Controllers .ToArray(); //act - var response = await techMessagesClient.GetSystems(new CancellationToken()); + var response = await techMessagesClient.GetSystems(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -152,7 +152,7 @@ namespace Persistence.IntegrationTests.Controllers var autoDrillingSystem = nameof(TechMessageDto.System); //act - var response = await techMessagesClient.GetStatistics(autoDrillingSystem, imortantId, new CancellationToken()); + var response = await techMessagesClient.GetStatistics(autoDrillingSystem, imortantId, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -170,7 +170,7 @@ namespace Persistence.IntegrationTests.Controllers var filteredDtos = dtos.Where(e => e.CategoryId == imortantId && e.System == autoDrillingSystem); //act - var response = await techMessagesClient.GetStatistics(autoDrillingSystem, imortantId, new CancellationToken()); + var response = await techMessagesClient.GetStatistics(autoDrillingSystem, imortantId, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -185,7 +185,7 @@ namespace Persistence.IntegrationTests.Controllers public async Task GetDatesRange_returns_success() { //act - var response = await techMessagesClient.GetDatesRangeAsync(new CancellationToken()); + var response = await techMessagesClient.GetDatesRangeAsync(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -201,7 +201,7 @@ namespace Persistence.IntegrationTests.Controllers await InsertRange(); //act - var response = await techMessagesClient.GetDatesRangeAsync(new CancellationToken()); + var response = await techMessagesClient.GetDatesRangeAsync(CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -218,7 +218,7 @@ namespace Persistence.IntegrationTests.Controllers var take = 2; //act - var response = await techMessagesClient.GetPart(dateBegin, take, new CancellationToken()); + var response = await techMessagesClient.GetPart(dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -235,7 +235,7 @@ namespace Persistence.IntegrationTests.Controllers await InsertRange(); //act - var response = await techMessagesClient.GetPart(dateBegin, take, new CancellationToken()); + var response = await techMessagesClient.GetPart(dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -276,7 +276,7 @@ namespace Persistence.IntegrationTests.Controllers //act - var response = await techMessagesClient.AddRange(dtos, new CancellationToken()); + var response = await techMessagesClient.AddRange(dtos, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.Created, response.StatusCode); diff --git a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs index fc0a02d..9ecae04 100644 --- a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs @@ -29,7 +29,7 @@ public class WitsDataControllerTest : BaseIntegrationTest var discriminatorId = 1; //act - var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken()); + var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -47,7 +47,7 @@ public class WitsDataControllerTest : BaseIntegrationTest var take = 1; //act - var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken()); + var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -77,7 +77,7 @@ public class WitsDataControllerTest : BaseIntegrationTest var approxPointCount = 12; //act - var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, new CancellationToken()); + var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -95,7 +95,7 @@ public class WitsDataControllerTest : BaseIntegrationTest var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId; //act - var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken()); + var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -111,9 +111,9 @@ public class WitsDataControllerTest : BaseIntegrationTest var expectedDateTo = dtos .Select(e => e.Timestamped) - .Min() + .Max() .ToString("dd.MM.yyyy-HH:mm:ss"); - var actualDateTo = response.Content.From.DateTime + var actualDateTo = response.Content.To.DateTime .ToString("dd.MM.yyyy-HH:mm:ss"); Assert.Equal(expectedDateTo, actualDateTo); } @@ -130,13 +130,22 @@ public class WitsDataControllerTest : BaseIntegrationTest var take = 1; //act - var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken()); + var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.NotEmpty(response.Content); Assert.Equal(take, response.Content.Count()); + + var expectedDto = dtos.FirstOrDefault(); + var actualDto = response.Content.FirstOrDefault(); + Assert.Equal(expectedDto?.DiscriminatorId, actualDto?.DiscriminatorId); + + var expectedValueDto = expectedDto?.Values.FirstOrDefault(); + var actualValueDto = actualDto?.Values.FirstOrDefault(); + Assert.Equal(expectedValueDto?.ItemId, actualValueDto?.ItemId); + Assert.Equal(expectedValueDto?.RecordId, actualValueDto?.RecordId); } [Fact] @@ -152,7 +161,7 @@ public class WitsDataControllerTest : BaseIntegrationTest var approxPointCount = 12; //act - var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, new CancellationToken()); + var response = await witsDataClient.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointCount, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -161,7 +170,7 @@ public class WitsDataControllerTest : BaseIntegrationTest } [Fact] - public async Task InsertRange_returns_BadRequest() + public async Task AddRange_returns_BadRequest() { //arrange var dtos = new List() @@ -183,7 +192,7 @@ public class WitsDataControllerTest : BaseIntegrationTest }; //act - var response = await witsDataClient.AddRange(dtos, new CancellationToken()); + var response = await witsDataClient.AddRange(dtos, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); @@ -193,8 +202,9 @@ public class WitsDataControllerTest : BaseIntegrationTest { var dtos = new List(); var timestamped = DateTimeOffset.UtcNow; - for (var i = 0; i < countToCreate && i < 100; i++) + for (var i = 0; i < countToCreate; i++) { + var random = new Random(); dtos.Add(new WitsDataDto() { DiscriminatorId = 1, @@ -205,14 +215,14 @@ public class WitsDataControllerTest : BaseIntegrationTest { RecordId = i + 1, ItemId = i + 1, - Value = new Random().Next(1, 100) + Value = random.Next(1, 100) } } }); } //act - var response = await witsDataClient.AddRange(dtos, new CancellationToken()); + var response = await witsDataClient.AddRange(dtos, CancellationToken.None); //assert var count = dtos.SelectMany(e => e.Values).Count(); diff --git a/Persistence.Repository/Repositories/ParameterRepository.cs b/Persistence.Repository/Repositories/ParameterRepository.cs index 51510ec..dbf387f 100644 --- a/Persistence.Repository/Repositories/ParameterRepository.cs +++ b/Persistence.Repository/Repositories/ParameterRepository.cs @@ -58,7 +58,8 @@ public class ParameterRepository : IParameterRepository var universalDateTo = dateTo.ToUniversalTime(); query = query - .Where(e => e.DiscriminatorId == discriminatorId && e.Timestamp >= universalDateFrom && e.Timestamp <= universalDateTo) + .Where(e => e.DiscriminatorId == discriminatorId) + .Where(e => e.Timestamp >= universalDateFrom && e.Timestamp <= universalDateTo) .OrderBy(e => e.Timestamp); if (ratio != null) { @@ -67,7 +68,7 @@ public class ParameterRepository : IParameterRepository var entities = await query .Take((int)(2.5 * approxPointsCount)) - .ToListAsync(token); + .ToArrayAsync(token); var dtos = entities.Select(e => e.Adapt()); diff --git a/Persistence/Models/Configurations/WitsInfo.cs b/Persistence/Models/Configurations/WitsInfo.cs index 79e40bb..f096d11 100644 --- a/Persistence/Models/Configurations/WitsInfo.cs +++ b/Persistence/Models/Configurations/WitsInfo.cs @@ -2,6 +2,9 @@ namespace Persistence.Models.Configurations; +/// +/// Протокол Wits +/// public class WitsInfo { public int RecordId { get; set; } diff --git a/Persistence/Services/WitsDataService.cs b/Persistence/Services/WitsDataService.cs index 3ff0c32..873ef1b 100644 --- a/Persistence/Services/WitsDataService.cs +++ b/Persistence/Services/WitsDataService.cs @@ -18,7 +18,7 @@ public class WitsDataService : IWitsDataService private const int multiplier = 1000; private const string witsConfigPath = "Persistence.Services.Config.WitsConfig.json"; - public WitsDataService(IParameterRepository witsDataRepository, IConfiguration configuration) + public WitsDataService(IParameterRepository witsDataRepository) { this.witsDataRepository = witsDataRepository; @@ -96,30 +96,60 @@ public class WitsDataService : IWitsDataService private IEnumerable AdaptToWitsData(IEnumerable dtos) { var result = new List(); - foreach (var dto in dtos) + var witsGroup = dtos + .GroupBy(e => new { e.DiscriminatorId, e.Timestamp }); + foreach (var witsInGroup in witsGroup) { - var witsDataDto = result.FirstOrDefault(e => e.DiscriminatorId == dto.DiscriminatorId && e.Timestamped == dto.Timestamp); - if (witsDataDto == null) + var witsDataDto = new WitsDataDto() { - witsDataDto = new WitsDataDto() - { - DiscriminatorId = dto.DiscriminatorId, - Timestamped = dto.Timestamp - }; - result.Add(witsDataDto); - } - var recordId = DecodeRecordId(dto.ParameterId); - var itemId = DecodeItemId(dto.ParameterId); - var witsValueDto = new WitsValueDto() - { - RecordId = recordId, - ItemId = itemId, - Value = ConvertValue(recordId, itemId, dto.Value) + DiscriminatorId = witsInGroup.Key.DiscriminatorId, + Timestamped = witsInGroup.Key.Timestamp }; - witsDataDto.Values.Append(witsValueDto); + witsDataDto.Values = witsInGroup.Select(e => + { + var recordId = DecodeRecordId(e.ParameterId); + var itemId = DecodeItemId(e.ParameterId); + + return new WitsValueDto() + { + RecordId = recordId, + ItemId = itemId, + Value = ConvertValue(recordId, itemId, e.Value) + }; + }); + + result.Add(witsDataDto); } + + //foreach (var dto in dtos) + //{ + // var witsDataDto = result + // .Where(e => e.DiscriminatorId == dto.DiscriminatorId) + // .Where(e => e.Timestamped == dto.Timestamp) + // .FirstOrDefault(); + // if (witsDataDto == null) + // { + // witsDataDto = new WitsDataDto() + // { + // DiscriminatorId = dto.DiscriminatorId, + // Timestamped = dto.Timestamp + // }; + // result.Add(witsDataDto); + // } + // var recordId = DecodeRecordId(dto.ParameterId); + // var itemId = DecodeItemId(dto.ParameterId); + // var witsValueDto = new WitsValueDto() + // { + // RecordId = recordId, + // ItemId = itemId, + // Value = ConvertValue(recordId, itemId, dto.Value) + // }; + + // witsDataDto.Values = witsDataDto.Values.Append(witsValueDto); + //} + return result; } From ad2c258f9918d2178e511582ba9498597e13d90f Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Tue, 10 Dec 2024 17:18:36 +0500 Subject: [PATCH 5/7] Fix --- .../Controllers/TechMessagesControllerTest.cs | 8 +++--- Persistence/Services/WitsDataService.cs | 28 ------------------- 2 files changed, 4 insertions(+), 32 deletions(-) diff --git a/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs b/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs index 9e45dc8..a87c19a 100644 --- a/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs @@ -33,7 +33,7 @@ namespace Persistence.IntegrationTests.Controllers dbContext.CleanupDbSet(); dbContext.CleanupDbSet(); - var PaginationRequest = new PaginationRequest() + var requestDto = new PaginationRequest() { Skip = 1, Take = 2, @@ -47,8 +47,8 @@ namespace Persistence.IntegrationTests.Controllers Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Empty(response.Content.Items); - Assert.Equal(PaginationRequest.Skip, response.Content.Skip); - Assert.Equal(PaginationRequest.Take, response.Content.Take); + Assert.Equal(requestDto.Skip, response.Content.Skip); + Assert.Equal(requestDto.Take, response.Content.Take); } [Fact] @@ -57,7 +57,7 @@ namespace Persistence.IntegrationTests.Controllers //arrange var dtos = await InsertRange(); var dtosCount = dtos.Count(); - var PaginationRequest = new PaginationRequest() + var requestDto = new PaginationRequest() { Skip = 0, Take = 2, diff --git a/Persistence/Services/WitsDataService.cs b/Persistence/Services/WitsDataService.cs index 873ef1b..e93a213 100644 --- a/Persistence/Services/WitsDataService.cs +++ b/Persistence/Services/WitsDataService.cs @@ -122,34 +122,6 @@ public class WitsDataService : IWitsDataService result.Add(witsDataDto); } - - //foreach (var dto in dtos) - //{ - // var witsDataDto = result - // .Where(e => e.DiscriminatorId == dto.DiscriminatorId) - // .Where(e => e.Timestamped == dto.Timestamp) - // .FirstOrDefault(); - // if (witsDataDto == null) - // { - // witsDataDto = new WitsDataDto() - // { - // DiscriminatorId = dto.DiscriminatorId, - // Timestamped = dto.Timestamp - // }; - // result.Add(witsDataDto); - // } - // var recordId = DecodeRecordId(dto.ParameterId); - // var itemId = DecodeItemId(dto.ParameterId); - // var witsValueDto = new WitsValueDto() - // { - // RecordId = recordId, - // ItemId = itemId, - // Value = ConvertValue(recordId, itemId, dto.Value) - // }; - - // witsDataDto.Values = witsDataDto.Values.Append(witsValueDto); - //} - return result; } From de2a7cfe04a400f308cc2af0ba9b5ece4d79c1ab Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Wed, 11 Dec 2024 09:30:35 +0500 Subject: [PATCH 6/7] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B8=D1=81=D0=BA=D1=80=D0=B8=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=BA=20=D1=82=D0=B8=D0=BF=D1=83=20int=20=D0=B2=20Cha?= =?UTF-8?q?ngeLog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ChangeLogController.cs | 18 ++++----- .../Clients/IChangeLogClient.cs | 12 +++--- Persistence.Database/Entity/ChangeLog.cs | 2 +- Persistence.Database/Entity/IChangeLog.cs | 2 +- Persistence.Database/PersistenceDbContext.cs | 6 ++- .../Controllers/ChangeLogControllerTest.cs | 39 ++++++++++++------- .../Repositories/ChangeLogRepository.cs | 20 +++++----- Persistence/API/IChangeLogApi.cs | 14 +++---- .../Repositories/IChangeLogRepository.cs | 12 +++--- .../ISyncWithDiscriminatorRepository.cs | 4 +- 10 files changed, 71 insertions(+), 58 deletions(-) diff --git a/Persistence.API/Controllers/ChangeLogController.cs b/Persistence.API/Controllers/ChangeLogController.cs index cad59c4..83a7fb6 100644 --- a/Persistence.API/Controllers/ChangeLogController.cs +++ b/Persistence.API/Controllers/ChangeLogController.cs @@ -22,7 +22,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] public async Task Add( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, [FromBody] DataWithWellDepthAndSectionDto dto, CancellationToken token) { @@ -35,7 +35,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("range/{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] public async Task AddRange( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, [FromBody] IEnumerable dtos, CancellationToken token) { @@ -68,7 +68,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("replace/{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.OK)] public async Task ClearAndAddRange( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, [FromBody] IEnumerable dtos, CancellationToken token) { @@ -104,7 +104,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("{idDiscriminator}")] [ProducesResponseType(typeof(PaginationContainer), (int)HttpStatusCode.OK)] public async Task GetCurrent( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, [FromQuery] SectionPartRequest filterRequest, [FromQuery] PaginationRequest paginationRequest, CancellationToken token) @@ -118,7 +118,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("moment/{idDiscriminator}")] [ProducesResponseType(typeof(PaginationContainer), (int)HttpStatusCode.OK)] public async Task GetByDate( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, DateTimeOffset moment, [FromQuery] SectionPartRequest filterRequest, [FromQuery] PaginationRequest paginationRequest, @@ -133,7 +133,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] public async Task GetChangeLogForDate( - [FromRoute] Guid idDiscriminator, + [FromRoute] int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) @@ -146,7 +146,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("datesChange/{idDiscriminator}")] [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task GetDatesChange([FromRoute] Guid idDiscriminator, CancellationToken token) + public async Task GetDatesChange([FromRoute] int idDiscriminator, CancellationToken token) { var result = await repository.GetDatesChange(idDiscriminator, token); @@ -156,7 +156,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("part/{idDiscriminator}")] [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task GetPart([FromRoute] Guid idDiscriminator, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default) + public async Task>> GetPart([FromRoute] int idDiscriminator, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default) { var result = await repository.GetGtDate(idDiscriminator, dateBegin, token); @@ -166,7 +166,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("datesRange/{idDiscriminator}")] [ProducesResponseType(typeof(DatesRangeDto), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task GetDatesRangeAsync([FromRoute] Guid idDiscriminator, CancellationToken token) + public async Task> GetDatesRangeAsync([FromRoute] int idDiscriminator, CancellationToken token) { var result = await repository.GetDatesRange(idDiscriminator, token); diff --git a/Persistence.Client/Clients/IChangeLogClient.cs b/Persistence.Client/Clients/IChangeLogClient.cs index 06bbc4d..3bb9832 100644 --- a/Persistence.Client/Clients/IChangeLogClient.cs +++ b/Persistence.Client/Clients/IChangeLogClient.cs @@ -18,7 +18,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/replace/{{idDiscriminator}}")] - Task> ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos); + Task> ClearAndAddRange(int idDiscriminator, IEnumerable dtos); /// /// Получение актуальных данных на определенную дату (с пагинацией) @@ -30,7 +30,7 @@ public interface IChangeLogClient /// [Get($"{BaseRoute}/moment/{{idDiscriminator}}")] Task>> GetByDate( - Guid idDiscriminator, + int idDiscriminator, DateTimeOffset moment, [Query] SectionPartRequest filterRequest, [Query] PaginationRequest paginationRequest); @@ -43,7 +43,7 @@ public interface IChangeLogClient /// /// [Get($"{BaseRoute}/history/{{idDiscriminator}}")] - Task>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd); + Task>> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd); /// /// Добавить одну запись @@ -52,7 +52,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/{{idDiscriminator}}")] - Task> Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto); + Task> Add(int idDiscriminator, DataWithWellDepthAndSectionDto dto); /// /// Добавить несколько записей @@ -61,7 +61,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/range/{{idDiscriminator}}")] - Task> AddRange(Guid idDiscriminator, IEnumerable dtos); + Task> AddRange(int idDiscriminator, IEnumerable dtos); /// /// Обновить одну запись @@ -101,6 +101,6 @@ public interface IChangeLogClient /// /// [Get($"{BaseRoute}/datesRange/{{idDiscriminator}}")] - Task> GetDatesRange(Guid idDiscriminator); + Task> GetDatesRange(int idDiscriminator); } diff --git a/Persistence.Database/Entity/ChangeLog.cs b/Persistence.Database/Entity/ChangeLog.cs index 9a8001b..eb921aa 100644 --- a/Persistence.Database/Entity/ChangeLog.cs +++ b/Persistence.Database/Entity/ChangeLog.cs @@ -15,7 +15,7 @@ public class ChangeLog : IChangeLog, IWithSectionPart public Guid Id { get; set; } [Comment("Дискриминатор таблицы")] - public Guid IdDiscriminator { get; set; } + public int IdDiscriminator { get; set; } [Comment("Автор изменения")] public Guid IdAuthor { get; set; } diff --git a/Persistence.Database/Entity/IChangeLog.cs b/Persistence.Database/Entity/IChangeLog.cs index c4dc962..b68bb0b 100644 --- a/Persistence.Database/Entity/IChangeLog.cs +++ b/Persistence.Database/Entity/IChangeLog.cs @@ -39,7 +39,7 @@ public interface IChangeLog /// /// Дискриминатор таблицы /// - public Guid IdDiscriminator { get; set; } + public int IdDiscriminator { get; set; } /// /// Значение diff --git a/Persistence.Database/PersistenceDbContext.cs b/Persistence.Database/PersistenceDbContext.cs index 4393ac1..849865d 100644 --- a/Persistence.Database/PersistenceDbContext.cs +++ b/Persistence.Database/PersistenceDbContext.cs @@ -17,7 +17,11 @@ public class PersistenceDbContext : DbContext public DbSet ChangeLog => Set(); - public PersistenceDbContext(DbContextOptions options) + public DbSet TechMessage => Set(); + + public DbSet ParameterData => Set(); + + public PersistenceDbContext(DbContextOptions options) : base(options) { diff --git a/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs b/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs index 8c3b422..9641a1e 100644 --- a/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs @@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Persistence.Client; using Persistence.Client.Clients; +using Persistence.Database.Entity; using Persistence.Database.Model; using Persistence.Models; using Persistence.Models.Requests; @@ -26,8 +27,10 @@ public class ChangeLogControllerTest : BaseIntegrationTest [Fact] public async Task ClearAndInsertRange_InEmptyDb() { - // arrange - var idDiscriminator = Guid.NewGuid(); + // arrange + dbContext.CleanupDbSet(); + + var idDiscriminator = 1; var dtos = Generate(2, DateTimeOffset.UtcNow); // act @@ -60,7 +63,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest { // arrange var count = 1; - var idDiscriminator = Guid.NewGuid(); + var idDiscriminator = 1; var dtos = Generate(count, DateTimeOffset.UtcNow); var dto = dtos.FirstOrDefault()!; @@ -77,7 +80,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest { // arrange var count = 3; - var idDiscriminator = Guid.NewGuid(); + var idDiscriminator = 1; var dtos = Generate(count, DateTimeOffset.UtcNow); // act @@ -91,8 +94,10 @@ public class ChangeLogControllerTest : BaseIntegrationTest [Fact] public async Task Update_returns_success() { - // arrange - var idDiscriminator = Guid.NewGuid(); + // arrange + dbContext.CleanupDbSet(); + + var idDiscriminator = 1; var dtos = Generate(1, DateTimeOffset.UtcNow); var dto = dtos.FirstOrDefault()!; var result = await client.Add(idDiscriminator, dto); @@ -232,9 +237,11 @@ public class ChangeLogControllerTest : BaseIntegrationTest [Fact] public async Task GetByDate_returns_success() { - // arrange - //создаем записи - var count = 5; + // arrange + dbContext.CleanupDbSet(); + + //создаем записи + var count = 5; var changeLogItems = CreateChangeLogItems(count, (-15, 15)); var idDiscriminator = changeLogItems.Item1; var entities = changeLogItems.Item2; @@ -284,12 +291,14 @@ public class ChangeLogControllerTest : BaseIntegrationTest int daysAfterNowFilter, int changeLogCount) { - // arrange - //создаем записи - var count = insertedCount; + // arrange + dbContext.CleanupDbSet(); + + //создаем записи + var count = insertedCount; var daysRange = (daysBeforeNowChangeLog, daysAfterNowChangeLog); var changeLogItems = CreateChangeLogItems(count, daysRange); - var idDiscriminator = changeLogItems.Item1; + var idDiscriminator = 1; var entities = changeLogItems.Item2; foreach (var entity in entities) @@ -328,12 +337,12 @@ public class ChangeLogControllerTest : BaseIntegrationTest } - private (Guid, ChangeLog[]) CreateChangeLogItems(int count, (int, int) daysRange) + private (int, ChangeLog[]) CreateChangeLogItems(int count, (int, int) daysRange) { var minDayCount = daysRange.Item1; var maxDayCount = daysRange.Item2; - Guid idDiscriminator = Guid.NewGuid(); + var idDiscriminator = 1; var dtos = Generate(count, DateTimeOffset.UtcNow); var entities = dtos.Select(d => { diff --git a/Persistence.Repository/Repositories/ChangeLogRepository.cs b/Persistence.Repository/Repositories/ChangeLogRepository.cs index ac00e05..0291c1b 100644 --- a/Persistence.Repository/Repositories/ChangeLogRepository.cs +++ b/Persistence.Repository/Repositories/ChangeLogRepository.cs @@ -16,7 +16,7 @@ public class ChangeLogRepository : IChangeLogRepository this.db = db; } - public async Task AddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token) + public async Task AddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token) { var entities = new List(); foreach (var dto in dtos) @@ -49,7 +49,7 @@ public class ChangeLogRepository : IChangeLogRepository return result; } - public async Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, CancellationToken token) + public async Task MarkAsDeleted(Guid idEditor, int idDiscriminator, CancellationToken token) { var query = db.Set() .Where(s => s.IdDiscriminator == idDiscriminator) @@ -75,7 +75,7 @@ public class ChangeLogRepository : IChangeLogRepository return await db.SaveChangesAsync(token); } - public async Task ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token) + public async Task ClearAndAddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token) { var result = 0; @@ -127,7 +127,7 @@ public class ChangeLogRepository : IChangeLogRepository } public async Task> GetByDate( - Guid idDiscriminator, + int idDiscriminator, DateTimeOffset momentUtc, SectionPartRequest filterRequest, PaginationRequest paginationRequest, @@ -142,14 +142,14 @@ public class ChangeLogRepository : IChangeLogRepository return result; } - private IQueryable CreateQuery(Guid idDiscriminator) + private IQueryable CreateQuery(int idDiscriminator) { var query = db.Set().Where(e => e.IdDiscriminator == idDiscriminator); return query; } - public async Task> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) + public async Task> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) { var query = db.Set().Where(s => s.IdDiscriminator == idDiscriminator); @@ -169,7 +169,7 @@ public class ChangeLogRepository : IChangeLogRepository - public async Task> GetDatesChange(Guid idDiscriminator, CancellationToken token) + public async Task> GetDatesChange(int idDiscriminator, CancellationToken token) { var query = db.Set().Where(e => e.IdDiscriminator == idDiscriminator); @@ -195,7 +195,7 @@ public class ChangeLogRepository : IChangeLogRepository return datesOnly; } - private ChangeLog CreateEntityFromDto(Guid idAuthor, Guid idDiscriminator, DataWithWellDepthAndSectionDto dto) + private ChangeLog CreateEntityFromDto(Guid idAuthor, int idDiscriminator, DataWithWellDepthAndSectionDto dto) { var entity = new ChangeLog() { @@ -214,7 +214,7 @@ public class ChangeLogRepository : IChangeLogRepository return entity; } - public async Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token) + public async Task> GetGtDate(int idDiscriminator, DateTimeOffset dateBegin, CancellationToken token) { var date = dateBegin.ToUniversalTime(); var query = this.db.Set() @@ -228,7 +228,7 @@ public class ChangeLogRepository : IChangeLogRepository return dtos; } - public async Task GetDatesRange(Guid idDiscriminator, CancellationToken token) + public async Task GetDatesRange(int idDiscriminator, CancellationToken token) { var query = db.Set() .Where(e => e.IdDiscriminator == idDiscriminator) diff --git a/Persistence/API/IChangeLogApi.cs b/Persistence/API/IChangeLogApi.cs index 25b5158..cbf2127 100644 --- a/Persistence/API/IChangeLogApi.cs +++ b/Persistence/API/IChangeLogApi.cs @@ -16,7 +16,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); + Task ClearAndAddRange(int idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Получение данных на текущую дату (с пагинацией) @@ -26,7 +26,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApiпараметры запроса пагинации /// /// - Task GetCurrent(Guid idDiscriminator, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task GetCurrent(int idDiscriminator, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение данных на определенную дату (с пагинацией) @@ -37,7 +37,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApiпараметры запроса пагинации /// /// - Task GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task GetByDate(int idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение исторических данных за определенный период времени @@ -47,7 +47,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task GetChangeLogForDate(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); + Task GetChangeLogForDate(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); /// /// Добавить одну запись @@ -56,7 +56,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto, CancellationToken token); + Task Add(int idDiscriminator, DataWithWellDepthAndSectionDto dto, CancellationToken token); /// /// Добавить несколько записей @@ -65,7 +65,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task AddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); + Task AddRange(int idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Обновить одну запись @@ -105,5 +105,5 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task GetDatesChange(Guid idDiscriminator, CancellationToken token); + Task GetDatesChange(int idDiscriminator, CancellationToken token); } diff --git a/Persistence/Repositories/IChangeLogRepository.cs b/Persistence/Repositories/IChangeLogRepository.cs index e197090..3db37b6 100644 --- a/Persistence/Repositories/IChangeLogRepository.cs +++ b/Persistence/Repositories/IChangeLogRepository.cs @@ -17,7 +17,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task AddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token); + Task AddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Пометить записи как удаленные @@ -35,7 +35,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepositoryдискриминатор таблицы /// /// - Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, CancellationToken token); + Task MarkAsDeleted(Guid idEditor, int idDiscriminator, CancellationToken token); /// /// Очистить и добавить новые @@ -45,7 +45,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token); + Task ClearAndAddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Редактирование записей @@ -65,7 +65,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepositoryпараметры запроса пагинации /// /// - Task> GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task> GetByDate(int idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение измененных записей за период времени @@ -75,7 +75,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); + Task> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); /// /// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени) @@ -83,5 +83,5 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task> GetDatesChange(Guid idDiscriminator, CancellationToken token); + Task> GetDatesChange(int idDiscriminator, CancellationToken token); } diff --git a/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs b/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs index 7e0bd62..af8c807 100644 --- a/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs +++ b/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs @@ -15,7 +15,7 @@ public interface ISyncWithDiscriminatorRepository /// дата начала /// /// /// - Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token); + Task> GetGtDate(int idDiscriminator, DateTimeOffset dateBegin, CancellationToken token); /// @@ -24,5 +24,5 @@ public interface ISyncWithDiscriminatorRepository /// дискриминатор таблицы /// /// - Task GetDatesRange(Guid idDiscriminator, CancellationToken token); + Task GetDatesRange(int idDiscriminator, CancellationToken token); } From 1e8d478b68adfa109695ddae57fb1f3e2f2f25a1 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Wed, 11 Dec 2024 14:31:50 +0500 Subject: [PATCH 7/7] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B8=D1=81=D0=BA=D1=80=D0=B8=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D1=8B=20=D0=BA=20=D1=82=D0=B8=D0=BF=D1=83=20Guid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ChangeLogController.cs | 18 +++++------ .../Controllers/WitsDataController.cs | 6 ++-- .../Clients/IChangeLogClient.cs | 12 +++---- Persistence.Client/Clients/IWitsDataClient.cs | 6 ++-- .../20241203120141_ParameterDataMigration.cs | 2 +- Persistence.Database/Entity/ChangeLog.cs | 2 +- Persistence.Database/Entity/IChangeLog.cs | 2 +- Persistence.Database/Entity/ParameterData.cs | 2 +- .../Controllers/ChangeLogControllerTest.cs | 14 ++++----- .../Controllers/WitsDataControllerTest.cs | 11 ++++--- .../Repositories/ChangeLogRepository.cs | 20 ++++++------ .../Repositories/ParameterRepository.cs | 6 ++-- Persistence/API/IChangeLogApi.cs | 31 ++++++++++--------- Persistence/API/ISyncWithDiscriminatorApi.cs | 4 +-- Persistence/API/IWitsDataApi.cs | 2 +- Persistence/Models/ParameterDto.cs | 3 +- Persistence/Models/WitsDataDto.cs | 3 +- .../Repositories/IChangeLogRepository.cs | 12 +++---- .../Repositories/IParameterRepository.cs | 6 ++-- .../ISyncWithDiscriminatorRepository.cs | 4 +-- .../Services/Interfaces/IWitsDataService.cs | 6 ++-- Persistence/Services/WitsDataService.cs | 6 ++-- 22 files changed, 89 insertions(+), 89 deletions(-) diff --git a/Persistence.API/Controllers/ChangeLogController.cs b/Persistence.API/Controllers/ChangeLogController.cs index 83a7fb6..52a68dd 100644 --- a/Persistence.API/Controllers/ChangeLogController.cs +++ b/Persistence.API/Controllers/ChangeLogController.cs @@ -22,7 +22,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] public async Task Add( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, [FromBody] DataWithWellDepthAndSectionDto dto, CancellationToken token) { @@ -35,7 +35,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("range/{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.Created)] public async Task AddRange( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, [FromBody] IEnumerable dtos, CancellationToken token) { @@ -68,7 +68,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpPost("replace/{idDiscriminator}")] [ProducesResponseType(typeof(int), (int)HttpStatusCode.OK)] public async Task ClearAndAddRange( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, [FromBody] IEnumerable dtos, CancellationToken token) { @@ -104,7 +104,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("{idDiscriminator}")] [ProducesResponseType(typeof(PaginationContainer), (int)HttpStatusCode.OK)] public async Task GetCurrent( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, [FromQuery] SectionPartRequest filterRequest, [FromQuery] PaginationRequest paginationRequest, CancellationToken token) @@ -118,7 +118,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("moment/{idDiscriminator}")] [ProducesResponseType(typeof(PaginationContainer), (int)HttpStatusCode.OK)] public async Task GetByDate( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, DateTimeOffset moment, [FromQuery] SectionPartRequest filterRequest, [FromQuery] PaginationRequest paginationRequest, @@ -133,7 +133,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] public async Task GetChangeLogForDate( - [FromRoute] int idDiscriminator, + [FromRoute] Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) @@ -146,7 +146,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("datesChange/{idDiscriminator}")] [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task GetDatesChange([FromRoute] int idDiscriminator, CancellationToken token) + public async Task GetDatesChange([FromRoute] Guid idDiscriminator, CancellationToken token) { var result = await repository.GetDatesChange(idDiscriminator, token); @@ -156,7 +156,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("part/{idDiscriminator}")] [ProducesResponseType(typeof(IEnumerable), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task>> GetPart([FromRoute] int idDiscriminator, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default) + public async Task>> GetPart([FromRoute] Guid idDiscriminator, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default) { var result = await repository.GetGtDate(idDiscriminator, dateBegin, token); @@ -166,7 +166,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi [HttpGet("datesRange/{idDiscriminator}")] [ProducesResponseType(typeof(DatesRangeDto), (int)HttpStatusCode.OK)] [ProducesResponseType((int)HttpStatusCode.NoContent)] - public async Task> GetDatesRangeAsync([FromRoute] int idDiscriminator, CancellationToken token) + public async Task> GetDatesRangeAsync([FromRoute] Guid idDiscriminator, CancellationToken token) { var result = await repository.GetDatesRange(idDiscriminator, token); diff --git a/Persistence.API/Controllers/WitsDataController.cs b/Persistence.API/Controllers/WitsDataController.cs index 10dd7c7..741b35c 100644 --- a/Persistence.API/Controllers/WitsDataController.cs +++ b/Persistence.API/Controllers/WitsDataController.cs @@ -28,7 +28,7 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// [HttpGet("{discriminatorId}/datesRange")] - public async Task> GetDatesRangeAsync([FromRoute] int discriminatorId, CancellationToken token) + public async Task> GetDatesRangeAsync([FromRoute] Guid discriminatorId, CancellationToken token) { var result = await witsDataService.GetDatesRangeAsync(discriminatorId, token); @@ -44,7 +44,7 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// [HttpGet("{discriminatorId}/part")] - public async Task>> GetPart([FromRoute] int discriminatorId, [FromQuery] DateTimeOffset dateBegin, [FromQuery] int take, CancellationToken token) + public async Task>> GetPart([FromRoute] Guid discriminatorId, [FromQuery] DateTimeOffset dateBegin, [FromQuery] int take, CancellationToken token) { var result = await witsDataService.GetPart(discriminatorId, dateBegin, take, token); @@ -61,7 +61,7 @@ public class WitsDataController : ControllerBase, IWitsDataApi /// /// [HttpGet("{discriminatorId}/graph")] - public async Task>> GetValuesForGraph([FromRoute] int discriminatorId, + public async Task>> GetValuesForGraph([FromRoute] Guid discriminatorId, [FromQuery] DateTimeOffset dateFrom, [FromQuery] DateTimeOffset dateTo, [FromQuery] int approxPointsCount, CancellationToken token) { var result = await witsDataService.GetValuesForGraph(discriminatorId, dateFrom, dateTo, approxPointsCount, token); diff --git a/Persistence.Client/Clients/IChangeLogClient.cs b/Persistence.Client/Clients/IChangeLogClient.cs index 3bb9832..8391e84 100644 --- a/Persistence.Client/Clients/IChangeLogClient.cs +++ b/Persistence.Client/Clients/IChangeLogClient.cs @@ -18,7 +18,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/replace/{{idDiscriminator}}")] - Task> ClearAndAddRange(int idDiscriminator, IEnumerable dtos); + Task> ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos); /// /// Получение актуальных данных на определенную дату (с пагинацией) @@ -30,7 +30,7 @@ public interface IChangeLogClient /// [Get($"{BaseRoute}/moment/{{idDiscriminator}}")] Task>> GetByDate( - int idDiscriminator, + Guid idDiscriminator, DateTimeOffset moment, [Query] SectionPartRequest filterRequest, [Query] PaginationRequest paginationRequest); @@ -43,7 +43,7 @@ public interface IChangeLogClient /// /// [Get($"{BaseRoute}/history/{{idDiscriminator}}")] - Task>> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd); + Task>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd); /// /// Добавить одну запись @@ -52,7 +52,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/{{idDiscriminator}}")] - Task> Add(int idDiscriminator, DataWithWellDepthAndSectionDto dto); + Task> Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto); /// /// Добавить несколько записей @@ -61,7 +61,7 @@ public interface IChangeLogClient /// /// [Post($"{BaseRoute}/range/{{idDiscriminator}}")] - Task> AddRange(int idDiscriminator, IEnumerable dtos); + Task> AddRange(Guid idDiscriminator, IEnumerable dtos); /// /// Обновить одну запись @@ -101,6 +101,6 @@ public interface IChangeLogClient /// /// [Get($"{BaseRoute}/datesRange/{{idDiscriminator}}")] - Task> GetDatesRange(int idDiscriminator); + Task> GetDatesRange(Guid idDiscriminator); } diff --git a/Persistence.Client/Clients/IWitsDataClient.cs b/Persistence.Client/Clients/IWitsDataClient.cs index 108a4d7..b89b3e5 100644 --- a/Persistence.Client/Clients/IWitsDataClient.cs +++ b/Persistence.Client/Clients/IWitsDataClient.cs @@ -8,14 +8,14 @@ public interface IWitsDataClient private const string BaseRoute = "/api/witsData"; [Get($"{BaseRoute}/{{discriminatorId}}/graph")] - Task>> GetValuesForGraph(int discriminatorId, [Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int approxPointsCount, CancellationToken token); + Task>> GetValuesForGraph(Guid discriminatorId, [Query] DateTimeOffset dateFrom, [Query] DateTimeOffset dateTo, [Query] int approxPointsCount, CancellationToken token); [Post($"{BaseRoute}/")] Task> AddRange(IEnumerable dtos, CancellationToken token); [Get($"{BaseRoute}/{{discriminatorId}}/part")] - Task>> GetPart(int discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); + Task>> GetPart(Guid discriminatorId, [Query] DateTimeOffset dateBegin, [Query] int take = 24 * 60 * 60, CancellationToken token = default); [Get($"{BaseRoute}/{{discriminatorId}}/datesRange")] - Task> GetDatesRangeAsync(int discriminatorId, CancellationToken token); + Task> GetDatesRangeAsync(Guid discriminatorId, CancellationToken token); } diff --git a/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs index 049e506..7e9bde6 100644 --- a/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs +++ b/Persistence.Database.Postgres/Migrations/20241203120141_ParameterDataMigration.cs @@ -15,7 +15,7 @@ namespace Persistence.Database.Postgres.Migrations name: "ParameterData", columns: table => new { - DiscriminatorId = table.Column(type: "integer", nullable: false, comment: "Дискриминатор системы"), + DiscriminatorId = table.Column(type: "uuid", nullable: false, comment: "Дискриминатор системы"), ParameterId = table.Column(type: "integer", nullable: false, comment: "Id параметра"), Timestamp = table.Column(type: "timestamp with time zone", nullable: false, comment: "Временная отметка"), Value = table.Column(type: "varchar(256)", nullable: false, comment: "Значение параметра в виде строки") diff --git a/Persistence.Database/Entity/ChangeLog.cs b/Persistence.Database/Entity/ChangeLog.cs index eb921aa..9a8001b 100644 --- a/Persistence.Database/Entity/ChangeLog.cs +++ b/Persistence.Database/Entity/ChangeLog.cs @@ -15,7 +15,7 @@ public class ChangeLog : IChangeLog, IWithSectionPart public Guid Id { get; set; } [Comment("Дискриминатор таблицы")] - public int IdDiscriminator { get; set; } + public Guid IdDiscriminator { get; set; } [Comment("Автор изменения")] public Guid IdAuthor { get; set; } diff --git a/Persistence.Database/Entity/IChangeLog.cs b/Persistence.Database/Entity/IChangeLog.cs index b68bb0b..c4dc962 100644 --- a/Persistence.Database/Entity/IChangeLog.cs +++ b/Persistence.Database/Entity/IChangeLog.cs @@ -39,7 +39,7 @@ public interface IChangeLog /// /// Дискриминатор таблицы /// - public int IdDiscriminator { get; set; } + public Guid IdDiscriminator { get; set; } /// /// Значение diff --git a/Persistence.Database/Entity/ParameterData.cs b/Persistence.Database/Entity/ParameterData.cs index 627bf48..f8257de 100644 --- a/Persistence.Database/Entity/ParameterData.cs +++ b/Persistence.Database/Entity/ParameterData.cs @@ -8,7 +8,7 @@ namespace Persistence.Database.Entity; public class ParameterData { [Required, Comment("Дискриминатор системы")] - public int DiscriminatorId { get; set; } + public Guid DiscriminatorId { get; set; } [Comment("Id параметра")] public int ParameterId { get; set; } diff --git a/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs b/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs index 9641a1e..c4b5376 100644 --- a/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/ChangeLogControllerTest.cs @@ -30,7 +30,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest // arrange dbContext.CleanupDbSet(); - var idDiscriminator = 1; + var idDiscriminator = Guid.NewGuid(); var dtos = Generate(2, DateTimeOffset.UtcNow); // act @@ -63,7 +63,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest { // arrange var count = 1; - var idDiscriminator = 1; + var idDiscriminator = Guid.NewGuid(); var dtos = Generate(count, DateTimeOffset.UtcNow); var dto = dtos.FirstOrDefault()!; @@ -80,7 +80,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest { // arrange var count = 3; - var idDiscriminator = 1; + var idDiscriminator = Guid.NewGuid(); var dtos = Generate(count, DateTimeOffset.UtcNow); // act @@ -97,7 +97,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest // arrange dbContext.CleanupDbSet(); - var idDiscriminator = 1; + var idDiscriminator = Guid.NewGuid(); var dtos = Generate(1, DateTimeOffset.UtcNow); var dto = dtos.FirstOrDefault()!; var result = await client.Add(idDiscriminator, dto); @@ -298,7 +298,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest var count = insertedCount; var daysRange = (daysBeforeNowChangeLog, daysAfterNowChangeLog); var changeLogItems = CreateChangeLogItems(count, daysRange); - var idDiscriminator = 1; + var idDiscriminator = changeLogItems.Item1; var entities = changeLogItems.Item2; foreach (var entity in entities) @@ -337,12 +337,12 @@ public class ChangeLogControllerTest : BaseIntegrationTest } - private (int, ChangeLog[]) CreateChangeLogItems(int count, (int, int) daysRange) + private (Guid, ChangeLog[]) CreateChangeLogItems(int count, (int, int) daysRange) { var minDayCount = daysRange.Item1; var maxDayCount = daysRange.Item2; - var idDiscriminator = 1; + var idDiscriminator = Guid.NewGuid(); var dtos = Generate(count, DateTimeOffset.UtcNow); var entities = dtos.Select(d => { diff --git a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs index 9ecae04..12866a4 100644 --- a/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs +++ b/Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs @@ -26,7 +26,7 @@ public class WitsDataControllerTest : BaseIntegrationTest //arrange dbContext.CleanupDbSet(); - var discriminatorId = 1; + var discriminatorId = Guid.NewGuid(); //act var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, CancellationToken.None); @@ -42,7 +42,7 @@ public class WitsDataControllerTest : BaseIntegrationTest //arrange dbContext.CleanupDbSet(); - var discriminatorId = 1; + var discriminatorId = Guid.NewGuid(); var dateBegin = DateTimeOffset.UtcNow; var take = 1; @@ -71,7 +71,7 @@ public class WitsDataControllerTest : BaseIntegrationTest //arrange dbContext.CleanupDbSet(); - var discriminatorId = 1; + var discriminatorId = Guid.NewGuid(); var dateFrom = DateTimeOffset.UtcNow; var dateTo = DateTimeOffset.UtcNow; var approxPointCount = 12; @@ -177,7 +177,7 @@ public class WitsDataControllerTest : BaseIntegrationTest { new WitsDataDto() { - DiscriminatorId = -1, // < 0 + DiscriminatorId = Guid.NewGuid(), Timestamped = DateTimeOffset.UtcNow, Values = new List() { @@ -201,13 +201,14 @@ public class WitsDataControllerTest : BaseIntegrationTest private async Task> AddRange(int countToCreate = 10) { var dtos = new List(); + var discriminatorId = Guid.NewGuid(); var timestamped = DateTimeOffset.UtcNow; for (var i = 0; i < countToCreate; i++) { var random = new Random(); dtos.Add(new WitsDataDto() { - DiscriminatorId = 1, + DiscriminatorId = discriminatorId, Timestamped = timestamped.AddSeconds(i), Values = new List() { diff --git a/Persistence.Repository/Repositories/ChangeLogRepository.cs b/Persistence.Repository/Repositories/ChangeLogRepository.cs index 0291c1b..dc3f5eb 100644 --- a/Persistence.Repository/Repositories/ChangeLogRepository.cs +++ b/Persistence.Repository/Repositories/ChangeLogRepository.cs @@ -16,7 +16,7 @@ public class ChangeLogRepository : IChangeLogRepository this.db = db; } - public async Task AddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token) + public async Task AddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token) { var entities = new List(); foreach (var dto in dtos) @@ -49,7 +49,7 @@ public class ChangeLogRepository : IChangeLogRepository return result; } - public async Task MarkAsDeleted(Guid idEditor, int idDiscriminator, CancellationToken token) + public async Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, CancellationToken token) { var query = db.Set() .Where(s => s.IdDiscriminator == idDiscriminator) @@ -75,7 +75,7 @@ public class ChangeLogRepository : IChangeLogRepository return await db.SaveChangesAsync(token); } - public async Task ClearAndAddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token) + public async Task ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token) { var result = 0; @@ -127,7 +127,7 @@ public class ChangeLogRepository : IChangeLogRepository } public async Task> GetByDate( - int idDiscriminator, + Guid idDiscriminator, DateTimeOffset momentUtc, SectionPartRequest filterRequest, PaginationRequest paginationRequest, @@ -142,14 +142,14 @@ public class ChangeLogRepository : IChangeLogRepository return result; } - private IQueryable CreateQuery(int idDiscriminator) + private IQueryable CreateQuery(Guid idDiscriminator) { var query = db.Set().Where(e => e.IdDiscriminator == idDiscriminator); return query; } - public async Task> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) + public async Task> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token) { var query = db.Set().Where(s => s.IdDiscriminator == idDiscriminator); @@ -169,7 +169,7 @@ public class ChangeLogRepository : IChangeLogRepository - public async Task> GetDatesChange(int idDiscriminator, CancellationToken token) + public async Task> GetDatesChange(Guid idDiscriminator, CancellationToken token) { var query = db.Set().Where(e => e.IdDiscriminator == idDiscriminator); @@ -195,7 +195,7 @@ public class ChangeLogRepository : IChangeLogRepository return datesOnly; } - private ChangeLog CreateEntityFromDto(Guid idAuthor, int idDiscriminator, DataWithWellDepthAndSectionDto dto) + private ChangeLog CreateEntityFromDto(Guid idAuthor, Guid idDiscriminator, DataWithWellDepthAndSectionDto dto) { var entity = new ChangeLog() { @@ -214,7 +214,7 @@ public class ChangeLogRepository : IChangeLogRepository return entity; } - public async Task> GetGtDate(int idDiscriminator, DateTimeOffset dateBegin, CancellationToken token) + public async Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token) { var date = dateBegin.ToUniversalTime(); var query = this.db.Set() @@ -228,7 +228,7 @@ public class ChangeLogRepository : IChangeLogRepository return dtos; } - public async Task GetDatesRange(int idDiscriminator, CancellationToken token) + public async Task GetDatesRange(Guid idDiscriminator, CancellationToken token) { var query = db.Set() .Where(e => e.IdDiscriminator == idDiscriminator) diff --git a/Persistence.Repository/Repositories/ParameterRepository.cs b/Persistence.Repository/Repositories/ParameterRepository.cs index dbf387f..325c08c 100644 --- a/Persistence.Repository/Repositories/ParameterRepository.cs +++ b/Persistence.Repository/Repositories/ParameterRepository.cs @@ -17,7 +17,7 @@ public class ParameterRepository : IParameterRepository protected virtual IQueryable GetQueryReadOnly() => db.Set(); - public async Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token) + public async Task GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token) { var query = GetQueryReadOnly() .Where(e => e.DiscriminatorId == idDiscriminator) @@ -37,7 +37,7 @@ public class ParameterRepository : IParameterRepository return result; } - public async Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) + public async Task> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) { var query = GetQueryReadOnly(); var universalDate = dateBegin.ToUniversalTime(); @@ -50,7 +50,7 @@ public class ParameterRepository : IParameterRepository return dtos; } - public async Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + public async Task> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, int? ratio, CancellationToken token) { var query = db.Set().AsNoTracking(); diff --git a/Persistence/API/IChangeLogApi.cs b/Persistence/API/IChangeLogApi.cs index cbf2127..4a548bf 100644 --- a/Persistence/API/IChangeLogApi.cs +++ b/Persistence/API/IChangeLogApi.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using System; +using Microsoft.AspNetCore.Mvc; using Persistence.Models; using Persistence.Models.Requests; @@ -16,7 +17,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task ClearAndAddRange(int idDiscriminator, IEnumerable dtos, CancellationToken token); + Task ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Получение данных на текущую дату (с пагинацией) @@ -26,7 +27,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApiпараметры запроса пагинации /// /// - Task GetCurrent(int idDiscriminator, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task GetCurrent(Guid idDiscriminator, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение данных на определенную дату (с пагинацией) @@ -37,7 +38,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApiпараметры запроса пагинации /// /// - Task GetByDate(int idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение исторических данных за определенный период времени @@ -47,16 +48,16 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task GetChangeLogForDate(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); + Task GetChangeLogForDate(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); - /// - /// Добавить одну запись - /// - /// - /// - /// - /// - Task Add(int idDiscriminator, DataWithWellDepthAndSectionDto dto, CancellationToken token); + /// + /// Добавить одну запись + /// + /// + /// + /// + /// + Task Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto, CancellationToken token); /// /// Добавить несколько записей @@ -65,7 +66,7 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task AddRange(int idDiscriminator, IEnumerable dtos, CancellationToken token); + Task AddRange(Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Обновить одну запись @@ -105,5 +106,5 @@ public interface IChangeLogApi : ISyncWithDiscriminatorApi /// /// - Task GetDatesChange(int idDiscriminator, CancellationToken token); + Task GetDatesChange(Guid idDiscriminator, CancellationToken token); } diff --git a/Persistence/API/ISyncWithDiscriminatorApi.cs b/Persistence/API/ISyncWithDiscriminatorApi.cs index 88b49dd..224b8df 100644 --- a/Persistence/API/ISyncWithDiscriminatorApi.cs +++ b/Persistence/API/ISyncWithDiscriminatorApi.cs @@ -16,7 +16,7 @@ public interface ISyncWithDiscriminatorApi /// количество записей /// /// - Task>> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default); + Task>> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default); /// /// Получить диапазон дат, для которых есть данные в репозитории @@ -24,5 +24,5 @@ public interface ISyncWithDiscriminatorApi /// /// /// - Task> GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + Task> GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token); } \ No newline at end of file diff --git a/Persistence/API/IWitsDataApi.cs b/Persistence/API/IWitsDataApi.cs index 8bd3e6f..a8e5de8 100644 --- a/Persistence/API/IWitsDataApi.cs +++ b/Persistence/API/IWitsDataApi.cs @@ -17,7 +17,7 @@ public interface IWitsDataApi : ISyncWithDiscriminatorApi /// /// /// - Task>> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + Task>> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token); /// diff --git a/Persistence/Models/ParameterDto.cs b/Persistence/Models/ParameterDto.cs index a1155ce..63a4660 100644 --- a/Persistence/Models/ParameterDto.cs +++ b/Persistence/Models/ParameterDto.cs @@ -10,8 +10,7 @@ public class ParameterDto /// /// Дискриминатор системы /// - [Range(0, int.MaxValue, ErrorMessage = "Дискриминатор системы не может быть меньше 0")] - public int DiscriminatorId { get; set; } + public Guid DiscriminatorId { get; set; } /// /// Id параметра diff --git a/Persistence/Models/WitsDataDto.cs b/Persistence/Models/WitsDataDto.cs index 7293067..e224f6d 100644 --- a/Persistence/Models/WitsDataDto.cs +++ b/Persistence/Models/WitsDataDto.cs @@ -15,8 +15,7 @@ public class WitsDataDto /// /// Дискриминатор системы /// - [Range(0, int.MaxValue, ErrorMessage = "Дискриминатор системы не может быть меньше 0")] - public required int DiscriminatorId { get; set; } + public required Guid DiscriminatorId { get; set; } /// /// Параметры diff --git a/Persistence/Repositories/IChangeLogRepository.cs b/Persistence/Repositories/IChangeLogRepository.cs index 3db37b6..e197090 100644 --- a/Persistence/Repositories/IChangeLogRepository.cs +++ b/Persistence/Repositories/IChangeLogRepository.cs @@ -17,7 +17,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task AddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token); + Task AddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Пометить записи как удаленные @@ -35,7 +35,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepositoryдискриминатор таблицы /// /// - Task MarkAsDeleted(Guid idEditor, int idDiscriminator, CancellationToken token); + Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, CancellationToken token); /// /// Очистить и добавить новые @@ -45,7 +45,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task ClearAndAddRange(Guid idAuthor, int idDiscriminator, IEnumerable dtos, CancellationToken token); + Task ClearAndAddRange(Guid idAuthor, Guid idDiscriminator, IEnumerable dtos, CancellationToken token); /// /// Редактирование записей @@ -65,7 +65,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepositoryпараметры запроса пагинации /// /// - Task> GetByDate(int idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); + Task> GetByDate(Guid idDiscriminator, DateTimeOffset moment, SectionPartRequest filterRequest, PaginationRequest paginationRequest, CancellationToken token); /// /// Получение измененных записей за период времени @@ -75,7 +75,7 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task> GetChangeLogForInterval(int idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); + Task> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token); /// /// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени) @@ -83,5 +83,5 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository /// /// - Task> GetDatesChange(int idDiscriminator, CancellationToken token); + Task> GetDatesChange(Guid idDiscriminator, CancellationToken token); } diff --git a/Persistence/Repositories/IParameterRepository.cs b/Persistence/Repositories/IParameterRepository.cs index a3728da..c600898 100644 --- a/Persistence/Repositories/IParameterRepository.cs +++ b/Persistence/Repositories/IParameterRepository.cs @@ -10,14 +10,14 @@ public interface IParameterRepository /// /// /// - Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); + Task> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); /// /// Получить диапазон дат, для которых есть данные в репозитории /// /// /// - Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + Task GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token); /// /// Получить набор параметров (Wits) для построения графика @@ -29,7 +29,7 @@ public interface IParameterRepository /// /// /// - Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + Task> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, int? ratio, CancellationToken token); /// diff --git a/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs b/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs index af8c807..7e0bd62 100644 --- a/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs +++ b/Persistence/Repositories/ISyncWithDiscriminatorRepository.cs @@ -15,7 +15,7 @@ public interface ISyncWithDiscriminatorRepository /// дата начала /// /// /// - Task> GetGtDate(int idDiscriminator, DateTimeOffset dateBegin, CancellationToken token); + Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token); /// @@ -24,5 +24,5 @@ public interface ISyncWithDiscriminatorRepository /// дискриминатор таблицы /// /// - Task GetDatesRange(int idDiscriminator, CancellationToken token); + Task GetDatesRange(Guid idDiscriminator, CancellationToken token); } diff --git a/Persistence/Services/Interfaces/IWitsDataService.cs b/Persistence/Services/Interfaces/IWitsDataService.cs index 69137f1..dea77ab 100644 --- a/Persistence/Services/Interfaces/IWitsDataService.cs +++ b/Persistence/Services/Interfaces/IWitsDataService.cs @@ -13,7 +13,7 @@ public interface IWitsDataService /// /// /// - Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token); + Task GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token); /// /// Получить порцию записей, начиная с заданной даты @@ -23,7 +23,7 @@ public interface IWitsDataService /// /// /// - Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); + Task> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token); /// /// Получить диапазон дат, для которых есть данные в репозитории @@ -34,7 +34,7 @@ public interface IWitsDataService /// /// /// - Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token); + Task> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token); /// /// Сохранить набор параметров diff --git a/Persistence/Services/WitsDataService.cs b/Persistence/Services/WitsDataService.cs index e93a213..3d99a3a 100644 --- a/Persistence/Services/WitsDataService.cs +++ b/Persistence/Services/WitsDataService.cs @@ -25,14 +25,14 @@ public class WitsDataService : IWitsDataService this.witsInfo = GetWitsInfo(); } - public Task GetDatesRangeAsync(int idDiscriminator, CancellationToken token) + public Task GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token) { var result = witsDataRepository.GetDatesRangeAsync(idDiscriminator, token); return result; } - public async Task> GetPart(int idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) + public async Task> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take, CancellationToken token) { var dtos = await witsDataRepository.GetPart(idDiscriminator, dateBegin, take, token); @@ -41,7 +41,7 @@ public class WitsDataService : IWitsDataService return result; } - public async Task> GetValuesForGraph(int discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, + public async Task> GetValuesForGraph(Guid discriminatorId, DateTimeOffset dateFrom, DateTimeOffset dateTo, int approxPointsCount, CancellationToken token) { var intervalSec = (dateTo - dateFrom).TotalSeconds;