Skip to content

Commit

Permalink
fix: Conformance respects Fhirbase version (fhirbase#83).
Browse files Browse the repository at this point in the history
Conformance respects Fhirbase and FHIR versions.
  • Loading branch information
danil committed Apr 12, 2016
1 parent 51e8506 commit cd7c588
Show file tree
Hide file tree
Showing 11 changed files with 133 additions and 33 deletions.
37 changes: 25 additions & 12 deletions release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ set -e
# DATABASE_URL=postgres://your_user_name:your_password@localhost:5432/fhirbase_build
# WARNING: `fhirbase_build` database will be destroed and recreated!

PREV_FHIRVERSION="1.3.0"
FHIRVERSION="1.3.0"

PREV_FBVERSION="1.3.0.5"
FBVERSION="1.3.0.6"

PREV_FBRELEASEDATE="2016-04-12T17:00:00Z"
FBRELEASEDATE="2016-04-12T17:00:00Z"

PREV_FHIRVERSION="1.3.0"
FHIRVERSION="1.3.0"

PGOPTIONS='--client-min-messages=warning'
loadcmd="psql --no-psqlrc --quiet --echo-all --single-transaction \
--set=ON_ERROR_STOP=1 --pset=pager=off"
Expand Down Expand Up @@ -61,18 +64,18 @@ FB_SCHEMA=bar bash build.sh || exit 1
| $loadcmd "$DATABASE_URL" > /dev/null || exit 1
FB_SCHEMA=bar npm run test || exit 1

# fhir_version_sensitive_files="
# ./src/fhir/version.coffee
# "
fhir_version_sensitive_files="
./src/fhir/fhir_version.coffee
"

# for file in $fhir_version_sensitive_files; do
# sed --in-place \
# --expression="s/$PREV_FHIRVERSION/$FHIRVERSION/g" \
# $file || exit 1
# done
for file in $fhir_version_sensitive_files; do
sed --in-place \
--expression="s/$PREV_FHIRVERSION/$FHIRVERSION/g" \
$file || exit 1
done

fhirbase_version_sensitive_files="
./src/core/version.coffee
./src/core/fhirbase_version.coffee
./vagrant/provision/provision-environment.sh
./perf/perf"

Expand All @@ -82,6 +85,16 @@ for file in $fhirbase_version_sensitive_files; do
$file || exit 1
done

fhirbase_release_date_sensitive_files=" release_date
./src/core/fhirbase_version.coffee
"

for file in $fhirbase_release_date_sensitive_files; do
sed --in-place \
--expression="s/$PREV_FBRELEASEDATE/$FBRELEASEDATE/g" \
$file || exit 1
done

FB_SCHEMA=public bash build.sh || exit 1
{ echo $(schema_statement "public") ; cat tmp/build.sql; } \
| $loadcmd "$DATABASE_URL" > /dev/null || exit 1
Expand Down
2 changes: 1 addition & 1 deletion src/core/core.coffee
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require('./version')
require('./fhirbase_version')
require('./namings')
require('./pg_meta')
require('./schema')
Expand Down
19 changes: 19 additions & 0 deletions src/core/fhirbase_version.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
fhirbase_version = -> '1.3.0.6'

exports.fhirbase_version = fhirbase_version

exports.fhirbase_version.plv8_signature = {
arguments: 'json'
returns: 'varchar(20)'
immutable: true
}

fhirbase_release_date = -> '2016-04-12T17:00:00Z'

exports.fhirbase_release_date = fhirbase_release_date

exports.fhirbase_release_date.plv8_signature = {
arguments: 'json'
returns: 'varchar(50)'
immutable: true
}
9 changes: 0 additions & 9 deletions src/core/version.coffee

This file was deleted.

12 changes: 11 additions & 1 deletion src/fhir/conformance.coffee
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
utils = require('../core/utils')
compat = require('../compat')
fhirVersion = require('./fhir_version')
fhirbaseVersion = require('../core/fhirbase_version')

exports.fhir_conformance = (plv8, base)->
base.resourceType = 'Conformance'
base.version = base.version || 'fhirbase-0.0.2'
base.acceptUnknown = true

base.fhirVersion = base.fhirVersion || fhirVersion.fhir_version()
base.version = base.version || fhirbaseVersion.fhirbase_version()

base.software = {
name: 'Fhirbase'
releaseDate: base.releaseDate || fhirbaseVersion.fhirbase_release_date()
version: base.version || fhirbaseVersion.fhirbase_version()
}

schema = utils.current_schema(plv8)


Expand Down
1 change: 1 addition & 0 deletions src/fhir/core.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ require('./conformance')
require('./search')
require('./transaction')
require('./terminology')
require('./fhir_version')
9 changes: 9 additions & 0 deletions src/fhir/fhir_version.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
fhir_version = -> '1.3.0'

exports.fhir_version = fhir_version

exports.fhir_version.plv8_signature = {
arguments: 'json'
returns: 'varchar(20)'
immutable: true
}
21 changes: 21 additions & 0 deletions test/core/fhirbase_version_spec.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
assert = require('assert')
plv8 = require('../../plpl/src/plv8')
fhirbaseVersion = require('../../src/core/fhirbase_version')

describe 'Fhirbase should know his', ->
before ->
plv8.execute("SET plv8.start_proc = 'plv8_init'")

it 'version', ->
version = fhirbaseVersion.fhirbase_version(plv8)
assert.equal(
!!version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)

it 'release date', ->
version = fhirbaseVersion.fhirbase_release_date(plv8)
assert.equal(
!!version.match(/-?[0-9]{4}(-(0[1-9]|1[0-2])(-(0[0-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)))?)?)?/),
true
)
30 changes: 25 additions & 5 deletions test/fhir/conformance_spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,28 @@ assert = require('assert')

describe "Conformance", ->
it "elements", ->
schema.fhir_create_storage(plv8, resourceType: 'NutritionOrder')
subj = conf.fhir_conformance(plv8, {somekey: 'somevalue'})
assert.equal(subj.somekey, 'somevalue')
assert.equal(subj.rest[0].resource.filter((r)-> r.type == 'NutritionOrder').length, 1)

schema.fhir_create_storage(plv8, resourceType: 'NutritionOrder')
conformance = conf.fhir_conformance(plv8, {somekey: 'somevalue'})
assert.equal(conformance.somekey, 'somevalue')
assert.equal(
conformance.rest[0].resource.filter(
(r)-> r.type == 'NutritionOrder'
).length,
1
)
assert.equal(
!!conformance.fhirVersion.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)
assert.equal(
!!conformance.version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)
assert.equal(
!!conformance.software.version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)
assert.equal(
!!conformance.software.releaseDate.match(/-?[0-9]{4}(-(0[1-9]|1[0-2])(-(0[0-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)))?)?)?/),
true
)
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
assert = require('assert')
plv8 = require('../../plpl/src/plv8')
version = require('../../src/core/version')
fhirVersion = require('../../src/fhir/fhir_version')

describe 'CORE: version', ->
describe 'Fhirbase should know', ->
before ->
plv8.execute("SET plv8.start_proc = 'plv8_init'")

it 'fhirbase should know his version', ->
version = version.fhirbase_version(plv8)
it 'FHIR version', ->
version = fhirVersion.fhir_version(plv8)
assert.equal(
!!version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
Expand Down
18 changes: 17 additions & 1 deletion test/integration_spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,29 @@ describe 'Integration',->
1
)

it 'fhirbase version', ->
it 'FHIR version', ->
version = plv8.execute("SELECT fhir_version()")[0].fhir_version
assert.equal(
!!version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)

it 'Fhirbase version', ->
version = plv8.execute("SELECT fhirbase_version()")[0].fhirbase_version
assert.equal(
!!version.match(/.*[0-9]*\.[0-9]*\.[0-9].*/),
true
)

it 'Fhirbase release date', ->
version = plv8.execute("SELECT fhirbase_release_date()")[0]
.fhirbase_release_date

assert.equal(
!!version.match(/-?[0-9]{4}(-(0[1-9]|1[0-2])(-(0[0-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)))?)?)?/),
true
)

describe 'Schema storage', ->
beforeEach ->
plv8.execute(
Expand Down

0 comments on commit cd7c588

Please sign in to comment.