{"id":19514,"date":"2023-04-28T13:11:50","date_gmt":"2023-04-28T07:41:50","guid":{"rendered":"http:\/\/13.234.18.93\/?p=19514"},"modified":"2023-06-26T14:12:06","modified_gmt":"2023-06-26T08:42:06","slug":"hl7-vs-smart-on-fhir","status":"publish","type":"post","link":"https:\/\/techvariable.com\/blogs\/hl7-vs-smart-on-fhir","title":{"rendered":"HL7 vs Smart On FHIR: Which is the better choice?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"19514\" class=\"elementor elementor-19514\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aad0c35 e-con-full e-flex e-con e-parent\" data-id=\"aad0c35\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9cace73 e-con-full e-flex e-con e-parent\" data-id=\"9cace73\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c138c9e elementor-widget elementor-widget-table-of-contents\" data-id=\"c138c9e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_offset&quot;:100,&quot;sticky_parent&quot;:&quot;yes&quot;,&quot;container&quot;:&quot;#hl7_vs_smart&quot;,&quot;sticky_effects_offset&quot;:100,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;sticky_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_anchor_link_offset&quot;:0}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<div class=\"elementor-toc__header-title\">\n\t\t\t\tSUMMARY\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__c138c9e\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-039d44b e-con-full e-flex e-con e-parent\" data-id=\"039d44b\" data-element_type=\"container\" data-e-type=\"container\" id=\"hl7_vs_smart\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b4bf6b elementor-widget elementor-widget-heading\" data-id=\"9b4bf6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">HL7 vs Smart On FHIR: Which is the better choice?<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c81245b elementor-widget elementor-widget-text-editor\" data-id=\"c81245b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Healthcare organizations around the world depend on electronic health record (EHR) systems to manage patient data. These systems use different data exchange standards, such as HL7 and SMART on FHIR, to ease the process of exchanging data between systems.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">Both of these standards serve different purposes, and hence not in the field directly when it comes to being the better choice. This blog will explore and provide technical details about each standard. <\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-abf16a8 elementor-widget elementor-widget-image\" data-id=\"abf16a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/Artboard-1-1.png\" title=\"\" alt=\"hl7 vs SMART on FHIR\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a8a150 elementor-widget elementor-widget-heading\" data-id=\"4a8a150\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What is HL7 (Health Level Seven)?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd3938c elementor-widget elementor-widget-text-editor\" data-id=\"dd3938c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tMessaging standard, HL7, is used to transfer medical data across various platforms. It has been several years since Health Level Seven International created this standard, and it has evolved to accommodate the varying requirements of the healthcare sector.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-549f6d9 elementor-widget elementor-widget-text-editor\" data-id=\"549f6d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">There are two message formats covered under this head:\u00a0<\/span><\/p><ul><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The HL7 v2.x messaging format uses a message structure that includes segments delimited by pipes (&#8220;|&#8221;). Each segment contains one or more fields delimited by a caret (&#8220;^&#8221;). HL7 v2.x messages are exchanged over a network using the TCP\/IP protocol.<\/span><\/li><li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">The HL7 FHIR (Fast Healthcare Interoperability Resources) format is a newer standard that uses a RESTful web services architecture, thus, designed to be more flexible and easier to use than HL7 v2.x. FHIR resources are represented as JSON or XML documents, which can be accessed using standard HTTP methods (GET, POST, PUT, DELETE).\u00a0<\/span><\/li><\/ul><p>\u00a0<\/p><p><span style=\"font-weight: 400;\">HL7 v2.x is a legacy standard and a complex messaging format that requires significant expertise for use and even requires specialized software for handling. In contrast, HL7 FHIR is more user-friendly.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cc0987f e-flex e-con-boxed e-con e-parent\" data-id=\"cc0987f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a4c7b3 elementor-align-start elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"5a4c7b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/techvariable.com\/blogs\/hl7-and-fhir-significance-in-healthcare\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Before we dive deep into the standards, we need to know the\u00a0significance of HL7 and FHIR in healthcare.<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-573f084 elementor-widget elementor-widget-heading\" data-id=\"573f084\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What is SMART (Substitutable Medical Applications and Reusable Technologies) on FHIR?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e17585 elementor-widget elementor-widget-text-editor\" data-id=\"4e17585\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The SMART on FHIR standard offers a framework for creating secure and functioning apps linked with EHR systems. SMART Health IT is behind the development of the standard and based on the HL7 FHIR standard.<\/p><p>Authorization and authentication are done through OAuth 2.0. The apps must be registered with a SMART on FHIR authorization server to obtain an access token before accessing patient data.<\/p><p>The SMART on FHIR API includes several key components, including the Launch Sequence used to launch apps within an EHR system. The Launch Sequence involves several steps, such as obtaining an authorization code, exchanging the obtained code for an access token, and redirecting the user to the app.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7d7675 elementor-widget elementor-widget-heading\" data-id=\"b7d7675\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What is the basic difference between the two systems?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ced692b elementor-widget elementor-widget-text-editor\" data-id=\"ced692b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tThe primary difference is the process involved. HL7 is a messaging standard, while SMART on FHIR is an API standard. An API defines how software sends and receives service requests, while a messaging standard configures the process of sending information from one system to another. \t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e4eb7d0 e-flex e-con-boxed e-con e-parent\" data-id=\"e4eb7d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c9da5c elementor-widget elementor-widget-text-editor\" data-id=\"0c9da5c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tIn short, HL7 aids the exchange of messages between systems, while SMART on FHIR helps develop and deploy apps that can access patient data from EHR systems.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7d225d elementor-widget elementor-widget-text-editor\" data-id=\"f7d225d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tHL7 offers a framework for the sharing, retrieval, integration, and interchange of electronic health data. SMART on FHIR is a platform that uses cutting-edge web technologies like HTML5 and JavaScript to give developers a standardized interface for creating and deploying software that can be used with electronic health record (EHR) systems. It enables programmers to create software that can run inside EHRs and communicate with patient data using FHIR (Fast Healthcare Interoperability Resources).\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60d168b elementor-widget elementor-widget-heading\" data-id=\"60d168b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The technical difficulty in implementing the two processes<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5adeb36 elementor-widget elementor-widget-text-editor\" data-id=\"5adeb36\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tHL7 has evolved with time, thereby different versions are in use, making it challenging to ensure compatibility between various systems. Similarly, SMART on FHIR is a relatively new standard and is continually developing, and there may be compatibility problems between various versions. \t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b99e684 elementor-widget elementor-widget-text-editor\" data-id=\"b99e684\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tSo, it&#8217;s necessary for developers to stay current with any new innovations. Additionally, ensuring the security and privacy of patient data is a challenge when implementing SMART on FHIR because the built apps have access to sensitive patient data.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8906f9 elementor-widget elementor-widget-heading\" data-id=\"a8906f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Sample Implementation<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b57a8c5 elementor-widget elementor-widget-text-editor\" data-id=\"b57a8c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tWe will discuss similar instances with the two standards to show the implementation process. \t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-809d97d elementor-widget elementor-widget-heading\" data-id=\"809d97d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">HL7 using Express.js and React.js with functional components<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc09dd3 elementor-widget elementor-widget-text-editor\" data-id=\"fc09dd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li aria-level=\"1\"><b>Setting up the Express.js Server:<\/b><\/li><\/ul><p><span style=\"font-weight: 400;\">\u00a0We first imported the HL7 package and the express module, then created an Express.js app and an HL7 server. The server.on() method was used to listen for the message event, which was emitted whenever a new message is received. Next, we simply logged the message to the console, started the server, and listened for incoming connections on port 3000.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e91a336 elementor-widget elementor-widget-image\" data-id=\"e91a336\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image7.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-713d6b7 elementor-widget elementor-widget-text-editor\" data-id=\"713d6b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li aria-level=\"1\"><b>Creating the React.js Client:<\/b><\/li><\/ul><p><span style=\"font-weight: 400;\">We developed a React.js functional component named App. To control the message and response&#8217;s state, we used the useState hook. When a user inputted text in the input field, the handleChange() function updated the message state.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">The handleSubmit() function was invoked when a user submitted a form. Inside this function, we created a TCP socket using the net. createConnection() method, and sent the message to the HL7 server using the client.write() method.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">We then listened for incoming data on the socket using the data event and updated the response state with the ACK message. Finally, we rendered the form and the response in the component.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d6e4c54 elementor-widget elementor-widget-image\" data-id=\"d6e4c54\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image4.png\" title=\"\" alt=\"creating react.js client\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c4b3d1 elementor-widget elementor-widget-text-editor\" data-id=\"9c4b3d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n \t<li aria-level=\"1\"><b>Sample response<\/b><\/li>\n<\/ul>\n<span style=\"font-weight: 400;\">The response from the HL7 server was a string containing the ACK message in HL7 format. Here is an example of an ACK message:<\/span>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16b9d56 elementor-widget elementor-widget-image\" data-id=\"16b9d56\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image5.png\" title=\"\" alt=\"sample response\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f891bf0 elementor-widget elementor-widget-text-editor\" data-id=\"f891bf0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tIn the React.js component, we rendered the response as a pre-tag to preserve the formatting of the message.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f93716e elementor-widget elementor-widget-heading\" data-id=\"f93716e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">SMART on FHIR using Express.js and React.js with functional components<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5ba312 elementor-widget elementor-widget-text-editor\" data-id=\"f5ba312\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><strong>Setting up Express.js Server<\/strong><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7aa902c elementor-widget elementor-widget-image\" data-id=\"7aa902c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image1.png\" title=\"\" alt=\"setting express.js server in functional component\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ef57f0 elementor-widget elementor-widget-text-editor\" data-id=\"4ef57f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">In this case, we first imported the express, cors, and FHIR client modules. Then we created an Express.js app and used the Cross middleware to allow cross-origin requests. We then defined two routes: \/launch and \/redirect.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">The \/launch route initiated the SMART on FHIR authorization flow. The redirect Uri, state, and client parameters were defined. Then, the authorize() function was called from the FHIRclient module to obtain an access token. We then redirected the user to the authorization server using the client.tokenResponse.url property.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">The \/redirect route handled the callback from the authorization server. We sent an HTML file with JavaScript to extract the access token from the URL and pass it back to the React.js client. Finally, we started the server and listened for incoming connections on port 3000.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9630db elementor-widget elementor-widget-text-editor\" data-id=\"a9630db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li><b>Creating the React.js Client:<\/b><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a6c9c4 elementor-widget elementor-widget-image\" data-id=\"2a6c9c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image8.png\" title=\"\" alt=\"creating react.js client in functional component\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20492a4 elementor-widget elementor-widget-text-editor\" data-id=\"20492a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">We started by creating a functional React.js component called App and imported the React, useState, useEffect, and fhirclient modules. We then defined a state variable called patientName using the useState hook. The useEffect hook defined an asynchronous function called launch, which initiated the SMART on FHIR authorization flow using the FHIR.oauth2.init() function from the fhirclient module.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">Once the access token was obtained we made a Patient request using the client.request() function and set the patientName state variable to the patient&#8217;s name. Finally, we returned some simple JSX that displayed a welcome message with the patient&#8217;s name, or a loading message if the patient&#8217;s name is not yet available. <\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e0110b elementor-widget elementor-widget-text-editor\" data-id=\"3e0110b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">We needed to install the express, cors, fhirclient, and React modules to run this app.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-683b0ba elementor-widget elementor-widget-image\" data-id=\"683b0ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image2.png\" title=\"\" alt=\"install express\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b95e4af elementor-widget elementor-widget-text-editor\" data-id=\"b95e4af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">To extract the access token from the URL and pass it back to the React.js client, we needed to create a public\/redirect.html file with the following code :<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f1bdfb elementor-widget elementor-widget-image\" data-id=\"9f1bdfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image6.png\" title=\"\" alt=\"redirect.html file\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f79a78a elementor-widget elementor-widget-text-editor\" data-id=\"f79a78a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Once everything had been set up, we started the Express.js server, followed by the React.js client:<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c9c66ac elementor-widget elementor-widget-image\" data-id=\"c9c66ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image3.png\" title=\"\" alt=\"start express\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-912e604 elementor-widget elementor-widget-image\" data-id=\"912e604\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/techvariable.com\/wp-content\/uploads\/2023\/04\/image9.png\" title=\"\" alt=\"start react\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa15753 elementor-widget elementor-widget-text-editor\" data-id=\"aa15753\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Now, we were able to navigate to http:\/\/localhost:3000 in our web browser and saw a welcome message with the patient&#8217;s name.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54e6fde elementor-widget elementor-widget-heading\" data-id=\"54e6fde\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">So, which standard is a better choice when it comes to exchanging data from EHR systems?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-53e5181 elementor-widget elementor-widget-text-editor\" data-id=\"53e5181\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Realizing the full potential of electronic health information systems requires enabling the seamless flow of healthcare data among apps and systems. HL7 has long been a well-liked alternative. However, because SMART on FHIR APIs are more streamlined, contemporary, and adaptable than HL7, all the major EHR systems, including Epic, Cerner, and Allscripts, have integrated it into their platforms.\u00a0<\/span><\/p><p>\u00a0<\/p><p><span style=\"font-weight: 400;\">Predominantly, the individual use case and requirements of the relevant healthcare organization will determine whether to use HL7 or SMART on FHIR. Both are data standards and by implementing them together, we can get an answer to the interoperability conundrum.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-acde45e e-con-full e-flex e-con e-parent\" data-id=\"acde45e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-3bad531 e-con-full animated-slow e-flex elementor-invisible e-con e-parent\" data-id=\"3bad531\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-969d120 e-con-full e-flex e-con e-parent\" data-id=\"969d120\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9534ae7 elementor-widget elementor-widget-heading\" data-id=\"9534ae7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Still unsure which would be the perfect choice for your app? Talk to our experts.<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-27a97e4 e-flex e-con-boxed e-con e-parent\" data-id=\"27a97e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-02a5836 elementor-align-center my-btn elementor-widget__width-initial elementor-mobile-align-center elementor-tablet-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"02a5836\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/techvariable.com\/contact-us\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book a call<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Healthcare organizations around the world depend on electronic health record (EHR) systems to manage patient data. These systems use different data exchange standards, such as HL7 and SMART on FHIR, to ease the process of exchanging data between systems. <\/p>\n<p>Both of these standards serve different purposes, and hence not in the field directly when it comes to being the better choice. This blog will explore and provide technical details about each standard.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"h5ap_radio_sources":[],"footnotes":""},"categories":[8,9,76],"tags":[],"class_list":["post-19514","post","type-post","status-publish","format-standard","hentry","category-blogs","category-healthcare","category-home-feature-2"],"acf":[],"_links":{"self":[{"href":"https:\/\/techvariable.com\/index.php?rest_route=\/wp\/v2\/posts\/19514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvariable.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvariable.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvariable.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvariable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19514"}],"version-history":[{"count":0,"href":"https:\/\/techvariable.com\/index.php?rest_route=\/wp\/v2\/posts\/19514\/revisions"}],"wp:attachment":[{"href":"https:\/\/techvariable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvariable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvariable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}