Complete Repository for all iDaaS-Connect reference architecture/design pattern/accelerator(s).
Intelligent DaaS (Data as a Service) is intended to be a tier of reusable and extensible capabilities. As such, it is all about enabling a consistent design pattern/accelerator based mindset to help healthcare organizations innovate in a new and comprehensive manner. Our focus has been, and will continue to be, how we simplify data access within healthcare and focus on ensuring data is the asset.
Here are a few key things to know as you read this:
- The basis of all the efforts for Intelligent DaaS is that Data is the Asset and this set of repositories are intended to help anyone connect and build innovative platforms for usage with a variety of data: healthcare and beyond.
- Intelligent DaaS, or any of its components, ARE NOT PRODUCTS AND WILL NOT BECOME A PRODUCT. They are enabling capabilities in a consitent manner, as a design pattern/accelerator. This specific repository is focused around providing comprehensive healthcare connectivity and routing of data.
- iDaaS-Connect is all about enabling connectivity to data. For ease of use and scale we have isolated each specific type of connectivity into its own specific solution. This repository is all about showcasing capabilities through software and is a value add.
Below please find a visual that does visualize the entire iDaaS capabilities set. The key thing to note is while each specific iDaaS capability is purpose built and designed for any type of customer public or hybrid cloud our focus is on meeting data where it is securely and at scale.
For all iDaaS design patterns it should be assumed that you will either install as part of this effort, or have the following:
- Java JDK Java is what everything is developed in. The current supported JDK release(s) are 1.8 and 11. OpenJDK Download Site
- An existing Kafka (or some flavor of it) up and running. Red Hat currently implements AMQ-Streams based on Apache Kafka;
however, we have implemented iDaaS with numerous Kafka implementations. Please see the following files we have
included to try and help:
Kafka
KafkaWindows
No matter the platform chosen it is important to know that the Kafka out of the box implementation might require some changes depending upon your implementation needs. Here are a few we have made to ensure:
In /config/consumer.properties file we will be enhancing the property of auto.offset.reset to earliest. This is intended to enable any new system entering the group to read ALL the messages from the start.
auto.offset.reset=earliest - Some understanding of building, deploying Java artifacts and the commands associated. If using Maven commands then Maven would need to be intalled and runing for the environment you are using. More details about Maven can be found here. This can all be done from an editor or command line, whatever the implementer is most comfortable with.
- An internet connection with active internet connectivity, this is to ensure that if any Maven commands are
run and any libraries need to be pulled down they can.
- Something to view Kafka topics with as you are developing, validating and implementing any solution.
In numerous cases we have seen some well documented issues with using IPV6. For all iDaaS design patterns/accelerators it should be assumed that you will either install as part of this effort, or have the following:
- Specific to iDaaS Connect HL7 design patterns/reference architecture IPv4 must be enabled at the OS level, IPv6 will cause connectivity issues and in many cases outright failure of the components to function.
https://access.redhat.com/solutions/8709 But here's the current specifics:
Disabling IPv6 in NetworkManager For all systems that run NetworkManager, IPv6 must be disabled on each interface with the option ipv6.method set to ignore (RHEL7) or disabled (RHEL8+). This step must be done in addition to IPv6 being disabled using the methods below. For RHEL 8 and later:
nmcli connection modify <Connection Name> ipv6.method "disabled" <br/>
(Replace <Connection Name> with interface)
AND
Create a new file named /etc/sysctl.d/ipv6.conf and add the following options:
# First, disable for all interfaces
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# If using the sysctl method, the protocol must be disabled all specific interfaces as well.
net.ipv6.conf.<interface>.disable_ipv6 = 1
The new settings would then need to be reloaded with the following command line command:
# sysctl -p /etc/sysctl.d/ipv6.conf
This section covers the running any of the design patterns/accelerators. There are several options to start the Engine Up!!!
In order for ANY processing to occur you must have a Kafka server running that this accelerator is configured to connect to.
Please see the following files we have included to try and help:
Kafka
KafkaWindows
Depending upon which iDaaS Connect components are being used there is a need to ensure that any third party software or services are up and running. This could be anything from external systems hosting files that you may be asked to pickup or external servers you will be connecting to, like FHIR servers.
This section covers how to get the application started.
- Maven: The following steps are needed to run the code. Either through your favorite IDE or command line
git clone <repo name>
For example:
git clone https://github.com/Project-Herophilus/iDaaS-Connect.git
You can either compile at the base directory or go to the specific iDaaS-Connect acceelerator. Specifically, you want to
be at the same level as the POM.xml file and execute the following command:
mvn clean install
You can run the individual efforts with a specific command, it is always recommended you run the mvn clean install first.
Here is the command to run the design pattern from the command line:
mvn spring-boot:run
Depending upon if you have every run this code before and what libraries you have already in your local Maven instance it could take a few minutes.
- Code Editor: You can right click on the Application.java in the /src/ and select Run
If you don't run the code from an editor or from the maven commands above. You can compile the code through the maven
commands above to build a jar file. Then, go to the /target directory and run the following command:
java -jar <jarfile>.jar
Each design pattern/accelerator has a unique and specific application.properties for its usage and benefit. Please make
sure to look at these as there is a lot of power in these and the goal is to minimize hard coded anything.
Leverage the respective application.properties file in the correct location to ensure the properties are properly set
and use a custom location. You can compile the code through the maven commands above to build a jar file. Then, go
to the /target directory and run the following command:
java -jar <jarfile>.jar --spring.config.location=file:./config/application.properties
Within each specific repository there is an administrative user interface that allows for monitoring and insight into the connectivity of any endpoint. Additionally, there is also the implementation to enable implementations to build there own by exposing the metadata. The data is exposed and can be used in numerous very common tools like Data Dog, Prometheus and so forth. This capability to enable would require a few additional properties to be set.
Below is a generic visual of how this looks (the visual below is specific to iDaaS Connect HL7):
Every asset has its own defined specific port, we have done this to ensure multiple solutions can be run simultaneously.
For all the URL links we have made them localhost based, simply change them to the server the solution is running on.
In order to assist anyone implementing or testing this specific reference architecture we have in the put a series of assets in place.
To ensure resources have a variety of data to leverage for complete testing into our main assets area. We have put testing data into specifically defined directories to ensure it is simply to find and leverage.
When it comes to any solution that leverages APIs they can be tested by leveraging our published Postman collections.
Here is the general invite to the PostmanCollection. Or, you can leverage the published PostmanCollections, they are named by community and specific reference architecture they support.
Below are the specific iDaaS Connect branded repositories designed to solve data connectivity issues.
BlueButton is intended to be a very specific implementation to support puling of data to support
several defined and specific government initiatives. We have implemented a reusable open source
design pattern to help meet this critical mandated set of requirements.
Blue Button Readme
EDI has been a standard around for decades, this repository does not introduce capabilities that compete
with capabilities vailable for claims processing or other EDI very specific needs. The intent
of this repository it to enable the processing of EDI data such as cliams and
Supply chain.
EDI Readme
FHIR is a modern based integration standard that has been adopted by the government to assist them in addressing new federal
mandates such as the Interoperability and Patient Access Rule. The iDaaS-Connect-FHIR component fully supports integrating to multiple
external vendor FHIR servers in a consistent design pattern manner.
FHIR Readme
HL7 is a very legacy based client server socket protocol.
HL7 Readme