initial
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
name: Default (not tags)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags-ignore:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install pnpm and npmci
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
|
||||
- name: Run npm prepare
|
||||
run: npmci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
if: ${{ always() }}
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm build
|
||||
@@ -0,0 +1,124 @@
|
||||
name: Default (tags)
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
env:
|
||||
IMAGE: code.foss.global/host.today/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}}
|
||||
|
||||
jobs:
|
||||
security:
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --prod
|
||||
continue-on-error: true
|
||||
|
||||
- name: Audit development dependencies
|
||||
run: |
|
||||
npmci command npm config set registry https://registry.npmjs.org
|
||||
npmci command pnpm audit --audit-level=high --dev
|
||||
continue-on-error: true
|
||||
|
||||
test:
|
||||
if: ${{ always() }}
|
||||
needs: security
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm test
|
||||
|
||||
- name: Test build
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
npmci npm build
|
||||
|
||||
release:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Release
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm publish
|
||||
|
||||
metadata:
|
||||
needs: test
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ env.IMAGE }}
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Code quality
|
||||
run: |
|
||||
npmci command npm install -g typescript
|
||||
npmci npm install
|
||||
|
||||
- name: Trigger
|
||||
run: npmci trigger
|
||||
|
||||
- name: Build docs and upload artifacts
|
||||
run: |
|
||||
npmci node install stable
|
||||
npmci npm install
|
||||
pnpm install -g @git.zone/tsdoc
|
||||
npmci command tsdoc
|
||||
continue-on-error: true
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
.nogit/
|
||||
|
||||
# artifacts
|
||||
coverage/
|
||||
public/
|
||||
|
||||
# installs
|
||||
node_modules/
|
||||
|
||||
# caches
|
||||
.yarn/
|
||||
.cache/
|
||||
.rpt2_cache
|
||||
|
||||
# builds
|
||||
dist/
|
||||
dist_*/
|
||||
|
||||
# logs
|
||||
*.log
|
||||
pnpm-debug.log*
|
||||
|
||||
# local config
|
||||
.env
|
||||
.env.*.local
|
||||
|
||||
# os/editor
|
||||
.DS_Store
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"@git.zone/cli": {
|
||||
"projectType": "npm",
|
||||
"module": {
|
||||
"githost": "code.foss.global",
|
||||
"gitscope": "fin.cx",
|
||||
"gitrepo": "fee-schedules",
|
||||
"description": "Typed fee schedule catalogs by country, starting with German statutory and professional fee schedules.",
|
||||
"npmPackagename": "@fin.cx/fee-schedules",
|
||||
"license": "MIT"
|
||||
},
|
||||
"release": {
|
||||
"targets": {
|
||||
"npm": {
|
||||
"registries": [
|
||||
"https://verdaccio.lossless.digital",
|
||||
"https://registry.npmjs.org"
|
||||
],
|
||||
"accessLevel": "public"
|
||||
}
|
||||
}
|
||||
},
|
||||
"schemaVersion": 2
|
||||
},
|
||||
"@ship.zone/szci": {
|
||||
"npmGlobalTools": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Task Venture Capital GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "@fin.cx/fee-schedules",
|
||||
"version": "1.0.0",
|
||||
"private": false,
|
||||
"description": "Typed fee schedule catalogs by country, starting with German statutory and professional fee schedules.",
|
||||
"main": "dist_ts/index.js",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"generate:germany": "node scripts/generate-germany.mjs",
|
||||
"test": "tstest test/ --verbose",
|
||||
"build": "tsbuild",
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://code.foss.global/fin.cx/fee-schedules.git"
|
||||
},
|
||||
"keywords": [
|
||||
"fee schedules",
|
||||
"germany",
|
||||
"fees",
|
||||
"healthcare",
|
||||
"legal fees",
|
||||
"court costs",
|
||||
"professional fees",
|
||||
"typescript"
|
||||
],
|
||||
"author": "Fin.cx",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://code.foss.global/fin.cx/fee-schedules/issues"
|
||||
},
|
||||
"homepage": "https://code.foss.global/fin.cx/fee-schedules#readme",
|
||||
"files": [
|
||||
"ts/**/*",
|
||||
"scripts/**/*",
|
||||
"dist/**/*",
|
||||
"dist_*/**/*",
|
||||
"dist_ts/**/*",
|
||||
".smartconfig.json",
|
||||
"license",
|
||||
"readme.md"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@git.zone/tsbuild": "^4.4.1",
|
||||
"@git.zone/tsrun": "^2.0.4",
|
||||
"@git.zone/tstest": "^3.6.6",
|
||||
"@types/node": "^25.7.0"
|
||||
},
|
||||
"packageManager": "pnpm@10.11.0"
|
||||
}
|
||||
Generated
+7180
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
packages:
|
||||
- '.'
|
||||
@@ -0,0 +1,202 @@
|
||||
# @fin.cx/fee-schedules
|
||||
|
||||
`@fin.cx/fee-schedules` is a TypeScript package for country-specific fee schedule data. It gives apps a clean, searchable source of truth for statutory, contractual, and professional fee schedules, starting with Germany's healthcare, legal, court, public compensation, and regulated professional service schedules.
|
||||
|
||||
Use it when you need stable identifiers, abbreviations, imported fee table rows, source metadata, and rule sections for fee systems such as `GOÄ`, `GOZ`, `RVG`, `GNotKG`, `GKG`, `HOAI`, `JVEG`, and more.
|
||||
|
||||
## Issue Reporting and Security
|
||||
|
||||
For reporting bugs, issues, or security vulnerabilities, please visit [community.foss.global/](https://community.foss.global/). This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a [code.foss.global/](https://code.foss.global/) account to submit Pull Requests directly.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pnpm add @fin.cx/fee-schedules
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
```ts
|
||||
import { FeeSchedules, GERMANY_FEE_SCHEDULES, feeSchedules } from '@fin.cx/fee-schedules';
|
||||
|
||||
const schedules = new FeeSchedules();
|
||||
|
||||
const germany = schedules.getByCountry('DE');
|
||||
const goae = schedules.findByAbbreviation('GOÄ');
|
||||
const goaeNumber1 = schedules.getFeeRow('de-goae', '1');
|
||||
const legalFeeRows = schedules.searchFeeRows('Einigungsgebühr', 'de-rvg');
|
||||
const courtFees = feeSchedules.getById('de-gkg');
|
||||
|
||||
console.log(GERMANY_FEE_SCHEDULES.length); // 21
|
||||
console.log(goae?.description); // Gebührenordnung für Ärzte; privatärztliche Leistungen außerhalb GKV.
|
||||
console.log(goaeNumber1?.cells); // ['1', 'Beratung - auch mittels Fernsprecher -', '80', '9,12']
|
||||
console.log(legalFeeRows.map((item) => item.code));
|
||||
console.log(courtFees?.area); // Gerichte allgemein
|
||||
console.log(germany.map((item) => item.id));
|
||||
```
|
||||
|
||||
## What You Get
|
||||
|
||||
- Country catalogs with stable country codes and country names.
|
||||
- Individual fee schedule records with stable IDs, abbreviations, areas, and short descriptions.
|
||||
- Imported fee rows and rule sections for official federal XML schedules.
|
||||
- Lookup helpers for country code, ID, abbreviation, fee code, and free-text search.
|
||||
- A ready-to-use singleton (`feeSchedules`) and a configurable class (`FeeSchedules`) for custom catalogs.
|
||||
- TypeScript interfaces exported directly from the package.
|
||||
|
||||
## API
|
||||
|
||||
### Exports
|
||||
|
||||
| Export | Description |
|
||||
| --- | --- |
|
||||
| `GERMANY_FEE_SCHEDULES` | Flat list of German fee schedule records. |
|
||||
| `GERMANY_FEE_SCHEDULE_DATA` | Imported German fee data, rule sections, source metadata, and import status. |
|
||||
| `GERMANY_GOAE_FEE_SCHEDULE_DATA` | GOÄ fee data generated into `ts/germany/goae.ts`. Other German schedules follow the same one-file-per-schedule pattern. |
|
||||
| `GERMANY_FEE_SCHEDULE_CATALOG` | Germany catalog metadata plus all German schedules. |
|
||||
| `FEE_SCHEDULE_CATALOGS` | All available country catalogs. Currently contains Germany. |
|
||||
| `FeeSchedules` | Lookup/search class. Can be constructed with the default catalog/data lists or custom lists. |
|
||||
| `feeSchedules` | Default singleton instance of `FeeSchedules`. |
|
||||
|
||||
### Methods
|
||||
|
||||
| Method | Description |
|
||||
| --- | --- |
|
||||
| `getCountries()` | Returns all loaded country catalogs. |
|
||||
| `getByCountry(countryCode)` | Returns schedules for a country code such as `DE`. Country lookup is case-insensitive. |
|
||||
| `getById(id)` | Returns the schedule with the exact stable ID, or `undefined`. |
|
||||
| `getDataByScheduleId(scheduleId)` | Returns imported source metadata, fee rows, rule sections, and data status. |
|
||||
| `getFeeRows(scheduleId)` | Returns all imported fee rows for a schedule. |
|
||||
| `getFeeRow(scheduleId, code)` | Returns the first imported coded fee row matching a schedule and code. |
|
||||
| `getRuleSections(scheduleId)` | Returns imported rule sections for a schedule. |
|
||||
| `findByAbbreviation(abbreviation, countryCode?)` | Returns the first schedule matching an abbreviation. Abbreviation lookup normalizes whitespace and casing using German locale rules. |
|
||||
| `search(query, countryCode?)` | Searches `id`, `area`, `abbreviation`, and `description`. Returns an empty array for empty queries. |
|
||||
| `searchFeeRows(query, scheduleId?)` | Searches imported fee rows and original source cells. |
|
||||
| `searchRuleSections(query, scheduleId?)` | Searches imported rule sections. |
|
||||
|
||||
### Data Shape
|
||||
|
||||
```ts
|
||||
export type TFeeScheduleCountryCode = 'DE';
|
||||
|
||||
export interface IFeeSchedule {
|
||||
id: string;
|
||||
countryCode: TFeeScheduleCountryCode;
|
||||
area: string;
|
||||
abbreviation: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export interface ICountryFeeScheduleCatalog {
|
||||
countryCode: TFeeScheduleCountryCode;
|
||||
countryName: string;
|
||||
schedules: IFeeSchedule[];
|
||||
}
|
||||
|
||||
export interface IFeeScheduleData {
|
||||
scheduleId: string;
|
||||
dataStatus: 'federal-law-fee-data' | 'federal-law-rules-only' | 'external-source-pending';
|
||||
edition: string;
|
||||
source: IFeeScheduleSource;
|
||||
feeRows: IFeeScheduleFeeRow[];
|
||||
ruleSections: IFeeScheduleRuleSection[];
|
||||
notes: string[];
|
||||
}
|
||||
```
|
||||
|
||||
Fee rows preserve the original source cells in order. Where the row is code-based, `code`, `description`, `points`, and `amountEur` are populated when those values can be read directly from the source table.
|
||||
|
||||
```ts
|
||||
const row = schedules.getFeeRow('de-goae', '1');
|
||||
|
||||
console.log(row?.cells);
|
||||
// ['1', 'Beratung - auch mittels Fernsprecher -', '80', '9,12']
|
||||
```
|
||||
|
||||
## Data Sources
|
||||
|
||||
The package imports official federal XML data from [gesetze-im-internet.de](https://www.gesetze-im-internet.de/) for these schedules: GOÄ, GOZ, GOP, GOT, StBVV, RVG, GNotKG, GKG, FamGKG, GvKostG, JVEG, InsVV, HOAI, and AMPreisV.
|
||||
|
||||
Some German fee schedules are not federal XML laws on `gesetze-im-internet.de`. They are represented with explicit `external-source-pending` source metadata until their source-specific importers are added: EBM, BEMA, aG-DRG / FPV, UV-GOÄ, Heilmittel GKV, Hebammenhilfevertrag, and GebüH.
|
||||
|
||||
## Generated Files
|
||||
|
||||
German fee data is generated by:
|
||||
|
||||
```bash
|
||||
pnpm run generate:germany
|
||||
```
|
||||
|
||||
The generator lives in `scripts/generate-germany.mjs`. It downloads the official XML ZIP files into `.nogit/fee-schedules-sources/`, extracts them, parses fee table rows and rule sections, and writes generated TypeScript files into `ts/germany/`.
|
||||
|
||||
The generated layout is one file per German fee structure:
|
||||
|
||||
```text
|
||||
ts/germany/goae.ts
|
||||
ts/germany/goz.ts
|
||||
ts/germany/rvg.ts
|
||||
ts/germany/gnotkg.ts
|
||||
ts/germany/index.ts
|
||||
```
|
||||
|
||||
The filename uses ASCII transliteration, so `GOÄ` is generated as `goae.ts`. Each generated file exports one `IFeeScheduleData` object, and `ts/germany/index.ts` re-exports the individual objects plus the combined `GERMANY_FEE_SCHEDULE_DATA` array.
|
||||
|
||||
## Germany Catalog
|
||||
|
||||
The initial catalog covers 21 German fee schedule systems.
|
||||
|
||||
| ID | Area | Abbreviation | Purpose |
|
||||
| --- | --- | --- | --- |
|
||||
| `de-goae` | Ärzte privat | `GOÄ` | Gebührenordnung für Ärzte; privatärztliche Leistungen außerhalb GKV. |
|
||||
| `de-goz` | Zahnärzte privat | `GOZ` | Gebührenordnung für Zahnärzte; privat-/selbst zu zahlende zahnärztliche Leistungen. |
|
||||
| `de-gop` | Psychotherapeuten privat | `GOP` | Gebührenordnung für Psychologische Psychotherapeuten und Kinder-/Jugendlichenpsychotherapeuten. |
|
||||
| `de-ebm` | Ärzte GKV | `EBM` | Einheitlicher Bewertungsmaßstab; Abrechnung von Vertragsärzten und Vertragspsychotherapeuten mit der GKV. |
|
||||
| `de-bema` | Zahnärzte GKV | `BEMA` | Bewertungsmaßstab zahnärztlicher Leistungen; GKV-Abrechnung in Zahnarztpraxen. |
|
||||
| `de-ag-drg-fpv` | Krankenhäuser | `aG-DRG / FPV` | Fallpauschalen-Katalog und Abrechnungsbestimmungen für stationäre Krankenhausfälle. |
|
||||
| `de-uv-goae` | Berufsgenossenschaft/Unfallversicherung | `UV-GOÄ` | Gebührenordnung für Ärzte im Bereich gesetzliche Unfallversicherung. |
|
||||
| `de-got` | Tierärzte | `GOT` | Gebührenordnung für Tierärztinnen und Tierärzte. |
|
||||
| `de-stbvv` | Steuerberater | `StBVV` | Steuerberatervergütungsverordnung; gesetzliche Vergütung für steuerberatende Vorbehaltsaufgaben. |
|
||||
| `de-rvg` | Rechtsanwälte | `RVG` | Rechtsanwaltsvergütungsgesetz mit Vergütungsverzeichnis. |
|
||||
| `de-gnotkg` | Notare / Grundbuch / Nachlass | `GNotKG` | Gerichts- und Notarkostengesetz; bundesweit einheitliche Notarkosten. |
|
||||
| `de-gkg` | Gerichte allgemein | `GKG` | Gerichtskostengesetz mit Kostenverzeichnis und Gebührentabellen. |
|
||||
| `de-famgkg` | Familiengericht | `FamGKG` | Gerichtskosten in Familiensachen. |
|
||||
| `de-gvkostg` | Gerichtsvollzieher | `GvKostG` | Gerichtsvollzieherkostengesetz mit Kostenverzeichnis. |
|
||||
| `de-jveg` | Sachverständige/Dolmetscher/Zeugen bei Gericht | `JVEG` | Justizvergütungs- und -entschädigungsgesetz. |
|
||||
| `de-insvv` | Insolvenzverwalter | `InsVV` | Insolvenzrechtliche Vergütungsverordnung. |
|
||||
| `de-hoai` | Architekten/Ingenieure | `HOAI` | Honorarordnung für Architekten und Ingenieure; heute vor allem Orientierungs-/Auffangsystem für erfasste Planungsleistungen. |
|
||||
| `de-heilmittel-gkv` | Heilmittel, z. B. Physio/Logo/Ergo | `keine einzelne GO` | GKV-Vergütungsvereinbarungen/Preislisten nach Bundesrahmenverträgen. |
|
||||
| `de-hebammenhilfevertrag` | Hebammen GKV | `Hebammenhilfevertrag` | Vertrag/Vergütungsvereinbarung nach § 134a SGB V. |
|
||||
| `de-ampreisv` | Apotheken/Rx-Arzneimittel | `AMPreisV` | Arzneimittelpreisverordnung; Preisbildung für verschreibungspflichtige Arzneimittel. |
|
||||
| `de-gebueh` | Heilpraktiker | `GebüH` | Gebührenverzeichnis für Heilpraktiker; keine amtliche verbindliche Gebührenordnung, eher Orientierung/übliche Vergütung. |
|
||||
|
||||
## Typical Use Cases
|
||||
|
||||
- Build country-aware fee schedule selectors.
|
||||
- Normalize German fee schedule abbreviations in forms and admin systems.
|
||||
- Enrich billing, compliance, procurement, or legal-tech workflows with stable fee schedule metadata.
|
||||
- Power search, autocomplete, or classification flows without hand-maintaining the same acronym list in every app.
|
||||
|
||||
## Scope
|
||||
|
||||
This package includes imported fee rows and rule sections for the German federal schedules currently available as official XML. It does not yet normalize every schedule into a single calculation engine because several schedules use different fee mechanics: points, factors, euro amounts, value tables, formula rules, or external annual catalogs.
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
|
||||
|
||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||
|
||||
### Trademarks
|
||||
|
||||
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.
|
||||
|
||||
Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.
|
||||
|
||||
### Company Information
|
||||
|
||||
Task Venture Capital GmbH
|
||||
Registered at District Court Bremen HRB 35230 HB, Germany
|
||||
|
||||
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
||||
|
||||
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
||||
@@ -0,0 +1,351 @@
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const sourceRoot = path.join(packageRoot, '.nogit', 'fee-schedules-sources');
|
||||
const outDir = path.join(packageRoot, 'ts', 'germany');
|
||||
const generatedAt = new Date().toISOString().slice(0, 10);
|
||||
|
||||
const federalSources = [
|
||||
{ scheduleId: 'de-goae', fileName: 'goae', exportName: 'GERMANY_GOAE_FEE_SCHEDULE_DATA', sourcePath: 'go__1982', rowMode: 'code' },
|
||||
{ scheduleId: 'de-goz', fileName: 'goz', exportName: 'GERMANY_GOZ_FEE_SCHEDULE_DATA', sourcePath: 'goz_1987', rowMode: 'code' },
|
||||
{ scheduleId: 'de-gop', fileName: 'gop', exportName: 'GERMANY_GOP_FEE_SCHEDULE_DATA', sourcePath: 'gop', rowMode: 'none' },
|
||||
{ scheduleId: 'de-got', fileName: 'got', exportName: 'GERMANY_GOT_FEE_SCHEDULE_DATA', sourcePath: 'got_2022', rowMode: 'code' },
|
||||
{ scheduleId: 'de-stbvv', fileName: 'stbvv', exportName: 'GERMANY_STBVV_FEE_SCHEDULE_DATA', sourcePath: 'stbgebv', rowMode: 'table' },
|
||||
{ scheduleId: 'de-rvg', fileName: 'rvg', exportName: 'GERMANY_RVG_FEE_SCHEDULE_DATA', sourcePath: 'rvg', rowMode: 'code' },
|
||||
{ scheduleId: 'de-gnotkg', fileName: 'gnotkg', exportName: 'GERMANY_GNOTKG_FEE_SCHEDULE_DATA', sourcePath: 'gnotkg', rowMode: 'code' },
|
||||
{ scheduleId: 'de-gkg', fileName: 'gkg', exportName: 'GERMANY_GKG_FEE_SCHEDULE_DATA', sourcePath: 'gkg_2004', rowMode: 'code' },
|
||||
{ scheduleId: 'de-famgkg', fileName: 'famgkg', exportName: 'GERMANY_FAMGKG_FEE_SCHEDULE_DATA', sourcePath: 'famgkg', rowMode: 'code' },
|
||||
{ scheduleId: 'de-gvkostg', fileName: 'gvkostg', exportName: 'GERMANY_GVKOSTG_FEE_SCHEDULE_DATA', sourcePath: 'gvkostg', rowMode: 'code' },
|
||||
{ scheduleId: 'de-jveg', fileName: 'jveg', exportName: 'GERMANY_JVEG_FEE_SCHEDULE_DATA', sourcePath: 'jveg', rowMode: 'code' },
|
||||
{ scheduleId: 'de-insvv', fileName: 'insvv', exportName: 'GERMANY_INSVV_FEE_SCHEDULE_DATA', sourcePath: 'insvv', rowMode: 'none' },
|
||||
{ scheduleId: 'de-hoai', fileName: 'hoai', exportName: 'GERMANY_HOAI_FEE_SCHEDULE_DATA', sourcePath: 'hoai_2013', rowMode: 'table' },
|
||||
{ scheduleId: 'de-ampreisv', fileName: 'ampreisv', exportName: 'GERMANY_AMPREISV_FEE_SCHEDULE_DATA', sourcePath: 'ampreisv', rowMode: 'none' },
|
||||
];
|
||||
|
||||
const externalSources = [
|
||||
{
|
||||
scheduleId: 'de-ebm',
|
||||
fileName: 'ebm',
|
||||
exportName: 'GERMANY_EBM_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'Kassenärztliche Bundesvereinigung EBM',
|
||||
sourceUrl: 'https://www.kbv.de/html/ebm.php',
|
||||
note: 'External self-administration source; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-bema',
|
||||
fileName: 'bema',
|
||||
exportName: 'GERMANY_BEMA_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'Kassenzahnärztliche Bundesvereinigung BEMA',
|
||||
sourceUrl: 'https://www.kzbv.de/bema',
|
||||
note: 'External dental self-administration source; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-ag-drg-fpv',
|
||||
fileName: 'agdrgfpv',
|
||||
exportName: 'GERMANY_AGDRGFPV_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'InEK aG-DRG Fallpauschalen-Katalog / FPV',
|
||||
sourceUrl: 'https://www.g-drg.de',
|
||||
note: 'Year-specific InEK catalog source; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-uv-goae',
|
||||
fileName: 'uvgoae',
|
||||
exportName: 'GERMANY_UVGOAE_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'Deutsche Gesetzliche Unfallversicherung UV-GOÄ',
|
||||
sourceUrl: 'https://www.dguv.de',
|
||||
note: 'External accident insurance fee schedule source; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-heilmittel-gkv',
|
||||
fileName: 'heilmittelgkv',
|
||||
exportName: 'GERMANY_HEILMITTELGKV_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'GKV-Spitzenverband Heilmittel contracts and price lists',
|
||||
sourceUrl: 'https://www.gkv-spitzenverband.de/krankenversicherung/ambulante_leistungen/heilmittel/heilmittel.jsp',
|
||||
note: 'External contract and price list source by remedy area; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-hebammenhilfevertrag',
|
||||
fileName: 'hebammenhilfevertrag',
|
||||
exportName: 'GERMANY_HEBAMMENHILFEVERTRAG_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'GKV-Spitzenverband Hebammenhilfevertrag',
|
||||
sourceUrl: 'https://www.gkv-spitzenverband.de/krankenversicherung/ambulante_leistungen/hebammen_geburtshaeuser/hebammenhilfevertrag/hebammenhilfevertrag.jsp',
|
||||
note: 'External contract and remuneration agreement source; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
{
|
||||
scheduleId: 'de-gebueh',
|
||||
fileName: 'gebueh',
|
||||
exportName: 'GERMANY_GEBUEH_FEE_SCHEDULE_DATA',
|
||||
sourceName: 'Gebührenverzeichnis für Heilpraktiker',
|
||||
sourceUrl: 'https://www.gebueh.de',
|
||||
note: 'Non-official customary fee directory; not part of gesetze-im-internet federal XML corpus.',
|
||||
},
|
||||
];
|
||||
|
||||
const allSources = [...federalSources, ...externalSources];
|
||||
|
||||
fs.mkdirSync(sourceRoot, { recursive: true });
|
||||
fs.mkdirSync(outDir, { recursive: true });
|
||||
|
||||
const decodeEntities = (input) => input
|
||||
.replace(/ | /g, ' ')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, "'")
|
||||
.replace(/§/g, '§')
|
||||
.replace(/Ä/g, 'Ä')
|
||||
.replace(/Ö/g, 'Ö')
|
||||
.replace(/Ü/g, 'Ü')
|
||||
.replace(/ä/g, 'ä')
|
||||
.replace(/ö/g, 'ö')
|
||||
.replace(/ü/g, 'ü')
|
||||
.replace(/ß/g, 'ß');
|
||||
|
||||
const cleanXmlText = (input) => decodeEntities(input)
|
||||
.replace(/<BR\s*\/?\s*>/gi, ' ')
|
||||
.replace(/<[^>]+>/g, ' ')
|
||||
.replace(/\s+/g, ' ')
|
||||
.trim();
|
||||
|
||||
const extractFirst = (xml, tag) => {
|
||||
const match = xml.match(new RegExp(`<${tag}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/${tag}>`));
|
||||
return match ? cleanXmlText(match[1]) : undefined;
|
||||
};
|
||||
|
||||
const isCode = (value) => /^(?:\d{1,6}[a-z]?|[A-Z]\d{1,5}|[A-Z]{1,3}\s?\d{1,5})$/.test(value);
|
||||
const hasNumericValue = (value) => /\d/.test(value) && /^[\d\s.,€–\-]+$/.test(value);
|
||||
|
||||
const parseAmount = (value) => {
|
||||
const numeric = value.match(/\d+(?:\.\d{3})*(?:,\d+)?|\d+(?:,\d+)?/g)?.at(-1);
|
||||
if (!numeric) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return Number(numeric.replace(/\./g, '').replace(',', '.'));
|
||||
};
|
||||
|
||||
const getRowType = (cells, mode) => {
|
||||
if (mode === 'code' && isCode(cells[0])) {
|
||||
return 'fee-entry';
|
||||
}
|
||||
|
||||
if (mode === 'table' && cells.length >= 2 && cells.filter(hasNumericValue).length >= 2) {
|
||||
return 'fee-table-row';
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
const writeGeneratedTsFile = (fileName, exportName, data) => {
|
||||
const filePath = path.join(outDir, `${fileName}.ts`);
|
||||
const body = [
|
||||
`// Generated by scripts/generate-germany.mjs on ${generatedAt}.`,
|
||||
'// Do not edit this file manually.',
|
||||
"import type { IFeeScheduleData } from '../feeschedules.types.js';",
|
||||
'',
|
||||
`export const ${exportName}: IFeeScheduleData = ${JSON.stringify(data, null, 2)};`,
|
||||
'',
|
||||
].join('\n');
|
||||
|
||||
fs.writeFileSync(filePath, body);
|
||||
};
|
||||
|
||||
const downloadFederalXml = async (source) => {
|
||||
const zipUrl = `https://www.gesetze-im-internet.de/${source.sourcePath}/xml.zip`;
|
||||
const zipPath = path.join(sourceRoot, `${source.sourcePath}.zip`);
|
||||
const extractDir = path.join(sourceRoot, source.sourcePath);
|
||||
|
||||
fs.mkdirSync(extractDir, { recursive: true });
|
||||
|
||||
const response = await fetch(zipUrl);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to download ${zipUrl}: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
|
||||
fs.writeFileSync(zipPath, Buffer.from(await response.arrayBuffer()));
|
||||
|
||||
const unzip = spawnSync('/usr/bin/unzip', ['-o', '-q', zipPath, '-d', extractDir], {
|
||||
stdio: 'pipe',
|
||||
encoding: 'utf8',
|
||||
});
|
||||
|
||||
if (unzip.status !== 0) {
|
||||
throw new Error(`Failed to unzip ${zipPath}: ${unzip.stderr || unzip.stdout}`);
|
||||
}
|
||||
|
||||
const xmlFiles = fs.readdirSync(extractDir).filter((entry) => entry.endsWith('.xml'));
|
||||
if (xmlFiles.length !== 1) {
|
||||
throw new Error(`Expected one XML file for ${source.sourcePath}, found ${xmlFiles.length}`);
|
||||
}
|
||||
|
||||
return path.join(extractDir, xmlFiles[0]);
|
||||
};
|
||||
|
||||
const getMetadata = (firstNorm) => {
|
||||
const statusNotes = [...firstNorm.matchAll(/<standkommentar>([\s\S]*?)<\/standkommentar>/g)]
|
||||
.map((match) => cleanXmlText(match[1]));
|
||||
|
||||
return {
|
||||
officialAbbreviation: extractFirst(firstNorm, 'amtabk'),
|
||||
legalAbbreviation: extractFirst(firstNorm, 'jurabk'),
|
||||
title: extractFirst(firstNorm, 'langue'),
|
||||
issuedAt: extractFirst(firstNorm, 'ausfertigung-datum'),
|
||||
statusNotes,
|
||||
};
|
||||
};
|
||||
|
||||
const parseFederalSource = async (source) => {
|
||||
const xmlPath = await downloadFederalXml(source);
|
||||
const xml = fs.readFileSync(xmlPath, 'utf8');
|
||||
const sourceFileName = path.basename(xmlPath);
|
||||
const firstNorm = xml.match(/<norm[\s\S]*?<\/norm>/)?.[0] || '';
|
||||
const metadata = getMetadata(firstNorm);
|
||||
const norms = [...xml.matchAll(/<norm\b[^>]*doknr="([^"]+)"[^>]*>([\s\S]*?)<\/norm>/g)];
|
||||
|
||||
const ruleSections = norms.map((match, index) => {
|
||||
const sourceNormId = match[1];
|
||||
const normXml = match[2];
|
||||
const reference = extractFirst(normXml, 'enbez') || metadata.officialAbbreviation || source.scheduleId;
|
||||
const title = extractFirst(normXml, 'titel');
|
||||
const contentMatch = normXml.match(/<Content>([\s\S]*?)<\/Content>/);
|
||||
const text = contentMatch ? cleanXmlText(contentMatch[1]) : '';
|
||||
|
||||
return {
|
||||
id: `${source.scheduleId}-section-${index + 1}`,
|
||||
scheduleId: source.scheduleId,
|
||||
sourceNormId,
|
||||
reference,
|
||||
title,
|
||||
text,
|
||||
};
|
||||
}).filter((section) => section.text);
|
||||
|
||||
const feeRows = [];
|
||||
let rowIndex = 0;
|
||||
|
||||
for (const rowMatch of xml.matchAll(/<row[\s\S]*?<\/row>/g)) {
|
||||
const cells = [...rowMatch[0].matchAll(/<entry[^>]*>([\s\S]*?)<\/entry>/g)]
|
||||
.map((entryMatch) => cleanXmlText(entryMatch[1]))
|
||||
.filter(Boolean);
|
||||
|
||||
if (cells.length < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const rowType = getRowType(cells, source.rowMode);
|
||||
if (!rowType) {
|
||||
continue;
|
||||
}
|
||||
|
||||
rowIndex += 1;
|
||||
const thirdCell = cells[2];
|
||||
const lastCell = cells.at(-1) || '';
|
||||
const points = rowType === 'fee-entry' && thirdCell && /^\d+$/.test(thirdCell)
|
||||
? Number(thirdCell)
|
||||
: undefined;
|
||||
const amountEur = lastCell.includes('€') || (rowType === 'fee-entry' && cells.length >= 4)
|
||||
? parseAmount(lastCell)
|
||||
: undefined;
|
||||
|
||||
feeRows.push({
|
||||
id: `${source.scheduleId}-row-${rowIndex}`,
|
||||
scheduleId: source.scheduleId,
|
||||
rowType,
|
||||
rowIndex,
|
||||
code: rowType === 'fee-entry' ? cells[0] : undefined,
|
||||
description: rowType === 'fee-entry' ? cells[1] : undefined,
|
||||
cells,
|
||||
points,
|
||||
amountEur,
|
||||
sourceNormId: undefined,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
scheduleId: source.scheduleId,
|
||||
dataStatus: feeRows.length ? 'federal-law-fee-data' : 'federal-law-rules-only',
|
||||
edition: metadata.statusNotes.join(' ') || `Retrieved ${generatedAt}`,
|
||||
source: {
|
||||
name: 'Gesetze im Internet',
|
||||
url: `https://www.gesetze-im-internet.de/${source.sourcePath}/xml.zip`,
|
||||
pageUrl: `https://www.gesetze-im-internet.de/${source.sourcePath}/`,
|
||||
retrievedAt: generatedAt,
|
||||
sourceFileName,
|
||||
officialAbbreviation: metadata.officialAbbreviation,
|
||||
legalAbbreviation: metadata.legalAbbreviation,
|
||||
title: metadata.title,
|
||||
issuedAt: metadata.issuedAt,
|
||||
statusNotes: metadata.statusNotes,
|
||||
},
|
||||
feeRows,
|
||||
ruleSections,
|
||||
notes: feeRows.length
|
||||
? ['Generated from official federal XML table rows. Original row cells are preserved in order.']
|
||||
: ['No separate fee table rows were present in the federal XML. Fee rules are represented as rule sections.'],
|
||||
};
|
||||
};
|
||||
|
||||
const getExternalSourceData = (source) => ({
|
||||
scheduleId: source.scheduleId,
|
||||
dataStatus: 'external-source-pending',
|
||||
edition: `Source identified ${generatedAt}`,
|
||||
source: {
|
||||
name: source.sourceName,
|
||||
url: source.sourceUrl,
|
||||
retrievedAt: generatedAt,
|
||||
},
|
||||
feeRows: [],
|
||||
ruleSections: [],
|
||||
notes: [source.note],
|
||||
});
|
||||
|
||||
for (const source of allSources) {
|
||||
const filePath = path.join(outDir, `${source.fileName}.ts`);
|
||||
if (fs.existsSync(filePath)) {
|
||||
fs.rmSync(filePath);
|
||||
}
|
||||
}
|
||||
|
||||
const generatedData = [];
|
||||
|
||||
for (const source of federalSources) {
|
||||
const data = await parseFederalSource(source);
|
||||
writeGeneratedTsFile(source.fileName, source.exportName, data);
|
||||
generatedData.push({ ...source, data });
|
||||
console.log(`${source.fileName}.ts: ${data.dataStatus}, rows=${data.feeRows.length}, sections=${data.ruleSections.length}`);
|
||||
}
|
||||
|
||||
for (const source of externalSources) {
|
||||
const data = getExternalSourceData(source);
|
||||
writeGeneratedTsFile(source.fileName, source.exportName, data);
|
||||
generatedData.push({ ...source, data });
|
||||
console.log(`${source.fileName}.ts: ${data.dataStatus}, rows=0, sections=0`);
|
||||
}
|
||||
|
||||
const indexImports = generatedData
|
||||
.map((source) => `import { ${source.exportName} } from './${source.fileName}.js';`)
|
||||
.join('\n');
|
||||
|
||||
const indexExports = generatedData
|
||||
.map((source) => `export { ${source.exportName} } from './${source.fileName}.js';`)
|
||||
.join('\n');
|
||||
|
||||
const indexBody = [
|
||||
`// Generated by scripts/generate-germany.mjs on ${generatedAt}.`,
|
||||
'// Do not edit this file manually.',
|
||||
"import type { IFeeScheduleData } from '../feeschedules.types.js';",
|
||||
indexImports,
|
||||
'',
|
||||
indexExports,
|
||||
'',
|
||||
'export const GERMANY_FEE_SCHEDULE_DATA: IFeeScheduleData[] = [',
|
||||
...generatedData.map((source) => ` ${source.exportName},`),
|
||||
'];',
|
||||
'',
|
||||
].join('\n');
|
||||
|
||||
fs.writeFileSync(path.join(outDir, 'index.ts'), indexBody);
|
||||
@@ -0,0 +1,120 @@
|
||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||
import * as feeSchedules from '../ts/index.js';
|
||||
|
||||
tap.test('exports Germany fee schedules and API helpers', async () => {
|
||||
expect(feeSchedules.GERMANY_FEE_SCHEDULES).toBeArray();
|
||||
expect(feeSchedules.GERMANY_FEE_SCHEDULE_DATA).toBeArray();
|
||||
expect(feeSchedules.GERMANY_GOAE_FEE_SCHEDULE_DATA.scheduleId).toEqual('de-goae');
|
||||
expect(feeSchedules.GERMANY_FEE_SCHEDULE_CATALOG.countryCode).toEqual('DE');
|
||||
expect(feeSchedules.FEE_SCHEDULE_CATALOGS).toHaveLength(1);
|
||||
expect(feeSchedules.FeeSchedules).toBeTypeOf('function');
|
||||
expect(feeSchedules.feeSchedules).toBeInstanceOf(feeSchedules.FeeSchedules);
|
||||
});
|
||||
|
||||
tap.test('contains the initial German schedule catalog', async () => {
|
||||
expect(feeSchedules.GERMANY_FEE_SCHEDULES).toHaveLength(21);
|
||||
expect(feeSchedules.GERMANY_FEE_SCHEDULE_DATA).toHaveLength(21);
|
||||
|
||||
for (const schedule of feeSchedules.GERMANY_FEE_SCHEDULES) {
|
||||
expect(schedule.id).toBeTypeofString();
|
||||
expect(schedule.countryCode).toEqual('DE');
|
||||
expect(schedule.area).toBeTypeofString();
|
||||
expect(schedule.abbreviation).toBeTypeofString();
|
||||
expect(schedule.description).toBeTypeofString();
|
||||
}
|
||||
});
|
||||
|
||||
tap.test('contains actual imported fee rows for federal German schedules', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const goae = api.getDataByScheduleId('de-goae');
|
||||
const goz = api.getDataByScheduleId('de-goz');
|
||||
const rvg = api.getDataByScheduleId('de-rvg');
|
||||
const gvkostg = api.getDataByScheduleId('de-gvkostg');
|
||||
|
||||
expect(goae?.dataStatus).toEqual('federal-law-fee-data');
|
||||
expect(goae?.feeRows.length).toBeGreaterThan(2000);
|
||||
expect(goz?.feeRows.length).toBeGreaterThan(200);
|
||||
expect(rvg?.feeRows.length).toBeGreaterThan(200);
|
||||
expect(gvkostg?.feeRows.length).toBeGreaterThan(50);
|
||||
|
||||
expect(api.getFeeRow('de-goae', '1')?.cells).toEqual([
|
||||
'1',
|
||||
'Beratung - auch mittels Fernsprecher -',
|
||||
'80',
|
||||
'9,12',
|
||||
]);
|
||||
expect(api.getFeeRow('de-goae', '1')?.points).toEqual(80);
|
||||
expect(api.getFeeRow('de-goae', '1')?.amountEur).toEqual(9.12);
|
||||
expect(api.getFeeRow('de-goz', '0010')?.points).toEqual(100);
|
||||
expect(api.getFeeRow('de-rvg', '1000')?.description).toContain('Einigungsgebühr');
|
||||
expect(api.getFeeRow('de-gvkostg', '100')?.amountEur).toEqual(12);
|
||||
});
|
||||
|
||||
tap.test('contains rule sections for formula-based federal schedules', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const gop = api.getDataByScheduleId('de-gop');
|
||||
const ampreisv = api.getDataByScheduleId('de-ampreisv');
|
||||
const insvv = api.getDataByScheduleId('de-insvv');
|
||||
|
||||
expect(gop?.dataStatus).toEqual('federal-law-rules-only');
|
||||
expect(ampreisv?.dataStatus).toEqual('federal-law-rules-only');
|
||||
expect(insvv?.dataStatus).toEqual('federal-law-rules-only');
|
||||
expect(api.getRuleSections('de-gop').length).toBeGreaterThan(0);
|
||||
expect(api.searchRuleSections('Gebührenordnung für Ärzte', 'de-gop').length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
tap.test('looks up schedules by country and abbreviation', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const germany = api.getByCountry('de');
|
||||
const goae = api.findByAbbreviation('GOÄ');
|
||||
const bema = api.findByAbbreviation('bema', 'DE');
|
||||
const gnotkg = api.findByAbbreviation('GNotKG');
|
||||
const gebueh = api.findByAbbreviation('GebüH');
|
||||
|
||||
expect(germany).toHaveLength(21);
|
||||
expect(goae?.area).toEqual('Ärzte privat');
|
||||
expect(bema?.area).toEqual('Zahnärzte GKV');
|
||||
expect(gnotkg?.description).toContain('Notarkosten');
|
||||
expect(gebueh?.description).toContain('keine amtliche verbindliche Gebührenordnung');
|
||||
});
|
||||
|
||||
tap.test('searches schedules across searchable fields', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const legalResults = api.search('Rechtsanwälte');
|
||||
const hospitalResults = api.search('Krankenhausfälle');
|
||||
const gkvResults = api.search('GKV', 'DE');
|
||||
|
||||
expect(legalResults.map((schedule) => schedule.abbreviation)).toEqual(['RVG']);
|
||||
expect(hospitalResults.map((schedule) => schedule.abbreviation)).toEqual(['aG-DRG / FPV']);
|
||||
expect(gkvResults.length).toBeGreaterThan(3);
|
||||
});
|
||||
|
||||
tap.test('searches imported fee rows', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const goaeConsultations = api.searchFeeRows('Fernsprecher', 'de-goae');
|
||||
const courtDelivery = api.searchFeeRows('Persönliche Zustellung', 'de-gvkostg');
|
||||
|
||||
expect(goaeConsultations.length).toBeGreaterThan(1);
|
||||
expect(courtDelivery.map((row) => row.code)).toContain('100');
|
||||
});
|
||||
|
||||
tap.test('marks non-federal external sources explicitly', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
const ebm = api.getDataByScheduleId('de-ebm');
|
||||
const bema = api.getDataByScheduleId('de-bema');
|
||||
|
||||
expect(ebm?.dataStatus).toEqual('external-source-pending');
|
||||
expect(bema?.dataStatus).toEqual('external-source-pending');
|
||||
expect(ebm?.source.url).toContain('kbv');
|
||||
expect(bema?.source.url).toContain('kzbv');
|
||||
});
|
||||
|
||||
tap.test('returns empty results for unknown lookups', async () => {
|
||||
const api = new feeSchedules.FeeSchedules();
|
||||
|
||||
expect(api.getByCountry('AT')).toHaveLength(0);
|
||||
expect(api.findByAbbreviation('UNKNOWN')).toBeUndefined();
|
||||
expect(api.search('')).toHaveLength(0);
|
||||
});
|
||||
|
||||
export default tap.start();
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* autocreated commitinfo by @push.rocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@fin.cx/fee-schedules',
|
||||
version: '1.0.0',
|
||||
description: 'Typed fee schedule catalogs by country, starting with German statutory and professional fee schedules.'
|
||||
};
|
||||
@@ -0,0 +1,135 @@
|
||||
import type {
|
||||
ICountryFeeScheduleCatalog,
|
||||
IFeeSchedule,
|
||||
IFeeScheduleData,
|
||||
IFeeScheduleFeeRow,
|
||||
IFeeScheduleRuleSection,
|
||||
} from './feeschedules.types.js';
|
||||
import { GERMANY_FEE_SCHEDULE_CATALOG } from './feeschedules.germany.js';
|
||||
import { GERMANY_FEE_SCHEDULE_DATA } from './germany/index.js';
|
||||
|
||||
export const FEE_SCHEDULE_CATALOGS: ICountryFeeScheduleCatalog[] = [
|
||||
GERMANY_FEE_SCHEDULE_CATALOG,
|
||||
];
|
||||
|
||||
export class FeeSchedules {
|
||||
private catalogs: ICountryFeeScheduleCatalog[];
|
||||
private data: IFeeScheduleData[];
|
||||
|
||||
constructor(
|
||||
catalogs: ICountryFeeScheduleCatalog[] = FEE_SCHEDULE_CATALOGS,
|
||||
data: IFeeScheduleData[] = GERMANY_FEE_SCHEDULE_DATA,
|
||||
) {
|
||||
this.catalogs = catalogs;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public getCountries(): ICountryFeeScheduleCatalog[] {
|
||||
return this.catalogs;
|
||||
}
|
||||
|
||||
public getByCountry(countryCode: string): IFeeSchedule[] {
|
||||
const catalog = this.getCatalog(countryCode);
|
||||
return catalog?.schedules || [];
|
||||
}
|
||||
|
||||
public getById(id: string): IFeeSchedule | undefined {
|
||||
return this.getAll().find((schedule) => schedule.id === id);
|
||||
}
|
||||
|
||||
public getDataByScheduleId(scheduleId: string): IFeeScheduleData | undefined {
|
||||
return this.data.find((scheduleData) => scheduleData.scheduleId === scheduleId);
|
||||
}
|
||||
|
||||
public getFeeRows(scheduleId: string): IFeeScheduleFeeRow[] {
|
||||
return this.getDataByScheduleId(scheduleId)?.feeRows || [];
|
||||
}
|
||||
|
||||
public getFeeRow(scheduleId: string, code: string): IFeeScheduleFeeRow | undefined {
|
||||
const normalizedCode = normalizeSearchValue(code);
|
||||
return this.getFeeRows(scheduleId).find((row) => {
|
||||
return row.code ? normalizeSearchValue(row.code) === normalizedCode : false;
|
||||
});
|
||||
}
|
||||
|
||||
public getRuleSections(scheduleId: string): IFeeScheduleRuleSection[] {
|
||||
return this.getDataByScheduleId(scheduleId)?.ruleSections || [];
|
||||
}
|
||||
|
||||
public findByAbbreviation(abbreviation: string, countryCode?: string): IFeeSchedule | undefined {
|
||||
const normalizedAbbreviation = normalizeSearchValue(abbreviation);
|
||||
return this.getSchedules(countryCode).find(
|
||||
(schedule) => normalizeSearchValue(schedule.abbreviation) === normalizedAbbreviation,
|
||||
);
|
||||
}
|
||||
|
||||
public search(query: string, countryCode?: string): IFeeSchedule[] {
|
||||
const normalizedQuery = normalizeSearchValue(query);
|
||||
if (!normalizedQuery) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return this.getSchedules(countryCode).filter((schedule) => {
|
||||
return [schedule.id, schedule.area, schedule.abbreviation, schedule.description]
|
||||
.map((value) => normalizeSearchValue(value))
|
||||
.some((value) => value.includes(normalizedQuery));
|
||||
});
|
||||
}
|
||||
|
||||
public searchFeeRows(query: string, scheduleId?: string): IFeeScheduleFeeRow[] {
|
||||
const normalizedQuery = normalizeSearchValue(query);
|
||||
if (!normalizedQuery) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return this.getScheduleData(scheduleId)
|
||||
.flatMap((scheduleData) => scheduleData.feeRows)
|
||||
.filter((row) => {
|
||||
return [row.id, row.code, row.description, ...row.cells]
|
||||
.filter((value): value is string => Boolean(value))
|
||||
.map((value) => normalizeSearchValue(value))
|
||||
.some((value) => value.includes(normalizedQuery));
|
||||
});
|
||||
}
|
||||
|
||||
public searchRuleSections(query: string, scheduleId?: string): IFeeScheduleRuleSection[] {
|
||||
const normalizedQuery = normalizeSearchValue(query);
|
||||
if (!normalizedQuery) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return this.getScheduleData(scheduleId)
|
||||
.flatMap((scheduleData) => scheduleData.ruleSections)
|
||||
.filter((section) => {
|
||||
return [section.reference, section.title, section.text]
|
||||
.filter((value): value is string => Boolean(value))
|
||||
.map((value) => normalizeSearchValue(value))
|
||||
.some((value) => value.includes(normalizedQuery));
|
||||
});
|
||||
}
|
||||
|
||||
private getAll(): IFeeSchedule[] {
|
||||
return this.catalogs.flatMap((catalog) => catalog.schedules);
|
||||
}
|
||||
|
||||
private getSchedules(countryCode?: string): IFeeSchedule[] {
|
||||
return countryCode ? this.getByCountry(countryCode) : this.getAll();
|
||||
}
|
||||
|
||||
private getScheduleData(scheduleId?: string): IFeeScheduleData[] {
|
||||
return scheduleId
|
||||
? this.data.filter((scheduleData) => scheduleData.scheduleId === scheduleId)
|
||||
: this.data;
|
||||
}
|
||||
|
||||
private getCatalog(countryCode: string): ICountryFeeScheduleCatalog | undefined {
|
||||
const normalizedCountryCode = countryCode.toUpperCase();
|
||||
return this.catalogs.find((catalog) => catalog.countryCode === normalizedCountryCode);
|
||||
}
|
||||
}
|
||||
|
||||
export const feeSchedules = new FeeSchedules();
|
||||
|
||||
const normalizeSearchValue = (value: string): string => {
|
||||
return value.trim().toLocaleLowerCase('de-DE').replace(/\s+/g, ' ');
|
||||
};
|
||||
@@ -0,0 +1,157 @@
|
||||
import type { ICountryFeeScheduleCatalog, IFeeSchedule } from './feeschedules.types.js';
|
||||
|
||||
export const GERMANY_FEE_SCHEDULES: IFeeSchedule[] = [
|
||||
{
|
||||
id: 'de-goae',
|
||||
countryCode: 'DE',
|
||||
area: 'Ärzte privat',
|
||||
abbreviation: 'GOÄ',
|
||||
description: 'Gebührenordnung für Ärzte; privatärztliche Leistungen außerhalb GKV.',
|
||||
},
|
||||
{
|
||||
id: 'de-goz',
|
||||
countryCode: 'DE',
|
||||
area: 'Zahnärzte privat',
|
||||
abbreviation: 'GOZ',
|
||||
description: 'Gebührenordnung für Zahnärzte; privat-/selbst zu zahlende zahnärztliche Leistungen.',
|
||||
},
|
||||
{
|
||||
id: 'de-gop',
|
||||
countryCode: 'DE',
|
||||
area: 'Psychotherapeuten privat',
|
||||
abbreviation: 'GOP',
|
||||
description: 'Gebührenordnung für Psychologische Psychotherapeuten und Kinder-/Jugendlichenpsychotherapeuten.',
|
||||
},
|
||||
{
|
||||
id: 'de-ebm',
|
||||
countryCode: 'DE',
|
||||
area: 'Ärzte GKV',
|
||||
abbreviation: 'EBM',
|
||||
description: 'Einheitlicher Bewertungsmaßstab; Abrechnung von Vertragsärzten und Vertragspsychotherapeuten mit der GKV.',
|
||||
},
|
||||
{
|
||||
id: 'de-bema',
|
||||
countryCode: 'DE',
|
||||
area: 'Zahnärzte GKV',
|
||||
abbreviation: 'BEMA',
|
||||
description: 'Bewertungsmaßstab zahnärztlicher Leistungen; GKV-Abrechnung in Zahnarztpraxen.',
|
||||
},
|
||||
{
|
||||
id: 'de-ag-drg-fpv',
|
||||
countryCode: 'DE',
|
||||
area: 'Krankenhäuser',
|
||||
abbreviation: 'aG-DRG / FPV',
|
||||
description: 'Fallpauschalen-Katalog und Abrechnungsbestimmungen für stationäre Krankenhausfälle.',
|
||||
},
|
||||
{
|
||||
id: 'de-uv-goae',
|
||||
countryCode: 'DE',
|
||||
area: 'Berufsgenossenschaft/Unfallversicherung',
|
||||
abbreviation: 'UV-GOÄ',
|
||||
description: 'Gebührenordnung für Ärzte im Bereich gesetzliche Unfallversicherung.',
|
||||
},
|
||||
{
|
||||
id: 'de-got',
|
||||
countryCode: 'DE',
|
||||
area: 'Tierärzte',
|
||||
abbreviation: 'GOT',
|
||||
description: 'Gebührenordnung für Tierärztinnen und Tierärzte.',
|
||||
},
|
||||
{
|
||||
id: 'de-stbvv',
|
||||
countryCode: 'DE',
|
||||
area: 'Steuerberater',
|
||||
abbreviation: 'StBVV',
|
||||
description: 'Steuerberatervergütungsverordnung; gesetzliche Vergütung für steuerberatende Vorbehaltsaufgaben.',
|
||||
},
|
||||
{
|
||||
id: 'de-rvg',
|
||||
countryCode: 'DE',
|
||||
area: 'Rechtsanwälte',
|
||||
abbreviation: 'RVG',
|
||||
description: 'Rechtsanwaltsvergütungsgesetz mit Vergütungsverzeichnis.',
|
||||
},
|
||||
{
|
||||
id: 'de-gnotkg',
|
||||
countryCode: 'DE',
|
||||
area: 'Notare / Grundbuch / Nachlass',
|
||||
abbreviation: 'GNotKG',
|
||||
description: 'Gerichts- und Notarkostengesetz; bundesweit einheitliche Notarkosten.',
|
||||
},
|
||||
{
|
||||
id: 'de-gkg',
|
||||
countryCode: 'DE',
|
||||
area: 'Gerichte allgemein',
|
||||
abbreviation: 'GKG',
|
||||
description: 'Gerichtskostengesetz mit Kostenverzeichnis und Gebührentabellen.',
|
||||
},
|
||||
{
|
||||
id: 'de-famgkg',
|
||||
countryCode: 'DE',
|
||||
area: 'Familiengericht',
|
||||
abbreviation: 'FamGKG',
|
||||
description: 'Gerichtskosten in Familiensachen.',
|
||||
},
|
||||
{
|
||||
id: 'de-gvkostg',
|
||||
countryCode: 'DE',
|
||||
area: 'Gerichtsvollzieher',
|
||||
abbreviation: 'GvKostG',
|
||||
description: 'Gerichtsvollzieherkostengesetz mit Kostenverzeichnis.',
|
||||
},
|
||||
{
|
||||
id: 'de-jveg',
|
||||
countryCode: 'DE',
|
||||
area: 'Sachverständige/Dolmetscher/Zeugen bei Gericht',
|
||||
abbreviation: 'JVEG',
|
||||
description: 'Justizvergütungs- und -entschädigungsgesetz.',
|
||||
},
|
||||
{
|
||||
id: 'de-insvv',
|
||||
countryCode: 'DE',
|
||||
area: 'Insolvenzverwalter',
|
||||
abbreviation: 'InsVV',
|
||||
description: 'Insolvenzrechtliche Vergütungsverordnung.',
|
||||
},
|
||||
{
|
||||
id: 'de-hoai',
|
||||
countryCode: 'DE',
|
||||
area: 'Architekten/Ingenieure',
|
||||
abbreviation: 'HOAI',
|
||||
description: 'Honorarordnung für Architekten und Ingenieure; heute vor allem Orientierungs-/Auffangsystem für erfasste Planungsleistungen.',
|
||||
},
|
||||
{
|
||||
id: 'de-heilmittel-gkv',
|
||||
countryCode: 'DE',
|
||||
area: 'Heilmittel, z. B. Physio/Logo/Ergo',
|
||||
abbreviation: 'keine einzelne GO',
|
||||
description: 'GKV-Vergütungsvereinbarungen/Preislisten nach Bundesrahmenverträgen.',
|
||||
},
|
||||
{
|
||||
id: 'de-hebammenhilfevertrag',
|
||||
countryCode: 'DE',
|
||||
area: 'Hebammen GKV',
|
||||
abbreviation: 'Hebammenhilfevertrag',
|
||||
description: 'Vertrag/Vergütungsvereinbarung nach § 134a SGB V.',
|
||||
},
|
||||
{
|
||||
id: 'de-ampreisv',
|
||||
countryCode: 'DE',
|
||||
area: 'Apotheken/Rx-Arzneimittel',
|
||||
abbreviation: 'AMPreisV',
|
||||
description: 'Arzneimittelpreisverordnung; Preisbildung für verschreibungspflichtige Arzneimittel.',
|
||||
},
|
||||
{
|
||||
id: 'de-gebueh',
|
||||
countryCode: 'DE',
|
||||
area: 'Heilpraktiker',
|
||||
abbreviation: 'GebüH',
|
||||
description: 'Gebührenverzeichnis für Heilpraktiker; keine amtliche verbindliche Gebührenordnung, eher Orientierung/übliche Vergütung.',
|
||||
},
|
||||
];
|
||||
|
||||
export const GERMANY_FEE_SCHEDULE_CATALOG: ICountryFeeScheduleCatalog = {
|
||||
countryCode: 'DE',
|
||||
countryName: 'Germany',
|
||||
schedules: GERMANY_FEE_SCHEDULES,
|
||||
};
|
||||
@@ -0,0 +1,67 @@
|
||||
export type TFeeScheduleCountryCode = 'DE';
|
||||
|
||||
export type TFeeScheduleDataStatus =
|
||||
| 'federal-law-fee-data'
|
||||
| 'federal-law-rules-only'
|
||||
| 'external-source-pending';
|
||||
|
||||
export type TFeeScheduleRowType = 'fee-entry' | 'fee-table-row';
|
||||
|
||||
export interface IFeeSchedule {
|
||||
id: string;
|
||||
countryCode: TFeeScheduleCountryCode;
|
||||
area: string;
|
||||
abbreviation: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export interface ICountryFeeScheduleCatalog {
|
||||
countryCode: TFeeScheduleCountryCode;
|
||||
countryName: string;
|
||||
schedules: IFeeSchedule[];
|
||||
}
|
||||
|
||||
export interface IFeeScheduleSource {
|
||||
name: string;
|
||||
url: string;
|
||||
pageUrl?: string;
|
||||
retrievedAt: string;
|
||||
sourceFileName?: string;
|
||||
officialAbbreviation?: string;
|
||||
legalAbbreviation?: string;
|
||||
title?: string;
|
||||
issuedAt?: string;
|
||||
statusNotes?: string[];
|
||||
}
|
||||
|
||||
export interface IFeeScheduleFeeRow {
|
||||
id: string;
|
||||
scheduleId: string;
|
||||
rowType: TFeeScheduleRowType;
|
||||
rowIndex: number;
|
||||
code?: string;
|
||||
description?: string;
|
||||
cells: string[];
|
||||
points?: number;
|
||||
amountEur?: number;
|
||||
sourceNormId?: string;
|
||||
}
|
||||
|
||||
export interface IFeeScheduleRuleSection {
|
||||
id: string;
|
||||
scheduleId: string;
|
||||
sourceNormId: string;
|
||||
reference: string;
|
||||
title?: string;
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface IFeeScheduleData {
|
||||
scheduleId: string;
|
||||
dataStatus: TFeeScheduleDataStatus;
|
||||
edition: string;
|
||||
source: IFeeScheduleSource;
|
||||
feeRows: IFeeScheduleFeeRow[];
|
||||
ruleSections: IFeeScheduleRuleSection[];
|
||||
notes: string[];
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_AGDRGFPV_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-ag-drg-fpv",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "InEK aG-DRG Fallpauschalen-Katalog / FPV",
|
||||
"url": "https://www.g-drg.de",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"Year-specific InEK catalog source; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
@@ -0,0 +1,146 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_AMPREISV_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-ampreisv",
|
||||
"dataStatus": "federal-law-rules-only",
|
||||
"edition": "Zuletzt geändert durch Art. 5 G v. 19.7.2023 I Nr. 197",
|
||||
"source": {
|
||||
"name": "Gesetze im Internet",
|
||||
"url": "https://www.gesetze-im-internet.de/ampreisv/xml.zip",
|
||||
"pageUrl": "https://www.gesetze-im-internet.de/ampreisv/",
|
||||
"retrievedAt": "2026-05-14",
|
||||
"sourceFileName": "BJNR021470980.xml",
|
||||
"officialAbbreviation": "AMPreisV",
|
||||
"legalAbbreviation": "AMPreisV",
|
||||
"title": "Arzneimittelpreisverordnung",
|
||||
"issuedAt": "1980-11-14",
|
||||
"statusNotes": [
|
||||
"Zuletzt geändert durch Art. 5 G v. 19.7.2023 I Nr. 197"
|
||||
]
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [
|
||||
{
|
||||
"id": "de-ampreisv-section-1",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980",
|
||||
"reference": "AMPreisV",
|
||||
"text": "(+++ Textnachweis ab: 1.1.1981 +++)"
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-2",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000100312",
|
||||
"reference": "Eingangsformel",
|
||||
"text": "Auf Grund des § 78 des Arzneimittelgesetzes vom 24. August 1976 (BGBl. I S. 2445, 2448) wird im Einvernehmen mit dem Bundesminister für Jugend, Familie und Gesundheit, dem Bundesminister für Arbeit und Sozialordnung und dem Bundesminister für Ernährung, Landwirtschaft und Forsten mit Zustimmung des Bundesrates verordnet:"
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-3",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000211116",
|
||||
"reference": "§ 1",
|
||||
"title": "Anwendungsbereich der Verordnung",
|
||||
"text": "(1) Für Arzneimittel, die im voraus hergestellt und in einer zur Abgabe an den Verbraucher bestimmten Packung in den Verkehr gebracht werden (Fertigarzneimittel) und deren Abgabe nach § 43 Abs. 1 des Arzneimittelgesetzes den Apotheken vorbehalten ist, werden durch diese Verordnung festgelegt 1. die Preisspannen des Großhandels bei der Abgabe im Wiederverkauf an Apotheken oder Tierärzte (§ 2), 2. die Preisspannen sowie die Preise für besondere Leistungen der Apotheken bei der Abgabe im Wiederverkauf (§§ 3, 6 und 7), 3. die Preisspannen der Tierärzte bei der Abgabe im Wiederverkauf an Tierhalter (§ 10). (2) Für Arzneimittel, die in Apotheken oder von Tierärzten hergestellt werden und deren Abgabe nach § 43 Abs. 1 und 3 des Arzneimittelgesetzes den Apotheken vorbehalten ist, werden durch diese Verordnung festgelegt 1. die Preisspannen sowie die Preise für besondere Leistungen der Apotheken (§§ 4 bis 7), 2. die Preisspannen der Tierärzte (§ 10). (3) Ausgenommen sind die Preisspannen und Preise der Apotheken, wenn es sich um eine Abgabe handelt 1. durch Krankenhausapotheken, soweit es sich nicht um die Abgabe von parenteralen Zubereitungen aus Fertigarzneimitteln in der Onkologie zur ambulanten Versorgung handelt, 2. an Krankenhäuser und diesen nach § 14 Absatz 8 Satz 2 des Apothekengesetzes gleichgestellte Einrichtungen sowie an Justizvollzugsanstalten und Jugendarrestanstalten, 3. an die in § 47 Absatz 1 Satz 1 Nummer 2 bis 10 des Arzneimittelgesetzes genannten Personen und Einrichtungen unter den dort bezeichneten Voraussetzungen, 3a. von Impfstoffen, die zur Anwendung bei öffentlich empfohlenen Schutzimpfungen im Sinne des § 20 Abs. 3 des Infektionsschutzgesetzes vom 20. Juli 2000 (BGBl. I S. 1045) bestimmt sind und diese Impfstoffe an Krankenhäuser, Gesundheitsämter und Ärzte abgegeben werden, sofern es sich nicht um die Abgabe von saisonalen Grippeimpfstoffen an Ärzte handelt, 4. von Impfstoffen, die zur Anwendung bei allgemeinen, insbesondere behördlichen oder betrieblichen Grippevorsorgemaßnahmen bestimmt sind, 5. an Gesundheitsämter für Maßnahmen der Rachitisvorsorge, 6. von Arzneimitteln, die zur Anwendung bei der Dialyse Nierenkranker bestimmt sind, 7. von aus Fertigarzneimitteln auf Grund ärztlicher Verordnung entnommenen Teilmengen, soweit deren Darreichungsform, Zusammensetzung und Stärke unverändert bleibt, 8. von Fertigarzneimitteln in parenteralen Zubereitungen. Im Fall von Satz 1 Nummer 1 bleibt § 129a des Fünften Buches Sozialgesetzbuch unberührt. Im Fall von Satz 1 Nr. 7 können Sozialleistungsträger, private Krankenversicherungen oder deren Verbände das Verfahren für die Berechnung der Apothekenabgabepreise für die zu ihren Lasten abgegebenen Arzneimittel mit Apotheken oder deren Verbänden vereinbaren. (4) Ausgenommen sind die Preisspannen und Preise von nicht verschreibungspflichtigen Arzneimitteln."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-4",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000308130",
|
||||
"reference": "§ 2",
|
||||
"title": "Großhandelszuschläge für Fertigarzneimittel",
|
||||
"text": "(1) Bei der Abgabe von Fertigarzneimitteln, die zur Anwendung bei Menschen bestimmt sind, durch den Großhandel an Apotheken oder Tierärzte sind auf den Abgabepreis des pharmazeutischen Unternehmers ein Festzuschlag von 73 Cent sowie die Umsatzsteuer zu erheben; zusätzlich darf auf den Abgabepreis des pharmazeutischen Unternehmers ohne die Umsatzsteuer höchstens ein Zuschlag von 3,15 Prozent, höchstens jedoch 37,80 Euro erhoben werden. Bei der Abgabe von Fertigarzneimitteln, die zur Anwendung bei Tieren bestimmt sind, durch den Großhandel an Apotheken oder Tierärzte dürfen auf den Abgabepreis des pharmazeutischen Unternehmers ohne die Umsatzsteuer höchstens Zuschläge nach Absatz 2 oder 3 sowie die Umsatzsteuer erhoben werden. Der Berechnung der Zuschläge nach Satz 1 ist jeweils der Betrag zugrunde zu legen, zu dem der pharmazeutische Unternehmer das Arzneimittel nach § 78 Absatz 3 oder Absatz 3a des Arzneimittelgesetzes abgibt. (2) Der Höchstzuschlag nach Absatz 1 Satz 2 ist bei einem Abgabepreis des pharmazeutischen Unternehmers bis 0,84 Euro 21,0 Prozent (Spanne 17,4 Prozent), von 0,89 Euro bis 1,70 Euro 20,0 Prozent (Spanne 16,7 Prozent), von 1,75 Euro bis 2,56 Euro 19,5 Prozent (Spanne 16,3 Prozent), von 2,64 Euro bis 3,65 Euro 19,0 Prozent (Spanne 16,0 Prozent), von 3,76 Euro bis 6,03 Euro 18,5 Prozent (Spanne 15,6 Prozent), von 6,21 Euro bis 9,10 Euro 18,0 Prozent (Spanne 15,3 Prozent), von 10,93 Euro bis 44,46 Euro 15,0 Prozent (Spanne 13,0 Prozent), von 55,59 Euro bis 684,76 Euro 12,0 Prozent (Spanne 10,7 Prozent), ab 684,77 Euro 3,0 Prozent zuzüglich 61,63 Euro. (3) Der Höchstzuschlag nach Absatz 1 Satz 2 ist bei einem Abgabepreis des pharmazeutischen Unternehmers von 0,85 Euro bis 0,88 Euro 0,18 Euro, von 1,71 Euro bis 1,74 Euro 0,34 Euro, von 2,57 Euro bis 2,63 Euro 0,50 Euro, von 3,66 Euro bis 3,75 Euro 0,70 Euro, von 6,04 Euro bis 6,20 Euro 1,12 Euro, von 9,11 Euro bis 10,92 Euro 1,64 Euro, von 44,47 Euro bis 55,58 Euro 6,67 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-5",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000412130",
|
||||
"reference": "§ 3",
|
||||
"title": "Apothekenzuschläge für Fertigarzneimittel",
|
||||
"text": "(1) Bei der Abgabe von Fertigarzneimitteln, die zur Anwendung bei Menschen bestimmt sind, durch die Apotheken sind zur Berechnung des Apothekenabgabepreises ein Festzuschlag von 3 Prozent zuzüglich 8,35 Euro zuzüglich 21 Cent zur Förderung der Sicherstellung des Notdienstes zuzüglich 20 Cent zur Finanzierung zusätzlicher pharmazeutischer Dienstleistungen nach § 129 Absatz 5e des Fünften Buches Sozialgesetzbuch sowie die Umsatzsteuer zu erheben; bei der Abgabe von saisonalen Grippeimpfstoffen durch die Apotheken an Ärzte sind abweichend ein Zuschlag von 1 Euro je Einzeldosis, höchstens jedoch 75 Euro je Verordnungszeile, sowie die Umsatzsteuer zu erheben. Soweit Fertigarzneimittel, die zur Anwendung bei Menschen bestimmt sind, durch die Apotheken zur Anwendung bei Tieren abgegeben werden, dürfen zur Berechnung des Apothekenabgabepreises abweichend von Satz 1 höchstens ein Zuschlag von 3 Prozent zuzüglich 8,10 Euro sowie die Umsatzsteuer erhoben werden. Bei der Abgabe von Fertigarzneimitteln, die zur Anwendung bei Tieren bestimmt sind, durch die Apotheken dürfen zur Berechnung des Apothekenabgabepreises höchstens Zuschläge nach Absatz 3 oder 4 sowie die Umsatzsteuer erhoben werden. (1a) Im Fall eines Austauschs eines verordneten Arzneimittels nach § 129 Absatz 2a des Fünften Buches Sozialgesetzbuch durch die Apotheke ist ein Zuschlag in Höhe von 50 Cent zuzüglich Umsatzsteuer zu erheben. (2) Der Festzuschlag ist zu erheben 1. auf den Betrag, der sich aus der Zusammenrechnung des bei Belieferung des Großhandels geltenden Abgabepreises des pharmazeutischen Unternehmers ohne die Umsatzsteuer und des darauf entfallenden Großhandelshöchstzuschlags nach § 2 ergibt, 2. bei Fertigarzneimitteln, die nach § 52b Absatz 2 Satz 3 des Arzneimittelgesetzes nur vom pharmazeutischen Unternehmer direkt zu beziehen sind, auf den bei Belieferung der Apotheke geltenden Abgabepreis des pharmazeutischen Unternehmers ohne die Umsatzsteuer; § 2 Absatz 1 Satz 3 gilt entsprechend. (3) Der Höchstzuschlag nach Absatz 1 Satz 3 ist bei einem Betrag bis 1,22 Euro 68 Prozent (Spanne 40,5 Prozent), von 1,35 Euro bis 3,88 Euro 62 Prozent (Spanne 38,3 Prozent), von 4,23 Euro bis 7,30 Euro 57 Prozent (Spanne 36,3 Prozent), von 8,68 Euro bis 12,14 Euro 48 Prozent (Spanne 32,4 Prozent), von 13,56 Euro bis 19,42 Euro 43 Prozent (Spanne 30,1 Prozent), von 22,58 Euro bis 29,14 Euro 37 Prozent (Spanne 27,0 Prozent), von 35,95 Euro bis 543,91 Euro 30 Prozent (Spanne 23,1 Prozent), ab 543,92 Euro 8,263 Prozent zuzüglich 118,24 Euro. (4) Der Höchstzuschlag nach Absatz 1 Satz 3 ist bei einem Betrag von 1,23 Euro bis 1,34 Euro 0,83 Euro, von 3,89 Euro bis 4,22 Euro 2,41 Euro, von 7,31 Euro bis 8,67 Euro 4,16 Euro, von 12,15 Euro bis 13,55 Euro 5,83 Euro, von 19,43 Euro bis 22,57 Euro 8,35 Euro, von 29,15 Euro bis 35,94 Euro 10,78 Euro. (5) Sofern die abzugebende Menge nicht in der Verschreibung vorgeschrieben oder gesetzlich bestimmt ist, haben die Apotheken, soweit mit den Kostenträgern nichts anderes vereinbart ist, die kleinste im Verkehr befindliche Packung zu berechnen. Satz 1 gilt auch in dem Fall, dass statt der verschriebenen Packungsgröße die verschriebene Menge des Arzneimittels als Teilmenge aus einer Packung abgegeben wird, die größer ist als die verschriebene Packungsgröße. (6) Für die erneute Abgabe der an eine Apotheke zurückgegebenen verschreibungspflichtigen Fertigarzneimittel durch die Apotheke beträgt der Festzuschlag 5,80 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-6",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000505116",
|
||||
"reference": "§ 4",
|
||||
"title": "Apothekenzuschläge für Stoffe",
|
||||
"text": "(1) Bei der Abgabe eines Stoffes, der in Apotheken in unverändertem Zustand umgefüllt, abgefüllt, abgepackt oder gekennzeichnet wird, sind ein Festzuschlag von 100 Prozent (Spanne 50 Prozent) auf die Apothekeneinkaufspreise ohne Umsatzsteuer für Stoff und erforderliche Verpackung sowie die Umsatzsteuer zu erheben. (2) Auszugehen ist von dem Apothekeneinkaufspreis der abzugebenden Menge des Stoffes, wobei der Einkaufspreis der üblichen Abpackung maßgebend ist. (3) Trifft die für die Wahrnehmung der wirtschaftlichen Interessen gebildete maßgebliche Spitzenorganisation der Apotheker mit dem Spitzenverband Bund der Krankenkassen Vereinbarungen über Apothekeneinkaufspreise, die der Berechnung zugrunde gelegt werden sollen, so ist der Festzuschlag für die durch diese Vereinbarungen erfaßten Abgaben abweichend von den Absätzen 1 und 2 auf diese Preise zu erheben. Das Gleiche gilt, wenn Sozialleistungsträger, private Krankenversicherungen oder deren Verbände mit Apotheken oder deren Verbänden entsprechende Vereinbarungen treffen; liegt eine solche Vereinbarung nicht vor, kann auf die nach Satz 1 vereinbarten Preise abgestellt werden. (4) Trifft die für die Wahrnehmung der wirtschaftlichen Interessen gebildete maßgebliche Spitzenorganisation der Apotheker mit dem Spitzenverband Bund der Krankenkassen Vereinbarungen über die Höhe des Festzuschlages nach Absatz 1, so ist der vereinbarte Zuschlag abweichend von Absatz 1 bei der Preisberechnung zu berücksichtigen. Das Gleiche gilt, wenn Sozialleistungsträger, private Krankenversicherungsunternehmen oder deren Verbände mit Apotheken oder deren Verbänden entsprechende Vereinbarungen treffen. Liegt eine Vereinbarung nach Satz 2 nicht vor, kann auf die nach Satz 1 vereinbarten Preise abgestellt werden."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-7",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000609360",
|
||||
"reference": "§ 5",
|
||||
"title": "Apothekenzuschläge für Zubereitungen aus Stoffen",
|
||||
"text": "(1) Bei der Abgabe einer Zubereitung aus einem Stoff oder mehreren Stoffen, die in Apotheken angefertigt wird, sind 1. ein Festzuschlag von 90 Prozent auf die Apothekeneinkaufspreise ohne Umsatzsteuer für Stoffe und erforderliche Verpackung, 2. ein Rezepturzuschlag nach Absatz 3, 3. ein Festzuschlag von 8,35 Euro für Zubereitungen nach Absatz 3, die nicht Absatz 6 unterfallen sowie die Umsatzsteuer zu erheben. (2) Auszugehen ist von den Apothekeneinkaufspreisen der für die Zubereitung erforderlichen Mengen an Stoffen und Fertigarzneimitteln. Maßgebend ist 1. bei Stoffen der Einkaufspreis der üblichen Abpackung, 2. bei Fertigarzneimitteln der Einkaufspreis nach § 3 Abs. 2 der erforderlichen Packungsgröße, höchstens jedoch der Apothekeneinkaufspreis, der für Fertigarzneimittel bei Abgabe in öffentlichen Apotheken gilt. (3) Der Rezepturzuschlag beträgt für 1. die Herstellung eines Arzneimittels durch Zubereitung aus einem Stoff oder mehreren Stoffen bis zur Grundmenge von 500 g, die Anfertigung eines gemischten Tees, Herstellung einer Lösung ohne Anwendung von Wärme, Mischen von Flüssigkeiten bis zur Grundmenge von 300 g 3,50 Euro, 2. die Anfertigung von Pudern, ungeteilten Pulvern, Salben, Pasten, Suspensionen und Emulsionen bis zur Grundmenge von 200 g, die Anfertigung von Lösungen unter Anwendung von Wärme, Mazerationen, Aufgüssen und Abkochungen bis zur Grundmenge von 300 g 6,00 Euro, 3. die Anfertigung von Pillen, Tabletten und Pastillen bis zur Grundmenge von 50 Stück, die Anfertigung von abgeteilten Pulvern, Zäpfchen, Vaginal-Kugeln und für das Füllen von Kapseln bis zur Grundmenge von 12 Stück, die Anfertigung von Arzneimitteln mit Durchführung einer Sterilisation, Sterilfiltration oder aseptischen Zubereitung bis zur Grundmenge von 300 g, das Zuschmelzen von Ampullen bis zur Grundmenge von 6 Stück 8,00 Euro. Für jede über die Grundmenge hinausgehende kleinere bis gleich große Menge erhöht sich der Rezepturzuschlag um jeweils 50 Prozent. (4) Trifft die für die Wahrnehmung der wirtschaftlichen Interessen gebildete maßgebliche Spitzenorganisation der Apotheker mit dem Spitzenverband Bund der Krankenkassen Vereinbarungen über Apothekeneinkaufspreise, die der Berechnung zugrunde gelegt werden sollen, so ist der Festzuschlag nach Absatz 1 Nr. 1 für die durch diese Vereinbarungen erfaßten Abgaben abweichend von den Absätzen 1 und 2 auf diese Preise zu erheben. Das Gleiche gilt, wenn Sozialleistungsträger, private Krankenversicherungen oder deren Verbände mit Apotheken oder deren Verbänden entsprechende Vereinbarungen treffen; liegt eine solche Vereinbarung nicht vor, kann auf die nach Satz 1 vereinbarten Preise abgestellt werden. Besteht keine Vereinbarung über abrechnungsfähige Einkaufspreise für Fertigarzneimittel in Zubereitungen nach Satz 1 oder Satz 2, ist höchstens der Apothekeneinkaufspreis zu berechnen, der bei Abgabe an Verbraucher auf Grund dieser Verordnung gilt. Bei einer umsatzsteuerfreien Abgabe von parenteralen Zubereitungen aus Fertigarzneimitteln in der Onkologie zur ambulanten Versorgung durch Krankenhausapotheken ist höchstens der Apothekeneinkaufspreis nach Satz 3 einschließlich der in diesem enthaltenen Umsatzsteuer zu berechnen. (5) Trifft die für die Wahrnehmung der wirtschaftlichen Interessen gebildete maßgebliche Spitzenorganisation der Apotheker mit dem Spitzenverband Bund der Krankenkassen Vereinbarungen über die Höhe des Fest- oder Rezepturzuschlages nach Absatz 1, so sind die vereinbarten Zuschläge abweichend von Absatz 1 oder Absatz 3 bei der Preisberechnung zu berücksichtigen. Das Gleiche gilt, wenn Sozialleistungsträger, private Krankenversicherungen oder deren Verbände mit Apotheken oder deren Verbänden entsprechende Vereinbarungen treffen; liegt eine solche Vereinbarung nicht vor, kann auf die nach Satz 1 vereinbarten Preise abgestellt werden. (6) Besteht keine Vereinbarung über Apothekenzuschläge für die Zubereitung von Stoffen nach Absatz 5 Satz 1 oder Satz 2, beträgt der Zuschlag für parenterale Lösungen abweichend von Absatz 1 oder Absatz 3 für 1. zytostatikahaltige Lösungen 90 Euro, 2. Lösungen mit monoklonalen Antikörpern 87 Euro, 3. antibiotika- und virustatikahaltige Lösungen 51 Euro, 4. Lösungen mit Schmerzmitteln 51 Euro, 5. Ernährungslösungen 83 Euro, 6. Calciumfolinatlösungen 51 Euro, 7. sonstige Lösungen 70 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-8",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000704310",
|
||||
"reference": "§ 6",
|
||||
"title": "Notdienst",
|
||||
"text": "Bei der Inanspruchnahme in der Zeit von 20 bis 6 Uhr, an Sonn- und Feiertagen sowie am 24. Dezember, wenn dieser Tag auf einen Werktag fällt, bis 6 Uhr und ab 14 Uhr können die Apotheken einen zusätzlichen Betrag von 2,50 Euro einschließlich Umsatzsteuer berechnen."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-9",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000803116",
|
||||
"reference": "§ 7",
|
||||
"title": "Betäubungsmittel und Arzneimittel nach § 3a der Arzneimittelverschreibungsverordnung",
|
||||
"text": "Bei der Abgabe eines Betäubungsmittels, dessen Verbleib nach § 1 Absatz 3 der Betäubungsmittel-Verschreibungsverordnung nachzuweisen ist, sowie bei der Abgabe von Arzneimitteln nach § 3a der Arzneimittelverschreibungsverordnung können die Apotheken einen zusätzlichen Betrag von 4,26 Euro einschließlich Umsatzsteuer berechnen."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-10",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE000900312",
|
||||
"reference": "§ 8",
|
||||
"title": "Sonderbeschaffung",
|
||||
"text": "Unvermeidbare Telegrammgebühren, Fernsprechgebühren, Porti, Zölle und andere Kosten der Beschaffung von Arzneimitteln, die üblicherweise weder in Apotheken noch im Großhandel vorrätig gehalten werden, können die Apotheken mit Zustimmung des Kostenträgers gesondert berechnen."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-11",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE001000312",
|
||||
"reference": "§ 9",
|
||||
"title": "Angaben auf der Verschreibung",
|
||||
"text": "Auf der Verschreibung sind von den Apotheken einzeln anzugeben 1. bei Fertigarzneimitteln der Apothekenabgabepreis, zusätzlich berechnete Beträge und die Summe der Einzelbeträge, 2. bei Arzneimitteln, die in Apotheken hergestellt werden, außerdem die Einzelbeträge des Apothekenabgabepreises, 3. bei einem Betrag nach § 6 auch die Zeit der Inanspruchnahme."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-12",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE001103310",
|
||||
"reference": "§ 10",
|
||||
"title": "Zuschläge der Tierärzte",
|
||||
"text": "(1) Bei der Abgabe von Arzneimitteln durch Tierärzte an Tierhalter dürfen höchstens Zuschläge entsprechend § 3 Abs. 1 Satz 2 und 3 und Abs. 2 bis 4, § 4 Abs. 1 und 2 und § 5 Abs. 1 bis 3 sowie die Umsatzsteuer erhoben werden. (2) Liegt der für den Zuschlag entsprechend § 3 Abs. 2 maßgebliche Betrag über 51,13 Euro, so sind für den 51,13 Euro übersteigenden Betrag folgende Zuschläge zu erheben: von 51,13 Euro bis 127,82 Euro höchstens 25 Prozent, von mehr als 127,82 Euro höchstens 20 Prozent. (3) (weggefallen)"
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-13",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE001500310",
|
||||
"reference": "§ 11",
|
||||
"title": "Preise in besonderen Fällen",
|
||||
"text": "Bei der Abgabe von Fertigarzneimitteln in den Fällen des § 78 Abs. 4 des Arzneimittelgesetzes wird bei Anwendung dieser Verordnung der Abgabepreis des pharmazeutischen Unternehmers durch den Länderabgabepreis ersetzt. Bei Abgabe von Stoffen oder Zubereitungen ist zur Berechnung des Apothekeneinkaufspreises sowie bei Vereinbarungen über Apothekeneinkaufspreise nach § 4 Abs. 3 und § 5 Abs. 4 ebenfalls der Länderabgabepreis zugrunde zu legen. Abweichend von § 4 Abs. 3 sowie § 5 Abs. 4 und 5 können auch die für die Wahrnehmung der wirtschaftlichen Interessen gebildeten Verbände der Apotheker mit den Krankenkassen oder ihren Verbänden Vereinbarungen über die Apothekeneinkaufspreise und Zuschläge treffen."
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-14",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE001300312",
|
||||
"reference": "§ 12",
|
||||
"title": "Inkrafttreten, abgelöste Vorschriften",
|
||||
"text": "(1) Diese Verordnung tritt am 1. Januar 1981 in Kraft. (2) (Aufhebungsvorschriften)"
|
||||
},
|
||||
{
|
||||
"id": "de-ampreisv-section-15",
|
||||
"scheduleId": "de-ampreisv",
|
||||
"sourceNormId": "BJNR021470980BJNE001400312",
|
||||
"reference": "Schlußformel",
|
||||
"text": "Der Bundesminister für Wirtschaft"
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"No separate fee table rows were present in the federal XML. Fee rules are represented as rule sections."
|
||||
]
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_BEMA_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-bema",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "Kassenzahnärztliche Bundesvereinigung BEMA",
|
||||
"url": "https://www.kzbv.de/bema",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"External dental self-administration source; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_EBM_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-ebm",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "Kassenärztliche Bundesvereinigung EBM",
|
||||
"url": "https://www.kbv.de/html/ebm.php",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"External self-administration source; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_GEBUEH_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-gebueh",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "Gebührenverzeichnis für Heilpraktiker",
|
||||
"url": "https://www.gebueh.de",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"Non-official customary fee directory; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
+5508
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+42537
File diff suppressed because one or more lines are too long
@@ -0,0 +1,71 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_GOP_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-gop",
|
||||
"dataStatus": "federal-law-rules-only",
|
||||
"edition": "Geändert durch § 5 Satz 3 V v. 18.10.2001 I 2721",
|
||||
"source": {
|
||||
"name": "Gesetze im Internet",
|
||||
"url": "https://www.gesetze-im-internet.de/gop/xml.zip",
|
||||
"pageUrl": "https://www.gesetze-im-internet.de/gop/",
|
||||
"retrievedAt": "2026-05-14",
|
||||
"sourceFileName": "BJNR081800000.xml",
|
||||
"officialAbbreviation": "GOP",
|
||||
"legalAbbreviation": "GOP",
|
||||
"title": "Gebührenordnung für Psychologische Psychotherapeuten und Kinder- und Jugendlichenpsychotherapeuten",
|
||||
"issuedAt": "2000-06-08",
|
||||
"statusNotes": [
|
||||
"Geändert durch § 5 Satz 3 V v. 18.10.2001 I 2721"
|
||||
]
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [
|
||||
{
|
||||
"id": "de-gop-section-1",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000",
|
||||
"reference": "GOP",
|
||||
"text": "(+++ Textnachweis ab: 24.6.2000 +++)"
|
||||
},
|
||||
{
|
||||
"id": "de-gop-section-2",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000BJNE000100305",
|
||||
"reference": "Eingangsformel",
|
||||
"text": "Auf Grund des § 9 des Psychotherapeutengesetzes vom 16. Juni 1998 (BGBl. I S. 1311) verordnet das Bundesministerium für Gesundheit:"
|
||||
},
|
||||
{
|
||||
"id": "de-gop-section-3",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000BJNE000200305",
|
||||
"reference": "§ 1",
|
||||
"text": "(1) Die Vergütungen für die beruflichen Leistungen der Psychologischen Psychotherapeuten und der Kinder- und Jugendlichenpsychotherapeuten im Sinne von § 1 Abs. 3 des Psychotherapeutengesetzes richten sich nach der Gebührenordnung für Ärzte in der Fassung der Bekanntmachung vom 9. Februar 1996 (BGBl. I S. 210), geändert durch Artikel 17 des Gesetzes vom 22. Dezember 1999 (BGBl. I S. 2626), soweit nicht durch Bundesgesetz etwas anderes bestimmt ist. (2) Vergütungen nach Absatz 1 sind nur für Leistungen berechnungsfähig, die in den Abschnitten B und G des Gebührenverzeichnisses der Gebührenordnung für Ärzte aufgeführt sind. § 6 Abs. 2 der Gebührenordnung für Ärzte gilt mit der Maßgabe, dass psychotherapeutische Leistungen, die nicht im Gebührenverzeichnis der Gebührenordnung für Ärzte enthalten sind, entsprechend einer nach Art, Kosten- und Zeitaufwand gleichwertigen Leistung der Abschnitte B und G des Gebührenverzeichnisses der Gebührenordnung für Ärzte berechnet werden können."
|
||||
},
|
||||
{
|
||||
"id": "de-gop-section-4",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000BJNE000301320",
|
||||
"reference": "§ 2",
|
||||
"text": "(weggefallen)"
|
||||
},
|
||||
{
|
||||
"id": "de-gop-section-5",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000BJNE000400305",
|
||||
"reference": "§ 3",
|
||||
"text": "Diese Verordnung tritt am Tage nach der Verkündung in Kraft."
|
||||
},
|
||||
{
|
||||
"id": "de-gop-section-6",
|
||||
"scheduleId": "de-gop",
|
||||
"sourceNormId": "BJNR081800000BJNE000500305",
|
||||
"reference": "Schlussformel",
|
||||
"text": "Der Bundesrat hat zugestimmt."
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"No separate fee table rows were present in the federal XML. Fee rules are represented as rule sections."
|
||||
]
|
||||
};
|
||||
+13234
File diff suppressed because one or more lines are too long
+3169
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_HEBAMMENHILFEVERTRAG_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-hebammenhilfevertrag",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "GKV-Spitzenverband Hebammenhilfevertrag",
|
||||
"url": "https://www.gkv-spitzenverband.de/krankenversicherung/ambulante_leistungen/hebammen_geburtshaeuser/hebammenhilfevertrag/hebammenhilfevertrag.jsp",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"External contract and remuneration agreement source; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_HEILMITTELGKV_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-heilmittel-gkv",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "GKV-Spitzenverband Heilmittel contracts and price lists",
|
||||
"url": "https://www.gkv-spitzenverband.de/krankenversicherung/ambulante_leistungen/heilmittel/heilmittel.jsp",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"External contract and price list source by remedy area; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
+7424
File diff suppressed because one or more lines are too long
@@ -0,0 +1,70 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
import { GERMANY_GOAE_FEE_SCHEDULE_DATA } from './goae.js';
|
||||
import { GERMANY_GOZ_FEE_SCHEDULE_DATA } from './goz.js';
|
||||
import { GERMANY_GOP_FEE_SCHEDULE_DATA } from './gop.js';
|
||||
import { GERMANY_GOT_FEE_SCHEDULE_DATA } from './got.js';
|
||||
import { GERMANY_STBVV_FEE_SCHEDULE_DATA } from './stbvv.js';
|
||||
import { GERMANY_RVG_FEE_SCHEDULE_DATA } from './rvg.js';
|
||||
import { GERMANY_GNOTKG_FEE_SCHEDULE_DATA } from './gnotkg.js';
|
||||
import { GERMANY_GKG_FEE_SCHEDULE_DATA } from './gkg.js';
|
||||
import { GERMANY_FAMGKG_FEE_SCHEDULE_DATA } from './famgkg.js';
|
||||
import { GERMANY_GVKOSTG_FEE_SCHEDULE_DATA } from './gvkostg.js';
|
||||
import { GERMANY_JVEG_FEE_SCHEDULE_DATA } from './jveg.js';
|
||||
import { GERMANY_INSVV_FEE_SCHEDULE_DATA } from './insvv.js';
|
||||
import { GERMANY_HOAI_FEE_SCHEDULE_DATA } from './hoai.js';
|
||||
import { GERMANY_AMPREISV_FEE_SCHEDULE_DATA } from './ampreisv.js';
|
||||
import { GERMANY_EBM_FEE_SCHEDULE_DATA } from './ebm.js';
|
||||
import { GERMANY_BEMA_FEE_SCHEDULE_DATA } from './bema.js';
|
||||
import { GERMANY_AGDRGFPV_FEE_SCHEDULE_DATA } from './agdrgfpv.js';
|
||||
import { GERMANY_UVGOAE_FEE_SCHEDULE_DATA } from './uvgoae.js';
|
||||
import { GERMANY_HEILMITTELGKV_FEE_SCHEDULE_DATA } from './heilmittelgkv.js';
|
||||
import { GERMANY_HEBAMMENHILFEVERTRAG_FEE_SCHEDULE_DATA } from './hebammenhilfevertrag.js';
|
||||
import { GERMANY_GEBUEH_FEE_SCHEDULE_DATA } from './gebueh.js';
|
||||
|
||||
export { GERMANY_GOAE_FEE_SCHEDULE_DATA } from './goae.js';
|
||||
export { GERMANY_GOZ_FEE_SCHEDULE_DATA } from './goz.js';
|
||||
export { GERMANY_GOP_FEE_SCHEDULE_DATA } from './gop.js';
|
||||
export { GERMANY_GOT_FEE_SCHEDULE_DATA } from './got.js';
|
||||
export { GERMANY_STBVV_FEE_SCHEDULE_DATA } from './stbvv.js';
|
||||
export { GERMANY_RVG_FEE_SCHEDULE_DATA } from './rvg.js';
|
||||
export { GERMANY_GNOTKG_FEE_SCHEDULE_DATA } from './gnotkg.js';
|
||||
export { GERMANY_GKG_FEE_SCHEDULE_DATA } from './gkg.js';
|
||||
export { GERMANY_FAMGKG_FEE_SCHEDULE_DATA } from './famgkg.js';
|
||||
export { GERMANY_GVKOSTG_FEE_SCHEDULE_DATA } from './gvkostg.js';
|
||||
export { GERMANY_JVEG_FEE_SCHEDULE_DATA } from './jveg.js';
|
||||
export { GERMANY_INSVV_FEE_SCHEDULE_DATA } from './insvv.js';
|
||||
export { GERMANY_HOAI_FEE_SCHEDULE_DATA } from './hoai.js';
|
||||
export { GERMANY_AMPREISV_FEE_SCHEDULE_DATA } from './ampreisv.js';
|
||||
export { GERMANY_EBM_FEE_SCHEDULE_DATA } from './ebm.js';
|
||||
export { GERMANY_BEMA_FEE_SCHEDULE_DATA } from './bema.js';
|
||||
export { GERMANY_AGDRGFPV_FEE_SCHEDULE_DATA } from './agdrgfpv.js';
|
||||
export { GERMANY_UVGOAE_FEE_SCHEDULE_DATA } from './uvgoae.js';
|
||||
export { GERMANY_HEILMITTELGKV_FEE_SCHEDULE_DATA } from './heilmittelgkv.js';
|
||||
export { GERMANY_HEBAMMENHILFEVERTRAG_FEE_SCHEDULE_DATA } from './hebammenhilfevertrag.js';
|
||||
export { GERMANY_GEBUEH_FEE_SCHEDULE_DATA } from './gebueh.js';
|
||||
|
||||
export const GERMANY_FEE_SCHEDULE_DATA: IFeeScheduleData[] = [
|
||||
GERMANY_GOAE_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GOZ_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GOP_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GOT_FEE_SCHEDULE_DATA,
|
||||
GERMANY_STBVV_FEE_SCHEDULE_DATA,
|
||||
GERMANY_RVG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GNOTKG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GKG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_FAMGKG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GVKOSTG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_JVEG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_INSVV_FEE_SCHEDULE_DATA,
|
||||
GERMANY_HOAI_FEE_SCHEDULE_DATA,
|
||||
GERMANY_AMPREISV_FEE_SCHEDULE_DATA,
|
||||
GERMANY_EBM_FEE_SCHEDULE_DATA,
|
||||
GERMANY_BEMA_FEE_SCHEDULE_DATA,
|
||||
GERMANY_AGDRGFPV_FEE_SCHEDULE_DATA,
|
||||
GERMANY_UVGOAE_FEE_SCHEDULE_DATA,
|
||||
GERMANY_HEILMITTELGKV_FEE_SCHEDULE_DATA,
|
||||
GERMANY_HEBAMMENHILFEVERTRAG_FEE_SCHEDULE_DATA,
|
||||
GERMANY_GEBUEH_FEE_SCHEDULE_DATA,
|
||||
];
|
||||
@@ -0,0 +1,211 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_INSVV_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-insvv",
|
||||
"dataStatus": "federal-law-rules-only",
|
||||
"edition": "Zuletzt geändert durch Art. 4 G v. 22.12.2020 I 3328",
|
||||
"source": {
|
||||
"name": "Gesetze im Internet",
|
||||
"url": "https://www.gesetze-im-internet.de/insvv/xml.zip",
|
||||
"pageUrl": "https://www.gesetze-im-internet.de/insvv/",
|
||||
"retrievedAt": "2026-05-14",
|
||||
"sourceFileName": "BJNR220500998.xml",
|
||||
"officialAbbreviation": "InsVV",
|
||||
"legalAbbreviation": "InsVV",
|
||||
"title": "Insolvenzrechtliche Vergütungsverordnung",
|
||||
"issuedAt": "1998-08-19",
|
||||
"statusNotes": [
|
||||
"Zuletzt geändert durch Art. 4 G v. 22.12.2020 I 3328"
|
||||
]
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [
|
||||
{
|
||||
"id": "de-insvv-section-1",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998",
|
||||
"reference": "InsVV",
|
||||
"text": "(+++ Textnachweis ab: 1.1.1999 +++)"
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-2",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE000600311",
|
||||
"reference": "Eingangsformel",
|
||||
"text": "Auf Grund des § 65 in Verbindung mit § 21 Abs. 2 Nr. 1, § 73 Abs. 2, § 274 Abs. 1, § 293 Abs. 2 und § 313 Abs. 1 der Insolvenzordnung vom 5. Oktober 1994 (BGBl. I S. 2866) verordnet das Bundesministerium der Justiz:"
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-4",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE000701125",
|
||||
"reference": "§ 1",
|
||||
"title": "Berechnungsgrundlage",
|
||||
"text": "(1) Die Vergütung des Insolvenzverwalters wird nach dem Wert der Insolvenzmasse berechnet, auf die sich die Schlußrechnung bezieht. Wird das Verfahren nach Bestätigung eines Insolvenzplans aufgehoben oder durch Einstellung vorzeitig beendet, so ist die Vergütung nach dem Schätzwert der Masse zur Zeit der Beendigung des Verfahrens zu berechnen. (2) Die maßgebliche Masse ist im einzelnen wie folgt zu bestimmen: 1. Massegegenstände, die mit Absonderungsrechten belastet sind, werden berücksichtigt, wenn sie durch den Verwalter verwertet werden. Der Mehrbetrag der Vergütung, der auf diese Gegenstände entfällt, darf jedoch 50 vom Hundert des Betrages nicht übersteigen, der für die Kosten ihrer Feststellung in die Masse geflossen ist. Im übrigen werden die mit Absonderungsrechten belasteten Gegenstände nur insoweit berücksichtigt, als aus ihnen der Masse ein Überschuß zusteht. 2. Werden Aus- und Absonderungsrechte abgefunden, so wird die aus der Masse hierfür gewährte Leistung vom Sachwert der Gegenstände abgezogen, auf die sich diese Rechte erstreckten. 3. Steht einer Forderung eine Gegenforderung gegenüber, so wird lediglich der Überschuß berücksichtigt, der sich bei einer Verrechnung ergibt. 4. Die Kosten des Insolvenzverfahrens und die sonstigen Masseverbindlichkeiten werden nicht abgesetzt. Es gelten jedoch folgende Ausnahmen: a) Beträge, die der Verwalter nach § 5 als Vergütung für den Einsatz besonderer Sachkunde erhält, werden abgezogen. b) Wird das Unternehmen des Schuldners fortgeführt, so ist nur der Überschuß zu berücksichtigen, der sich nach Abzug der Ausgaben von den Einnahmen ergibt. 5. Ein Vorschuß, der von einer anderen Person als dem Schuldner zur Durchführung des Verfahrens geleistet worden ist, und ein Zuschuß, den ein Dritter zur Erfüllung eines Insolvenzplans oder zum Zweck der Erteilung der Restschuldbefreiung vor Ablauf der Abtretungsfrist geleistet hat, bleiben außer Betracht."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-5",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE000803125",
|
||||
"reference": "§ 2",
|
||||
"title": "Regelsätze",
|
||||
"text": "(1) Der Insolvenzverwalter erhält in der Regel 1. von den ersten 35 000 Euro der Insolvenzmasse 40 Prozent, 2. von dem Mehrbetrag bis zu 70 000 Euro 26 Prozent, 3. von dem Mehrbetrag bis zu 350 000 Euro 7,5 Prozent, 4. von dem Mehrbetrag bis zu 700 000 Euro 3,3 Prozent, 5. von dem Mehrbetrag bis zu 35 000 000 Euro 2,2 Prozent, 6. von dem Mehrbetrag bis zu 70 000 000 Euro 1,1 Prozent, 7. von dem Mehrbetrag bis zu 350 000 000 Euro 0,5 Prozent, 8. von dem Mehrbetrag bis zu 700 000 000 Euro 0,4 Prozent, 9. von dem darüber hinausgehenden Betrag 0,2 Prozent. (2) Haben in dem Verfahren nicht mehr als 10 Gläubiger ihre Forderungen angemeldet, so soll die Vergütung in der Regel mindestens 1 400 Euro betragen. Von 11 bis zu 30 Gläubigern erhöht sich die Vergütung für je angefangene 5 Gläubiger um 210 Euro. Ab 31 Gläubiger erhöht sich die Vergütung je angefangene 5 Gläubiger um 140 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-6",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE000902311",
|
||||
"reference": "§ 3",
|
||||
"title": "Zu- und Abschläge",
|
||||
"text": "(1) Eine den Regelsatz übersteigende Vergütung ist insbesondere festzusetzen, wenn a) die Bearbeitung von Aus- und Absonderungsrechten einen erheblichen Teil der Tätigkeit des Insolvenzverwalters ausgemacht hat, ohne daß ein entsprechender Mehrbetrag nach § 1 Abs. 2 Nr. 1 angefallen ist, b) der Verwalter das Unternehmen fortgeführt oder Häuser verwaltet hat und die Masse nicht entsprechend größer geworden ist, c) die Masse groß war und die Regelvergütung wegen der Degression der Regelsätze keine angemessene Gegenleistung dafür darstellt, daß der Verwalter mit erheblichem Arbeitsaufwand die Masse vermehrt oder zusätzliche Masse festgestellt hat, d) arbeitsrechtliche Fragen zum Beispiel in bezug auf das Insolvenzgeld, den Kündigungsschutz oder einen Sozialplan den Verwalter erheblich in Anspruch genommen haben oder e) der Verwalter einen Insolvenzplan ausgearbeitet hat. (2) Ein Zurückbleiben hinter dem Regelsatz ist insbesondere gerechtfertigt, wenn a) ein vorläufiger Insolvenzverwalter in Verfahren tätig war, b) die Masse bereits zu einem wesentlichen Teil verwertet war, als der Verwalter das Amt übernahm, c) das Insolvenzverfahren vorzeitig beendet wird oder das Amt des Verwalters vorzeitig endet, d) die Masse groß war und die Geschäftsführung geringe Anforderungen an den Verwalter stellte, e) die Vermögensverhältnisse des Schuldners überschaubar sind und die Zahl der Gläubiger oder die Höhe der Verbindlichkeiten gering ist oder f) der Schuldner in ein Koordinationsverfahren einbezogen ist, in dem ein Verfahrenskoordinator nach § 269e der Insolvenzordnung bestellt worden ist."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-7",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001001125",
|
||||
"reference": "§ 4",
|
||||
"title": "Geschäftskosten, Haftpflichtversicherung",
|
||||
"text": "(1) Mit der Vergütung sind die allgemeinen Geschäftskosten abgegolten. Zu den allgemeinen Geschäftskosten gehört der Büroaufwand des Insolvenzverwalters einschließlich der Gehälter seiner Angestellten, auch soweit diese anläßlich des Insolvenzverfahrens eingestellt worden sind. Unberührt bleibt das Recht des Verwalters, zur Erledigung besonderer Aufgaben im Rahmen der Verwaltung für die Masse Dienst- oder Werkverträge abzuschließen und die angemessene Vergütung aus der Masse zu zahlen. (2) Besondere Kosten, die dem Verwalter im Einzelfall, zum Beispiel durch Reisen, tatsächlich entstehen, sind als Auslagen zu erstatten. Für die Übertragung der Zustellungen im Sinne des § 8 Absatz 3 der Insolvenzordnung gilt Nummer 9002 des Kostenverzeichnisses zum Gerichtskostengesetz entsprechend. (3) Mit der Vergütung sind auch die Kosten einer Haftpflichtversicherung mit einer Versicherungssumme bis zu 2 000 000 Euro pro Versicherungsfall und mit einer Jahreshöchstleistung bis zu 4 000 000 Euro abgegolten. Ist die Verwaltung mit einem darüber hinausgehenden Haftungsrisiko verbunden, so sind die Kosten einer entsprechend höheren Versicherung als Auslagen zu erstatten."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-8",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001101301",
|
||||
"reference": "§ 5",
|
||||
"title": "Einsatz besonderer Sachkunde",
|
||||
"text": "(1) Ist der Insolvenzverwalter als Rechtsanwalt zugelassen, so kann er für Tätigkeiten, die ein nicht als Rechtsanwalt zugelassener Verwalter angemessenerweise einem Rechtsanwalt übertragen hätte, nach Maßgabe des Rechtsanwaltsvergütungsgesetzes Gebühren und Auslagen gesondert aus der Insolvenzmasse entnehmen. (2) Ist der Verwalter Wirtschaftsprüfer oder Steuerberater oder besitzt er eine andere besondere Qualifikation, so gilt Absatz 1 entsprechend."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-9",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001200311",
|
||||
"reference": "§ 6",
|
||||
"title": "Nachtragsverteilung. Überwachung der Erfüllung eines Insolvenzplans",
|
||||
"text": "(1) Für eine Nachtragsverteilung erhält der Insolvenzverwalter eine gesonderte Vergütung, die unter Berücksichtigung des Werts der nachträglich verteilten Insolvenzmasse nach billigem Ermessen festzusetzen ist. Satz 1 gilt nicht, wenn die Nachtragsverteilung voraussehbar war und schon bei der Festsetzung der Vergütung für das Insolvenzverfahren berücksichtigt worden ist. (2) Die Überwachung der Erfüllung eines Insolvenzplans nach den §§ 260 bis 269 der Insolvenzordnung wird gesondert vergütet. Die Vergütung ist unter Berücksichtigung des Umfangs der Tätigkeit nach billigem Ermessen festzusetzen."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-10",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001300311",
|
||||
"reference": "§ 7",
|
||||
"title": "Umsatzsteuer",
|
||||
"text": "Zusätzlich zur Vergütung und zur Erstattung der Auslagen wird ein Betrag in Höhe der vom Insolvenzverwalter zu zahlenden Umsatzsteuer festgesetzt."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-11",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001403125",
|
||||
"reference": "§ 8",
|
||||
"title": "Festsetzung von Vergütung und Auslagen",
|
||||
"text": "(1) Die Vergütung und die Auslagen werden auf Antrag des Insolvenzverwalters vom Insolvenzgericht festgesetzt. Die Festsetzung erfolgt für Vergütung und Auslagen gesondert. Der Antrag soll gestellt werden, wenn die Schlußrechnung an das Gericht gesandt wird. (2) In dem Antrag ist näher darzulegen, wie die nach § 1 Abs. 2 maßgebliche Insolvenzmasse berechnet worden ist und welche Dienst- oder Werkverträge für besondere Aufgaben im Rahmen der Insolvenzverwaltung abgeschlossen worden sind (§ 4 Abs. 1 Satz 3). (3) Der Verwalter kann nach seiner Wahl anstelle der tatsächlich entstandenen Auslagen einen Pauschsatz fordern, der im ersten Jahr 15 vom Hundert, danach 10 vom Hundert der Regelvergütung, höchstens jedoch 350 Euro je angefangenen Monat der Dauer der Tätigkeit des Verwalters beträgt. Der Pauschsatz darf 30 vom Hundert der Regelvergütung nicht übersteigen."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-12",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001501301",
|
||||
"reference": "§ 9",
|
||||
"title": "Vorschuß",
|
||||
"text": "Der Insolvenzverwalter kann aus der Insolvenzmasse einen Vorschuß auf die Vergütung und die Auslagen entnehmen, wenn das Insolvenzgericht zustimmt. Die Zustimmung soll erteilt werden, wenn das Insolvenzverfahren länger als sechs Monate dauert oder wenn besonders hohe Auslagen erforderlich werden. Sind die Kosten des Verfahrens nach § 4a der Insolvenzordnung gestundet, so bewilligt das Gericht einen Vorschuss, sofern die Voraussetzungen nach Satz 2 gegeben sind."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-14",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001602125",
|
||||
"reference": "§ 10",
|
||||
"title": "Grundsatz",
|
||||
"text": "Für die Vergütung des vorläufigen Insolvenzverwalters, des Sachwalters, des vorläufigen Sachwalters und des Insolvenzverwalters im Verbraucherinsolvenzverfahren gelten die Vorschriften des Ersten Abschnitts entsprechend, soweit in den §§ 11 bis 13 nichts anderes bestimmt ist."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-15",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001704311",
|
||||
"reference": "§ 11",
|
||||
"title": "Vergütung des vorläufigen Insolvenzverwalters",
|
||||
"text": "(1) Für die Berechnung der Vergütung des vorläufigen Insolvenzverwalters ist das Vermögen zugrunde zu legen, auf das sich seine Tätigkeit während des Eröffnungsverfahrens erstreckt. Vermögensgegenstände, an denen bei Verfahrenseröffnung Aus- oder Absonderungsrechte bestehen, werden dem Vermögen nach Satz 1 hinzugerechnet, sofern sich der vorläufige Insolvenzverwalter in erheblichem Umfang mit ihnen befasst. Sie bleiben unberücksichtigt, sofern der Schuldner die Gegenstände lediglich auf Grund eines Besitzüberlassungsvertrages in Besitz hat. (2) Wird die Festsetzung der Vergütung beantragt, bevor die von Absatz 1 Satz 1 erfassten Gegenstände veräußert wurden, ist das Insolvenzgericht spätestens mit Vorlage der Schlussrechnung auf eine Abweichung des tatsächlichen Werts von dem der Vergütung zugrunde liegenden Wert hinzuweisen, sofern die Wertdifferenz 20 vom Hundert bezogen auf die Gesamtheit dieser Gegenstände übersteigt. (3) Art, Dauer und der Umfang der Tätigkeit des vorläufigen Insolvenzverwalters sind bei der Festsetzung der Vergütung zu berücksichtigen. (4) Hat das Insolvenzgericht den vorläufigen Insolvenzverwalter als Sachverständigen beauftragt zu prüfen, ob ein Eröffnungsgrund vorliegt und welche Aussichten für eine Fortführung des Unternehmens des Schuldners bestehen, so erhält er gesondert eine Vergütung nach dem Justizvergütungs- und -entschädigungsgesetz."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-16",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001802125",
|
||||
"reference": "§ 12",
|
||||
"title": "Vergütung des Sachwalters",
|
||||
"text": "(1) Der Sachwalter erhält in der Regel 60 vom Hundert der für den Insolvenzverwalter bestimmten Vergütung. (2) Eine den Regelsatz übersteigende Vergütung ist insbesondere festzusetzen, wenn das Insolvenzgericht gemäß § 277 Abs. 1 der Insolvenzordnung angeordnet hat, daß bestimmte Rechtsgeschäfte des Schuldners nur mit Zustimmung des Sachwalters wirksam sind. (3) § 8 Abs. 3 gilt mit der Maßgabe, daß an die Stelle des Betrags von 350 Euro der Betrag von 175 Euro tritt."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-17",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002700125",
|
||||
"reference": "§ 12a",
|
||||
"title": "Vergütung des vorläufigen Sachwalters",
|
||||
"text": "(1) Die Tätigkeit des vorläufigen Sachwalters wird gesondert vergütet. Er erhält in der Regel 25 Prozent der Vergütung des Sachwalters bezogen auf das Vermögen, auf das sich seine Tätigkeit während des Eröffnungsverfahrens erstreckt. Maßgebend für die Wertermittlung ist der Zeitpunkt der Beendigung der vorläufigen Eigenverwaltung oder der Zeitpunkt, ab dem der Gegenstand nicht mehr der Verfügungsbefugnis des eigenverwaltenden Schuldners unterliegt. Vermögensgegenstände, an denen bei Verfahrenseröffnung Aus- oder Absonderungsrechte bestehen, werden dem Vermögen nach Satz 2 hinzugerechnet, sofern sich der vorläufige Sachwalter in erheblichem Umfang mit ihnen befasst. Sie bleiben unberücksichtigt, sofern der Schuldner die Gegenstände lediglich aufgrund eines Besitzüberlassungsvertrages in Besitz hat. (2) Wird die Festsetzung der Vergütung beantragt, bevor die von Absatz 1 Satz 2 erfassten Gegenstände veräußert wurden, ist das Insolvenzgericht spätestens mit Vorlage der Schlussrechnung auf eine Abweichung des tatsächlichen Werts von dem der Vergütung zugrunde liegenden Wert hinzuweisen, sofern die Wertdifferenz 20 Prozent bezogen auf die Gesamtheit dieser Gegenstände übersteigt. (3) Art, Dauer und Umfang der Tätigkeit des vorläufigen Sachwalters sind bei der Festsetzung der Vergütung zu berücksichtigen. (4) Hat das Insolvenzgericht den vorläufigen Sachwalter als Sachverständigen gesondert beauftragt zu prüfen, ob ein Eröffnungsgrund vorliegt und welche Aussichten für eine Fortführung des Unternehmens des Schuldners bestehen, so erhält er gesondert eine Vergütung nach dem Justizvergütungs- und -entschädigungsgesetz. (5) § 12 Absatz 3 gilt entsprechend."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-18",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE001904125",
|
||||
"reference": "§ 13",
|
||||
"title": "Vergütung des Insolvenzverwalters im Verbraucherinsolvenzverfahren",
|
||||
"text": "Werden in einem Verfahren nach dem Neunten Teil der Insolvenzordnung die Unterlagen nach § 305 Absatz 1 Nummer 3 der Insolvenzordnung von einer geeigneten Person oder Stelle erstellt, ermäßigt sich die Vergütung nach § 2 Absatz 2 Satz 1 auf 1 120 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-20",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002003125",
|
||||
"reference": "§ 14",
|
||||
"title": "Grundsatz",
|
||||
"text": "(1) Die Vergütung des Treuhänders nach § 293 der Insolvenzordnung wird nach der Summe der Beträge berechnet, die auf Grund der Abtretungserklärung des Schuldners (§ 287 Abs. 2 der Insolvenzordnung) oder auf andere Weise zur Befriedigung der Gläubiger des Schuldners beim Treuhänder eingehen. (2) Der Treuhänder erhält 1. von den ersten 35 000 Euro 5 vom Hundert, 2. von dem Mehrbetrag bis 70 000 Euro 3 vom Hundert und 3. von dem darüber hinausgehenden Betrag 1 vom Hundert. (3) Die Vergütung beträgt mindestens 140 Euro für jedes Jahr der Tätigkeit des Treuhänders. Hat er die durch Abtretung eingehenden Beträge an mehr als 5 Gläubiger verteilt, so erhöht sich diese Vergütung je 5 Gläubiger um 70 Euro."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-21",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002103125",
|
||||
"reference": "§ 15",
|
||||
"title": "Überwachung der Obliegenheiten des Schuldners",
|
||||
"text": "(1) Hat der Treuhänder die Aufgabe, die Erfüllung der Obliegenheiten des Schuldners zu überwachen (§ 292 Abs. 2 der Insolvenzordnung), so erhält er eine zusätzliche Vergütung. Diese beträgt regelmäßig 50 Euro je Stunde. (2) Der Gesamtbetrag der zusätzlichen Vergütung darf den Gesamtbetrag der Vergütung nach § 14 nicht überschreiten. Die Gläubigerversammlung kann eine abweichende Regelung treffen."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-22",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002201301",
|
||||
"reference": "§ 16",
|
||||
"title": "Festsetzung der Vergütung. Vorschüsse",
|
||||
"text": "(1) Die Höhe des Stundensatzes der Vergütung des Treuhänders, der die Erfüllung der Obliegenheiten des Schuldners überwacht, wird vom Insolvenzgericht bei der Ankündigung der Restschuldbefreiung festgesetzt. Im übrigen werden die Vergütung und die zu erstattenden Auslagen auf Antrag des Treuhänders bei der Beendigung seines Amtes festgesetzt. Auslagen sind einzeln anzuführen und zu belegen. Soweit Umsatzsteuer anfällt, gilt § 7 entsprechend. (2) Der Treuhänder kann aus den eingehenden Beträgen Vorschüsse auf seine Vergütung entnehmen. Diese dürfen den von ihm bereits verdienten Teil der Vergütung und die Mindestvergütung seiner Tätigkeit nicht überschreiten. Sind die Kosten des Verfahrens nach § 4a der Insolvenzordnung gestundet, so kann das Gericht Vorschüsse bewilligen, auf die Satz 2 entsprechend Anwendung findet."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-24",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002305125",
|
||||
"reference": "§ 17",
|
||||
"title": "Berechnung der Vergütung",
|
||||
"text": "(1) Die Vergütung der Mitglieder des Gläubigerausschusses beträgt regelmäßig zwischen 50 und 300 Euro je Stunde. Bei der Festsetzung des Stundensatzes sind insbesondere der Umfang der Tätigkeit und die berufliche Qualifikation des Ausschussmitglieds zu berücksichtigen. (2) Die Vergütung der Mitglieder des vorläufigen Gläubigerausschusses für die Erfüllung der ihm nach § 56a und § 270b Absatz 3 der Insolvenzordnung zugewiesenen Aufgaben beträgt einmalig 500 Euro. Nach der Bestellung eines vorläufigen Insolvenzverwalters oder eines vorläufigen Sachwalters richtet sich die weitere Vergütung nach Absatz 1."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-25",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002400311",
|
||||
"reference": "§ 18",
|
||||
"title": "Auslagen. Umsatzsteuer",
|
||||
"text": "(1) Auslagen sind einzeln anzuführen und zu belegen. (2) Soweit Umsatzsteuer anfällt, gilt § 7 entsprechend."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-27",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002800125",
|
||||
"reference": "§ 19",
|
||||
"title": "Übergangsregelung",
|
||||
"text": "(1) Auf Insolvenzverfahren, die vor dem 1. Januar 2004 eröffnet wurden, sind die Vorschriften dieser Verordnung in ihrer bis zum Inkrafttreten der Verordnung vom 4. Oktober 2004 (BGBl. I S. 2569) am 7. Oktober 2004 geltenden Fassung weiter anzuwenden. (2) Auf Vergütungen aus vorläufigen Insolvenzverwaltungen, die zum 29. Dezember 2006 bereits rechtskräftig abgerechnet sind, sind die bis zum Inkrafttreten der Zweiten Verordnung zur Änderung der Insolvenzrechtlichen Vergütungsverordnung vom 21. Dezember 2006 (BGBl. I S. 3389) geltenden Vorschriften anzuwenden. (3) Auf Insolvenzverfahren, die vor dem 1. März 2012 beantragt worden sind, sind die Vorschriften dieser Verordnung in ihrer bis zum Inkrafttreten des Gesetzes vom 7. Dezember 2011 (BGBl. I S. 2582) am 1. März 2012 geltenden Fassung weiter anzuwenden. (4) Auf Insolvenzverfahren, die vor dem 1. Juli 2014 beantragt worden sind, sind die Vorschriften dieser Verordnung in ihrer bis zum Inkrafttreten des Gesetzes vom 15. Juli 2013 (BGBl. I S. 2379) am 1. Juli 2014 geltenden Fassung weiter anzuwenden. (5) Auf Insolvenzverfahren, die vor dem 1. Oktober 2020 beantragt worden sind, sind die Vorschriften dieser Verordnung in ihrer bis dahin geltenden Fassung weiter anzuwenden. (5) Auf Insolvenzverfahren, die vor dem 1. Januar 2021 beantragt worden sind, sind die bis zum 31. Dezember 2020 geltenden Vorschriften anzuwenden."
|
||||
},
|
||||
{
|
||||
"id": "de-insvv-section-28",
|
||||
"scheduleId": "de-insvv",
|
||||
"sourceNormId": "BJNR220500998BJNE002600311",
|
||||
"reference": "§ 20",
|
||||
"title": "Inkrafttreten",
|
||||
"text": "Diese Verordnung tritt am 1. Januar 1999 in Kraft."
|
||||
}
|
||||
],
|
||||
"notes": [
|
||||
"No separate fee table rows were present in the federal XML. Fee rules are represented as rule sections."
|
||||
]
|
||||
};
|
||||
+1852
File diff suppressed because one or more lines are too long
+3888
File diff suppressed because one or more lines are too long
+3197
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
|
||||
// Generated by scripts/generate-germany.mjs on 2026-05-14.
|
||||
// Do not edit this file manually.
|
||||
import type { IFeeScheduleData } from '../feeschedules.types.js';
|
||||
|
||||
export const GERMANY_UVGOAE_FEE_SCHEDULE_DATA: IFeeScheduleData = {
|
||||
"scheduleId": "de-uv-goae",
|
||||
"dataStatus": "external-source-pending",
|
||||
"edition": "Source identified 2026-05-14",
|
||||
"source": {
|
||||
"name": "Deutsche Gesetzliche Unfallversicherung UV-GOÄ",
|
||||
"url": "https://www.dguv.de",
|
||||
"retrievedAt": "2026-05-14"
|
||||
},
|
||||
"feeRows": [],
|
||||
"ruleSections": [],
|
||||
"notes": [
|
||||
"External accident insurance fee schedule source; not part of gesetze-im-internet federal XML corpus."
|
||||
]
|
||||
};
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
export * from './feeschedules.types.js';
|
||||
export {
|
||||
GERMANY_FEE_SCHEDULE_CATALOG,
|
||||
GERMANY_FEE_SCHEDULES,
|
||||
} from './feeschedules.germany.js';
|
||||
export * from './germany/index.js';
|
||||
export {
|
||||
FEE_SCHEDULE_CATALOGS,
|
||||
FeeSchedules,
|
||||
feeSchedules,
|
||||
} from './feeschedules.classes.feeschedules.js';
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"esModuleInterop": true,
|
||||
"verbatimModuleSyntax": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": ["dist_*/**/*.d.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user