German Practice Management FHIR Profiles (R4)
0.90.0 - STU1
Germany
German Practice Management FHIR Profiles (R4) - Local Development build (v0.90.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
This page documents the boundary between the official gematik Digital Patient Invoice (DiPag) contract and optional tax defaults maintained in a practice service catalog.
Praxis invoice exchange uses
https://gematik.de/fhir/dipag/StructureDefinition/dipag-rechnung from
de.gematik.dipag#1.0.8 directly. This IG does not define a local Invoice
profile or a second net/gross convention.
The inherited DiPag contract covers, among other fields:
Invoice.totalNet and Invoice.totalGross;ChargeItem resources;The authoritative source is the gematik DiPag repository.
DiPag assigns the following meaning to line-level price components:
| DiPag slice | FHIR type | Meaning |
|---|---|---|
BruttoBetrag |
base |
Gross amount of the invoice line |
Steuern |
tax |
Tax already included in the gross amount |
The tax amount is not added on top of the base amount. For a gross line of 120.00 EUR containing 19.16 EUR VAT:
Invoice.lineItem.priceComponent[BruttoBetrag].amount = 120.00 EUR
Invoice.lineItem.priceComponent[Steuern].amount = 19.16 EUR
Invoice.totalNet = 100.84 EUR
Invoice.totalGross = 120.00 EUR
DiPagTeilsumme on
totalPriceComponent[SummeRechnungspositionen] can additionally carry the
partial net sum, VAT percentage, and VAT amount for a position type.
The examples example-invoice-zahnaerzte-exempt,
example-invoice-19percent, and example-invoice-kleinunternehmer demonstrate
this convention.
Tax classification can depend on the provider, purpose of a service, patient relationship, and other transaction context. A service catalog therefore cannot always determine the final classification.
This IG retains two optional, non-binding defaults on
ChargeItemDefinition.propertyGroup.priceComponent:
ext-tax-category, bound to TaxCategoryDE and the authoritative
UNECE-5305 code system;ext-tax-exemption-reason, bound to UStBefreiungsgrundVS.These extensions no longer have Invoice as a context. They are catalog input
for the invoicing system, not a competing invoice payload contract. The
invoicing system remains responsible for applying the actual transaction
context before producing the DiPag totals and included-tax amounts.
The examples example-cid-bema-heilbehandlung,
example-cid-igel-bleaching, and example-cid-eigenlabor-material demonstrate
catalog defaults for exempt, standard-rate, and reduced-rate services.
KleinunternehmerregelungExt remains available on
PraxisOrganizationDE as practice master data. A DiPag-compatible invoice can
carry the required human-readable notice in Invoice.note.
The former ext-ku-hinweis-pflicht Invoice flag and its local FHIRPath
invariant were removed. They duplicated invoice semantics without establishing
the legal status of the referenced issuing organization. The invoicing system
must determine whether the notice is required and populate the invoice text.
TaxCategoryDE uses
urn:un:unece:uncefact:codelist:standard:5305, the code system used for
EN 16931 tax category mappings:
| Code | Typical German use |
|---|---|
S |
Standard rate |
AA |
Reduced rate |
E |
Exempt |
AE |
Reverse charge |
Z |
Zero-rated |
DiPag 1.0.8 represents invoice totals, partial sums, VAT percentages, and included VAT amounts, but it does not make the local EN 16931 category extensions part of the Invoice profile. Conversion to ZUGFeRD or XRechnung is a downstream accounting mapping and must combine the DiPag monetary data with the final tax classification determined by the invoicing system.
Input VAT apportionment under German tax law requires fiscal-year context and belongs in the accounting system. This IG also does not decide whether a particular service is taxable or exempt. Those decisions remain the responsibility of the practice, its invoicing system, and qualified tax advice.
This implementation guidance is technical documentation and does not constitute legal or tax advice.