{"name":"@deckyard/astm","description":"The ASTM protocol of clinical lab instruments, E1381 / E1394 (CLSI LIS01-A2 / LIS02-A2): records, results, orders, host queries, and the low-level link over TCP or serial","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-astm.git","ref":"0.1.0","commit":"e9683baa29a56ff941566886830c0803b5ec65d6","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.26.0"},"capabilities":["net"],"keywords":["astm","lis","lis01","lis02","e1394"],"description":"The ASTM protocol of clinical lab instruments, E1381 / E1394 (CLSI LIS01-A2 / LIS02-A2): records, results, orders, host queries, and the low-level link over TCP or serial","publishedAt":"1794608574","repoId":1457146483,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/astm\n\n[![test](https://github.com/deckyard/deck-astm/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-astm/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-astm/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-astm)](https://github.com/deckyard/deck-astm/releases/latest)\n\nThe ASTM protocol of clinical laboratory instruments for\n[Jennifer](https://jennifer-lang.dev/) programs: ASTM E1381 / E1394, now\nCLSI LIS01-A2 (the low-level link) and LIS02-A2 (the records). Parse and\nbuild records and messages; read results, orders and host queries; answer\nqueries with orders; and move messages over TCP or a serial port with the\nLIS01 handshake, framing, checksums, retries, timers and contention, for a\nLIS or for an instrument simulator. Strict: a damaged frame is refused with\nNAK, records that break LIS02 are an error, and a device that differs from\nthe standard in a documented way gets a `Profile`, not leniency.\n\n**[Documentation](https://deckyard.github.io/deck-astm/)**\n\n## Install\n\n```sh\njvc add @deckyard/astm\n```\n\nThis vendors the deck to `vendor/\u003cscope\u003e/astm/`. Without `jvc`, unpack the\n`src/` subtree of a release archive (`\u003cscope\u003e-astm-\u003cversion\u003e.tar.gz`) there.\n\n## Usage\n\n```jennifer\nuse io;\n\nimport \"@deckyard/astm/\" as astm;\n\ndef link as astm.Link init astm.accept(astm.listen(\":4001\"), astm.profile());\nfor (def m in astm.receive($link, 60000)) {\n    for (def r in astm.results($m)) {\n        io.printf(\"%s %s = %s %s\\n\", $r.sampleId, $r.test, $r.value, $r.units);\n    }\n}\nastm.close($link);\n```\n\n## Requirements\n\nJennifer 0.26.0 or newer and the default `jennifer` binary: the deck needs\n`net`, which the stock `jennifer-tiny` lacks. A serial port needs Linux.\n\n## Development\n\n```sh\ntools/check-all.sh                   # the full gate, as CI runs it\njennifer test src/astm_test.j        # the tests, against a scripted peer\ntools/check-docs.sh                  # docs against the code\ntools/pack.sh dist                   # build the release archive\n```\n\n## Licence\n\nLGPL-3.0-only, see [LICENSE](LICENSE). Copyright (C) 2026 mplx \u0026lt;mplx@jennifer-lang.dev\u0026gt;.\n\n`tools/check-headers.sh` checks every source file's SPDX header against\n`deck.toml`.\n"}