library(testthat) library(rHL7) test_that("MSH segment writing works (round trip)", { msh_line <- "MSH|^~\\&|SAP-ISH|104|104|LEO|202301011200||ADT^A01|12345678|P|2.3" msh_data <- get_MSH(msh_line) # write it back written_line <- write_MSH(msh_data) # Comparing field by field to avoid string issues (trailing pipes) expect_equal(get_MSH(written_line)$MESSAGE_CONTROL_ID, "12345678") expect_equal(get_MSH(written_line)$VERSION_ID, "2.3") }) test_that("PID segment writing works (round trip)", { pid_line <- "PID|1||123^4^5||SMITH^JOHN|MOTHERS|19700101|M||RACE|ADDRESS||PHONE||LANG|MARITAL|RELIGION|ACCOUNT|SSN|DL" pid_data <- get_PID(pid_line) written_line <- write_PID(pid_data) # Verify some fields new_data <- get_PID(written_line) expect_equal(new_data$SET_ID, "1") expect_equal(new_data$PATIENT_NAME, "SMITH^JOHN") expect_equal(new_data$LAST_NAME, "SMITH") expect_equal(new_data$FIRST_NAME, "JOHN") }) test_that("OBX segment writing works (round trip)", { obx_line <- "OBX|1|NM|GLUCOSE^GLUCOSE|1|100|mg/dL|70-110|N|||F" obx_df <- get_OBX(obx_line) written_line <- write_OBX(obx_df) expect_equal(nchar(written_line) > 0, TRUE) expect_equal(get_OBX(written_line)$OBSERVATION_VALUE, "100") })