emuhealth 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,6 +37,8 @@ All services listen on IPv4 loopback (`127.0.0.1`) by default. No config file ne
37
37
 
38
38
  Health and life science services use a fixed range starting at `http://localhost:4100`. Each health service keeps its port no matter which other services run or how many upstream services exist.
39
39
 
40
+ - **FHIR R4** on `http://localhost:4100` (create, read, update, JSON Patch, delete, versioning, `_history`, search, batch and transaction Bundles, and a CapabilityStatement at `/metadata`, `Patient/$everything`; starts with 5 generated synthetic patients; SMART App Launch with patient and practitioner pickers, an EHR launch simulator, PKCE, and scope and patient enforcement for presented tokens)
41
+
40
42
  Stripe webhooks configured with a secret include a `Stripe-Signature` header signed over the timestamp and raw request body.
41
43
 
42
44
  Slack event callbacks use `X-Slack-Request-Timestamp` and `X-Slack-Signature` when `slack.signing_secret` is configured. The signature is an HMAC-SHA256 over `v0:<timestamp>:<raw-body>`; configure the receiver with the same secret and verify against the unparsed request body. Existing event subscriptions remain unsigned when the secret is absent or empty.
@@ -37,3 +37,31 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37
37
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38
38
  SOFTWARE.
39
39
  ```
40
+
41
+ ## Clinical terminology
42
+
43
+ The emuhealth synthetic data generator in
44
+ `packages/@emuhealth/fhir-core/src/generator.ts` uses a small number of codes from
45
+ the following code systems to make generated records realistic. No full code
46
+ system is redistributed.
47
+
48
+ ### LOINC
49
+
50
+ This material contains content from LOINC (https://loinc.org). LOINC is
51
+ copyright Regenstrief Institute, Inc. and the Logical Observation Identifiers
52
+ Names and Codes (LOINC) Committee and is available at no cost under the license
53
+ at https://loinc.org/license. LOINC® is a registered United States trademark of
54
+ Regenstrief Institute, Inc.
55
+
56
+ ### RxNorm
57
+
58
+ This product uses publicly available data from the U.S. National Library of
59
+ Medicine (NLM), National Institutes of Health, Department of Health and Human
60
+ Services; NLM is not responsible for the product and does not endorse or
61
+ recommend this or any other product.
62
+
63
+ ### ICD-10-CM and CVX
64
+
65
+ ICD-10-CM codes are published by the National Center for Health Statistics and
66
+ CVX codes by the Centers for Disease Control and Prevention. Both are U.S.
67
+ government works in the public domain.
package/dist/api.d.ts CHANGED
@@ -249,7 +249,7 @@ declare function defineConfig<Definitions extends Record<string, EmulatorDefinit
249
249
  tokens?: EmulateConfig["tokens"];
250
250
  }): typeof config;
251
251
 
252
- declare const HEALTH_SERVICE_NAME_LIST: readonly [];
252
+ declare const HEALTH_SERVICE_NAME_LIST: readonly ["fhir"];
253
253
  type HealthServiceName = (typeof HEALTH_SERVICE_NAME_LIST)[number];
254
254
 
255
255
  declare const SERVICE_NAME_LIST: readonly ["vercel", "github", "google", "slack", "apple", "microsoft", "okta", "aws", "resend", "stripe", "mongoatlas", "clerk", "linear", "twilio"];
package/dist/api.js CHANGED
@@ -1940,9 +1940,35 @@ function defineConfig(config) {
1940
1940
  }
1941
1941
 
1942
1942
  // src/registry-health.ts
1943
- var HEALTH_SERVICE_NAME_LIST = [];
1943
+ var HEALTH_SERVICE_NAME_LIST = ["fhir"];
1944
1944
  var HEALTH_SERVICE_NAMES = HEALTH_SERVICE_NAME_LIST;
1945
- var HEALTH_SERVICE_REGISTRY = {};
1945
+ var HEALTH_SERVICE_REGISTRY = {
1946
+ fhir: {
1947
+ label: "FHIR R4 server emulator",
1948
+ endpoints: "create, read, vread, update (including create on update), JSON Patch, logical delete, _history, search with includes and chaining, batch and transaction Bundles, CapabilityStatement at /metadata, Patient/$everything, SMART App Launch, ETag and If-Match, generated synthetic patients",
1949
+ async load() {
1950
+ const mod = await import("./dist-NSZJMYCW.js");
1951
+ return { plugin: mod.fhirPlugin, seedFromConfig: mod.seedFromConfig };
1952
+ },
1953
+ defaultFallback() {
1954
+ return { login: "fhir-user", id: 1, scopes: [] };
1955
+ },
1956
+ initConfig: {
1957
+ fhir: {
1958
+ generate: { patients: 5, seed: 1 },
1959
+ resources: [
1960
+ {
1961
+ resourceType: "Patient",
1962
+ id: "synthetic-patient-1",
1963
+ name: [{ family: "Example", given: ["Jamie"] }],
1964
+ gender: "female",
1965
+ birthDate: "1980-01-01"
1966
+ }
1967
+ ]
1968
+ }
1969
+ }
1970
+ }
1971
+ };
1946
1972
  var HEALTH_PORT_OFFSET = 100;
1947
1973
  function defaultServicePort(service, basePort, index, healthNames = HEALTH_SERVICE_NAMES) {
1948
1974
  const healthIndex = healthNames.indexOf(service);