Netherlands - Generic Functions for data exchange Implementation Guide
0.1.0 - ci-build

Netherlands - Generic Functions for data exchange Implementation Guide, published by Ministerie van Volksgezondheid, Welzijn en Sport. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/minvws/generiekefuncties-docs/ and changes regularly. See the Directory of published versions

## Example Bundle: Bundle of FHIR Logical Models and StructureMaps for KVK Basisprofiel and Vestigingsprofiel

Bundle kvk-logicals-and-struturemaps of type transaction

Entry 1 - fullUrl = urn:uuid:KvkBasisprofiel

Resource StructureDefinition:

> Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
> --- | --- | --- | --- | ---
> kvk-basisprofiel |  |  | Base | KVK Basisprofiel
> kvkNummer |  | 0..1 | string | Nederlands Kamer van Koophandel nummer: bestaat uit 8 cijfers
> uraNummer |  | 0..* | string | URA nummer uit het LRZa
> indNonMailing |  | 0..1 | string | Indicatie geen ongevraagde reclame per post of verkoop aan de deur
> naam |  | 0..1 | string | Naam onder Maatschappelijke Activiteit
> formeleRegistratiedatum |  | 0..1 | string | Registratiedatum onderneming in het Handelsregister
> materieleRegistratie |  | 0..1 | BackboneElement | Materiële registratie datums
> datumAanvang |  | 0..1 | string | Startdatum onderneming
> datumEinde |  | 0..1 | string | Einddatum onderneming
> totaalWerkzamePersonen |  | 0..1 | integer | Totaal aantal werkzame personen
> statutaireNaam |  | 0..1 | string | De naam van de onderneming wanneer er statuten geregistreerd zijn
> handelsnamen |  | 0..* | BackboneElement | Alle namen waaronder een onderneming of vestiging handelt (op volgorde van registreren)
> naam |  | 0..1 | string | Handelsnaam
> volgorde |  | 0..1 | integer | Volgorde van registreren
> sbiActiviteiten |  | 0..* | BackboneElement | SBI activiteiten conform SBI 2008 (Standard Industrial Classification)
> sbiCode |  | 0..1 | string | SBI code
> sbiOmschrijving |  | 0..1 | string | SBI omschrijving
> indHoofdactiviteit |  | 0..1 | string | Indicatie hoofdactiviteit
> embedded |  | 0..1 | BackboneElement | Embedded resources (_embedded)
> hoofdvestiging |  | 0..1 | BackboneElement | Hoofdvestiging informatie
> vestigingsnummer |  | 0..1 | string | Vestigingsnummer: uniek nummer van 12 cijfers
> kvkNummer |  | 0..1 | string | KVK nummer
> rsin |  | 0..1 | string | Rechtspersonen Samenwerkingsverbanden Informatie Nummer
> eersteHandelsnaam |  | 0..1 | string | De naam waaronder een onderneming of vestiging handelt
> formeleRegistratiedatum |  | 0..1 | string | Registratiedatum onderneming in HR
> statutaireNaam |  | 0..1 | string | Statutaire naam
> indHoofdvestiging |  | 0..1 | string | Indicatie hoofdvestiging (Ja/Nee)
> indCommercieleVestiging |  | 0..1 | string | Indicatie commerciële vestiging (Ja/Nee)
> voltijdWerkzamePersonen |  | 0..1 | integer | Voltijd werkzame personen
> totaalWerkzamePersonen |  | 0..1 | integer | Totaal werkzame personen
> deeltijdWerkzamePersonen |  | 0..1 | integer | Deeltijd werkzame personen
> adressen |  | 0..* | BackboneElement | Adressen van de vestiging
> type |  | 0..1 | string | Correspondentieadres en/of bezoekadres
> indAfgeschermd |  | 0..1 | string | Indicatie of het adres is afgeschermd
> volledigAdres |  | 0..1 | string | Volledig adres
> straatnaam |  | 0..1 | string | Straatnaam
> huisnummer |  | 0..1 | integer | Huisnummer
> huisletter |  | 0..1 | string | Huisletter
> huisnummerToevoeging |  | 0..1 | string | Huisnummer toevoeging
> postcode |  | 0..1 | string | Postcode
> plaats |  | 0..1 | string | Plaats
> land |  | 0..1 | string | Land
> websites |  | 0..* | string | Websites
> eigenaar |  | 0..1 | BackboneElement | Eigenaar informatie
> rsin |  | 0..1 | string | Rechtspersonen Samenwerkingsverbanden Informatie Nummer
> rechtsvorm |  | 0..1 | string | Rechtsvorm
> uitgebreideRechtsvorm |  | 0..1 | string | Uitgebreide rechtsvorm
> adressen |  | 0..* | BackboneElement | Adressen van de eigenaar
> type |  | 0..1 | string | Type adres
> indAfgeschermd |  | 0..1 | string | Indicatie of het adres is afgeschermd
> volledigAdres |  | 0..1 | string | Volledig adres
> straatnaam |  | 0..1 | string | Straatnaam
> huisnummer |  | 0..1 | integer | Huisnummer
> huisletter |  | 0..1 | string | Huisletter
> huisnummerToevoeging |  | 0..1 | string | Huisnummer toevoeging
> postcode |  | 0..1 | string | Postcode
> plaats |  | 0..1 | string | Plaats
> land |  | 0..1 | string | Land
> websites |  | 0..* | string | Websites van de eigenaar
> Documentation for this format

Request:

    PUT StructureDefinition/KvkBasisprofiel

Entry 2 - fullUrl = urn:uuid:KvkBasisprofielToOrganization

Resource StructureMap:

>     map "http://minvws.github.io/generiekefuncties-docs/StructureMap/KvkBasisprofielToOrganization" = "KvkBasisprofielToOrganization"

>     // StructureMap die een KVK Basisprofiel API response transformeert naar een FHIR Organization resource.

>     uses "http://minvws.github.io/generiekefuncties-docs/StructureDefinition/kvk-basisprofiel" alias KvkBasisprofiel as source
>     uses "http://minvws.github.io/generiekefuncties-docs/StructureDefinition/nl-gf-organization" alias NlGfOrganization as target

>     group KvkBasisprofielToOrganization(source src : KvkBasisprofiel, target tgt : Organization) {
>       src -> tgt.meta as meta then {
>         src -> meta.profile = 'http://minvws.github.io/generiekefuncties-docs/StructureDefinition/nl-gf-organization' "setProfileUrl";
>       } "setProfile";
>       src.kvkNummer as kvkNum -> tgt.identifier as kvkId then {
>         kvkNum -> kvkId.use = 'official' "kvkUse";
>         kvkNum -> kvkId.system = 'http://fhir.nl/fhir/NamingSystem/kvk' "kvkSystem";
>         kvkNum -> kvkId.value = kvkNum "kvkValue";
>       };
>       src.uraNummer as uraNum -> tgt.identifier as uraId then {
>         uraNum -> uraId.use = 'official' "uraUse";
>         uraNum -> uraId.system = 'http://fhir.nl/fhir/NamingSystem/ura' "uraSystem";
>         uraNum -> uraId.value = uraNum "uraValue";
>         uraNum -> uraId.assigner as assignerRef then {
>           uraNum -> assignerRef.identifier as assignerId then {
>             uraNum -> assignerId.system = 'http://fhir.nl/fhir/NamingSystem/ura' "assignerIdSystem";
>             uraNum -> assignerId.value = '00000001' "assignerIdValue";
>             uraNum -> assignerId.type as assignerIdType then {
>               uraNum -> assignerIdType.coding as assignerIdTypeCoding then {
>                 uraNum -> assignerIdTypeCoding.system = 'http://terminology.hl7.org/CodeSystem/provenance-participant-type' "assignerIdTypeCodingSystem";
>                 uraNum -> assignerIdTypeCoding.code = 'author' "assignerIdTypeCodingCode";
>               } "assignerIdTypeCoding";
>             } "assignerIdType";
>           } "assignerIdentifier";
>         } "uraAssigner";
>       };
>       src.naam as naam -> tgt.name = naam;
>       src -> tgt.active = true "setActive";
>       src.statutaireNaam as statNaam -> tgt.alias = statNaam;
>       src.handelsnamen as hn then KvkHandelsnaamToAlias(hn, tgt);
>       src.sbiActiviteiten as sbi -> tgt.type as cc then KvkSBIToCodeableConcept(sbi, cc);
>       src.embedded as emb then {
>         emb.eigenaar as eig then {
>           eig.rsin as rsin -> tgt.identifier as rsinId then {
>             rsin -> rsinId.system = 'http://fhir.nl/fhir/NamingSystem/rsin' "rsinSystem";
>             rsin -> rsinId.value = rsin "rsinValue";
>           };
>         };
>         emb.hoofdvestiging as hv then {
>           hv.adressen as adres -> tgt.address as addr then KvkAdresToAddress(adres, addr);
>           hv.websites as web -> tgt.telecom as tel then KvkWebsiteToContactPoint(web, tel);
>         };
>       };
>     }

>     group KvkHandelsnaamToAlias(source src, target tgt : Organization) {
>       src.naam as naam -> tgt.alias = naam;
>     }

>     group KvkSBIToCodeableConcept(source src, target tgt : CodeableConcept) {
>       src -> tgt.coding as coding then {
>         src -> coding.system = 'http://minvws.github.io/generiekefuncties-docs/CodeSystem/nl-gf-sbi-2025-cs' "sbiSystem";
>         src.sbiCode as code -> coding.code = code;
>         src.sbiOmschrijving as omschr -> coding.display = omschr "sbiDisplay";
>       } "sbiCoding";
>     }

>     group KvkAdresToAddress(source src, target tgt : Address) {
>       src.volledigAdres as volledigAdres -> tgt.text = volledigAdres;
>       src.straatnaam as straat -> tgt.line = straat as addrLine then {
>         straat -> addrLine.extension as ext then {
>           straat -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName' "streetNameExtUrl";
>           straat -> ext.valueString = straat "streetNameExtValue";
>         } "streetNameExt";
>       };
>       src.huisnummer as huisnr -> tgt.line = cast(huisnr, 'string') as addrLine2 then {
>         huisnr -> addrLine2.extension as ext then {
>           huisnr -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber' "houseNumberExtUrl";
>           huisnr -> ext.valueString = cast(huisnr, 'string') "houseNumberExtValue";
>         } "houseNumberExt";
>       };
>       src.huisletter as huisltr -> tgt.line = huisltr as addrLine3 then {
>         huisltr -> addrLine3.extension as ext then {
>           huisltr -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-buildingNumberSuffix' "houseLetterExtUrl";
>           huisltr -> ext.valueString = huisltr "houseLetterExtValue";
>         } "houseLetterExt";
>       };
>       src.huisnummerToevoeging as huisnrToev -> tgt.line = huisnrToev as addrLine4 then {
>         huisnrToev -> addrLine4.extension as ext then {
>           huisnrToev -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-buildingNumberSuffix' "houseNumberAdditionExtUrl";
>           huisnrToev -> ext.valueString = huisnrToev "houseNumberAdditionExtValue";
>         } "houseNumberAdditionExt";
>       };
>       src.postcode as pc -> tgt.postalCode = pc;
>       src.plaats as plaats -> tgt.city = plaats;
>       src.land as land -> tgt.country = land;
>       src -> tgt.use = 'work' "setUse";
>     }

>     group KvkWebsiteToContactPoint(source src, target tgt : ContactPoint) {
>       src -> tgt.system = 'url' "setSystem";
>       src as url -> tgt.value = url "setValue";
>       src -> tgt.use = 'work' "setUse";
>     }

Request:

    PUT StructureMap/KvkBasisprofielToOrganization

Entry 3 - fullUrl = urn:uuid:KvkVestigingsprofiel

Resource StructureDefinition:

> Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
> --- | --- | --- | --- | ---
> kvk-vestigingsprofiel |  |  | Base | KVK Vestigingsprofiel
> vestigingsnummer |  | 0..1 | string | Vestigingsnummer: uniek nummer dat bestaat uit 12 cijfers
> kvkNummer |  | 0..1 | string | Nederlands Kamer van Koophandel nummer: bestaat uit 8 cijfers
> rsin |  | 0..1 | string | Rechtspersonen Samenwerkingsverbanden Informatie Nummer
> indNonMailing |  | 0..1 | string | Indicatie geen ongevraagde reclame per post of verkoop aan de deur
> formeleRegistratiedatum |  | 0..1 | string | Registratiedatum onderneming in HR
> materieleRegistratie |  | 0..1 | BackboneElement | Materiële registratie datums
> datumAanvang |  | 0..1 | string | Startdatum vestiging
> datumEinde |  | 0..1 | string | Einddatum vestiging
> statutaireNaam |  | 0..1 | string | De naam van de vestiging wanneer er statuten geregistreerd zijn
> eersteHandelsnaam |  | 0..1 | string | De naam waaronder een onderneming of vestiging handelt
> indHoofdvestiging |  | 0..1 | string | Hoofdvestiging (Ja/Nee)
> indCommercieleVestiging |  | 0..1 | string | Commerciële vestiging (Ja/Nee)
> voltijdWerkzamePersonen |  | 0..1 | integer | Aantal voltijd werkzame personen
> totaalWerkzamePersonen |  | 0..1 | integer | Totaal aantal werkzame personen
> deeltijdWerkzamePersonen |  | 0..1 | integer | Aantal deeltijd werkzame personen
> handelsnamen |  | 0..* | BackboneElement | Alle namen waaronder een vestiging handelt (op volgorde van registreren)
> naam |  | 0..1 | string | Handelsnaam
> volgorde |  | 0..1 | integer | Volgorde van registreren
> adressen |  | 0..* | BackboneElement | Adressen van de vestiging
> type |  | 0..1 | string | Correspondentieadres en/of bezoekadres
> indAfgeschermd |  | 0..1 | string | Indicatie of het adres is afgeschermd
> volledigAdres |  | 0..1 | string | Volledig adres
> straatnaam |  | 0..1 | string | Straatnaam
> huisnummer |  | 0..1 | integer | Huisnummer
> huisletter |  | 0..1 | string | Huisletter
> huisnummerToevoeging |  | 0..1 | string | Huisnummer toevoeging
> toevoegingAdres |  | 0..1 | string | Toevoeging adres
> postcode |  | 0..1 | string | Postcode
> postbusnummer |  | 0..1 | integer | Postbusnummer
> plaats |  | 0..1 | string | Plaats
> straatHuisnummer |  | 0..1 | string | Straat en huisnummer
> postcodeWoonplaats |  | 0..1 | string | Postcode en woonplaats
> regio |  | 0..1 | string | Regio
> land |  | 0..1 | string | Land
> geoData |  | 0..1 | BackboneElement | BAG geoData
> addresseerbaarObjectId |  | 0..1 | string | Unieke BAG id
> nummerAanduidingId |  | 0..1 | string | Unieke BAG nummeraanduiding id
> gpsLatitude |  | 0..1 | decimal | Lengtegraad
> gpsLongitude |  | 0..1 | decimal | Breedtegraad
> rijksdriehoekX |  | 0..1 | decimal | Rijksdriehoek X-coördinaat
> rijksdriehoekY |  | 0..1 | decimal | Rijksdriehoek Y-coördinaat
> rijksdriehoekZ |  | 0..1 | decimal | Rijksdriehoek Z-coördinaat
> websites |  | 0..* | string | Websites
> sbiActiviteiten |  | 0..* | BackboneElement | SBI activiteiten conform SBI 2008
> sbiCode |  | 0..1 | string | SBI code
> sbiOmschrijving |  | 0..1 | string | SBI omschrijving
> indHoofdactiviteit |  | 0..1 | string | Indicatie hoofdactiviteit
> Documentation for this format

Request:

    PUT StructureDefinition/KvkVestigingsprofiel

Entry 4 - fullUrl = urn:uuid:KvkVestigingsprofielToLocation

Resource StructureMap:

>     map "http://minvws.github.io/generiekefuncties-docs/StructureMap/KvkVestigingsprofielToLocation" = "KvkVestigingsprofielToLocation"

>     // StructureMap die een KVK Vestigingsprofiel API response transformeert naar een FHIR Location resource.

>     uses "http://minvws.github.io/generiekefuncties-docs/StructureDefinition/kvk-vestigingsprofiel" alias KvkVestigingsprofiel as source
>     uses "http://minvws.github.io/generiekefuncties-docs/StructureDefinition/nl-gf-location" alias NlGfLocation as target

>     group KvkVestigingsprofielToLocation(source src : KvkVestigingsprofiel, target tgt : Location) {
>       src -> tgt.meta as meta then {
>         src -> meta.profile = 'http://minvws.github.io/generiekefuncties-docs/StructureDefinition/nl-gf-location' "setProfileUrl";
>       } "setProfile";
>       src.vestigingsnummer as vestNr -> tgt.identifier as vestId then {
>         vestNr -> vestId.use = 'official' "vestUse";
>         vestNr -> vestId.system = 'http://fhir.nl/fhir/NamingSystem/kvk-vestigingsnummer' "vestSystem";
>         vestNr -> vestId.value = vestNr "vestValue";
>         vestNr -> vestId.assigner as assignerRef then {
>           vestNr -> assignerRef.identifier as assignerId then {
>             vestNr -> assignerId.system = 'http://fhir.nl/fhir/NamingSystem/ura' "assignerIdSystem";
>             vestNr -> assignerId.value = '00000001' "assignerIdValue";
>             vestNr -> assignerId.type as assignerIdType then {
>               vestNr -> assignerIdType.coding as assignerIdTypeCoding then {
>                 vestNr -> assignerIdTypeCoding.system = 'http://terminology.hl7.org/CodeSystem/provenance-participant-type' "assignerIdTypeCodingSystem";
>                 vestNr -> assignerIdTypeCoding.code = 'author' "assignerIdTypeCodingCode";
>               } "assignerIdTypeCoding";
>             } "assignerIdType";
>           } "assignerIdentifier";
>         } "vestAssigner";
>       };
>       src.kvkNummer as kvkNum -> tgt.managingOrganization as orgRef then {
>         kvkNum -> orgRef.identifier as orgId then {
>           kvkNum -> orgId.system = 'http://fhir.nl/fhir/NamingSystem/kvk' "orgIdSystem";
>           kvkNum -> orgId.value = kvkNum "orgIdValue";
>         } "orgRefIdentifier";
>         kvkNum -> orgRef.type = 'Organization' "orgRefType";
>         kvkNum -> orgRef.reference = append('Organization/', kvkNum) "orgRefReference";
>       };
>       src.eersteHandelsnaam as naam -> tgt.name = naam;
>       src -> tgt.status = 'active' "setStatus";
>       src -> tgt.mode = 'instance' "setMode";
>       src.statutaireNaam as statNaam -> tgt.alias = statNaam;
>       src.handelsnamen as hn then KvkVestHandelsnaamToAlias(hn, tgt);
>       src.adressen as adres -> tgt.address as addr then KvkVestAdresToAddress(adres, addr);
>       src.adressen as adres then {
>         adres.geoData as geo -> tgt.position as pos then KvkGeoDataToPosition(geo, pos) "geoDataToPosition";
>       } "geoData";
>       src.websites as web -> tgt.telecom as tel then KvkVestWebsiteToContactPoint(web, tel);
>       src.sbiActiviteiten as sbi -> tgt.type as cc then KvkVestSBIToCodeableConcept(sbi, cc);
>     }

>     group KvkVestHandelsnaamToAlias(source src, target tgt : Location) {
>       src.naam as naam -> tgt.alias = naam;
>     }

>     group KvkVestAdresToAddress(source src, target tgt : Address) {
>       src.volledigAdres as volledigAdres -> tgt.text = volledigAdres;
>       src.straatnaam as straat -> tgt.line = straat as addrLine then {
>         straat -> addrLine.extension as ext then {
>           straat -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName' "streetNameExtUrl";
>           straat -> ext.valueString = straat "streetNameExtValue";
>         } "streetNameExt";
>       };
>       src.huisnummer as huisnr -> tgt.line = cast(huisnr, 'string') as addrLine2 then {
>         huisnr -> addrLine2.extension as ext then {
>           huisnr -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber' "houseNumberExtUrl";
>           huisnr -> ext.valueString = cast(huisnr, 'string') "houseNumberExtValue";
>         } "houseNumberExt";
>       };
>       src.huisletter as huisltr -> tgt.line = huisltr as addrLine3 then {
>         huisltr -> addrLine3.extension as ext then {
>           huisltr -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-buildingNumberSuffix' "houseLetterExtUrl";
>           huisltr -> ext.valueString = huisltr "houseLetterExtValue";
>         } "houseLetterExt";
>       };
>       src.huisnummerToevoeging as huisnrToev -> tgt.line = huisnrToev as addrLine4 then {
>         huisnrToev -> addrLine4.extension as ext then {
>           huisnrToev -> ext.url = 'http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-buildingNumberSuffix' "houseNumberAdditionExtUrl";
>           huisnrToev -> ext.valueString = huisnrToev "houseNumberAdditionExtValue";
>         } "houseNumberAdditionExt";
>       };
>       src.postcode as pc -> tgt.postalCode = pc;
>       src.plaats as plaats -> tgt.city = plaats;
>       src.regio as regio -> tgt.district = regio;
>       src.land as land -> tgt.country = land;
>       src -> tgt.use = 'work' "setUse";
>     }

>     group KvkGeoDataToPosition(source src, target tgt : Location.position) {
>       src.gpsLatitude as lat -> tgt.latitude = lat "latitude";
>       src.gpsLongitude as lon -> tgt.longitude = lon "longitude";
>     }

>     group KvkVestWebsiteToContactPoint(source src, target tgt : ContactPoint) {
>       src -> tgt.system = 'url' "setSystem";
>       src as url -> tgt.value = url "setValue";
>       src -> tgt.use = 'work' "setUse";
>     }

>     group KvkVestSBIToCodeableConcept(source src, target tgt : CodeableConcept) {
>       src -> tgt.coding as coding then {
>         src -> coding.system = 'http://minvws.github.io/generiekefuncties-docs/CodeSystem/nl-gf-sbi-2025-cs' "sbiSystem";
>         src.sbiCode as code -> coding.code = code;
>         src.sbiOmschrijving as omschr -> coding.display = omschr "sbiDisplay";
>       } "sbiCoding";
>     }

Request:

    PUT StructureMap/KvkVestigingsprofielToLocation