9 Commits
Author SHA1 Message Date
blance c5af810806 Add complete settings reference for entity.json/practice.json to README
One table per section covering every key: allowed values, defaults when
null, the sftp://-ftps:// host prefixes, the {practice} token, null=ignore
semantics, and _-prefixed comment keys.
2026-07-05 21:03:14 -05:00
blance 76dc830580 Support sftp:// and ftps:// URL schemes in host values; fix TLS-flag bug
CAMBS's partner turned out to receive insurance files over SFTP - Melissa
pasted "SFTP://sft.polluxsystems.com/" as ftps.host, which the engine fed to
WinSCP as a literal FTP hostname. Host values are now parsed: an sftp://
scheme switches the upload to the SFTP protocol (default port 22), ftps://
forces explicit TLS, a bare hostname behaves as before per the tls flag, and
the scheme/trailing slash are stripped from the hostname either way.

Also fixes a real bug this exposed: GiveUpSecurityAndAcceptAnyTlsHostCertificate
was set unconditionally, and WinSCP refuses that combination when FtpSecure
is None - exactly the "TlsHostCertificateFingerprint ... is set, but neither
FtpSecure nor Secure is enabled" error from her run. The flag is now only set
when TLS is actually on.
2026-07-05 20:33:01 -05:00
blance 1a249c3caa Auto-add missing entity.json keys as null; null now means ignore, not error
On each run the engine compares entity.json against the full set of known
keys, adds any that are absent with a null value, and writes the file back -
so nobody has to hand-type key names (the typo class of config error goes
away). A null/blank value now means "this entity doesn't use this": files
that would need it are ignored with a yellow notice and left in place,
instead of counting as failures. Insurance-unconfigured no longer skips the
patient step for that practice (was continue, now else-branch).
2026-07-05 20:19:34 -05:00
blance 1c452d2802 Rename insurance_path config key to tiff_path (insurance_path still accepted)
Renamed in engine.ps1, both EXAMPLE configs, and the README. Existing
entity.json/practice.json files using insurance_path keep working - the
engine copies it to tiff_path after the merge when tiff_path isn't set.
2026-07-05 20:15:29 -05:00
blance ef046e8b7b Expand README config docs with everything today's debugging surfaced
- Full inline entity.json example plus a Required? column in the field table
- Explicit JSON editing rules (exact key names, comma placement, straight
  quotes, no quotes on numbers/booleans)
- insurance_file_type placement called out (top level, not inside ftps)
- practice.json can add fields entity.json lacks, with a different-paths
  example; note that workflow/insurance_file_type are entity-wide only
- Troubleshooting entries for CONFIG ERROR, wrong-file-type "No .pdf files",
  all-fields-missing (bad section name), and the startup banner check
2026-07-05 20:11:53 -05:00
blance 1c26d85751 Make insurance file type configurable per entity (pdf vs tif)
CAMBS, RMI, CONSENSIO, and INLAND always export TIFs into the daily date
folder instead of PDFs, so engine.ps1's hardcoded "*.pdf" filter silently
found nothing to upload (no error, just "No PDFs" for every practice).
Added optional entity.json field "insurance_file_type" (defaults to "pdf"
when omitted, so existing entities are unaffected); the PT STMT split logic
already worked on filename regardless of extension, so no other changes
needed.
2026-07-05 19:45:53 -05:00
blance e18010e54e Clarify entity.json vs practice.json docs, including per-practice path overrides
Practice.json already supported overriding insurance_path/pdf_path/patient_path
via Merge-Config, but the README and example only mentioned login overrides —
document that practices can have different folder paths, not just credentials.
2026-07-05 18:02:49 -05:00
blance ac4c6d823c Initial build: engine, run scripts, WinSCP setup, example configs 2026-06-29 20:34:33 -05:00
blance 241acd40d6 Initial commit 2026-06-30 01:29:09 +00:00