3.1 - Patient Identification 

A patientId may be provided when registering a new patient in WMDA Search & Match. Upon registration, a wmdaId will be assigned and returned. The wmdaId itself is guaranteed to be globally unique, though it cannot guarantee that the same patient is not registered by multiple organisations using the same patientId or with different patientId's within the same organisation. The wmdaId must be used to identify the patient in all calls to the Search, Match & Connect (SMC) service after the initial patient registration.

 

Patient Identifiers

IdentifierDescription
patientId
  • Provided by the local registry system.  
  • Should be worldwide unique.
    • Should follow the construct of ION + local patient id
      • The ION to be used is the ION of the patient registering registry (PR).
  • Should be provided as a user-friendly (displayable) id for use on screens and on documentation.
connectPatientId
  • Provided by the local registry system
  • Must be worldwide unique
    • Must follow the construct of ION + local patient id.
      • The ION to be used is the IONn of the patient registering registry (PR).
  • Should be provided as a user-friendly (displayable) id for use on screens and on documentation
  • Should be the same as patientId whenever possible, assuming the patientId followed the construct of ION + local patient id
    • If the original patientId did not  follow the construct of ION + local patient id, then this the connectPatientId must  follow that construct, and will therefore be different than the patient id.
wmdaId
  • Generated by the central (SMC) system.
  • Must be globally unique.
  • Must be used for all system-to-system patient identification after the initial patient registration.

3.2 - Create Patient

A POST to the patients endpoint is used to submit a patient to the Search & Match Service. This call returns a wmdaId for the patient, please be aware that in the current implementation a new wmdaId is assigned to a patient. When a patient was created before and stopped/anonymized (see Patient status), when this patient is created again, a new wmdaId will be assigned. Implementation tip: it might be valuable to save the wmdaId (old and new) in this specific use case.

Post
patients
FieldDetails
patientId

string

example: 98761234P

Organisation unique identifier for patient. Cannot be set unless "legalTerms" is set to "true". Do not use real names here.

hla*{...}
idm{...}
dateOfBirthstring($date)
example: 1961-05-27
diagnosis{...}
diseasePhase

string

ethnicity

string

poolCountryCodestring
example: NL

ISO 3166-1 alpha-2 Country Code (capitalized)

transplantCentreIdstring
example: TC X
abo

string

rhesus

string

weightinteger
example: 76
sex

string

legalTermsboolean
example: true

If not set to true, then patientId will not be stored.

FieldDetails
wmdaIdinteger
example: 123456

3.3 - Update Patient

A PUT to the patients endpoint is used to update a patient with the Search & Match Service.  An update to search relevant information, such as HLA, ethnicity or pool will result in a refresh of the search.

Put
patients
FieldDetails
patientIdstring
example: XY1234P

Organisation unique identifier for patient. Cannot be set unless "legalTerms" is set to "true". Do not use real names here.

A patient ID can only be updated when it was not set before. 

hla*{...}
idm{...}
dateOfBirthstring($date)
example: 1961-05-27
diagnosis{...}
diseasePhase

string

ethnicity

string

poolCountryCodestring
example: NL

ISO 3166-1 alpha-2 Country Code (capitalized)

transplantCentreIdstring
example: TC X
abo

string

rhesus

string

weightinteger
example: 76
sex

string

legalTermsboolean
example: true

If not set to true, then patientId will not be stored.

wmdaId*integer
example: 123456

None specified

3.4 - Update Patient Status

A PUT to the patients/status endpoint is used to update a patient's search status with the Search & Match Service.  Allowable status values are SUS, PRE, ACT and STP.  A new patient is defaulted to the new (NEW) state.  Under the NEW state, searches must be requested explicitly.  When doing so, the patient is moved to the PRE state. Under the ACT state, searches will be kept up to date automatically.  SUS will stop automatic updates to searches, but results will remain for 42 days.  STP will terminate the search and delete all search results (with the search ids). 

The diagram below displays the full logic of which patient state changes are allowed and the effect on automatic updating of search results. 

Patient registryAPI/GUICreate patientPatient status cannot be changedPatient status = "NEW"Change statusNot allowedPatient status = "STP"Start searchPatient status changed happened automatically due to start searchPatient status = "PRE"No automatic updates of search resultsChange statusNot allowedSTP, SUS or ACTcurrent statePREPatient status = "SUS"No automatic updates of search results \nPrevious search results remain availablePatient status = "ACT"Automatic updates of search resultsPatient status = "STP" All search results removedchange status again?yesPRE, SUS or ACTSTPNEW, PRESTPSUSACTno


Put
patients/status
FieldDetails
wmdaId*integer
example: 123456

newStatus*

string

changeReasonstring
FieldDetails
wmdaId*integer
example: 123456

status*

string

changeReasonstring

Reason why the change was made. Mandatory when changing to "STP"

3.5 - Retrieve Patient

A GET to the patients endpoint is used to retrieve an individual patient's information from the Search & Match Service.

Get
patients 
FieldDetails
wmdaId*integer
example: 123456

FieldDetails
patientId*string
example: XY1234P

Organisation unique identifier for patient. Cannot be set unless "legalTerms" is set to "true". Do not use real names here.

status*

string

hla*{...}
idm*{...}
dateOfBirth*string($date)
example: 1961-05-27
diagnosis*{...}
diseasePhase*

string

ethnicity*

string

poolCountryCode*string
example: NL

ISO 3166-1 alpha-2 Country Code (capitalized)

transplantCentreId*string
example: TC X
abo*

string

rhesus*

string

weight*integer
example: 76
sex*

string

legalTerms*boolean
example: true

If not set to true, then patientId will not be stored.

wmdaId*integer
example: 123456

lastUpdated*string($date-time)

needed to help determine when patient can be automatically moved to STP state

lastViewed*string($date-time)

needed for sorting patients in the patient list

assignedUserName*string
example: janethesearchcoordinator@lunarregistry.com

typically the e-mail address of the user

3.6 - Retrieve Patient(s)

A GET to the patients/list endpoint is used to retrieve multiple patient's information from the Search & Match Service.  You may define a page size, a specific page number, a series of allowable statuses and may limit to only patients assigned to you.

Post
patients/list

Field

Details

patientId

string
example: NL12345P

Organisation unique identifier for patient. Cannot be set unless "legalTerms" is set to "true". Do not use real names here.

statuses

Array

string

example: List [ "NEW", "ACT", "SUS" ]

limit

integer
example: 250

offset

integer

onlyMyPatients

boolean
example: true

Only return patients assigned to current user.
Field

Details

paging
FieldDetails
limit*integer
offset*integer
totalCount*integer
patients
FieldDetails
wmdaId*integer
example: 123456

patientId*string
example: XY1234P

Organisation unique identifier for patient. Cannot be set unless "legalTerms" is set to "true". Do not use real names here.

status*

string

dateOfBirth*string($date)
example: 1961-05-27
ethnicity*

string

lastUpdated*string($date-time)

needed to help determine when patient can be automatically moved to STP state

lastViewed*string($date-time)

needed for sorting patients in the patient list

assignedUserName*string
example: janethesearchcoordinator@lunarregistry.com

typically the e-mail address of the user

requests*[...]

3.7 - Assign User To Patient

A PUT to the patients/user endpoint is used to assign a particular user name to a patient within the Search & Match Service.

Put
patients/user
FieldDetails
wmdaId*integer
example: 123456

userName*string
example: janethesearchcoordinator@lunarregistry.com

typically the e-mail address of the user

FieldDetails
succeededboolean
messagestring
example: Successfully assigned janethesearchcoordinator@lunarregistry.com

3.8 - Register Patient   

There is no registerPatientRequest endpoint.  A patient is registered with a partner registry at the time of request in the form of an embedded Patient block - described in the Admin chapter. 

3.9 - Update Registered Patient (PAT_UPD)

The updateRegisteredPatient message is used to update a registered patient with a partner registry.


Send (Post)Retrieve (Post)
updateRegisteredPatientRequestupdateRegisteredPatientRetrieve
FieldDetails
receivingRegistry*integer
example: 1234

4 digit ION of receiving registry

patient*Embedded Patient Block
FieldDetails
wmdaResponse*Embedded Meta Information Block
limitintege
shouldPeekboolean

Set to true if you want messages to remain available after retrieval

messageSequenceNumber

integer
example: 12345

Optional field to request a message with a specific messageSequenceNumber. If that message (no longer) exists then no message will be returned.

FieldDetails
generalInformationEmbedded General Information Block
originalMessage*Embedded Patient Block
metaInformation*Embedded Meta Block

3.10 - Patient Flows


Patient FlowsPatient RegistryPatient RegistryMatch-ConnectMatch-ConnectSearch & MatchServiceSearch & MatchServiceDonor RegistryDonor RegistryRegister PatientCreate PatientReturn WMDA Patient IDModify Patient Update PatientAssign User To PatientRetrieve Patient(s)Retrieve PatientsReturn One or More PatientsPerform Donor SearchStart donor searchRetrieve search resultsMaking RequestsRequest a Donor (patient embedded)Update Registered Patient

3.11 - Patient Life Cycle

In order to prevent unnecessary storage of search results and other patient related information, there are automated processes in place to automatically clean up patients that are not in use. 

After a patient has not been viewed in any way (patient or search results), the patient will be moved to the "Inactive" state in Search & Match. You can see how much time is left until a patient is moved to the "Inactive" (STP) state by going to the patient list. 

Simply clicking on the patient or its search result will reset the timer and will provide you with another 42 days until the patient is automatically moved to the "Inactive" state. 

A patient that has been in the "Inactive" (STP) state for more than 6 months is anonymised and cannot be recovered any more. 

Below are two diagrams that further explain the life cycle of patients in Search & Match with different levels of details

Simplified logic of patient life cycle

Search & Match web siteCreate patientPatient or its search results not viewed for 42 daysPatient automatically set to STP stateAll search results removedno change for > 6 monthsPatient anonymisedPatient no longer accessible or recoverable

Detailed diagram of patient life cycle logic

Patient registry or transplant centreAPI/web front endCreate patientCountdown set to 42 daysNoPatient update orRetrieve patient orRetrieve search results for patientYesCountdown (re)set to 42 daysNo activity on patientCountdown hits 0Patient automatically set to STP stateAll search results removedCountdown set to 6 monthsNoPatient set back to ACT or SUS state via API call or web front endYesCountdown (re)set to 42 daysCountdown hits 0Patient anonymisedPatient no longer accessible or recoverable