# `HL7v2.Profiles.IHE`
[🔗](https://github.com/Balneario-de-Cofrentes/hl7v2/blob/v3.10.1/lib/hl7v2/profiles/ihe.ex#L1)

Pre-built IHE conformance profiles for HL7 v2.x transactions.

Each profile is a `%HL7v2.Profile{}` preconfigured with the
constraints from the IHE Technical Framework for its transaction.
Use them directly with `HL7v2.validate/2` or
`HL7v2.Validation.ProfileRules.check/2`.

## Coverage

This module ships profiles across five IHE specifications:

| Spec | Category | Transactions |
|---|---|---|
| **IHE ITI** | PAM (Patient Administration Management) | ITI-30, ITI-31 |
| **IHE ITI** | PIX (Patient Identifier Cross-Reference) | ITI-8, ITI-9, ITI-10 |
| **IHE ITI** | PDQ (Patient Demographics Query) | ITI-21, ITI-22 |
| **IHE PaLM** | LTW (Laboratory Testing Workflow) | LAB-1, LAB-3 |
| **IHE RAD** | SWF (Scheduled Workflow) | RAD-1, RAD-4 |

See the individual sub-modules (`HL7v2.Profiles.IHE.PAM`,
`HL7v2.Profiles.IHE.PIX`, etc.) for the transaction-level factory
functions.

## Example

    profile = HL7v2.Profiles.IHE.PAM.iti_31_adt_a01()
    {:ok, msg} = HL7v2.parse(wire, mode: :typed)
    HL7v2.validate(msg, profile: profile)

Or look up by IHE transaction code:

    catalog = HL7v2.Profiles.IHE.all()
    profile = Map.fetch!(catalog, "ITI-31.A01")

## Disclaimer

The profiles encode the public constraints from the IHE Technical
Framework Volume 2 documents at the time of this release. IHE
updates its TFs regularly — consult the latest published version
at [profiles.ihe.net](https://profiles.ihe.net) for any
clarification, and feel free to compose additional constraints on
top of these profiles with the full `HL7v2.Profile` DSL.

# `all`

```elixir
@spec all() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the full IHE profile catalog as a map keyed by IHE
transaction code (e.g. `"ITI-31.A01"`, `"LAB-3"`, `"RAD-4"`).

The exact set grows over time. Callers should not assume the
cardinality is fixed.

# `ltw`

```elixir
@spec ltw() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the LTW (Laboratory Testing Workflow) profile catalog —
LAB-1 (Placer Order Management, v2.5.1) and LAB-3 (Order Results
Management, v2.5.1).

# `pam`

```elixir
@spec pam() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the PAM (Patient Administration Management) profile
catalog — ITI-30 and ITI-31 transactions.

# `pdq`

```elixir
@spec pdq() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the PDQ (Patient Demographics Query) profile catalog —
ITI-21 (Query/Response, v2.5) and ITI-22 (Visit Query/Response,
v2.5).

# `pix`

```elixir
@spec pix() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the PIX (Patient Identifier Cross-Reference) profile
catalog — ITI-8 (Feed, v2.3.1), ITI-9 (Query/Response, v2.5),
and ITI-10 (Update Notification, v2.5).

# `rad_swf`

```elixir
@spec rad_swf() :: %{required(String.t()) =&gt; HL7v2.Profile.t()}
```

Returns the RAD-SWF (Radiology Scheduled Workflow) profile
catalog — RAD-1 (Patient Registration, v2.3.1) and RAD-4
(Procedure Scheduled, v2.5.1 OMI^O23).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
