-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #124 from ConductionNL/feature/PC108-115/documenten
documenten
- Loading branch information
Showing
14 changed files
with
1,121 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import { Document } from './document' | ||
import { TDocument } from './document.types' | ||
|
||
export const mockDocumentData = (): TDocument[] => [ | ||
{ | ||
id: '15551d6f-44e3-43f3-a9d2-59e583c91eb0', | ||
zaak: '550e8400-e29b-41d4-a716-446655440000', | ||
url: 'https://example.com/documents/15551d6f-44e3-43f3-a9d2-59e583c91eb0', | ||
identificatie: 'DOC-2023-001', | ||
bronorganisatie: '123456789', | ||
creatiedatum: '2023-01-01T00:00:00Z', | ||
titel: 'Example Document', | ||
vertrouwelijkheidaanduiding: 'openbaar', | ||
auteur: 'John Doe', | ||
status: 'definitief', | ||
inhoudIsVervallen: false, | ||
formaat: 'application/pdf', | ||
taal: 'nld', | ||
versie: 1, | ||
beginRegistratie: '2023-01-01T00:00:00Z', | ||
bestandsnaam: 'example.pdf', | ||
inhoud: 'https://example.com/documents/15551d6f-44e3-43f3-a9d2-59e583c91eb0/download', | ||
bestandsomvang: BigInt(1024), | ||
link: 'https://example.com/viewer', | ||
beschrijving: 'An example document', | ||
indicatieGebruiksrecht: true, | ||
verschijningsvorm: 'digitaal', | ||
ondertekening: { | ||
soort: 'digitaal', | ||
datum: '2023-01-01T00:00:00Z', | ||
}, | ||
integriteit: { | ||
algoritme: 'sha_256', | ||
waarde: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', | ||
datum: '2023-01-01T00:00:00Z', | ||
}, | ||
informatieobjecttype: 'https://example.com/catalogi/informatieobjecttypen/1', | ||
locked: false, | ||
bestandsdelen: [ | ||
{ | ||
url: 'https://example.com/documents/15551d6f-44e3-43f3-a9d2-59e583c91eb0/parts/1', | ||
volgnummer: 1, | ||
omvang: 1024, | ||
voltooid: true, | ||
lock: '', | ||
}, | ||
], | ||
trefwoorden: ['example', 'test'], | ||
_expand: { | ||
informatieobjecttype: { | ||
url: 'https://example.com/catalogi/informatieobjecttypen/1', | ||
catalogus: 'https://example.com/catalogi/1', | ||
omschrijving: 'Example Document Type', | ||
vertrouwelijkheidaanduiding: 'openbaar', | ||
beginGeldigheid: '2023-01-01', | ||
eindeGeldigheid: null, | ||
beginObject: null, | ||
eindeObject: null, | ||
concept: false, | ||
zaaktypen: 'https://example.com/catalogi/zaaktypen/1', | ||
besluittypen: ['https://example.com/catalogi/besluittypen/1'], | ||
informatieobjectcategorie: 'example', | ||
trefwoorden: ['example'], | ||
omschrijvingGeneriek: { | ||
informatieobjecttypeOmschrijvingGeneriek: 'Example Generic Description', | ||
definitieInformatieobjecttypeOmschrijvingGeneriek: 'An example document type', | ||
herkomstInformatieobjecttypeOmschrijvingGeneriek: 'KING', | ||
hierarchieInformatieobjecttypeOmschrijvingGeneriek: 'parent', | ||
opmerkingInformatieobjecttypeOmschrijvingGeneriek: null, | ||
}, | ||
}, | ||
}, | ||
}, | ||
] | ||
|
||
export const mockDocument = (data: TDocument[] = mockDocumentData()): TDocument[] => data.map(item => new Document(item)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import { Document } from './document' | ||
import { mockDocumentData } from './document.mock' | ||
|
||
describe('Document Entity', () => { | ||
it('should create a Document entity with full data', () => { | ||
const document = new Document(mockDocumentData()[0]) | ||
|
||
expect(document).toBeInstanceOf(Document) | ||
expect(document).toEqual(mockDocumentData()[0]) | ||
expect(document.validate().success).toBe(true) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
import { SafeParseReturnType, z } from 'zod' | ||
import { TDocument } from './document.types' | ||
|
||
export class Document implements TDocument { | ||
|
||
public id: string | ||
public zaak?: string | ||
public url: string | ||
public identificatie?: string | ||
public bronorganisatie: string | ||
public creatiedatum: string | ||
public titel: string | ||
public vertrouwelijkheidaanduiding?: 'openbaar' | 'beperkt_openbaar' | 'intern' | 'zaakvertrouwelijk' | 'vertrouwelijk' | 'confidentieel' | 'geheim' | 'zeer_geheim' | ||
public auteur: string | ||
public status?: 'in_bewerking' | 'ter_vaststelling' | 'definitief' | 'gearchiveerd' | ||
public inhoudIsVervallen?: boolean | ||
public formaat?: string | ||
public taal: string | ||
public versie: number | ||
public beginRegistratie: string | ||
public bestandsnaam?: string | ||
public inhoud?: string | ||
public bestandsomvang?: bigint | ||
public link?: string | ||
public beschrijving?: string | ||
public ontvangstdatum?: string | ||
public verzenddatum?: string | ||
public indicatieGebruiksrecht?: boolean | ||
public verschijningsvorm?: string | ||
public ondertekening?: { | ||
soort: 'analoog' | 'digitaal' | 'pki' | ||
datum: string | ||
} | ||
|
||
public integriteit?: { | ||
algoritme: 'crc_16' | 'crc_32' | 'crc_64' | 'fletcher_4' | 'fletcher_8' | 'fletcher_16' | 'fletcher_32' | 'hmac' | 'md5' | 'sha_1' | 'sha_256' | 'sha_512' | 'sha_3' | ||
waarde: string | ||
datum: string | ||
} | ||
|
||
public informatieobjecttype: string | ||
public locked: boolean | ||
public bestandsdelen: { | ||
url: string | ||
volgnummer: number | ||
omvang: number | ||
voltooid: boolean | ||
lock: string | ||
}[] | ||
|
||
public trefwoorden?: string[] | ||
public _expand?: { | ||
informatieobjecttype: { | ||
url: string | ||
catalogus: string | ||
omschrijving: string | ||
vertrouwelijkheidaanduiding: 'openbaar' | 'beperkt_openbaar' | 'intern' | 'zaakvertrouwelijk' | 'vertrouwelijk' | 'confidentieel' | 'geheim' | 'zeer_geheim' | ||
beginGeldigheid: string | ||
eindeGeldigheid?: string | ||
beginObject?: string | ||
eindeObject?: string | ||
concept: boolean | ||
zaaktypen: string | ||
besluittypen: string[] | ||
informatieobjectcategorie: string | ||
trefwoorden?: string[] | ||
omschrijvingGeneriek: { | ||
informatieobjecttypeOmschrijvingGeneriek: string | ||
definitieInformatieobjecttypeOmschrijvingGeneriek: string | ||
herkomstInformatieobjecttypeOmschrijvingGeneriek: string | ||
hierarchieInformatieobjecttypeOmschrijvingGeneriek: string | ||
opmerkingInformatieobjecttypeOmschrijvingGeneriek?: string | ||
} | ||
} | ||
} | ||
|
||
constructor(source: TDocument) { | ||
this.id = source.id || '' | ||
this.zaak = source.zaak || null | ||
this.url = source.url || '' | ||
this.identificatie = source.identificatie || null | ||
this.bronorganisatie = source.bronorganisatie || '' | ||
this.creatiedatum = source.creatiedatum || '' | ||
this.titel = source.titel || '' | ||
this.vertrouwelijkheidaanduiding = source.vertrouwelijkheidaanduiding || null | ||
this.auteur = source.auteur || '' | ||
this.status = source.status || null | ||
this.inhoudIsVervallen = source.inhoudIsVervallen || null | ||
this.formaat = source.formaat || null | ||
this.taal = source.taal || '' | ||
this.versie = source.versie || 0 | ||
this.beginRegistratie = source.beginRegistratie || '' | ||
this.bestandsnaam = source.bestandsnaam || null | ||
this.inhoud = source.inhoud || null | ||
this.bestandsomvang = source.bestandsomvang || null | ||
this.link = source.link || null | ||
this.beschrijving = source.beschrijving || null | ||
this.ontvangstdatum = source.ontvangstdatum || null | ||
this.verzenddatum = source.verzenddatum || null | ||
this.indicatieGebruiksrecht = source.indicatieGebruiksrecht || null | ||
this.verschijningsvorm = source.verschijningsvorm || null | ||
this.ondertekening = source.ondertekening || null | ||
this.integriteit = source.integriteit || null | ||
this.informatieobjecttype = source.informatieobjecttype || '' | ||
this.locked = source.locked || false | ||
this.bestandsdelen = source.bestandsdelen || [] | ||
this.trefwoorden = source.trefwoorden || null | ||
this._expand = source._expand || null | ||
} | ||
|
||
public validate(): SafeParseReturnType<TDocument, unknown> { | ||
const schema = z.object({ | ||
id: z.string(), | ||
zaak: z.string().nullable(), | ||
url: z.string().min(1).max(1000).url(), | ||
identificatie: z.string().max(40).nullable(), | ||
bronorganisatie: z.string().max(9), | ||
creatiedatum: z.string(), | ||
titel: z.string().max(200), | ||
vertrouwelijkheidaanduiding: z.enum(['openbaar', 'beperkt_openbaar', 'intern', 'zaakvertrouwelijk', 'vertrouwelijk', 'confidentieel', 'geheim', 'zeer_geheim']).nullable(), | ||
auteur: z.string().max(200), | ||
status: z.enum(['in_bewerking', 'ter_vaststelling', 'definitief', 'gearchiveerd']).nullable(), | ||
inhoudIsVervallen: z.boolean().nullable(), | ||
formaat: z.string().max(255).nullable(), | ||
taal: z.string().length(3), | ||
versie: z.number(), | ||
beginRegistratie: z.string(), | ||
bestandsnaam: z.string().max(255).nullable(), | ||
inhoud: z.string().url().nullable(), | ||
bestandsomvang: z.bigint().nullable(), | ||
link: z.string().max(200).nullable(), | ||
beschrijving: z.string().max(1000).nullable(), | ||
ontvangstdatum: z.string().nullable(), | ||
verzenddatum: z.string().nullable(), | ||
indicatieGebruiksrecht: z.boolean().nullable(), | ||
verschijningsvorm: z.string().nullable(), | ||
ondertekening: z.object({ | ||
soort: z.enum(['analoog', 'digitaal', 'pki']), | ||
datum: z.string(), | ||
}).nullable(), | ||
integriteit: z.object({ | ||
algoritme: z.enum(['crc_16', 'crc_32', 'crc_64', 'fletcher_4', 'fletcher_8', 'fletcher_16', 'fletcher_32', 'hmac', 'md5', 'sha_1', 'sha_256', 'sha_512', 'sha_3']), | ||
waarde: z.string().max(128), | ||
datum: z.string(), | ||
}).nullable(), | ||
informatieobjecttype: z.string().max(200), | ||
locked: z.boolean(), | ||
bestandsdelen: z.array(z.object({ | ||
url: z.string().min(1).max(1000).url(), | ||
volgnummer: z.number(), | ||
omvang: z.number(), | ||
voltooid: z.boolean(), | ||
lock: z.string(), | ||
})), | ||
trefwoorden: z.array(z.string()).nullable(), | ||
_expand: z.object({ | ||
informatieobjecttype: z.object({ | ||
url: z.string().min(1).max(1000).url(), | ||
catalogus: z.string(), | ||
omschrijving: z.string().max(80), | ||
vertrouwelijkheidaanduiding: z.enum(['openbaar', 'beperkt_openbaar', 'intern', 'zaakvertrouwelijk', 'vertrouwelijk', 'confidentieel', 'geheim', 'zeer_geheim']), | ||
beginGeldigheid: z.string(), | ||
eindeGeldigheid: z.string().nullable(), | ||
beginObject: z.string().nullable(), | ||
eindeObject: z.string().nullable(), | ||
concept: z.boolean(), | ||
zaaktypen: z.string(), | ||
besluittypen: z.array(z.string()), | ||
informatieobjectcategorie: z.string().max(80), | ||
trefwoorden: z.array(z.string().max(30)).nullable(), | ||
omschrijvingGeneriek: z.object({ | ||
informatieobjecttypeOmschrijvingGeneriek: z.string().max(80), | ||
definitieInformatieobjecttypeOmschrijvingGeneriek: z.string().max(255), | ||
herkomstInformatieobjecttypeOmschrijvingGeneriek: z.string().max(12), | ||
hierarchieInformatieobjecttypeOmschrijvingGeneriek: z.string().max(80), | ||
opmerkingInformatieobjecttypeOmschrijvingGeneriek: z.string().max(255).nullable(), | ||
}), | ||
}), | ||
}).nullable(), | ||
}) | ||
|
||
return schema.safeParse(this) | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
// https://vng-realisatie.github.io/gemma-zaken/standaard/documenten/redoc-1.5.0#tag/enkelvoudiginformatieobjecten/operation/enkelvoudiginformatieobject_retrieve | ||
|
||
export type TDocument = { | ||
id: string; | ||
zaak?: string; // zaak id property to link to a zaak, this is not in the gemma-zaken documentation | ||
url: string; // min 1 character, max 1000 characters, string as uri | ||
identificatie?: string; // max 40 characters | ||
bronorganisatie: string; // max 9 characters | ||
creatiedatum: string; // string as iso date time string | ||
titel: string; // max 200 characters | ||
vertrouwelijkheidaanduiding?: 'openbaar' | 'beperkt_openbaar' | 'intern' | 'zaakvertrouwelijk' | 'vertrouwelijk' | 'confidentieel' | 'geheim' | 'zeer_geheim'; | ||
auteur: string; // max 200 characters | ||
status?: 'in_bewerking' | 'ter_vaststelling' | 'definitief' | 'gearchiveerd'; | ||
inhoudIsVervallen?: boolean; | ||
formaat?: string; // max 255 characters | ||
taal: string; // 3 characters, ISO 639-2/B language code | ||
versie: number; | ||
beginRegistratie: string; // string as iso date time string | ||
bestandsnaam?: string; // max 255 characters | ||
inhoud?: string; // string as uri | ||
bestandsomvang?: bigint; // int64 | ||
link?: string; // max 200 characters | ||
beschrijving?: string; // max 1000 characters | ||
ontvangstdatum?: string; // deprecated | ||
verzenddatum?: string; // deprecated | ||
indicatieGebruiksrecht?: boolean; | ||
verschijningsvorm?: string; | ||
ondertekening?: { | ||
soort: 'analoog' | 'digitaal' | 'pki'; | ||
datum: string; // string as iso date time string | ||
}; | ||
integriteit?: { | ||
algoritme: 'crc_16' | 'crc_32' | 'crc_64' | 'fletcher_4' | 'fletcher_8' | 'fletcher_16' | 'fletcher_32' | 'hmac' | 'md5' | 'sha_1' | 'sha_256' | 'sha_512' | 'sha_3'; | ||
waarde: string; // max 128 characters | ||
datum: string; | ||
}; | ||
informatieobjecttype: string; // max 200 characters | ||
locked: boolean; | ||
bestandsdelen: { | ||
url: string; // min 1 character, max 1000 characters, string as uri | ||
volgnummer: number; | ||
omvang: number; | ||
voltooid: boolean; | ||
lock: string; | ||
}[]; | ||
trefwoorden?: string[]; | ||
_expand?: { | ||
informatieobjecttype: { | ||
url: string; // min 1 character, max 1000 characters, string as uri | ||
catalogus: string; | ||
omschrijving: string; // max 80 characters | ||
vertrouwelijkheidaanduiding: 'openbaar' | 'beperkt_openbaar' | 'intern' | 'zaakvertrouwelijk' | 'vertrouwelijk' | 'confidentieel' | 'geheim' | 'zeer_geheim'; | ||
beginGeldigheid: string; // string as iso date time string | ||
eindeGeldigheid?: string; // string as iso date time string | ||
beginObject?: string; // string as iso date time string | ||
eindeObject?: string; // string as iso date time string | ||
concept: boolean; | ||
zaaktypen: string; | ||
besluittypen: string[]; // string as uri, has to be unique | ||
informatieobjectcategorie: string; // max 80 characters | ||
trefwoorden?: string[]; // max 30 characters per string | ||
omschrijvingGeneriek: { | ||
informatieobjecttypeOmschrijvingGeneriek: string; // max 80 characters | ||
definitieInformatieobjecttypeOmschrijvingGeneriek: string; // max 255 characters | ||
herkomstInformatieobjecttypeOmschrijvingGeneriek: string; // max 12 characters | ||
hierarchieInformatieobjecttypeOmschrijvingGeneriek: string; // max 80 characters | ||
opmerkingInformatieobjecttypeOmschrijvingGeneriek?: string; // max 255 characters | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export * from './document.ts' | ||
export * from './document.types.ts' | ||
export * from './document.mock.ts' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.