Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 22 additions & 0 deletions .cursor/rules/ascii-source.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
description: Tracked source and docs must be ASCII only
alwaysApply: true
---

# ASCII source

Every file you **add or edit** must be **ASCII only** (bytes 0x00-0x7F). Scan touched paths before finishing.

Replace:

| Non-ASCII | ASCII |
| ------------------ | ----------- |
| em/en dash, minus | `-` |
| ellipsis | `...` |
| curly quotes | `'` / `"` |
| arrows | `->` / `<-` |
| non-breaking space | space |

Do not introduce Unicode symbols, emoji, or locale punctuation in code, comments, XML, or docs.

WSDL/XSD copied from the licensed toolkit may contain non-ASCII. Do not add more. Prefer ASCII in files you author.
54 changes: 54 additions & 0 deletions .cursor/rules/documentation-standards.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
description: Documentation and build scripts - implementor-first, Maven Central default, no secrets
alwaysApply: true
---

# Documentation and build scripts

Applies when writing or editing **README**, **CONTRIBUTING**, integrator guides, **SECURITY**, release notes, **build.*** / **build.xml** header comments, **settings.xml.example**, **local.properties.example**, and similar tracked material.

## Priority: implementors

- Primary audience: developers **consuming** published Maven artifacts.
- Contributor/maintainer workflow lives in **CONTRIBUTING.md**, **MAINTAINERS.md**, or labelled subsections - not mixed into the integrator main flow.
- Do not duplicate agent workflow in README or CONTRIBUTING (**AGENTS.md** -> `.cursor/rules/`).

## Default narrative: Maven Central

- Write as if **released** coordinates are on Maven Central (no SNAPSHOT, sibling-repo checkout, or `-P...` profiles in the main integrator path).
- Use **version numbers** in integrator docs - not Git branch names.
- SNAPSHOT installs, optional Maven profiles, licensed WSDL for source builds, and sibling `mvn install` belong under **Local development** / **Local builds** only.

## Structure

| Where | What |
| ----- | ---- |
| README / integrator docs | Dependency, runtime config, capabilities |
| Local development | Unpublished builds, SNAPSHOT, profiles, source-tree prerequisites |
| By OS (when needed) | Separate **Windows**, **macOS**, **Linux** blocks (wrappers, cleanup, path notes) |

## Paths

- **Relative paths only** (e.g. `wsdls/xml`, `./certs/<folder>/`, `pom.xml` beside repo root).
- **Never** hardcode machine paths (`C:\...`, `/Users/...`, `~/`, worktree folders) in tracked docs.
- Override only when strictly required to remove ambiguity - say why.

## Current state only

- No migration, legacy, or branch-history commentary in user-facing docs.
- Describe **what is true now**; omit "removed", "used to", and repo archaeology in integrator material.
- **CHANGELOG** entries: current release capabilities; avoid branch names and migration essays in new notes.

## Secrets - MUST NOT

- **Never** put real or plausible **passwords**, **tokens**, **API keys**, **private keys**, or **keystore passphrases** in tracked files (code, comments, examples, docs).
- Use placeholders (`<pkcs12-password>`), empty values in `.example` files, or "from your registration pack".
- See **SECURITY.md**.

## ASCII source

All tracked files you add or change must be **ASCII only**. See **`ascii-source.mdc`**.

## Override

These rules may be overridden **only when necessary** to clear ambiguity (e.g. maintainer branch mapping in **MAINTAINERS.md** or `.cursor/rules/`, clearly labelled maintainer-only).
20 changes: 10 additions & 10 deletions .cursor/rules/mhr-b2b-project.mdc
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
---
description: MHR B2B client scope, WSDL policy, Java 8 javax build
description: MHR B2B client scope, WSDL policy, Java 11 Jakarta build
alwaysApply: true
---

# mhr-b2b-client-java (Java 8 / javax)
# mhr-b2b-client-java (Java 11 / Jakarta)

My Health Record **PCEHR B2B** client — **not** Healthcare Identifiers (HI). Do **not** reference **`myhr-b2b-client-java`** or other aggregator/unified client projects in docs or comments. End-user docs: **`README.md`**, **`ADHA-THIRD-PARTY-SCOPE.md`**, **`MAINTAINERS.md`**. Agent WSDL/facade matrix: **`.cursor/WSDL-CLIENT-PURPOSES.md`** (gitignored).

## Release line (integrator docs use Maven Central versions only)

| Version | Java | APIs | Facades |
| ---- | ---- | ---- | ---- |
| **1.6.3** | 8 | javax | **15** (12 WSDLs; three WSDLs each used by two facades) |
| Version | Java | APIs | Facades |
| ---------- | ---- | ------- | ------------------------------------------------------- |
| **11.0.0** | 11 | Jakarta | **15** (12 WSDLs; three WSDLs each used by two facades) |

**This checkout:** **`1.6.3-SNAPSHOT`** **`au.gov.nehta:pcehr-compiled-wsdl`** at **`${project.version}`**; Java **8** / **`javax.*`**.
**This checkout:** **`11.0.0-SNAPSHOT`** - **`au.gov.nehta:mhr-wsdl`** at **`${project.version}`**; Java **11** / **Jakarta** XML APIs.

## WSDL/XSD (committed in Git)

PCEHR B2B WSDL/XSD under `wsdls/src/main/resources/` are **not** separate ADHA-licensed artefacts (unlike HI in hi-b2b-client-java). **Keep them in Git** for reference and for **`pcehr-compiled-wsdl-java`**. Compile against **`au.gov.nehta:pcehr-compiled-wsdl`** at **`pcehr.wsdl.version`** = **`${project.version}`** install matching **`pcehr-compiled-wsdl-java`** first. **Six** view facades under `clients.view`; seven **`getView`** types **`ADHA-THIRD-PARTY-SCOPE.md`**. Optional Ant **`wsimport`** under **`wsdls/`** (not part of default **`mvn verify`**).
PCEHR B2B WSDL/XSD under `wsdls/src/main/resources/` are **not** separate ADHA-licensed artefacts (unlike HI in hi-b2b-client-java). **Keep them in Git** for reference and for **`mhr-wsdl-java`**. Compile against **`au.gov.nehta:mhr-wsdl`** at **`mhr.wsdl.version`** = **`${project.version}`** - install matching **`mhr-wsdl-java`** first. **Six** view facades under `clients.view`; seven **`getView`** types - **`ADHA-THIRD-PARTY-SCOPE.md`**. Optional Ant **`wsimport`** under **`wsdls/`** (not part of default **`mvn verify`**).

## Build

- JDK **8**: install sibling **`pcehr-compiled-wsdl-java`** at the same version, then `mvn -B "-Dgpg.skip=true" clean verify`
- JAX-WS: **`com.sun.xml.ws:jaxws-rt` 2.3.7** not legacy Metro **`webservices-*`**
- Enforcer bans Metro **`webservices-*`** (application code uses **`javax.*`** only)
- JDK **11**: install sibling **`mhr-wsdl-java`** at the same version, then `mvn -B "-Dgpg.skip=true" clean verify`
- JAX-WS: **`com.sun.xml.ws:jaxws-rt` 4.0.5** - not legacy Metro **`webservices-*`**
- Enforcer bans Metro **`webservices-*`** and legacy **`javax.xml.ws`**, **`javax.xml.bind`**, and **`javax.xml.soap`**
- Default Surefire: offline tests; **`-Pintegration`** for mutual-TLS suite
- Strict Javadoc: **`doclint=all`**, **`failOnWarnings=true`**

Expand Down
37 changes: 37 additions & 0 deletions .cursor/rules/worktrees.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
description: Git worktrees are local only; integrator docs use Maven versions, not paths or branches
alwaysApply: true
---

# Worktrees (local convenience only)

**`git worktree`** lets a maintainer check out multiple branches of the **same repository** at once. Worktree **directory paths are machine-specific** and must **not** appear in tracked documentation.

## What tracked docs describe

Follow **`documentation-standards.mdc`** (implementor-first, Maven Central default).

| Doc | Audience | Use |
| --- | -------- | --- |
| **README**, integrator guides | Implementors | **Maven version** (`11.0.0`), Central coordinates, runtime config |
| **CONTRIBUTING** | Contributors | Build from source, **Local builds**, OS-specific steps |
| **MAINTAINERS**, **`.cursor/rules/`** | Maintainers | POM/wsimport internals; **branch mapping** only when labelled maintainer-only |

Integrator docs: **version numbers**, not Git branch names. Local/SNAPSHOT/profile flows: **CONTRIBUTING** only.

## Do not put in tracked docs

- Hardcoded worktree or machine paths (`wt/`, `C:\...`, `/Users/...`, `~/`, `this worktree`, `primary clone`)
- References to **`wt/README.md`** or other local-only layout files
- "Open folder X to switch branches" - IDE/local workflow, not repo documentation

## Allowed (maintainer-only, when labelled)

- **Git branch mapping** table (version -> branch) in **MAINTAINERS.md** or agent rules
- Generic worktree example only: `git worktree add <path> <branch>` (placeholder **`<path>`**, never a committed example)
- Optional **untracked** local notes outside the repo

## When editing docs

1. Identify the **Maven version / release line** the text applies to, not the worktree folder Cursor has open.
2. Remove or rewrite any committed worktree path tables or branch names in integrator-facing files.
20 changes: 15 additions & 5 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
* text=auto eol=lf

*.class binary
*.jar binary
*.jks binary
*.zip binary

*.md text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.xsd text eol=lf
*.wsdl text eol=lf
*.jxb text eol=lf
*.java text eol=lf
*.properties text eol=lf
*.sh text eol=lf
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf

*.jar binary
*.jks binary
*.p12 binary
*.pfx binary
25 changes: 13 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Runs default offline unit tests + Javadoc/sources (verify), then compiles sample sources.
name: CI

on:
push:
branches: [ java-11 ]
pull_request:
branches: [ java-11 ]

permissions:
contents: read
Expand All @@ -12,21 +13,21 @@ jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v5
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: AuDigitalHealth/pcehr-compiled-wsdl-java
ref: java-8-javax-full-wsdl
path: pcehr-compiled-wsdl-java
repository: AuDigitalHealth/mhr-wsdl-java
ref: java-11
path: mhr-wsdl-java
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "8"
java-version: "11"
cache: maven
- name: Install pcehr-compiled-wsdl (1.6.3-SNAPSHOT)
working-directory: pcehr-compiled-wsdl-java
run: mvn -B -Dgpg.skip=true clean install -DskipTests
- name: Install mhr-wsdl (11.0.0-SNAPSHOT)
working-directory: mhr-wsdl-java
run: mvn -B "-Dgpg.skip=true" clean install -DskipTests
- name: Maven verify
run: mvn -B -Dgpg.skip=true clean verify
run: mvn -B "-Dgpg.skip=true" clean verify
- name: Compile sample sources (sample profile)
run: mvn -B -Psample -Dgpg.skip=true -DskipTests=true clean compile
run: mvn -B -Psample "-Dgpg.skip=true" -DskipTests=true clean compile
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,7 @@ wsdls/target/
wsdls/dist/
wsdls/build/
wsdls/extern/

# Agent-local reference (not for integrators)
.cursor/local-reference.md
.cursor/WSDL-CLIENT-PURPOSES.md
44 changes: 44 additions & 0 deletions ADHA-THIRD-PARTY-SCOPE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Third-party B2B scope

This library implements the **vendor-facing My Health Record B2B** interfaces listed by **mhr-b2b-client-dotnet** (logical names below). Wire SOAP still uses published **`pcehr`** namespaces and operation names; Java packages and type names use **`mhr`**.

## In scope (full)

| Logical name (.NET README) | Java facade | SOAP / IHE backing |
| -------------------------- | -------------------------------- | --------------------------------------- |
| doesPCEHRExist | `DoesMHRExistClient` | MHR profile |
| gainPCEHRAccess | `GainMHRAccessClient` | MHR profile |
| uploadDocument | `UploadDocumentClient` | Document repository ProvideAndRegister |
| retrieveDocument | `GetDocumentClient` | Document repository RetrieveDocumentSet |
| uploadDocumentMetadata | `UploadDocumentMetadataClient` | Document registry RegisterDocumentSet-b |
| findDocuments | `GetDocumentListClient` | Document registry RegistryStoredQuery |
| removeDocument | `RemoveDocumentClient` | removeDocument |
| getAuditView | `GetAuditViewClient` | getAuditView |
| getChangeHistoryView | `GetChangeHistoryViewClient` | getChangeHistoryView |
| getView | `GetViewClient` | getView + 7 clinical views |
| getTemplate | `GetTemplateClient` | getTemplate |
| searchTemplate | `SearchTemplateClient` | searchTemplate |
| getIndividualDetailsView | `GetIndividualDetailsViewClient` | getIndividualDetailsView |
| getRepresentativeList | `GetRepresentativeListClient` | getRepresentativeList |
| registerPCEHR | `RegisterMHRClient` | registerPCEHR |

### getView clinical views (7)

- healthCheckScheduleView
- medicareOverview
- observationView
- prescriptionAndDispenseView
- healthRecordOverview
- diagnosticImagingReportView
- pathologyReportView

Generated request types and facade overloads live in **`mhr-wsdl`** / **`GetViewClient`**. Offline tests **`MhrFacadeCoverageTest`** and **`MhrWsdlArtifactTest`** lock this set.

Types and classpath WSDL for the 12 SOAP services are published as **`au.gov.nehta:mhr-wsdl`**.

## Out of scope

- **Advance Care Planning** view (NPP / non-vendor packs; not in the .NET third-party README list).
- **Achievement Diary** view (removed from the vendor B2B pack; see CHANGELOG **1.1.5**).

Do not treat commented historical snippets in older source as a gap. Those views are intentionally absent.
8 changes: 6 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ Rules: `.cursor/rules/*.mdc`. Do not duplicate in README or CONTRIBUTING.

| Concern | Rule / reference |
|---------|------------------|
| MHR scope, WSDL, build, Java 8 / javax | `mhr-b2b-project.mdc` |
| ASCII only in authored files | `ascii-source.mdc` |
| Documentation and build scripts (implementor-first, Central, local, OS, paths, no secrets) | `documentation-standards.mdc` |
| MHR scope, WSDL, build, Java 11 / Jakarta | `mhr-b2b-project.mdc` |
| Worktrees local only; versions in integrator docs | `worktrees.mdc` |
| Multi-branch edits in one repo - use worktree, not checkout/stash | `multi-branch-worktrees.mdc` |
| WSDL-to-facade matrix (agent only) | `.cursor/WSDL-CLIENT-PURPOSES.md` |
| Multi-branch edits in one repo — use worktree, not checkout/stash | `multi-branch-worktrees.mdc` |

Contributors (humans): README, CONTRIBUTING.md, MAINTAINERS.md, ADHA-THIRD-PARTY-SCOPE.md, wsdls/readme.txt.
Contributors (humans): README, CONTRIBUTING.md, MAINTAINERS.md, SECURITY.md, CHANGELOG.md, ADHA-THIRD-PARTY-SCOPE.md, wsdls/readme.txt.
Loading
Loading