# Package be.ehealth.business.mycarenetdomaincommons.domain

this package contains the domain objects to create a request to send to mycarenet as defined on their document Service_Catalogue_Commons

See: Description

- Class Summary
  Class | Description
  --- | ---
  Actor |
  Attribute |
  Blob | will be mapped to mycarenet BlobType.
  CareProvider | maps to the mycarenet CareProviderType.
  CareReceiverId | maps to the mycarenet CareReceiverIdType.
  CommonInput | Contains all data to be mapped to the mycarenet CommonInputType.
  Identification | maps to the mycarenet IdType.
  Identifier |
  InputReference | Value class for an input reference.
  McnPackageInfo | maps to the mycarenet PackageType.
  Nihii | maps to the mycarenet NihiiType.
  Origin | contains the data to be mapped to the mycarenet OrigineType in CommonInputType.
  Party | contains the data for a mycarenet PartyType.
  Period | maps to the mycarenet PeriodType.
  Reference |
  Routing | contains the data to be mapped to mycarenet RoutingType.
  Ssin | Value object representing a niss
  Subject |

## Package be.ehealth.business.mycarenetdomaincommons.domain Description

# this package contains the domain objects to create a request to send to mycarenet as defined on their document Service_Catalogue_Commons

mycarenet documentation site (password protected, ask access to mycarenet servicedesk)

## extract from document :

# 2 Introduction

## 2.1 Audience

This document is intended for analysts, architect and developers of all applications that interface with the NIP-PIN platform. It includes both Package Providers and Relaying Parties.

## 2.2 Goal of the document

This document intends to describe the common elements of the various services of NIP-PIN. It doesn’t describe the communication (SSO/ESB or SSO-Only). It provides information about the design of common parts of the various services. This allows architects of client applications to align their own architecture.

This document is referenced from the service-specific descriptions (i.e. the various Service Catalogs).

## 2.3 Document License

[[TODO]]

# 3 Common for all Services

## 3.1 Basic Principal

All services will be business specific. This means single service will only provide the functionality for one business transaction. Also it means that the service will only require business information and not technical information.

In some case there might exist several technical variants of the same service (e.g. version, format…). Each variant will be a different method with a different namespace and/or root-element; there will never be a version number in message itself.

## 3.2 Service versioning

When a service evolves, a new operation is added with a new operation name, a new element-name and/or a new element-namespace. For each of the (existing) operations the lifecycle status will be re‑evaluated on an individual base.

For NIP-PIN versions are more than an evolution of the format of the same message. It also means different formats of the same information. For example, the insurability input/output are different for nurses and pharmacies. Therefore both will have their own version of the input en output message.

This results in 2 unique URL, both WSDL and service itself, for a single business service. These URL’s do not change due to updated while it is still possible for both client (you) and server (us) to determine which version you use.

## 3.3 Service lifecycle

A service and each of the operations have one of the following lifetime statuses.

· Maintained: is active and can be continued to be used

· Deprecated: is still active might disappear and/or is no longer maintained. It is advised to migrate to a maintained version of this service.

· Removed: is no longer defined in the WSDL and can no longer be used. It is still documented to facilitate the migration of clients.

· Archived: no longer defined in both WSDL and documentation.

A service or service operation can change at any moment, but will never be without a cause. Possible causes include changes in the business process, technology evolutions, changes in eHealth, …

## 3.4 Message Traceability

Message traceability is very important for NIP-PIN. We are capable of tracing the messages from care provider to insurance organization if you provide us with the required information. This information is different when you get a response or not.

### 3.4.1 With response

The following references should be provided:

· WS-Addressing message reference (if available for the service)

· Input reference

· Output reference (if provided)

· NIP-PIN reference

Both NIP-PIN and the insurance organizations can use this reference number to find information about the message. Depending on the message it can also be possible to track the message itself. The only additional information needed is the environment (URL) the message was sent too.

Although not 100% necessary it does speed up the process if you provide the Service Desk with the same information as is required for the case where there is no response.

### 3.4.2 Without response

A response means a business response while the generic fault is considered without response.

#### 3.4.2.1 With event ID (eHealth ESB only)

With this event ID we can find the reference number and come in the same situation as with response.

#### 3.4.2.2 Without event ID

Normally you will receive a response, even when there is an error, but in some exception cases this might be impossible. In this case it is important to provide as much information as possible. This information can include:

· Service

· Service operation

· Common Input data

· Date/Time

· Fault received (complete, not just message)

· …

## 3.5 Message Order

For Sync messages the message order is guaranteed for messages that are send sequentially: the next message is only send after the response of the previous message is received. The order of sync messages that are sent before the previous message is response of the previous message is received is undetermined.

For ASync messages the order isn’t guaranteed by default. Once an acknowledge is received, the processing is based on priority, load, message size, randomness and not on the order it is received.

Some Async services are an exception on the rule and keep the order with the during Async processing. The order is determined on the order of reception, but as with Sync the order is only guaranteed for sequentially sent messages. To avoid delay of messages, the order is only kept for messages of the same or related types that originate from the same entity and are for the same receiver. So messages of a different type, from a different hospital or to a different IO will not block each other.

## 3.6 Interoperability

The goal of the services is to be compatible with as many client types as possible. For this we tend to follow the WS-I Basic Profile.

## 3.7 Best Practices

The following best practices are followed.

### 3.7.1 eHealth SOA Naming conventions

Since this is a Belgian Health Care project we follow the eHealth defined SOA naming conventions. These follow the standard best practices.

### 3.7.2 Simple generated code

XSD, the schema language used by NIP-PIN for the web service message format, is very powerful. Although most frameworks are capable of handling any XSD schema it quickly results in generated code that is complex and difficult to use.

NIP-PIN makes sure that the XSD schemas it publishes are targeted for code generation and not so much for message validation. This means we avoid the usage of enums, abstract types, choices, attributes and mostly work with sequences and optional or required elements.

### 3.7.3 Avoid redundant input

All service interfaces are designed to avoid multiple occurrences of the same value. For example, it will not be necessary to provide the test flag multiple times.

This principal isn’t executed into the extreme. It is still possible that the same value must be provided 2 times (e.g. NIHII) when there are cases these are different. The common input provides the means of avoiding this, see “Message Variants”.

NIP-PIN will also not request information that it is required but can always deduct from other input. We do always require the information if the information can sometimes be deducted and sometimes not, even in the case where it can be deducted. This is to allow for consistency. This principal does not apply on optional information.

## 3.8 Common Input & Output

### 3.8.1 Goal

Although the interface is completely adapted to the business interface, there is still information that is required/provided with every business transaction. This is mainly because most business transactions NIP-PIN provides are between Care Providers and Insurance Organizations.

The common input and output only applies to information that is common for all NIP-PIN services. Information that is only applicable to some business transactions are not part of the common input and output.

### 3.8.2 Format and Usage

The common schema defines the common input and output. One specific version of the common schema is used by a business schema. The common schema has its own namespace and separate version number. A specific version of the business schema references a specific version of the common schema, which never changes. If a service requires a new version of the common schema, a new version of the business schema will be created for this.

### 3.8.3 Message Description

This section describes the schema of both the common input and common output.

#### 3.8.3.1 Input

The common input is always the first child-element of the input-element and has the “CommonInputType”. This contains the information that applies to the all request records.

A common record input is always the ‘preceding-sibling’ or each record. A record is an individual request (or response). In some services may group several individual requests into a single request but most service operations only support a single individual request and then the common record input is right behind the common input.

##### 3.8.3.1.1 Root Type: Common Input Type

The root type contains the info about the request, the origin and references. The request indicates the type of request, currently only debug or not. InputReference is a reference filled by the requester (the care provider). NIPReference is a reference filled by the NIP-PIN platform and should therefore never be filled in. These references are features of the message as a whole; a message may contain many records. These references are free text value (before v2.3 this was limited to 14 characters), they will be returned in the common record response. When omitted, the value will also be omitted from the response.

The origin indicates where the message originates from and consists of:

· Package: What software package did send it.

· SiteID (since v2.1): The ID of the site that makes the request. See service catalogue for the allowed values per sector.

· Care Provider: Who was the beneficiary of the request (this is optional in the XSD but should almost always be provided).

· Sender (since v2.2): Who was the creator of the request (in most case this isn’t required)

For those flows that have a flat file equivalent, this corresponds to the segment 100:

· 100: specific for CareNet, is replaced by the “To” of WS-Addressing

· 101: specific for CareNet, is replaced by the “From” of WS-Addressing

· 102: Not part of common input, replaced by “To” of WS-Addressing

· 103: Replaced by “Origin”-element (actual value in //CommonInput/Origin/CareProvider/Nihii/Value)

· 105/106: Not part of common input but of XAdES when relevant

· 107: InputReference, First char repeated in Request/IsTest

##### 3.8.3.1.2 Routing

Routing is a type used besides common input and is added in version 2.3 of the interface. It allows NIP-PIN to determine the HIO in case it isn’t defined explicitly in the WS-Addressing “To” element.

The routing consists of the following elements:

· Care Receiver: the member of the HIO, it is to this HIO the message is routed too.

o SSIN: the national number of the care receiver, should always be present and can only be omitted in very rare case (e.g. new born).

o RegNrWithMut: the registration number of the care receiver, optional when the SSIN is provided. Must be combined with the mutuality since the number is only unique with a mutuality.

o Mutuality: the 3 digit code of the mutuality (e.g. 203, 100, …). Must be used with reg nr with mut, but can also be used with SSIN to override the mutuality the message should arrive.

· Reference Date: The date for which the membership should be resolve, this must be a date within the period of the business request. See the relevant service catalogue for the specific rule.

· Period: If the business request has a fixed period length, this can be omitted. In case the business request has a variable period it must be provided. See the relevant service catalogue for the specific rules.

##### 3.8.3.1.3 Record Root Type: Record Common Input Type

The record root type consists of a reference (before version 2.2 this was limited to a maximum 14 numeric digits) that will be part of the response.

For those flows that have a flat file equivalent, this corresponds to the segment 200:

· 200: specific for Flat, XML is “typed” and therefore this value is redundant

· 201: Version is part of the namespace, offering an enforced version.

· 202:

o Test/Production: part of common input, only 1 field applies to all records.

o Sync/Async: not repeated for flexibility (e.g. send sync messages Async in case of temporally downtime).

· 203: Replaced by Fault, see below

· 204: Input Reference

· 205: Not applicable here

###### 3.8.3.1.3.1 Package Type

A package is identified by its name (optional) and its license. The license is a username password that is distributed to package providers that are licensed to access NIP-PIN.

###### 3.8.3.1.3.2 Party Type

This type is used to identify a legal entity. This is either: a physical person, an organization or a physical person at an organization.

A legal entity is identified by a name (optional) and a unique number. Currently this can be one of the following: SSIN (physical person only), NIHII (health institute only) or CBE (enterprise only).

###### 3.8.3.1.3.3 Care Provider Type

A Care Provider is similar to a Party-Type with the extension of a NIHII. The NIHII indicates the beneficiary care provider as know by the INAMI/RIZIV. The physical person and organization elements provide extra information about this care provider.

##### 3.8.3.1.4 NIHII Type

The NIHII consists of the quality (nurse, hospital, pharmacy, …) and the identification number. The different values for the quality are described in the referenced document: “MyCareNet Authentication Catalogue.docx”. See the section “Message variants” for more information about the id, ref and valueRef attributes.

#### 3.8.3.2 Output

As for the input, there is a common output and a common record output. The common output if for the entire message and the common record output is just before every response record.

##### 3.8.3.2.1 Common Output Type

The InputReference will be empty in the case of common output for Asynchrone.

The NIPReference is a reference generated by NIP-PIN to identify the response message as a whole; this reference is also known by the IO and is linked to the request (cfr NIPReference in CommonInputType). This reference will always be provided, except for some rare cases (e.g. the generation of the reference fails).

The OutputReference is a reference generated by the IO to identify the response as a whole; this reference is only known by the IO (NIP-PIN does not keep a trace of it). This reference is only returned when there was a response from the IO, otherwise this reference is omitted.

Before version 2.2, all these references where limited to a 14 character long alpha numeric value.

For those flows that have a flat file equivalent, this corresponds to the segment 100:

· 100: specific for CareNet, no replacement.

· 101: specific for CareNet, no replacement.

· 102: Not part of common output, when relevant must be part of the business (which allows multiple values)

· 103: Not part of common output, when relevant must be part of the business (which allows multiple values)

· 105/106: Not part of common input but of XAdES.

· 107: Output reference.

NIP-Reference is new because of the new architecture. Input Reference repeats the reference of the input, but isn’t always available.

##### 3.8.3.2.2 Common Record Output Type

The InputReference on record level can either be provided by the client (via the record common input) or be generated by NIP-PIN when not provided in the input. Normally this reference is always returned, except in occasional situations (e.g. generation of reference failed).

The OutputReference on record level is always generated by the IO and can be used with the IO to track the response record. It will only be present when there was a response of the IO, otherwise it will be omitted.

This InputReference is omitted in the output when it wasn’t present in the input. The value can be anything and is only intended for client use, NIP-PIN nor the IO can use this to track a message.

For those flows that have a flat file equivalent, this corresponds to the segment 200:

· 200: specific for Flat, XML is “typed” and therefore this value is redundant

· 201: Version is part of the namespace, offering an enforced version.

· 202:

o Test/Production: part of common input, only 1 field applies to all records.

o Sync/Async: not repeated for flexibility (e.g. send sync messages Async in case of temporally downtime).

· 203: Replaced by Fault, see below

· 204: Input Reference

· 205: Output Reference

#### 3.8.3.3 Fault

In case a service uses faults, it uses the same fault type (but not fault message). This fault type is adapted to handle all type of technical errors, but not necessary message faults.

The fault has the following structure:

· Fault Code: A human readable (no number) but computer friendly code of the type of fault.

· Fault Source: partner/part that detected the error, important to determine who can assist in the resolution of the error

· Message

o @Lang: the language of the message (generally “en”)

o (value): description of the fault type, should be combined with the detail description.

· Details: list of detail messages

The detail message consists of:

· Detail Code: a human readable code (not a number) of the error that was detected.

· Location: stack-trace extract, xpath or description of the location where the error occurred.

· Message

o @Language: The language of the detail message (generally “en”)

o (value): The detailed message.

#### 3.8.3.4 Blob

This document introduces a new type: blob. This is used to transfer (large) binary objects. It has the following structure:

· (value): The binary data, first compressed via deflate and then base 64 encoded (compatible with MTOM/XOP).

· @ContentType (required): exactly like xmine:contentType, but in a different namespace to avoid conflicts with MTOM/XOP. It must define which type the content is, it must be values like “text/plain”, “text/xml”, “application/pdf”, …

· @ContentEncoding: a fixed value “deflate” to indicate that the content is compressed via deflates.

· @MessageName (required): The business name of the message, e.g. “FAC”.

· @HashValue: pre-calculated hash of the uncompressed and decoded content. Must not be provided by the care provider, always provided to the care provider.

· @Id: The ID of the blob for usage in the XAdES signature. It is an “NCName” instead of an “ID” in order to be able to have different blobs with the same (fixed) id without causing an XSD validation.

Connector Packaging PERSLOGOPEDIST 4.1.2 API
Copyright © {inceptionYear}-2022 eHealth. All Rights Reserved.