by Jordan Brown
Track medical records requests, billing specials, and records-retrieval playbooks for motor vehicle accident cases.
MVA Records and Specials
An Obsidian plugin for tracking a motor vehicle accident case's records requests, medical specials, and the step-by-step process for getting each kind of record.
All data lives in your notes as plain YAML inside fenced code blocks. You can read and edit it without the plugin, it syncs with your vault, and nothing is sent anywhere.
Features
Records requests, tracked as packets. A mva-requests block in a case note renders as a table. Each request records:
- who it went to and the record type
- the scope: date range (defaults to the case's
doifrontmatter) and the categories asked for - the enclosures that went with it (letter of representation, HIPAA, the provider's own form, photo ID, ...)
- how it was sent and how the records should come back (encrypted email, mail, ...)
- the date sent, the production deadline in the letter, and your own follow-up date
Partial productions. Records often come back incomplete. Recording a production asks whether it is complete. If not, you list what is missing. The request stays open as Partial, and the missing list becomes your follow-up.
Status is one of Pending, Due today, Overdue (follow-up or deadline passed), Partial, or Complete.
Encounter-level specials. A mva-specials block holds one row per date of service, with:
- whether you have the treatment records and whether you have the bill. Rows billed with no records, or treated with no bill, are flagged.
- relatedness (related, not related, unknown) and the reason, so exclusions can be explained
- billed, paid by health plan, paid by patient, adjusted, lien holder and amount, and any collections agency
Totals are split into related, unknown, and not related (excluded), so carved-out charges stay visible.
Process playbooks. Each note in your playbook folder (MVA Playbooks by default) is a playbook, and its task list is the checklist. Playbook frontmatter can set record_type, method, delivery, and enclosures. Applying a playbook inserts a fresh checklist into the case note and opens a pre-filled request form. Run Create sample playbooks to get three editable starters.
Attachments. Requests and encounters can carry files: upload a PDF or image from your computer (it is copied into the case's files folder) or link one already in the vault. Each attachment has a type (letter of representation, HIPAA, records, bill, receipt, invoice, ...) and an "include in packets" checkbox. When you record a production as received, you can attach the records right there.
Packets and reports. Everything prints as a PDF saved in the case's Reports folder and opened in Obsidian, ready to view or print:
- Request packet (printer icon on a request): a cover sheet with scope, return method, and deadline, followed by the attachments marked for the packet.
- Case report ("Case report…" button, or the command): a dated update for the attorney with firm name, preparer, and your notes at the top. Pick the sections: summary, request log, still missing, medical specials, documentation gaps, fees and receipts, and an index of documents. Optionally append every included document. Request log and Specials summary are presets.
Password-protected PDFs and missing files are not silently dropped: they get a placeholder page and a notice.
Dashboard. A sidebar view lists every request across the vault, soonest due first, with Open, Overdue, Partial, and All filters. It also lists documentation gaps across cases, and has a case list with each case's totals, a link to its latest report, and a button to build a new one.
Commands
| Command | What it does |
|---|---|
| Open records dashboard | Opens the sidebar dashboard |
| Add records request to this note | Opens the request form; creates the block if the note has none |
| Add encounter (date of service) to this note | Opens the encounter form; creates the block if the note has none |
| Insert records playbook in this note | Inserts a playbook checklist and optionally a pre-filled request |
| Build case report for this note | Opens the report dialog for the current (or last opened) case note |
| Create sample playbooks | Writes three sample playbooks into the playbook folder |
Data format
```mva-requests
- id: a1
provider: Riverside General Hospital
type: Medical records and billing
method: Fax
delivery: Encrypted email
requested: "2026-08-01"
deadline: "2026-08-21"
followup: "2026-08-31"
scope_from: "2026-02-10"
categories: Chart notes, ER records, itemized billing
enclosures: [Letter of representation, Provider's own authorization form, Photo ID]
state: partial # sent | partial | complete
received: "2026-09-02"
missing:
- 03/14/2026 visit notes
```
```mva-specials
- id: b1
date: "2026-02-10"
provider: Riverside General Hospital
service: ER visit
related: yes # yes | no | unknown
related_reason: ""
records: true
bill: true
billed: 8420.50
plan_paid: 3100
patient_paid: 250
adjusted: 2200
lien_holder: Sample Health Plan
lien_amount: 3100
collections: ""
```
The dashboard uses the note's client or case frontmatter field as the case name, and falls back to the file name. New requests take their scope start date from a doi field (YYYY-MM-DD) if the note has one.
If a block has a YAML error, the plugin shows the error and does not write to that block until it is fixed.
Settings
- Default follow-up interval (days)
- Currency code for amounts
- Playbook folder
- Record types, send methods, return methods, and enclosure types shown in the forms
- Firm name, prepared-by name, and page size (Letter or A4) for reports
- Case files folder, next to the case note (default
{case} files)
Privacy and vault access
- Everything stays on your device. The plugin makes no network requests, and PDFs are built locally.
- The dashboard lists the notes in your vault to find the ones that contain
mva-requestsormva-specialsblocks. It reads only those notes. - The "Link vault file" picker lists PDFs and images in your vault so you can choose one.
- The plugin writes only when you act: editing an entry, uploading a file, or building a PDF.
Notice
This plugin is a record-keeping tool. It does not contain jurisdiction-specific rules, deadlines, or fee limits. It does not give legal advice. The sample playbooks are generic starting points to adapt to your office's practice.
Development
npm install
npm run dev # watch build
npm run build # type-check and production build
Copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/mva-records-specials/ to test. The test-vault/ folder contains made-up sample cases.
Credits
PDF generation uses pdf-lib (MIT). All PDFs are built on your device; nothing is uploaded.
Support
If this plugin saves you time, you can buy me a coffee. It is free either way.
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.