Ex profile?name=romain&address=Dhaka&hobbies=sport
( Experimental )
- N1QL ( Couchbase SQL like Query Language )
- CYPHER ( Graph Database Neo4j )
- N1QL Index Generation
- N1QL Query Generation
- CYPHER Query Generation
This library helps to generate Query Language from URL Query Parameter based on Defined logic of the parameter
URI : Patient?name:contains=Mr.
If the JSON data looks like this
"name": [
{
"family": "Levin",
"given": [
"Henry"
]
}
],
Dictionary will look like this. here []
means array and .
means object. E.g : []array.obj
or obj.obj
or []array.[]array
case "Patient" :
sp := map[string]models.SearchParam{
"name": models.SearchParam{
Type: "string",
FieldType: "string",
Path: []string{"[]name.[]family", "[]name.[]given"},
}
}
if val, ok := sp[match]; ok {
return &val
}
The output will be like this
SELECT * FROM `kite` as r WHERE r.resourceType = 'Patient' and
ANY a0 IN r.name SATISFIES a0.`family` like '%Mr.%'
END
OR
ANY a0 IN r.name SATISFIES
ANY a1 IN a0.`given` SATISFIES a1 like '%Mr.%'
END
END
It also Generates Index for those array search
CREATE INDEX `name_family` ON `kite`(DISTINCT ARRAY a0.family FOR a0 IN name END, name) WHERE resourceType = 'Patient'
CREATE INDEX `name_given` ON `kite`(DISTINCT ARRAY (DISTINCT ARRAY a1 FOR a1 IN a0.given END) FOR a0 IN name END) WHERE resourceType = 'Patient'
Search Parameter Types | Sub Types | Status | Comment |
---|---|---|---|
Number | None | 100% | Done |
Date/DateTime | None | 80% | Period is not implemented , Confused ! |
String | None | 100% | Done |
Token | code | 100% | 80% |
Coding | 100% | Done | |
CodableConcept | 100% | Done | |
token | 100% | Done | |
string | 100% | Done | |
Identifier | 50% | Done | |
Reference | None | 80% | |
Reference | None | 100% | Done |
Composite | Partial | 70% | |
Quantity | None | 50% | |
URI | None | 0% | |
_id | None | 0% | |
_lastUpdated | None | 0% | |
_tag | None | 0% | |
_profile | None | 0% | |
_security | None | 0% | |
_text | None | 0% | |
_content | None | 0% | |
_list | None | 0% | |
_has | None | 0% | |
_type | None | 0% | |
_query | None | 0% | |
_sort | None | 0% | |
_count | None | 0% | |
_include | None | 0% | |
_revinclude | None | 0% | |
_summary | None | 0% | |
_elements | None | 0% | |
_contained | None | 0% | |
_containedType | None | 0% |
Note : The search pattern implemented in this library is inspired by FHIR Search
- Saperate Builder Module as plugin