4.1 - Start
...
search
A POST to the searches The startSearch endpoint is used to submit a search request to the Search & Match Service. This call returns a searchId for of the search.
Post |
---|
searches |
|
Send |
---|
startSearch |
Request |
---|
wmdaId* | integer example: 123456 nullable: false | matchEngine* | integer nullable: falseUnique identifier of match engine used in the search. Allowed: 2 (HAP-E), 3 (ATLAS). Enum: Array [ 2 ] | searchType* | string example: DREnum: Array [ 2 ] | overallMismatches | integer default: 0Enum: Array [ 8 ] | lociToBeConsidered | [...] | isCbuAbLowDrb1HighResolution | boolean default: false nullable: true |
|
Expand |
---|
| Field | Details |
---|
searchId | integer nullable: false minimum: 1 |
|
|
4.2 - Search summary
The retrieveSearchResultssummary A GET to the searches/{searchId} endpoint is used to request a search summary for of a search. It also contains the status of a the search and can therefore be used to check whether a the search is done.
Request: Response: which Get |
---|
searches/{searchId} |
|
Send |
---|
retrieveSearchResultssummary |
|
|
Unique identifier of the search. Can be determined by retrieving the patient search summary |
|
Expand |
---|
| Field | Details |
---|
patient | {...} | searchId* | integer nullable: false minimum: 1 | searchType* | stringEnum: Array [ 1 ] | matchEngine* | integer nullable: falseUnique identifier of match engine used in the search. Allowed: 2 (HAP-E), 3 (ATLAS). Enum: Array [ 2 ] | overallMismatches* | integer default: 0Enum: Array [ 8 ] | status* | string nullable: falseEnum: Array [ 3 ] | summary* | {...} | inexplicable* | integer nullable: trueTotal number of donors |
|
|
whose phenotype cannot be explained by known haplotype | statistics* | {...} | error* | {...} nullable: true | lociToBeConsidered | [...] | lastUpdated | string($date-time) nullable: false maxLength: 255needed to help determine when the patient can be automatically moved to STP state |
|
|
4.3 -
...
Retrieve all searches for a patient
A GET to the searches/patientSearches/{wmdaId} The retrieveSearchResultsDonors endpoint is used to retrieve search results for donors. Pagination is possible and optional filters can be provided. an overview off all searches that have been performed for a specific patient.
Request:
pagination | {...} |
searchId* | integer nullable: false minimum: 1 |
filters | {...} |
sortBy | string nullable: true default: standardEnum: Array [ 2 ] |
Response:
paging*limit* | integer default: 100 minimum: 0 |
offset* | integer default: 0 minimum: 0 example: 0 |
totalCount* | integer minimum: 0 example: 2 |
searchResults*[
minItems: 0
id*integer
nullable: false
example: 5176donorRegistryIonGetsearches/patientSearches/{wmdaId} Expand |
---|
|
Field | Details |
---|
wmdaId* | integer wmdaId of patient you want to find search information for. This is NOT the patientId, but the wmdaId you received in the response body after creating your patient. |
|
Expand |
---|
|
Field | Details |
---|
searchId* | integer nullable: false minimum: 1 | matchEngine |
|
minimum: 1000
maximum: 9999
example: 1234abbreviation*string
example: NL-WMDA
maxLength: 24Unique identifier of match engine used in the search. Allowed: 2 (HAP-E), 3 (ATLAS). Enum: Array [ 2 ] | searchType* | stringEnum: Array [ 1 ] | overallMismatches* | integer default: 0Enum: Array [ 8 ] |
|
haplotypeFrequencySetId*integer
nullable: true
minimum: 0
example: 15 | status* | string nullable: falseEnum:
|
|
[ AV, TU, RS sexstring
nullable: trueEnum:
[ M, F ]ethnicity*string{...} | lociToBeConsidered* | [...] | lastUpdated* | string($date-time) nullable: |
|
trueEnum:
[ UK, AF, AS, CA, HI, AFNA, AFSS, ASSW, ASSO, ASCE, ASSE, ASNE, ASOC, CAEU, CAER, CANA, CAAU, HICA, HISA, MX, OT ]idm*antiCmvStatusstring
nullable: trueEnum:
Array [ 7 ]antiCmvDatestring($date)false maxLength: 255needed to help determine when the patient can be automatically moved to STP state | inexplicable | integer nullable: trueTotal number of donors whose phenotype cannot be explained by known haplotype | statistics | {...} | error | {...} |
|
4.4 - Search results - Donors
A POST to the searches/searchResults/donors endpoint is used to retrieve search results with adult donors. Pagination is possible and optional filters can be provided. If only interested in recent changes to the search results, this can be achieved using a filter on "recordLastUpdatedFrom" field.
rhesus*Post |
---|
searches/searchResults/donors |
Expand |
---|
| Field | Details |
---|
pagination | {...} | searchId* | integer nullable: false minimum: 1 | filters | {...} | sortBy |
|
maxLength: 10date of CMV NAT test |
cmvNatStatus | string nullable: trueEnum: Array [ 2 ] |
cmvNatDate | string($date) nullable: true maxLength: 10date of CMV NAT test |
abo* | string nullable: trueEnum: [ A, B, O, AB ] |
EnumregistryAccreditationStatus*string
nullable: true[ P, N ]accredited, qualifiedfirstAccreditationYear*number
minimum: 1990
maximum: 2100
nullable: true
example: 2019matchClass*string
example: 9/10
nullable: falsenmdpGrade*string
maxLength: 5
example: MPPMP
nullable: trueA - high-res match on ARD, P - probable match, M - sure Mismatch
zeroMismatchProbability*integer
minimum: 0
maximum: 100
nullable: trueoneMismatchProbability*integer
nullable: true
minimum: 0
maximum: 100twoMismatchProbability |
Field | Details |
---|
paging* | {...} | searchResults* | [...] |
|
4.5 - Search results - CBUs
A POST to the searches/searchResults/cbus retrieveSearchResultsDonors endpoint is used to retrieve search results with cord blood units. Pagination is possible and optional filters can be provided. If only interested in recent changes to the search results, this can be achieved using a filter on "recordLastUpdatedFrom" field.
true
maximum: 100integer0minimum0
maximum: 100integerminimum
maximum: 100integer0minimum0
maximum: 100}]
Post |
---|
searches/searchResults/cbus |
Expand |
---|
| Field | Details |
---|
pagination | {...} | searchId* | integer nullable: |
|
|
aLocusMatchProbability* |
|
1 | filters | {...} | sortBy | string |
|
|
|
|
bLocusMatchProbability* |
standardEnum: Array [ 2 ] | threeFourMismatchSortBy | string |
|
|
|
cLocusMatchProbability* |
|
resolutionScoreEnum: Array [ 3 ] | secondarySortBy | string |
|
|
|
|
drLocusMatchProbability* | integer nullable: true minimum: 0 maximum: 100 |
dqLocusMatchProbability* | integer nullable: true minimum: 0 maximum: 100 |
inexplicable* | boolean |
matchingInformationDpb1* | dpb1MatchGrade* | string nullable: trueEnum: [ P, A, G, H, X ] | tceDigest* | permissiveProbability* | integer nullable: true minimum: 0 maximum: 100Probability of permissive MM. Probabilities calculated with allele frequencies for DPB1, no linkage disequilibrium taken into account | nonPermissiveHostVsGraftProbability* | integer nullable: true minimum: 0 maximum: 100Probability for non-permissive MM in HvG direction. Probabilities calculated with allele frequencies for DPB1, no linkage disequilibrium taken into account | nonPermissiveGraftVsHostProbability* | integer nullable: true minimum: 0 maximum: 100Probability for Nnon-permissive MM in GvH direction. Probabilities calculated with allele frequencies for DPB1, no linkage disequilibrium taken into account | notDeterminedProbability* | integer nullable: true minimum: 0 maximum: 100Probability for Not Determinable permissiveness. Probabilities calculated with allele frequencies for DPB1, no linkage disequilibrium taken into account |
|
|
mismatches* | locus* | string nullable: truelocus where the mismatch is Enum: [ A, B, C, DRB1, DQB1, DPB1, DPA1, DQA1, DRB2, DRB3, DRB4, DRB5 ] | position* | integer nullable: trueposition of the mismatch (chromosome 1 or 2) Enum: [ 1, 2 ] | type* | string nullable: truetype of mismatch Enum: [ ANTIGEN, ALLELE ] |
|
searchResultRecordState* | string nullable: false default: ExistingEnum: [ Existing, New, Updated, Deleted ] |
searchResultRecordStateUpdatedAt* | string($date-time) nullable: true maxLength: 255date and time when the last change was registered in the system |
isSelected* | boolean nullable: truetrue when this record has been marked as a selected |
resolutionScore* | number minimum: 0 maximum: 100 nullable: true example: 54 |
resolutionString* | string minLength: 5 maxLength: 5 example: AP-A- nullable: trueA - high-res P - low or intermediate, - no typing |
grid* | string nullable: true maxLength: 19 minLength: 19 example: 9991012070433202000 |
donorId* | string nullable: true example: ABC1234 maxLength: 25 |
donorType* | string nullable: falseEnum: [ D, B ] |
lastContactDate* | string($date) nullable: true minLength: 10 maxLength: 10 |
marrowDonationsCount* | integer nullable: true example: 0 |
pbscDonationsCount* | integer nullable: true example: 1 |
dateOfBirth* | string($date) nullable: true maxLength: 10 example: 1961-05-27 |
hla* | a* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| b* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| c* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| dpa1* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| dpb1* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| dqa1* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| dqb1* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| drb1* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| drb3* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| drb4* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
| drb5* | field1* | string maxLength: 20 example: 01:01 | field2* | string nullable: true maxLength: 20 example: 02:01 |
|
|
4.4 - Full report - Donors
The retrieveFullReportDonors endpoint is used to retrieve all available information for a specific donor in a search result.
...
4.5 - Search results - CBUs
The retrieveSearchResultsDonors endpoint is used to retrieve search results for cord blood units. Pagination is possible and optional filters can be provided.
...
4.6 - Full report - CBUs
The retrieveFullReportCBUs endpoint is used to retrieve all available information for a specific CBU in a search result.
...
...
Expand |
---|
| Field | Details |
---|
paging* | {...} | searchResults* | [...] |
|
|
4.6 - Mark selected donor
A POST to the searches/selected/donors endpoint is used to select a donor. This endpoint can be used to highlight a donor of interest.
Post |
---|
searches/selected/donors |
Expand |
---|
| Field | Details |
---|
wmdaId | integer wmdaId of patient you want to find search information for. This is NOT the patientId, but the wmdaId you received in the response body after creating your patient. | grid | string nullable: true maxLength: 19 minLength: 19 example: 9991012070433202000 | setAsSelected | boolean nullable: false
set (true) or unset (false) the indicated grid or cordId as a selected stem cell source for this patient |
|
|
4.7 - Mark selected CBU
A POST to the searches/selected/cbus endpoint is used to select a donor. This endpoint can be used to highlight a CBU of interest.
Post |
---|
searches/selected/cbus |
Expand |
---|
| Field | Details |
---|
wmdaId | integer wmdaId of patient you want to find search information for. This is NOT the patientId, but the wmdaId you received in the response body after creating your patient. | cordId | string nullable: true maxLength: 25 example: 9991012070433202000 cordId of the CBU. | donorRegistryIon | integer nullable: false minimum: 1000 maximum: 9999 example: 1234 | setAsSelected | boolean nullable: false
set (true) or unset (false) the indicated grid or cordId as a selected stem cell source for this patient |
|
|
4.8 - Get list of registries that appear in search results
A GET to the searches/{searchId}/searchResults/registries endpoint is used to retrieve an overview off all the registries that appear in the search results of a specific donor search.
Get |
---|
searches/{searchId}/searchResults/registries |
Expand |
---|
| Field | Details |
---|
searchId* | integer Unique identifier of the search. Can be determined by retrieving the patient search summary |
|
Expand |
---|
| Field | Details |
---|
registries* | {...} Array of unique registry IONs with their abbreviation and name |
|
|
4.9 - Get list of cord blood banks that appear in search results
A GET to the searches/{searchId}/searchResults/cbbs endpoint is used to retrieve an overview off all the registries that appear in the search results of a specific donor search.
Get |
---|
searches/{searchId}/searchResults/cbbs |
Expand |
---|
| Field | Details |
---|
searchId* | integer Unique identifier of the search. Can be determined by retrieving the patient search summary |
|
Expand |
---|
| Field | Details |
---|
cbbs* | {...} Array of unique cbbs bank manufacterer IDs with their abbreviation and name |
|
|
4.10 - Full report - Donors
A GET to the searches/donors/{searchResultsId} endpoint retrieves all available information of a specific donor in a search result.
Get |
---|
searches/donors/{searchResultsId} |
Expand |
---|
| Field | Details |
---|
searchResultsId* | integer Unique identifier of the donor within a search result. This is the "id" field within searchResult |
|
Expand |
---|
| Field | Details |
---|
searchId | integer nullable: false minimum: 1 | searchType | string Enum: Array [ 1 ] | matchDuration | integer minimum: 0 nullable: true example: 30time in seconds that the search took to run on the matching engine | patient | {...} | search | {...} | donor | {...} |
|
|
4.11 - Full report - CBUs
A GET to the searches/cbus/{searchResultsId} endpoint retrieves all available information of a specific CBU in a search result.
Get |
---|
searches/cbus/{searchResultsId} |
Expand |
---|
| Field | Details |
---|
searchResultsId* | integer Unique identifier of the search. Can be determined by retrieving the patient search summary |
|
Expand |
---|
| Field | Details |
---|
searchId | integer nullable: false minimum: 1 | searchType | stringEnum: Array [ 1 ] | matchDuration | integer minimum: 0 nullable: true example: 30time in seconds that the search took to run on the matching engine | search | {...} | patient | {...} | cbu | {...} |
|
|
4.12 - Refresh all searches for a patient
A POST to the searches/refreshAllPatientSearches endpoint is used to restart all searches for this patient and retrieve the new results.
4.13 - Restart a single search
A POST to the searches/searchResultsRefresh endpoint is used to restart all searches for this patient and retrieve the new results.
Post |
---|
searches/searchResultsRefresh |
Expand |
---|
| Field | Details |
---|
searchId* | integer example: 123456 nullable: false |
|
Expand |
---|
| Field | Details |
---|
newSearchId | integer example: 123457 nullable: false |
|
|
4.14 - Suggested use of API endpoints
Below is a diagram indicated indicating the suggested use of some of the API endpoints. More API endpoints are available and the API implementer may choose to implement the endpoints in another order.
Image Removed
PlantUML Macro |
---|
title | Suggested use of API endpoints |
---|
|
@startuml
<style>
diamond {
BackgroundColor #ccf
}
</style>
#palegreen:repeat:request token from 'https://login.microsoftonline.com/{tenantId}/oauth2/token';
repeat while (Valid bearer token from the Patient and Search API?) is (no)
->yes;
#palegreen:create patient: POST /patients;
#lightblue:HTTP201 created: Response body contains 'wmdaId' for this patient;
#palegreen:Start search for patient using wmdaId POST to /searches;
#lightblue:repeat:HTTP201 created: Response body contains 'searchId' for this patient;
#palegreen:repeat:Check search status: GET to /searches/{wmdaId};
backward: running;
repeat while (What is the 'status' in the response body?)
:completed;
split
#gold:Donor;
#AntiqueWhite:Retrieve search results: POST to /searches/searchResults/donors;
#pink:Pick one or more donors;
#AntiqueWhite:Use 'id' field for that donor to perform GET to
/searches/donors/{searchResultsId} to get full report for this donor;
split again
#gold:CBU;
#AntiqueWhite:Retrieve search results: POST to /searches/searchResults/cbus;
#pink:Pick one or more CBUs;
#AntiqueWhite:Use 'id' field for that donor to perform GET to
/searches/cbus/{searchResultsId} to get full report for this CBU;
split again
#gold:ADCU;
#AntiqueWhite:Retrieve search results: POST to /searches/searchResults/adcus;
#pink:Pick one or more ADCUs;
#AntiqueWhite:Use 'id' field for that donor to perform GET to
/searches/adcus/{searchResultsId} to get full report for this ADCU;
endsplit
split
#palegreen:Refresh all searches for a patient: POST to /searches/refreshAllPatientSearches;
split again
#palegreen:Refresh single search: POST to /searches/searchResultsRefresh;
@enduml
|