Produced by Araxis Merge on 4/8/2019 1:00:39 PM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
| # | Location | File | Last Modified |
|---|---|---|---|
| 1 | C:\AraxisMergeCompare\Pri_un\crp-fitheart-release-2.0\app\src\core\resources | fhir-resources_service.js | Wed Mar 20 17:30:00 2019 UTC |
| 2 | C:\AraxisMergeCompare\Pri_re\MHED P3 Healthshare 2.0-redacted\crp-fitheart-release-2.0\app\src\core\resources | fhir-resources_service.js | Mon Apr 8 16:45:19 2019 UTC |
| Description | Between Files 1 and 2 |
|
|---|---|---|
| Text Blocks | Lines | |
| Unchanged | 2 | 950 |
| Changed | 1 | 4 |
| Inserted | 0 | 0 |
| Removed | 0 | 0 |
| Whitespace | |
|---|---|
| Character case | Differences in character case are significant |
| Line endings | Differences in line endings (CR and LF characters) are ignored |
| CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
| 1 | define(['a ngular', ' app', 'lod ash', 'loc alResource DirectoryS ervice', ' authentica tion_servi ce'], func tion(angul ar, app, _ ) { | |
| 2 | "u se strict" ; | |
| 3 | ap p.service( 'fhirResou rces', fun ction($htt p, $q, $ti meout, loc alResource DirectoryS ervice, au thenticati onService) { | |
| 4 | ||
| 5 | var META_P ROVENANCE_ SYSTEM_KEY = "https: //wiki.mob ilehealth. DOMAIN . EXT /display/P GDMS/Clien t+Provenan ce+Mapping "; | |
| 6 | var META_P ROVENANCE_ APP_UUID = " REDACTED "; | |
| 7 | var META_PROVE NANCE_APP_ DISPLAY = "My VA Hea lth"; | |
| 8 | var provenance Tag = { | |
| 9 | "syste m": META_P ROVENANCE_ SYSTEM_KEY , | |
| 10 | "code" : META_PRO VENANCE_AP P_UUID, | |
| 11 | "displ ay": META_ PROVENANCE _APP_DISPL AY | |
| 12 | }; | |
| 13 | ||
| 14 | var fhirResour ces = {}; | |
| 15 | ||
| 16 | var practition erReqs = [ ]; | |
| 17 | var locationRe qs = []; | |
| 18 | var fhirResour ceReqs = [ ]; | |
| 19 | ||
| 20 | /** | |
| 21 | * T he appendP rovenanceM etadata() function p rovides th e meta.tag for FHIR resources when data is from My VA Health app | |
| 22 | * | |
| 23 | * @ param data | |
| 24 | */ | |
| 25 | fhir Resources. appendProv enanceMeta data = fun ction(data ) { | |
| 26 | if (!d ata.meta) { | |
| 27 | data.met a = {tag: []}; | |
| 28 | } else if (!data .meta.tag) { | |
| 29 | data.met a.tag = [] ; | |
| 30 | } | |
| 31 | var pr ovenanceIn dex = _.fi ndIndex(da ta.meta.ta g, functio n(item) { | |
| 32 | return i tem["syste m"] == MET A_PROVENAN CE_SYSTEM_ KEY; | |
| 33 | }); | |
| 34 | if (pr ovenanceIn dex >= 0) { //update provenanc e if an en try alread y exists | |
| 35 | data.met a.tag[prov enanceInde x] = prove nanceTag; | |
| 36 | } | |
| 37 | else { | |
| 38 | data.met a.tag.push (provenanc eTag); | |
| 39 | } | |
| 40 | //Need to delete this meta portion t o avoid FH IR server error when updating a resource | |
| 41 | delete data.meta .lastUpdat ed; | |
| 42 | delete data.meta .profile; | |
| 43 | delete data.meta .versionId ; | |
| 44 | }; | |
| 45 | ||
| 46 | /** | |
| 47 | * T he resolve FhirResour ceByRefere nce() serv ice functi on intends to retrie ve the ref erence dat a from FHI R resource . | |
| 48 | * | |
| 49 | * @ param refe rence: <Re source Nam e>/<id #> | |
| 50 | * r eturn <Res ource Data > | |
| 51 | */ | |
| 52 | fhir Resources. resolveFhi rResourceB yReference = functio n(referenc e) { | |
| 53 | if (fh irResource Reqs[refer ence]) { | |
| 54 | return f hirResourc eReqs[refe rence].pro mise; | |
| 55 | } | |
| 56 | ||
| 57 | var fh irResource Promise = $q.defer() ; | |
| 58 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 59 | function (response) { | |
| 60 | if (respon se[1]) { | |
| 61 | $h ttp.get(re sponse[0][ 'fhir-base Url'] + "/ " + refere nce).then( function(r esponse1) { | |
| 62 | fhir ResourcePr omise.reso lve(respon se1.data); | |
| 63 | }) ; | |
| 64 | fh irResource Reqs[refer ence] = fh irResource Promise; | |
| 65 | } | |
| 66 | }, | |
| 67 | function (error) { | |
| 68 | fhirResour cePromise. reject(err or); | |
| 69 | fhirResour cePromise = null; | |
| 70 | } | |
| 71 | ); | |
| 72 | return fhirResou rcePromise .promise; | |
| 73 | }; | |
| 74 | ||
| 75 | /** | |
| 76 | * T he deleteF hirResourc eByReferen ce() servi ce functio n intends to delete reference data from FHIR resou rce | |
| 77 | * | |
| 78 | * @ param refe rence: <Re source Nam e>/<id #> [,data] | |
| 79 | * note: her e data par am is opti onal. if d ata is not empty, do PUT first and then DELETE | |
| 80 | * r eturn <Ope rationOutc ome> | |
| 81 | */ | |
| 82 | fhir Resources. deleteFhir ResourceBy Reference = function (reference , data) { | |
| 83 | var fh irResource Promise = $q.defer() , | |
| 84 | fhirReso urcePromis es = []; | |
| 85 | ||
| 86 | functi on updateF hirResourc e() { | |
| 87 | var refs = $q.defe r(); | |
| 88 | ||
| 89 | fhirReso urces.crea teUpdateFh irResource ({method: "PUT", res ourceName: reference , data: da ta}).then( | |
| 90 | function(r esponse) { | |
| 91 | re fs.resolve (response) ; | |
| 92 | }, functio n(error) { | |
| 93 | re fs.reject( error); | |
| 94 | }); | |
| 95 | return r efs.promis e; | |
| 96 | }; | |
| 97 | ||
| 98 | functi on deleteF hirResourc e() { | |
| 99 | $q.all([ localResou rceDirecto ryService. fetch(), a uthenticat ionService .checkAuth Status()]) .then( | |
| 100 | function(r esponse) { | |
| 101 | if (response [1]) { | |
| 102 | $htt p.delete(r esponse[0] ['fhir-bas eUrl'] + " /" + refer ence).then (function( response1) { | |
| 103 | fhirRe sourceProm ise.resolv e(response 1); | |
| 104 | }, f unction(er ror) { | |
| 105 | fhirRe sourceProm ise.reject (error); | |
| 106 | }); | |
| 107 | } | |
| 108 | }, | |
| 109 | function(e rror) { | |
| 110 | fh irResource Promise.re ject(error ); | |
| 111 | } | |
| 112 | ); | |
| 113 | return f hirResourc ePromise.p romise; | |
| 114 | }; | |
| 115 | ||
| 116 | if (!r eference) return fhi rResourceP romise.pro mise; | |
| 117 | ||
| 118 | if (fh irResource Reqs[refer ence]) { | |
| 119 | fhirReso urceReqs.s plice(fhir ResourceRe qs.indexOf (reference ), 1); | |
| 120 | fhirReso urceReqs[r eference] = null; | |
| 121 | } | |
| 122 | ||
| 123 | if (da ta) fhirRe sourceProm ises.push( updateFhir Resource); | |
| 124 | fhirRe sourceProm ises.push( deleteFhir Resource); | |
| 125 | ||
| 126 | fhirRe sources.se rialReques tCalls(fhi rResourceP romises); | |
| 127 | ||
| 128 | return fhirResou rcePromise .promise; | |
| 129 | }; | |
| 130 | ||
| 131 | /** | |
| 132 | * T he resolve FhirResour ceByParams () service function intends to retrieve all the da ta entries | |
| 133 | * f rom given FHIR resou rceName al ong with p arams. | |
| 134 | * | |
| 135 | * @ param reso urceName, params | |
| 136 | * r eturn <Res ource Data List> | |
| 137 | */ | |
| 138 | fhir Resources. resolveFhi rResourceB yParams = function(r esourceNam e, params) { | |
| 139 | var at tachSuffix = functio n(paramsOb j, suffixS tr) { | |
| 140 | if (!par amsObj || !suffixStr || (param sObj === { })) return paramsObj ; | |
| 141 | ||
| 142 | var tPar ams = {}; | |
| 143 | angular. forEach(Ob ject.keys( paramsObj) , function (elem) { | |
| 144 | tParams[el em+suffixS tr] = para msObj[elem ]; | |
| 145 | }); | |
| 146 | return t Params; | |
| 147 | }; | |
| 148 | ||
| 149 | var fh irResource Promise = $q.defer() ; | |
| 150 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 151 | function (response) { | |
| 152 | if (respon se[1]) { / /given a s uccessful auth check and local resource directory fetch | |
| 153 | va r fhirBase Url = resp onse[0]['f hir-baseUr l'], | |
| 154 | http Config = { | |
| 155 | method : 'GET', | |
| 156 | url: f hirBaseUrl + "/" + r esourceNam e, | |
| 157 | params : attachSu ffix(param s, ":exact ") | |
| 158 | }; | |
| 159 | $h ttp(httpCo nfig).then (function( response1) { | |
| 160 | if ( response1. data.total > 0) { | |
| 161 | fhirRe sourceProm ise.resolv e(response 1.data.ent ry); | |
| 162 | //ToDo : need to handle FHI R server p agination here (beca use of _co unt=10 by default, m aximum=100 ) | |
| 163 | } | |
| 164 | else { | |
| 165 | fhirRe sourceProm ise.resolv e(0); | |
| 166 | } | |
| 167 | }) ; | |
| 168 | } | |
| 169 | }, | |
| 170 | function (error) { | |
| 171 | fhirResour cePromise. reject(err or); | |
| 172 | fhirResour cePromise = null; | |
| 173 | } | |
| 174 | ); | |
| 175 | return fhirResou rcePromise .promise; | |
| 176 | }; | |
| 177 | ||
| 178 | /** | |
| 179 | * T he createU pdateFhirR esource() service fu nction int ends to po st/put dat a into des ignated FH IR resourc e. | |
| 180 | * I f succeede d, the pos ted/put da ta entry w ill be ret urned. | |
| 181 | * | |
| 182 | * @ param reso urceConfig : {method , resource Name, data } | |
| 183 | * note: for method=PO ST, resour ceName = < Resource N ame>; for method=PUT , resource Name = <Re source Nam e/id #> | |
| 184 | * r eturn {Res ource Name /id #} | |
| 185 | */ | |
| 186 | fhir Resources. createUpda teFhirReso urce = fun ction(reso urceConfig ) { | |
| 187 | var fh irResource Promise = $q.defer() ; | |
| 188 | ||
| 189 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 190 | function (response) { | |
| 191 | if (respon se[1]) { | |
| 192 | va r fhirBase Url = resp onse[0]['f hir-baseUr l']; | |
| 193 | fh irResource s.appendPr ovenanceMe tadata(res ourceConfi g.data); | |
| 194 | ||
| 195 | // append ba ck resourc eType, id for update | |
| 196 | re sourceConf ig.data.re sourceType = resourc eConfig.re sourceName .split("/" )[0]; | |
| 197 | re sourceConf ig.data.id = resourc eConfig.re sourceName .split("/" )[1]; | |
| 198 | ||
| 199 | va r httpConf ig = { | |
| 200 | meth od: resour ceConfig.m ethod, | |
| 201 | url: fhirBaseU rl + "/" + resourceC onfig.reso urceName, | |
| 202 | data : resource Config.dat a | |
| 203 | }; | |
| 204 | $h ttp(httpCo nfig).then ( | |
| 205 | func tion(respo nse) { | |
| 206 | if (re sourceConf ig.method === "POST" ) { | |
| 207 | httpConf ig.url = r esourceCon fig.resour ceName + " /" + | |
| 208 | response.h eaders('Lo cation').s plit(resou rceConfig. resourceNa me)[1].spl it("/")[1] ; | |
| 209 | fhirReso urcePromis e.resolve( httpConfig .url); | |
| 210 | } | |
| 211 | else i f (resourc eConfig.me thod === " PUT") { | |
| 212 | if (fhir ResourceRe qs[resourc eConfig.re sourceName ]) { | |
| 213 | fhirResour ceReqs.spl ice(fhirRe sourceReqs .indexOf(r esourceCon fig.resour ceName), 1 ); | |
| 214 | fhirResour ceReqs[res ourceConfi g.resource Name] = nu ll; | |
| 215 | } | |
| 216 | fhirReso urcePromis e.resolve( resourceCo nfig.resou rceName); | |
| 217 | } | |
| 218 | //ToDo : need to implement code for P ATCH | |
| 219 | }, | |
| 220 | func tion(error ) { | |
| 221 | fhirRe sourceProm ise.reject (error); | |
| 222 | } | |
| 223 | ); | |
| 224 | } | |
| 225 | } | |
| 226 | ); | |
| 227 | return fhirResou rcePromise .promise; | |
| 228 | }; | |
| 229 | ||
| 230 | fhir Resources. createFhir Resource = function( resourceNa me, data) { | |
| 231 | var fh irResource Promise = $q.defer() ; | |
| 232 | ||
| 233 | var ht tpConfig = { | |
| 234 | method: "POST", | |
| 235 | resource Name: reso urceName, | |
| 236 | data: da ta | |
| 237 | }; | |
| 238 | fhirRe sources.cr eateUpdate FhirResour ce(httpCon fig).then( | |
| 239 | function (response) { | |
| 240 | fhirResour cePromise. resolve(re sponse); | |
| 241 | }, funct ion(error) { | |
| 242 | fhirResour cePromise. reject(err or); | |
| 243 | } | |
| 244 | ); | |
| 245 | ||
| 246 | return fhirResou rcePromise .promise; | |
| 247 | }; | |
| 248 | ||
| 249 | fhir Resources. saveFhirRe source = f unction(re sourceName , data) { | |
| 250 | var fh irResource Promise = $q.defer() , | |
| 251 | method = data.id ? 'PUT' : ' POST', | |
| 252 | resource Name = dat a.id? reso urceName+' /' + data. id : resou rceName; | |
| 253 | ||
| 254 | var ht tpConfig = { | |
| 255 | method: method, | |
| 256 | resource Name: reso urceName, | |
| 257 | data: da ta | |
| 258 | }; | |
| 259 | fhirRe sources.cr eateUpdate FhirResour ce(httpCon fig).then( | |
| 260 | function (response) { | |
| 261 | fhirResour cePromise. resolve(re sponse); | |
| 262 | }, funct ion(error) { | |
| 263 | fhirResour cePromise. reject(err or); | |
| 264 | } | |
| 265 | ); | |
| 266 | ||
| 267 | return fhirResou rcePromise .promise; | |
| 268 | }; | |
| 269 | ||
| 270 | /** | |
| 271 | * T he resolve FhirResour ce() servi ce functio n intends to search for an exi sting entr y from FHI R resource . | |
| 272 | * I f found, t he first m atched ent ry is retu rned. If n othing is found, a n ew data en try is pos ted. | |
| 273 | * | |
| 274 | * @ param reso urceName, data, para ms [,other Params] | |
| 275 | * r eturn {Res ource Name /id #} | |
| 276 | */ | |
| 277 | fhir Resources. resolveFhi rResource = function (resourceN ame, data, params) { | |
| 278 | var fh irResource Promise = $q.defer() ; | |
| 279 | ||
| 280 | functi on searchF hirResourc e() { | |
| 281 | var refs = $q.defe r(); | |
| 282 | ||
| 283 | fhirReso urces.reso lveFhirRes ourceByPar ams(resour ceName, pa rams).then ( | |
| 284 | function(r esponse) { | |
| 285 | re fs.resolve (response) ; | |
| 286 | }, functio n(error) { | |
| 287 | re fs.reject( error); | |
| 288 | }); | |
| 289 | return r efs.promis e; | |
| 290 | } | |
| 291 | ||
| 292 | functi on matchRe source(res ponseItem) { | |
| 293 | if (!res ponseItem) { //if n o entry is found, cr eate new o ne | |
| 294 | fhirResour ces.create FhirResour ce(resourc eName, dat a).then( | |
| 295 | fu nction(res ponse) { | |
| 296 | fhir ResourcePr omise.reso lve(respon se); | |
| 297 | }, function( error) { | |
| 298 | fhir ResourcePr omise.reje ct(error); | |
| 299 | }) ; | |
| 300 | } | |
| 301 | else { //Otherwis e, return the first matched en try | |
| 302 | fhirResour cePromise. resolve(re sponseItem [0].resour ce.resourc eType + "/ " + respon seItem[0]. resource.i d); | |
| 303 | //TODO: ne ed to impl ement a co mparator f or other p arams FHIR server do es not sup port | |
| 304 | } | |
| 305 | return f hirResourc ePromise.p romise; | |
| 306 | } | |
| 307 | ||
| 308 | fhirRe sources.se rialReques tCalls([se archFhirRe source, ma tchResourc e]); | |
| 309 | ||
| 310 | return fhirResou rcePromise .promise; | |
| 311 | }; | |
| 312 | ||
| 313 | fhir Resources. serialRequ estCalls = function( calls) { | |
| 314 | var pr evCallProm ise = null ; | |
| 315 | angula r.forEach( calls, fun ction(call ) { | |
| 316 | if (!pre vCallPromi se) { //For the first call () | |
| 317 | prevCallPr omise = ca ll(); | |
| 318 | } | |
| 319 | else { | |
| 320 | prevCallPr omise = pr evCallProm ise.then(c all); | |
| 321 | } | |
| 322 | }); | |
| 323 | return prevCallP romise; | |
| 324 | }; | |
| 325 | ||
| 326 | fhir Resources. resolveLoc ationByRef erence = f unction(re ference) { | |
| 327 | if (lo cationReqs [reference ]) return locationRe qs[referen ce].promis e; | |
| 328 | ||
| 329 | var lo cationFetc hPromise = $q.defer( ); | |
| 330 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 331 | function (response) { | |
| 332 | if (respon se[1]) { | |
| 333 | $h ttp.get(re sponse[0][ 'location' ] + "/" + reference. split("/") [1]).succe ss(functio n(response ) { | |
| 334 | loca tionFetchP romise.res olve(respo nse); | |
| 335 | }) .error(fun ction(erro r) { | |
| 336 | loca tionFetchP romise.rej ect(error) ; | |
| 337 | loca tionFetchP romise = n ull; | |
| 338 | }) ; | |
| 339 | lo cationReqs [reference ] = locati onFetchPro mise; | |
| 340 | } | |
| 341 | }, | |
| 342 | function (error) { | |
| 343 | locationFe tchPromise .reject(er ror); | |
| 344 | locationFe tchPromise = null; | |
| 345 | } | |
| 346 | ); | |
| 347 | ||
| 348 | return locationF etchPromis e.promise; | |
| 349 | }; | |
| 350 | ||
| 351 | fhir Resources. resolvePra ctitionerB yReference = functio n(referenc e) { | |
| 352 | if (pr actitioner Reqs[refer ence]) ret urn practi tionerReqs [reference ].promise; | |
| 353 | ||
| 354 | var pr actitioner FetchPromi se = $q.de fer(); | |
| 355 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 356 | function (response) { | |
| 357 | if (respon se[1]) { | |
| 358 | $h ttp.get(re sponse[0][ 'practitio ner'] + "/ " + refere nce.split( "/")[1]).s uccess(fun ction(prac titioner) { | |
| 359 | //co nvert prac titioner n ame array to single item (assu me the fir st is alwa ys the cor rect one) | |
| 360 | // note: this pattern w ill only a lter the d isplay, al lowing for effective mirrored fhir queri es when do ng a reque st transfo rm | |
| 361 | if ( ((practiti oner.name || {}).giv en || {})[ 0]) | |
| 362 | practi tioner.nam e.given = practition er.name.gi ven[0]; | |
| 363 | if ( ((practiti oner.name || {}).fam ily || {}) [0]) | |
| 364 | practi tioner.nam e.family = practitio ner.name.f amily[0]; | |
| 365 | ||
| 366 | prac titionerFe tchPromise .resolve(p ractitione r); | |
| 367 | }) .error(fun ction(erro r) { | |
| 368 | prac titionerFe tchPromise .reject(er ror); | |
| 369 | prac titionerFe tchPromise = null; | |
| 370 | }) ; | |
| 371 | pr actitioner Reqs[refer ence] = pr actitioner FetchPromi se; | |
| 372 | } | |
| 373 | }, | |
| 374 | function (error) { | |
| 375 | practition erFetchPro mise.rejec t(error); | |
| 376 | practition erFetchPro mise = nul l; | |
| 377 | } | |
| 378 | ); | |
| 379 | ||
| 380 | return practitio nerFetchPr omise.prom ise; | |
| 381 | }; | |
| 382 | ||
| 383 | fhir Resources. resolveLoc ationByPar ams = func tion(param s) { | |
| 384 | var re solveLocat ion = $q.d efer(); | |
| 385 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 386 | function (response) { | |
| 387 | if (respon se[1]) { / /given a s uccessful auth check and local resource directory fetch | |
| 388 | // first atte mpt to res olve locat ion by nam e query | |
| 389 | $h ttp.get(re sponse[0][ 'location' ] + "?name =" + param s.name).su ccess(func tion(locat ion) { | |
| 390 | if ( !location. total) { | |
| 391 | //if n o item ret urned then create a new refere nce with t he supplie d paramete rs and ret urn that | |
| 392 | $http( { | |
| 393 | method: 'POST', | |
| 394 | url: res ponse[0][' location'] , | |
| 395 | data: { | |
| 396 | "resourceT ype": "Loc ation", | |
| 397 | "name": pa rams | |
| 398 | } | |
| 399 | }).suc cess(funct ion(locati on) { | |
| 400 | $http.ge t(response [0]['locat ion'] + "? name=" + p arams.name ).success( function(l ocation) { | |
| 401 | resolveLoc ation.reso lve(locati on.entry[0 ]); | |
| 402 | }); | |
| 403 | }); | |
| 404 | } | |
| 405 | else { | |
| 406 | resolv eLocation. resolve(lo cation.ent ry[0]); | |
| 407 | } | |
| 408 | }) .error(fun ction(erro r) { | |
| 409 | reso lveLocatio n.reject(e rror); | |
| 410 | }) ; | |
| 411 | } | |
| 412 | }, | |
| 413 | function (error) { | |
| 414 | resolveLoc ation.reje ct(error); | |
| 415 | } | |
| 416 | ); | |
| 417 | ||
| 418 | return resolveLo cation.pro mise; | |
| 419 | }; | |
| 420 | ||
| 421 | var filterByPa rtialName = function (params, r esponse) { | |
| 422 | return response. entry.filt er(functio n(entry) { | |
| 423 | return ! ((!params. family && !!entry.re source.nam e.family) || (!param s.given && !!entry.r esource.na me.given)) ; | |
| 424 | }); | |
| 425 | }; | |
| 426 | ||
| 427 | //pr ocess for resolving Practition er resourc es: | |
| 428 | // query Prac titioner b y name, na me is pass ed in as " given" and "family" parameters , ensure e xact match search | |
| 429 | // if Pra ctitioner does not e xist, send POST to c reate new one, then | |
| 430 | // given a result s et greater than 0 | |
| 431 | // if one of ei ther famil y or given parameter s not supp lied, filt er | |
| 432 | fhir Resources. resolvePra ctitionerB yParams = function(p arams) { | |
| 433 | var re solvePract itioner = $q.defer() ; | |
| 434 | ||
| 435 | $q.all ([localRes ourceDirec toryServic e.fetch(), authentic ationServi ce.checkAu thStatus() ]).then( | |
| 436 | function (response) { | |
| 437 | if (respon se[1]) { / /given a s uccessful auth check and local resource directory fetch | |
| 438 | va r paramsEx act = {}; | |
| 439 | if (params.g iven) para msExact['g iven:exact '] = param s.given; | |
| 440 | if (params.f amily) par amsExact[' family:exa ct'] = par ams.family ; | |
| 441 | ||
| 442 | // first atte mpt to res olve pract itioner by name quer y | |
| 443 | $h ttp.get(re sponse[0][ 'practitio ner'] + "? " + $.para m(paramsEx act)).succ ess(functi on(practit ioner) { | |
| 444 | if ( !practitio ner.total || !filter ByPartialN ame(params , practiti oner).leng th) { | |
| 445 | //if n o item ret urned then create a new refere nce with t he supplie d paramete rs and ret urn that | |
| 446 | $http( { | |
| 447 | method: 'POST', | |
| 448 | url: res ponse[0][' practition er'], | |
| 449 | data: { | |
| 450 | "resourceT ype": "Pra ctitioner" , | |
| 451 | "name": pa rams | |
| 452 | } | |
| 453 | }).suc cess(funct ion() { | |
| 454 | $http.ge t(response [0]['pract itioner'] + "?" + $. param(para msExact)). success(fu nction(pra ctitioner) { | |
| 455 | resolvePra ctitioner. resolve(fi lterByPart ialName(pa rams, prac titioner)[ 0]); | |
| 456 | }); | |
| 457 | }); | |
| 458 | } | |
| 459 | else { | |
| 460 | resolv ePractitio ner.resolv e(filterBy PartialNam e(params, practition er)[0]); | |
| 461 | } | |
| 462 | }) .error(fun ction(erro r) { | |
| 463 | reso lvePractit ioner.reje ct(error); | |
| 464 | }) ; | |
| 465 | } | |
| 466 | }, | |
| 467 | function (error) { | |
| 468 | resolvePra ctitioner. reject(err or); | |
| 469 | } | |
| 470 | ); | |
| 471 | ||
| 472 | return resolvePr actitioner .promise; | |
| 473 | }; | |
| 474 | ||
| 475 | retu rn fhirRes ources; | |
| 476 | }) ; | |
| 477 | }); |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.