FHIRPath as a testing language
Healthcare Standards
by Keith W. Boone
1w ago
 I'm on a V2-to-FHIR journey writing some code to support translation of V2 messages to FHIR. Along the way, one of the challenges I have is getting the testing framework set up so that it's easy to write assertions about conversions.  HL7 Messages are full of dense text, which makes it hard to read, and even harder to sprinkle them through with assertions, so that: The assertions about the FHIR translation are close to the HL7 Message text for which they are made (making it easy to verify that the right assertions are present). The text is loadable from external resources, rather t ..read more
Visit website
The true edge cases of date/time parsing
Healthcare Standards
by Keith W. Boone
3w ago
 I'm in the process of developing a Java library to implement the V2-to-FHIR datatype conversions.  This is a core component for a V2 to FHIR converter I hope to open source at some point. I'm using HAPI V2 and HAPI FHIR because Java, and these are the best implementations in Java. Some interesting learnings:  HAPI  FHIR and HAPI V2 have overlapping acceptable input ranges. In order to provide the broadest support, I'm actually using both.  The V2 parser is easier to manage with the range of acceptable ISO-8601 date time strings, since it's easier to remove any existi ..read more
Visit website
Running BCFIPS in SpringBoot 3.2
Healthcare Standards
by Keith W. Boone
3M ago
I'm rewriting wrappers for a Spring Boot 1.5 application using Spring Boot 3.2 to help me eliminate some older dependencies I cannot even get patches for anymore.  So now I have to make my new Spring Boot application work with the latest Bouncy Castle FIPS code. I've previously mentioned the NIST Certified Bouncy Castle FIPS TLS libraries in other posts.  SOAP is tremendously complicated to configure and manage.  REST is so much easier, and when you don't need all of the power of a SOAP stack, you can certainly send SOAP messages in XML quite readily using a normal REST transp ..read more
Visit website
More fun with SNI and TLS with Akamai edge servers and Bouncy Castle internal_error(80)
Healthcare Standards
by Keith W. Boone
3M ago
Recently, endpoints that one of the systems I maintain frequently connects to underwent a change in how they hosted their servers.  They were moved into an Akamai edge server framework, which requires use of the Server Name Indicator (SNI) extension in TLS communications.  This isn't routinely enabled in a straight Java JSSE client connection, especially when using Bouncy Castle FIPS.  As I previously stated, you have to configure it in your code. My guess is that when a request is made without the SNI TLS extension, the Akamai edge environment reports a TLS error.  Sa ..read more
Visit website
The nastiest code I ever wrote
Healthcare Standards
by Keith W. Boone
3M ago
Creating a mock that injects random errors into the expected responses is necessary to ensure that your server resiliency features work as intended. Doing so can be very challenging, especially if your mock has to simulate complex behavior.  FWIW, I call it a mock, because it is, but the endpoint is a test endpoint used by a production environment to verify that the server is operating correctly. What appears below all-out wins the award for the nastiest, most evil code I've ever written that appears in a production system. resp = ReflectionUtils.unwrapResponse(resp); if (resp instanceo ..read more
Visit website
TLS 1.2, Server Name Indication (SNI) and SOAP via CXF
Healthcare Standards
by Keith W. Boone
1y ago
It seems that I am destined to become a deep expert in the vagaries of TLS these days.  My most recent challenge was in figuring out why Server Name Indication (SNI) extensions weren't simply working in my BC-FIPS implementation that I talked about in the last few posts. Background on SNI For a brief moment, let's talk a little about SNI.  TLS is a lower layer session protocol on top of TCP that encrypts communication.  HTTP and HTTPS are higher layer (Application) protocols on top of TLS.  When you connect to an IP address over TCP, then initiate a TLS connection, the appl ..read more
Visit website
Debugging TLS Protocol Failures in BC-FIPS and Spring Applications
Healthcare Standards
by Keith W. Boone
1y ago
Debugging TLS protocol failures can be a nightmare.  With JSSE, you can use the old standby java JVM option:      -Djavax.net.debug=ssl,handshake, data,trustmanager,help   to get detailed reporting of what is happening.  Usually that provides more than enough (in fact too much) information to debug the protocol problem, but when using BCFIPS, guess what, it doesn't work anymore.  Why? Well, while these command line arguments make debugging easier, they also transmit decrypted information to the console, which is a huge leak of encrypted information. So, what ..read more
Visit website
Dynamically Reloading TLS Trust and Identity Material
Healthcare Standards
by Keith W. Boone
1y ago
Wouldn't it be nice if you didn't have to restart your server to dynamically update keys, certificates or trust stores?  I've spend a good bit of time on this across both client and server implementations and so I have a few pointers.  If you've read the last two posts, you know I've been working through requirements and implementation.  Now I'm going to add this auto-renewal of trust and key material to that effort. Most folks will just need to deal with setting up trust and key managers for their web application.  That's fairly straightforward.  The challenge that I ..read more
Visit website
Addressing technical challenges with BC-FIPS
Healthcare Standards
by Keith W. Boone
1y ago
Last week I talked about the requirements for implementing TLS and a certified encryption module (specifically Bouncy Castle FIPS or BC-FIPS).  Today I'm going to tell you a bit more about technically how one my go about this, and the specific technical challenges that you may run into. First of all, BC-FIPS provides some installation instructions that a) no longer work with JDK-11, and b) also don't play well with Spring Boot uber-jar class loading using standard Classpath override mechanisms.  I never found root cause for this problem, all I wound up doing was simply dynamically ..read more
Visit website
TLS, FIPS and the Bouncy Castle Certified Encryption Module
Healthcare Standards
by Keith W. Boone
1y ago
Image Courtesy of Wikipedia History Becoming educated in a topic seems to offer opportunities to become yet further educated, or in other words, once you've demonstrated expertise in a particular technology, more problems related to it will come your way.  So be careful what you work on. Many years ago, I had to work out how to implement the IHE ATNA profile.  I spent quite a bit of time on this project and became rather expert at diagnosing TLS problems, and configuring Tomcat to support the IHE Audit Trail and Node Authentication Profile (ATNA).  So much so that I fir ..read more
Visit website

Follow Healthcare Standards on FeedSpot

Continue with Google
Continue with Apple
OR