Our Blog

Ongoing observations by End Point people

Availity: An API for Health Insurance

Patrick lewis

By Patrick Lewis
November 16, 2020

Stethoscope Photo by Sergio Santos, used under CC BY 2.0, cropped from original.

I have been working on a tele-therapy application for a client in the health care industry over the past few months and had the opportunity to do some interesting work in the area of health insurance coverages and claims.

I was tasked with creating an integration of the Availity API for insurance coverages which provides the ability to make requests for details about a patient’s health insurance coverage and returns responses containing information like the patient’s primary care doctor, their copay amounts, and their deductibles.

The ability to query this health insurance information from an API in an automated fashion helps streamline the process of billing clients by validating their health insurance details and also determining what a patient’s financial responsibility will be for their online therapy sessions. Availity provides information for over 11,000 insurance companies; a full list of supported payers is available on their site via a web interface and a downloadable CSV file.

Availity provides both REST and SOAP APIs in addition to a batch processing system that functions over SFTP. For the purposes of this article I will be focusing on the REST API which was the primary focus of my work for this project.

The developer documentation for the REST API was mostly self-serve; after signing up for an account on the Availity site I was able to rely on their publicly available documentation for all of the API details that I needed to start making requests.

Unfortunately, the development process for integrating the SOAP API was not nearly as smooth; the SOAP APIs link on Availity’s main developer portal page currently comes up blank, and I had to register a separate account in order to create a support request to obtain documentation on the SOAP API. Even with that documentation in hand, I found it difficult to determine things like the correct WSDL to use, and the process for generating...

ruby rails

Job opening: Java & JavaScript developer

Jon jensen

By Jon Jensen
November 13, 2020

Person on boulder overlooking valley with lake

We are seeking a full-time Java software engineer to work with us on our clients’ applications.

End Point is an Internet technology consulting company based in New York City, with 50 employees serving many clients ranging from small family businesses to large corporations. The company turned 25 years old this year!

Even before the pandemic most of us worked remotely from home offices. We collaborate using SSH, Git, project tracking tools, Zulip chat, video conferencing, and of course email and phones.

What you will be doing:

  • Develop new web applications and support existing ones for our clients
  • Work together with End Point co-workers and our clients’ in-house staff
  • Use your desktop OS of choice: Linux, macOS, Windows
  • Use open source tools and contribute back as opportunity arises

What you bring:

Professional experience developing and supporting web applications in these technical areas:

  • 3+ years of development with Java and front-end JavaScript
  • Frameworks and libraries such as Wildfly, Hibernate, Spring, Struts, Play, and Vue.js, React, Angular
  • Databases such as PostgreSQL, MySQL, Redis, Solr, Elasticsearch, etc.
  • Security consciousness
  • Git version control
  • Automated testing
  • Bonus for familiarity with other ecosystems such as Ruby on Rails, PHP, Python/​Django, .NET/​C#, Node.js, Go, Rust, Scala, Kotlin, Swift …

These work traits are just as important:

  • Strong verbal and written communication skills
  • An eye for detail
  • Tenacity in solving problems and focusing on customer needs
  • A feeling of ownership of your projects
  • Work both independently and as part of a team
  • Ability to pass a criminal background check when clients require
  • A good remote work environment

What work here offers:

  • Collaborate with knowledgeable, friendly, helpful, and diligent co-workers around the world
  • Flexible, sane work hours
  • Paid holidays and vacation
  • Annual bonus opportunity
  • Freedom from being tied to an office location
  • For U.S. employees: health insurance subsidy...

company jobs java javascript remote-work

Job opening: PostgreSQL database administrator & developer

Jon jensen

By Jon Jensen
November 13, 2020

rows of barrels Photo by manhhai, cropped & filtered, CC BY 2.0

We are seeking a full-time PostgreSQL database administrator and developer to support and consult with our clients. For this role we prefer those living in the Western Hemisphere.

End Point is an Internet technology consulting company based in New York City, with 50 employees serving many clients ranging from small family businesses to large corporations. The company turned 25 years old this year!

Even before the pandemic most of us worked remotely from home offices. We collaborate using SSH, Git, project tracking tools, Zulip chat, video conferencing, and of course email and phones.

What you bring:

5+ years of hands-on professional experience and technical expertise with:

  • Database design and systems architecture
  • Advanced SQL and query optimization
  • Programming for web applications, stored procedures, and scripting, in Ruby, Java, Python, PHP, Perl, JavaScript, C#, Go, PL/pgSQL, bash, etc.
  • Performance tuning, scalability, connection pooling
  • Cloud database hosting services, especially at AWS, Google Cloud, and Azure
  • Security and encryption
  • Replication, PITR, backup, monitoring, and relevant tools
  • HA, failover, and disaster recovery
  • Database upgrades and migrations
  • Programming language interfaces to the database
  • Linux system administration and observation
  • DevOps and “configuration as code”
  • Troubleshooting problems and handling emergencies
  • Other databases such as MySQL, MongoDB, Oracle, SQL Server, Redis, Solr, Elasticsearch, etc.
  • Git version control
  • Bonus for familiarity with running PostgreSQL on Windows, and with the Bucardo replication system

These work traits are just as important:

  • Strong verbal and written communication skills
  • An eye for detail
  • Tenacity in solving problems and focusing on customer needs
  • A feeling of ownership of your projects
  • Work both independently and as part of a team
  • Ability to pass a criminal background check or get a security clearance when clients require
  • A good remote work environment

company jobs postgres database remote-work

Rapid Test-Driven Development in Julia

Kamil ciemniewski

By Kamil Ciemniewski
November 9, 2020


The Julia programming language has been rising in the ranks among the science-oriented programming languages lately. It has proven to be revolutionary in many ways. I’ve been watching its development for years now. It’s one of the most innovative of all the modern programming languages.

Julia’s design seems to be driven by two goals: to appeal to the scientific community and to achieve the best performance possible. This is an attempt to solve the “two languages problem” where data analysis and model building is performed using a slower interpreted language (like R or Python) while performance-critical parts are written in a faster language like C or C++.

The type-system is what allows Julia to meet its goals. The mix of strong and dynamic typing enables Python-like productivity with C++ or Rust-like performance. Julia is not an interpreted language. It compiles its code to native binary just like C, C++, Go, or Rust. The compilation and execution, though, are what sets it 1000 feet apart from all those other languages.

Here’s a simplified, brief outline of the steps in Julia’s code execution model:

  1. Julia process starts up.
  2. Code is parsed.
  3. For each code chunk:
    • If it hasn’t yet been compiled, decide whether to interpret or JIT compile it and then execute:
      • If compile then infer the types and use LLVM to produce native code.
      • Execute the newly-created native code.
    • If it has been compiled, execute it.
  4. Repeat until the program ends or the user closes the REPL.

It’s quite apparent that the compilation and type inference happen at a very different time compared to other compiled languages. Using Rust, you compile your code just once. Execution isn’t taxed by consecutive recompilation.

The result is quite a big negative surprise to Julia’s newcomers. Each time you run your app, there’s a significant slowdown before you see anything. It’s called the “time to first plot” issue. This is because, for example, a data scientist may want to generate some plots during...

julia automation development testing

.NET 5 will be released at .NET Conf 2020

Juan pablo ventoso

By Juan Pablo Ventoso
November 4, 2020

.NET 5 Platform

.NET — A unified platform by Microsoft

Last year, at .NET Conf 2019, Microsoft announced that the new .NET 5 will have a base class library that will allow creation of any type of application for any platform — Windows, Linux, Android, iOS, and IoT. And that’s finally about to happen: .NET 5 will be launched at .NET Conf 2020, starting November 10th!

According to Microsoft, .NET 5 will take the best of .NET Core, .NET Framework, Xamarin, and Mono and merge them into one framework, offering the same experience for all developers, regardless of the type of application or platform targeted. It will also include two different compiler models: just-in-time (JIT, prepared for client-server and desktop apps) and static compilation with ahead-of-time (AOT, optimized to decrease startup times, ideal for mobile and IoT devices).

Some of the key features will be:

Windows Desktop development (WPF/​Windows Forms/​UWP)

This was already a part of the current .NET Core 3 release, and it will stay while getting some updates like a Chromium-based WebView control, improvements to the visual designer, and customizable task dialogs. It will also include all the latest features of C# 8.

Full-stack web development (C#/​Blazor)

This feature is also present on the current .NET Core 3 version, and will be updated for this release. With Blazor, we can write full-stack web applications only using C#, removing the need to use a separate language for the frontend. While it’s still a discussed feature, the advantage of using it will depend on the type of web application we’re working on. But it’s there and it will be fully supported on .NET 5.

C# 8

This version tries to reduce the well-known (by all of us!) null reference exceptions as a source of program failures by introducing a nullability modifier for nullable reference types. Other main improvements include asynchronous streams, default interface methods and pattern matching enhancements. A full reference of all the new features...

dotnet windows microsoft

Craft: A CMS for developers

Kevin campusano

By Kevin Campusano
October 31, 2020

Craft CMS banner

As a software engineer, I thrive and thoroughly enjoy working on fully custom software products, applications conceived to model and help in the execution of some business process and that are built from the ground up by a team of developers.

Such projects are often complex and expensive, though, and for some clients, they can be overkill. Some clients come up with requirements that are better served by off-the-shelf software solutions. One group of such solutions are content management systems (CMS). As a rule of thumb, if a client wants a website whose main purpose is to showcase some content, their brand or image, and custom business logic requirements are limited, then chances are that a CMS will fit the bill nicely.

Lately we’ve been using the Craft CMS for a client that meets the aforementioned criteria, and I gotta say, I’ve been pleasantly surprised by the developer experience it offers.

Unlike most of the technology and products we discuss in our blog, Craft CMS is not Open Source or Free Software. The source code is readily available in GitHub for anybody to use, study, and modify, but commercial use of it is restricted and certain features are exclusive to a so-called “Pro” edition. Learn more by reading their license and their pricing structure.

The features that we will discuss in this article are all part of the no-charge “Solo” edition of Craft CMS 3 that can be used for noncommercial websites.

In this article I’m going to talk through a few of the key aspects of Craft that make me think that it’s really a CMS made for developers. Let’s get started:

Craft is easy to get up and running

Craft is just a PHP application. And it is as typical as modern PHP applications go, capable of being initially set up with Composer and of running on top of a MySQL database (it also supports Postgres!) and the Apache web server. It can all be done via console too, if that’s how you roll.

If you already have a box with Apache, PHP, MySQL and Composer, it all...

cms php docker

EMSA: Electronic Messaging Staging Area

By Elizabeth Garrett Christensen
October 30, 2020

Sunset Photo by Lee Roberts, CC BY-SA 2.0

End Point has been involved with developing disease surveillance software for over a decade. One component of that work is EMSA, short for “Electronic Messaging Staging Area”.

The EMSA system we’re currently using was developed by a consortium of states led by Utah, Kansas, and Nevada. It is a PHP web application and can be hosted in the cloud or on-premises as you would any other PHP application.


  • Is an ingest system for HL7 or CSV-formatted lab reports from doctor offices, labs, and other official reporting groups.
  • Allows exporting XML output to your disease surveillance system.
  • Is a web console for managing messages.
  • Allows you to see messages that are malformed.
  • Has configurable rules for disease types and message routing; some messages may go directly into a surveillance system while others may be stored for later.
  • Has configurable “automated workflows” to validate message information and perform tasks.
  • Can be connected to a BI (Business Intelligence) tool for reporting, or the database can be queried directly.
  • Works with integration packages like Rhapsody to bring in data from other systems.

End Point has also made custom modifications to EMSA allowing address validation for incoming messages.

EMSA can be deployed along with EpiTrax, the open source tracking system, or as a standalone application connected to a different disease surveillance system.

Benefits of EMSA

Aside from all the features mentioned above, EMSA as an open-source solution brings other benefits:

  • Reduced cost: Other than development and consulting to help set it up, there are no ongoing licensing costs.
  • Participating in the open source community that is growing in the healthcare industry.

Help is available!

Interested in talking to us more about EMSA for your disease tracking? Reach out today.


Emily Roberts, Rachelle Boulton, Josh Ridderhoff, Theron Jeppson. “Automated Processing of Electronic Data for Disease Surveillance...

epitrax open-source

Detecting gaps in time-series data in PostgreSQL

David christensen

By David Christensen
October 26, 2020

Mosaic 18 Photo by Phoebe Baker

A client has a number of data feeds that are supposed to update at regular intervals. Like most things in the universe (thanks, entropy!) this does not always end up working out the way we want. We recently discovered that some of the data had not loaded as expected, and were brought in to assess the extent of the issue.

There were 2 main feeds that had issues, with different types of time data. The first had date-based data with batches and the second had full-range timestamps. We will examine each type individually, since they have similar — but not the same — characteristics.

Date-based, with batches

In the first data feed there was a table which tracked which files had been loaded by file date and batch number (there was a morning/​evening batch designated by a batch field with either A or B). Since the files that had not loaded successfully did not have entries in this table we could find that one or both of the day’s batch files would be missing, but since the table tracked those which did get loaded, we needed to turn this list into something useful.

Any time I find myself considering sequences of data, I remember my friend generate_series(). While generate_series() is often called with numeric data, it can also generate date ranges, which can come in very handy:

postgres=# SELECT * FROM generate_series('2020-01-01'::date, '2020-10-01'::date, interval '1 day') LIMIT 10;
 2020-01-01 00:00:00-06
 2020-01-02 00:00:00-06
 2020-01-03 00:00:00-06
 2020-01-04 00:00:00-06
 2020-01-05 00:00:00-06
 2020-01-06 00:00:00-06
 2020-01-07 00:00:00-06
 2020-01-08 00:00:00-06
 2020-01-09 00:00:00-06
 2020-01-10 00:00:00-06
(10 rows)

Let’s create our sample table and populate with data to simulate the situation we ran into:

CREATE TABLE loader_manifest (filename text, batch char, status char, processed_at timestamptz);

INSERT INTO loader_manifest (filename, batch, status, processed_at)

postgres database
Page 1 of 191 • Next page

Popular Tags


Search our blog