{"id":15641,"date":"2022-02-10T16:13:00","date_gmt":"2022-02-10T21:13:00","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=15641"},"modified":"2023-06-21T11:37:11","modified_gmt":"2023-06-21T15:37:11","slug":"synthesizing-realistic-hl7-and-x12-test-data","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/","title":{"rendered":"Synthesizing Realistic HL7 and X12 Test Data"},"content":{"rendered":"<p><i><span style=\"font-weight: 400;\">In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the <\/span><\/i><a href=\"https:\/\/www.iri.com\/products\/rowgen\"><i><span style=\"font-weight: 400;\">IRI RowGen<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> test data generation software package to generate realistic messages in those (primarily healthcare-related) EDI file formats.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">The challenge of obtaining test data which complies with business rules and data privacy regulations is a familiar one for DBAs, developers and QA teams. Using production data for testing the functionality or capacity of an application may represent reality for testers, but what happens when that data contains PII? And what level of security is associated with the test environment?\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A common way to address this challenge is to use obfuscated or anonymized production data for testing, requiring you to <\/span><a href=\"https:\/\/www.iri.com\/solutions\/data-masking\"><span style=\"font-weight: 400;\">find and mask<\/span><\/a><span style=\"font-weight: 400;\"> all the sensitive data, something IRI DarkShield can do with <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/masking-phi-in-hl7-and-x12-files\/\"><span style=\"font-weight: 400;\">HL7 and X12 files<\/span><\/a><span style=\"font-weight: 400;\">. But such jobs can be time-consuming to design and run <\/span><a href=\"https:\/\/www.iri.com\/solutions\/data-masking\/hipaa\"><span style=\"font-weight: 400;\">in a HIPPA-compliant way<\/span><\/a><span style=\"font-weight: 400;\">, and there are security and tuning issues associated with reaching and masking large volumes of production data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For these reasons, it may be more efficient to synthesize HL7 or X12 messages in test files that can be used in developing and stress-testing an application (API, website, mobile app, etc.).<\/span><\/p>\n<p><a href=\"https:\/\/www.iri.com\/products\/rowgen\"><span style=\"font-weight: 400;\">IRI RowGen<\/span><\/a><span style=\"font-weight: 400;\"> is <\/span><a href=\"https:\/\/www.iri.com\/solutions\/test-data\"><span style=\"font-weight: 400;\">test data generation and management<\/span><\/a><span style=\"font-weight: 400;\"> software that can create realistic, but synthetic, datasets suitable for testing in many targets, which now also include HL7 or X12 flat (Electronic Data Interchange, or EDI) file formats.\u00a0 It is also possible to create FHIR files using JSON constructs; see below.<\/span><\/p>\n<h6><b>Structure of HL7\/X12 Message Structures<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">HL7 and X12 share several common features, as they both have highly standardized formats . HL7 and X12 messages are in rows that are referred to as segments. Within each segment there are fields. Each field is separated by a field delimiter.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Two field delimiters without any content between indicates an empty field. An empty field must still be present however, as the position of a field indicates the purpose of the field according to published standards.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15650 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_sample_x12.png\" alt=\"\" width=\"699\" height=\"234\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_sample_x12.png 854w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_sample_x12-300x100.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_sample_x12-768x257.png 768w\" sizes=\"(max-width: 699px) 100vw, 699px\" \/><i><span style=\"font-weight: 400;\">Sample X12 Message Example<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15653 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_segment-1024x381.jpg\" alt=\"\" width=\"701\" height=\"261\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_segment-1024x381.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_segment-300x112.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_segment-768x286.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_segment.jpg 1110w\" sizes=\"(max-width: 701px) 100vw, 701px\" \/><i><span style=\"font-weight: 400;\">Analysis of an X12 segment<\/span><\/i><i><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15654 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_full-1024x80.png\" alt=\"\" width=\"704\" height=\"55\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_full-1024x80.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_full-300x23.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_full-768x60.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_full.png 1165w\" sizes=\"(max-width: 704px) 100vw, 704px\" \/><i><span style=\"font-weight: 400;\">Sample HL7 message<\/span><\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15651 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_segment-1024x345.jpg\" alt=\"\" width=\"700\" height=\"236\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_segment-1024x345.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_segment-300x101.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_segment-768x259.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_hl7_segment.jpg 1110w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><i><span style=\"font-weight: 400;\">Analysis of an HL7 segment<\/span><\/i><\/p>\n<h6><b>Message Envelopes for X12 and Message Headers for HL7<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">Message envelopes (X12) and message headers (HL7) are special segments that accompany messages to indicate the purpose of the content of the message. In HL7, a message segment header contains the necessary information required by the receiving organization and must always precede the actual content of the message. In X12, a message envelope, true to its name, envelops the content of the message with preceding and trailing segments.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Below is an image that breaks down message envelopes and message headers:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15655 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_hl7_comparison-1024x448.jpg\" alt=\"\" width=\"699\" height=\"306\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_hl7_comparison-1024x448.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_hl7_comparison-300x131.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_hl7_comparison-768x336.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_x12_hl7_comparison.jpg 1110w\" sizes=\"(max-width: 699px) 100vw, 699px\" \/><i><span style=\"font-weight: 400;\">Comparison of X12 envelopes and HL7 message headers.<\/span><\/i><\/p>\n<h6><b>About RowGen<\/b><\/h6>\n<p><a href=\"https:\/\/www.iri.com\/blog\/test-data\/making-realistic-test-data-production\/\"><span style=\"font-weight: 400;\">IRI RowGen<\/span><\/a><span style=\"font-weight: 400;\"> was created to satisfy the need for realistic, but also possibly referentially correct, test data. When production data is not a viable avenue for procuring test data, RowGen can stand in the gap to provide realistic test data without the need for real data.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Using RowGen we can populate COBOL, <\/span><a href=\"https:\/\/www.iri.com\/blog\/test-data\/multi-format-test-data\/\"><span style=\"font-weight: 400;\">CSV,\/TSV, JSON, XML<\/span><\/a><span style=\"font-weight: 400;\">, <\/span><a href=\"https:\/\/www.iri.com\/blog\/etl\/sortcl-excel-processing-examples\/\"><span style=\"font-weight: 400;\">Excel<\/span><\/a><span style=\"font-weight: 400;\">, other flat files, and <\/span><a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/how-to-generate-db-test-data-2\/\"><span style=\"font-weight: 400;\">database tables<\/span><\/a><span style=\"font-weight: 400;\"> with referentially correct synthetic data. And now, RowGen can also generate semi-structured EDI files like <\/span><a href=\"https:\/\/www.iri.com\/blog\/etl\/sortcl-compatible-asn1-jobs\/\"><span style=\"font-weight: 400;\">ASN.1<\/span><\/a><span style=\"font-weight: 400;\"> (for CDRs), or HL7 and X12 (for healthcare transactions).<\/span><\/p>\n<h6><b>Using RowGen to Create HL7 &amp; X12 EDI Files<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">As mentioned previously, RowGen can generate realistic synthetic data in HL7 and X12 formats. There are some limitations to be aware of in these contexts, however.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You will first need to know how the EDI message must be structured ahead of time. For instance, an ADT (HL7) message will require certain segments to be present in a message while others are optional. <\/span><span style=\"font-weight: 400;\">In other words, knowledge of the structure of the individual segments and the fields in each segment are required, as well as the content and order of the fields within each segment.\u00a0 See this <\/span><a href=\"https:\/\/hl7-definition.caristix.com\/v2\/HL7v2.7.1\/TriggerEvents\"><span style=\"font-weight: 400;\">link<\/span><\/a><span style=\"font-weight: 400;\"> to learn more about HL7 formatting standards.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The second caveat is the need for external, pre-built <a href=\"https:\/\/www.iri.com\/blog\/test-data\/all-about-iri-set-files-a-primer\/\">set files<\/a> of data for the segment values from which RowGen can randomly select at generation time. Set files can contain one or more tab-delimited columns of data, and the RowGen project features in RowGen from which RowGen randomly selects at generation (test target population) time. Populating these set files with realistic data requires a bit of legwork on the part of the user.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15656 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_setexample.png\" alt=\"\" width=\"261\" height=\"534\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_setexample.png 261w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_setexample-147x300.png 147w\" sizes=\"(max-width: 261px) 100vw, 261px\" \/><i><span style=\"font-weight: 400;\">A set file generated from a list of fake medical providers from an online name generator.<\/span><\/i><\/p>\n<p>Lastly, it is important to understand that there is currently no readily available method that will allow you to apply business logic to the data placed in fields. In HL7 and X12 file contexts, business logic refers to values in one or more fields relating to values in other fields located in the same or different rows.<\/p>\n<p>For example, providing business logic for dates and times is difficult. In the MSH (message header segment) segment of an HL7 message there will be a field that provides a timestamp for when the message was sent out. Then in another segment further down, there is a field in the EVN (event) segment that indicates the date and time that an event occurred. The event (i.e. patient request or doctor\u2019s orders) was the trigger for sending a message. Obviously, it would not make sense for the date in MSH to precede the time provided in EVN.<\/p>\n<p>Currently, the only way to tackle this problem would be through environment variable manipulation or a custom external script (batch file, Python, Java, etc). With environment variable assignment you could assign values to fields ahead of time but there is less flexibility using this method. Conversely, custom scripts like Python can allow you to have \u201csmarter\u201d data generation. For instance, scripts could be used to decide the range of possible dates for a field based on the value of a date placed in another field previously.<\/p>\n<h6><b>Realistic Data from Set Files<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">For RowGen to generate realistic data in fields, set files will be essential. Set files are text files that store data in one or more columns separated by tabs. The IRI Workbench IDE (<\/span><a href=\"https:\/\/www.iri.com\/products\/workbench\/rowgen-gui\"><span style=\"font-weight: 400;\">GUI for RowGen<\/span><\/a><span style=\"font-weight: 400;\">) comes pre-installed with several <a href=\"https:\/\/www.iri.com\/blog\/iri\/iri-workbench\/creating-set-files-in-iri-workbench\/\">set file creation wizards<\/a> to help get you started, as set files can also be generated using a variety of different techniques for various types of data.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, built-in <\/span><a href=\"https:\/\/www.iri.com\/blog\/iri\/iri-workbench\/data-generation-rules-workbench\/\"><span style=\"font-weight: 400;\">data generation functions<\/span><\/a> run in RowGen and configured in RI Workbench can<span style=\"font-weight: 400;\">\u00a0synthesize email addresses, phone numbers, credit card numbers, dates and social security numbers out of the box.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Another option would be to extract values from tables, spreadsheets, csv, tsv, etc. and mask them using <\/span><a href=\"https:\/\/www.iri.com\/products\/fieldshield\"><span style=\"font-weight: 400;\">IRI FieldShield<\/span><\/a> <span style=\"font-weight: 400;\">or <a href=\"https:\/\/www.iri.com\/products\/darkshield\">IRI DarkShield<\/a>. Source-specific data masking examples are listed <\/span><a href=\"https:\/\/www.iri.com\/services\/training\/courseware#SDM\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finally, there is web scraping (web data harvesting), which can be performed programmatically or manually. Web scraping allows you to gather information from the internet by reading text located in a web page\u2019s HTML file. The RowGen-integrating <\/span><a href=\"https:\/\/www.iri.com\/ftp9\/pdf\/RowGen\/IRI-TDH_TDM_Solution2021.pdf\"><span style=\"font-weight: 400;\">Test Data Hub<\/span><\/a><span style=\"font-weight: 400;\"> from IRI partner Value Labs supports this, as do other tools like ParseHub, Scrapey, and Webhose.io.<\/span><\/p>\n<h6><b>About this Project<\/b><\/h6>\n<p><span style=\"font-weight: 400;\">To demonstrate how to generate HL7 and X12 messages, I will walk through a RowGen project that generates HL7 messages. Note that regardless of whether you are generating HL7, X12, etc., the implementation will be similar.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This project makes use of Data Definition Format (.ddf) field layout <\/span><a href=\"https:\/\/www.iri.com\/products\/cosort\/sortcl-metadata\"><span style=\"font-weight: 400;\">metadata<\/span><\/a><span style=\"font-weight: 400;\"> files used with RowGen (.rcl) and other <\/span><a href=\"https:\/\/www.iri.com\/products\/cosort\/sortcl\"><span style=\"font-weight: 400;\">SortCL<\/span><\/a><span style=\"font-weight: 400;\">-compatible jobs. IRI Workbench metadata discovery wizards like <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-the-metadata-discovery-wizard\/\"><span style=\"font-weight: 400;\">this one<\/span><\/a><span style=\"font-weight: 400;\"> can generate DDF files automatically.\u00a0<\/span><\/p>\n<h6><b>How the Project is Structured<\/b><\/h6>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15657 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_project_flows.jpg\" alt=\"\" width=\"699\" height=\"459\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_project_flows.jpg 998w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_project_flows-300x197.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_project_flows-768x504.jpg 768w\" sizes=\"(max-width: 699px) 100vw, 699px\" \/><i><span style=\"font-weight: 400;\">How the structure of the project flows<\/span><\/i><i><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">From a top to bottom view, we have a main HL7-generating .rcl (RowGen job) script that extracts entire segments from set files to write a complete HL7 message. The extracted segments were generated beforehand and placed in a folder called <\/span><i><span style=\"font-weight: 400;\">rows<\/span><\/i><span style=\"font-weight: 400;\"> using .rcl scripts that correspond to each segment. These .rcl scripts are kept in a folder called <\/span><i><span style=\"font-weight: 400;\">scripts<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note that it is the segment-generating scripts that ultimately determine whether you are building an HL7 or X12 message. You either want to build X12 segments for X12 messages or HL7 segments for HL7 messages.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Each segment-generating .rcl script in the <\/span><i><span style=\"font-weight: 400;\">scripts<\/span><\/i><span style=\"font-weight: 400;\"> folder uses a corresponding DDF file that is stored in a <\/span><i><span style=\"font-weight: 400;\">metadata<\/span><\/i><span style=\"font-weight: 400;\"> folder. The DDF files in the <\/span><i><span style=\"font-weight: 400;\">metadata<\/span><\/i><span style=\"font-weight: 400;\"> folder draws from set files stored in the <\/span><i><span style=\"font-weight: 400;\">sets<\/span><\/i><span style=\"font-weight: 400;\"> folder to populate the fields defined by the DDFs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To sum things up, a batch file will be used to execute all the segment-generating .rcl files and populate the <\/span><i><span style=\"font-weight: 400;\">rows<\/span><\/i><span style=\"font-weight: 400;\"> folder with set files containing the segments. After that, the batch file makes a final call to the main EDI-generating .rcl script that will draw from the set files containing the individual segments to create a completed message.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15659 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_infile_ddf_hl7-1024x585.jpg\" alt=\"\" width=\"700\" height=\"400\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_infile_ddf_hl7-1024x585.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_infile_ddf_hl7-300x171.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_infile_ddf_hl7-768x439.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_infile_ddf_hl7.jpg 1071w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><i>Infile DDF file for a HL7 segment<\/i><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15658 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_unique_hl7-1024x655.jpg\" alt=\"\" width=\"700\" height=\"448\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_unique_hl7-1024x655.jpg 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_unique_hl7-300x192.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_unique_hl7-768x492.jpg 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_unique_hl7.jpg 1089w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><i>A RowGen script to generate a unique HL7 segment and place it in a corresponding set file<\/i><\/p>\n<p>Below is the main RowGen (.rcl) job script that creates the entire HL7 message file from the generated segments stored in the <i>rows<\/i> folder:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15660 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3.png\" alt=\"\" width=\"649\" height=\"267\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3.png 900w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3-300x123.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3-768x316.png 768w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15662 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script2.png\" alt=\"\" width=\"650\" height=\"521\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script2.png 913w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script2-300x241.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script2-768x616.png 768w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-15660 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3.png\" alt=\"\" width=\"649\" height=\"267\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3.png 900w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3-300x123.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_entire_hl7_message_script3-768x316.png 768w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/p>\n<p>It is possible to configure what segments are generated in an HL7 message from a file called <i>config<\/i>. This configuration file allows you to determine what HL7 segment types will appear, and in what order they will appear, in the HL7 message.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15663 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_hl7_message.jpg\" alt=\"\" width=\"700\" height=\"377\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_hl7_message.jpg 976w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_hl7_message-300x162.jpg 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_rowgen_hl7_message-768x414.jpg 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><i>Snap shot of main RowGen job script that will synthesize the complete HL7 message<\/i><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-15664 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_config.jpg\" alt=\"\" width=\"224\" height=\"442\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_config.jpg 224w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_config-152x300.jpg 152w\" sizes=\"(max-width: 224px) 100vw, 224px\" \/><i>Contents of config file<\/i><\/p>\n<p>With the execution of the main HL7-generating .rcl file, a complete HL7 message is produced:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15665 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_full_hl7.png\" alt=\"\" width=\"649\" height=\"419\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_full_hl7.png 824w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_full_hl7-300x194.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/test_data_hl7_x12_full_hl7-768x496.png 768w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/p>\n<h6><b>In Closing<\/b><\/h6>\n<p>In this article we discussed how HL7 and X12 EDI-formatted files are structured, and demonstrated how to use IRI RowGen to create test message files in those formats. Generating realistic but safe EDI messages enables application testing that adheres to HIPAA standards.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package to generate realistic messages in those (primarily healthcare-related) EDI file formats. The challenge of obtaining test data which complies with business rules and data privacy regulations is a familiar<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\" title=\"Synthesizing Realistic HL7 and X12 Test Data\">Read More<\/a><\/div>\n","protected":false},"author":152,"featured_media":15647,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[29],"tags":[14,561,1670,1260,1669,526,238,1550,1668],"class_list":["post-15641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-test-data","tag-data-masking","tag-ddf","tag-hippa-compliance","tag-hl7","tag-hl7-test-data","tag-iri-rowgen","tag-real-test-data","tag-x12","tag-x12-test-data"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Synthesizing Realistic HL7 and X12 Test Data - IRI<\/title>\n<meta name=\"description\" content=\"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Synthesizing Realistic HL7 and X12 Test Data - IRI\" \/>\n<meta property=\"og:description\" content=\"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-10T21:13:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T15:37:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1110\" \/>\n\t<meta property=\"og:image:height\" content=\"624\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Adam Lewis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adam Lewis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\"},\"author\":{\"name\":\"Adam Lewis\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e\"},\"headline\":\"Synthesizing Realistic HL7 and X12 Test Data\",\"datePublished\":\"2022-02-10T21:13:00+00:00\",\"dateModified\":\"2023-06-21T15:37:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\"},\"wordCount\":1629,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg\",\"keywords\":[\"data masking\",\"DDF\",\"HIPPA compliance\",\"HL7\",\"hl7 test data\",\"IRI RowGen\",\"real test data\",\"X12\",\"x12 test data\"],\"articleSection\":[\"Test Data\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\",\"name\":\"Synthesizing Realistic HL7 and X12 Test Data - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg\",\"datePublished\":\"2022-02-10T21:13:00+00:00\",\"dateModified\":\"2023-06-21T15:37:11+00:00\",\"description\":\"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg\",\"width\":1110,\"height\":624},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Synthesizing Realistic HL7 and X12 Test Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e\",\"name\":\"Adam Lewis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g\",\"caption\":\"Adam Lewis\"},\"url\":\"https:\/\/beta.iri.com\/blog\/author\/adaml\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Synthesizing Realistic HL7 and X12 Test Data - IRI","description":"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/","og_locale":"en_US","og_type":"article","og_title":"Synthesizing Realistic HL7 and X12 Test Data - IRI","og_description":"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package","og_url":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/","og_site_name":"IRI","article_published_time":"2022-02-10T21:13:00+00:00","article_modified_time":"2023-06-21T15:37:11+00:00","og_image":[{"width":1110,"height":624,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","type":"image\/jpeg"}],"author":"Adam Lewis","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Adam Lewis","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/"},"author":{"name":"Adam Lewis","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e"},"headline":"Synthesizing Realistic HL7 and X12 Test Data","datePublished":"2022-02-10T21:13:00+00:00","dateModified":"2023-06-21T15:37:11+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/"},"wordCount":1629,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","keywords":["data masking","DDF","HIPPA compliance","HL7","hl7 test data","IRI RowGen","real test data","X12","x12 test data"],"articleSection":["Test Data"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/","url":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/","name":"Synthesizing Realistic HL7 and X12 Test Data - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","datePublished":"2022-02-10T21:13:00+00:00","dateModified":"2023-06-21T15:37:11+00:00","description":"In this article we will discuss how HL7 and X12 messages are structured, and demonstrate how to use the IRI RowGen test data generation software package","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","width":1110,"height":624},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/test-data\/synthesizing-realistic-hl7-and-x12-test-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Synthesizing Realistic HL7 and X12 Test Data"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/37c0e5beab094bd61cc521902df2876e","name":"Adam Lewis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/087667d0c75d33bb6fab6e734bd89333?s=96&d=blank&r=g","caption":"Adam Lewis"},"url":"https:\/\/beta.iri.com\/blog\/author\/adaml\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/02\/Rowgen_x12_hl7_thumbnail.jpg","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15641"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=15641"}],"version-history":[{"count":11,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15641\/revisions"}],"predecessor-version":[{"id":16485,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15641\/revisions\/16485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/15647"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=15641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=15641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=15641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}