socialsecurity

package
v0.5.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: BSD-2-Clause Imports: 1 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthenticSource

type AuthenticSource struct {
	ID   string `json:"id" bson:"id" validate:"required,min=1,max=20"`
	Name string `json:"name" bson:"name" validate:"required,min=1,max=100"`
}

type EHICDocument

type EHICDocument struct {
	PersonalAdministrativeNumber string           `json:"personal_administrative_number" bson:"personalAdministrativeNumber" validate:"required,min=4,max=50"`
	IssuingAuthority             IssuingAuthority `json:"issuing_authority" bson:"issuingAuthority" validate:"required"`
	IssuingCountry               string           `json:"issuing_country" bson:"issuingCountry" validate:"required,iso3166_1_alpha2"`
	DateOfExpiry                 string           `json:"date_of_expiry" bson:"dateOfExpiry" validate:"required"`
	DateOfIssuance               string           `json:"date_of_issuance" bson:"dateOfIssuance" validate:"required"`
	DocumentNumber               string           `json:"document_number" bson:"documentNumber" validate:"required,min=4,max=50"`
	AuthenticSource              AuthenticSource  `json:"authentic_source" bson:"authenticSource" validate:"required"`
	EndingDate                   string           `json:"ending_date" bson:"endingDate" validate:"required"`
	StartingDate                 string           `json:"starting_date" bson:"startingDate" validate:"required"`
}

EHICDocument is the EHIC model

func (*EHICDocument) Marshal

func (d *EHICDocument) Marshal() (map[string]any, error)

Marshal marshals the document to a map

Example
package main

import (
	"fmt"

	"github.com/SUNET/vc/pkg/socialsecurity"
)

func main() {
	doc := &socialsecurity.EHICDocument{
		PersonalAdministrativeNumber: "123456789",
		IssuingAuthority: socialsecurity.IssuingAuthority{
			ID:   "auth-001",
			Name: "National Health Authority",
		},
		IssuingCountry: "SE",
		DateOfExpiry:   "2026-12-31",
		DateOfIssuance: "2024-01-01",
		DocumentNumber: "EHIC-0001",
		AuthenticSource: socialsecurity.AuthenticSource{
			ID:   "src-001",
			Name: "Swedish Social Insurance Agency",
		},
		EndingDate:   "2026-12-31",
		StartingDate: "2024-01-01",
	}

	m, err := doc.Marshal()
	if err != nil {
		fmt.Println("error:", err)
		return
	}

	fmt.Println("issuing_country:", m["issuing_country"])
	fmt.Println("document_number:", m["document_number"])
	fmt.Println("date_of_expiry:", m["date_of_expiry"])
}
Output:
issuing_country: SE
document_number: EHIC-0001
date_of_expiry: 2026-12-31

type Employer

type Employer struct {
	ID      string `json:"id" bson:"id" validate:"required,min=1,max=20"`
	Name    string `json:"name" bson:"name" validate:"required,min=1,max=100"`
	Country string `json:"country" bson:"country" validate:"required,iso3166_1_alpha2"`
}

type IssuingAuthority

type IssuingAuthority struct {
	ID   string `json:"id" bson:"id" validate:"required,min=1,max=20"`
	Name string `json:"name" bson:"name" validate:"required,min=1,max=100"`
}

type PDA1Document

type PDA1Document struct {
	PersonalAdministrativeNumber string           `json:"personal_administrative_number" bson:"personal_administrative_number" validate:"required,min=4,max=50"`
	Employer                     Employer         `json:"employer" bson:"employer" validate:"required"`
	WorkAddress                  WorkAddress      `json:"work_address" bson:"work_address" validate:"required"`
	IssuingAuthority             IssuingAuthority `json:"issuing_authority" bson:"issuing_authority" validate:"required,iso3166_1_alpha2"`
	LegislationCountry           string           `json:"legislation_country" bson:"legislation_country" validate:"required,iso3166_1_alpha2"`
	StatusConfirmation           string           `json:"status_confirmation" bson:"status_confirmation" validate:"required,oneof=02 03 04 05 06 07 08 09 10 11 12"`
	IssuingCountry               string           `json:"issuing_country" bson:"issuing_country" validate:"required,iso3166_1_alpha2"`
	DateOfExpiry                 string           `json:"date_of_expiry" bson:"date_of_expiry" validate:"required"`
	DateOfIssuance               string           `json:"date_of_issuance" bson:"date_of_issuance" validate:"required"`
	DocumentNumber               string           `json:"document_number" bson:"document_number" validate:"required,min=4,max=50"`
	AuthenticSource              AuthenticSource  `json:"authentic_source" bson:"authentic_source" validate:"required"`
	EndingDate                   string           `json:"ending_date" bson:"endingDate" validate:"required"`
	StartingDate                 string           `json:"starting_date" bson:"startingDate" validate:"required"`
}

PDA1Document model for PDA1

func (*PDA1Document) Marshal

func (d *PDA1Document) Marshal() (map[string]any, error)

Marshal marshals the document to a map

Example
package main

import (
	"fmt"

	"github.com/SUNET/vc/pkg/socialsecurity"
)

func main() {
	doc := &socialsecurity.PDA1Document{
		PersonalAdministrativeNumber: "987654321",
		Employer: socialsecurity.Employer{
			ID:      "emp-001",
			Name:    "Example Corp",
			Country: "SE",
		},
		WorkAddress: socialsecurity.WorkAddress{
			Locality: "Stockholm",
			Country:  "SE",
		},
		IssuingAuthority: socialsecurity.IssuingAuthority{
			ID:   "auth-002",
			Name: "Swedish Social Insurance Agency",
		},
		LegislationCountry: "SE",
		StatusConfirmation: "02",
		IssuingCountry:     "SE",
		DateOfExpiry:       "2026-12-31",
		DateOfIssuance:     "2024-01-01",
		DocumentNumber:     "PDA1-0001",
		AuthenticSource: socialsecurity.AuthenticSource{
			ID:   "src-002",
			Name: "Swedish Social Insurance Agency",
		},
		EndingDate:   "2026-12-31",
		StartingDate: "2024-01-01",
	}

	m, err := doc.Marshal()
	if err != nil {
		fmt.Println("error:", err)
		return
	}

	fmt.Println("issuing_country:", m["issuing_country"])
	fmt.Println("document_number:", m["document_number"])
	fmt.Println("status_confirmation:", m["status_confirmation"])
}
Output:
issuing_country: SE
document_number: PDA1-0001
status_confirmation: 02

type WorkAddress

type WorkAddress struct {
	Formatted      string `json:"formatted" bson:"formatted" validate:"omitempty,min=2,max=512"`
	Street_address string `json:"street_address" bson:"street_address" validate:"omitempty,min=1,max=100"`
	House_number   string `json:"house_number" bson:"house_number" validate:"omitempty,min=1,max=20"`
	Postal_code    string `json:"postal_code" bson:"postal_code" validate:"omitempty,min=1,max=20"`
	Locality       string `json:"locality" bson:"locality" validate:"required,min=1,max=100"`
	Region         string `json:"region" bson:"region" validate:"omitempty,min=1,max=100"`
	Country        string `json:"country" bson:"country" validate:"required,iso3166_1_alpha2"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL