Provider Directory Service — Local Dev Setup
Status: populated Owner: TBD Last updated: 2026-04-17
1. Prerequisites
| Tool | Version |
|---|---|
| Node | 22.x |
| pnpm | 9.x |
| Docker compose v2 | — |
| psql | 16+ |
2. docker compose
services:
postgres:
image: postgres:16
environment: { POSTGRES_USER: ghasi, POSTGRES_PASSWORD: ghasi, POSTGRES_DB: provider_directory }
ports: ["5432:5432"]
redis: { image: redis:7, ports: ["6379:6379"] }
nats: { image: nats:2.10-alpine, command: ["-js","-m","8222"], ports: ["4222:4222","8222:8222"] }
opensearch:
image: opensearchproject/opensearch:2
environment: { discovery.type: single-node, plugins.security.disabled: "true" }
ports: ["9200:9200"]
3. Bootstrap
pnpm install
docker compose up -d postgres redis nats opensearch
pnpm --filter @ghasi/service-provider-directory migrate:dev
pnpm --filter @ghasi/service-provider-directory seed
pnpm --filter @ghasi/service-provider-directory dev
4. Seed data
- 10 sample physicians with AFG medical council numbers.
- 5 nurses + 3 pharmacists.
- 20 credentials (mix of expiring / active).
- 3 endpoints (FHIR, HL7, webhook).
5. Commands
| Task | Command |
|---|---|
| Run | pnpm --filter @ghasi/service-provider-directory dev |
| Unit | pnpm --filter @ghasi/service-provider-directory test |
| Integration | pnpm --filter @ghasi/service-provider-directory test:int |
| Reindex search | pnpm --filter @ghasi/service-provider-directory search:reindex |
| Drizzle migrate | pnpm --filter @ghasi/service-provider-directory db:migrate |
| OpenAPI export | pnpm --filter @ghasi/service-provider-directory openapi |
6. Troubleshooting
| Symptom | Fix |
|---|---|
| 503 on POST practitioner | Ensure terminology-service stub running |
| Arabic name search returns nothing | Re-run search:reindex and verify ICU analyser plugin loaded |
| Privilege check slow | redis-cli FLUSHDB; check cache wiring |