Giter Club home page Giter Club logo

fhirserver's Introduction

Pascal FHIRServer Reference Implementation

Reference Implementation Server + Libraries for the FHIR Specification, written in Pascal

Build Status

Basic Information

This is a set of FHIR applications written in Pascal. It is also the home of the pascal reference implementation for FHIR. Included in this project:

  • The Pascal reference implementation for FHIR (/library) + many useful supporting libraries
  • The FHIR reference server
    • supports the entire FHIR functionality, along with OAuth, OpenID.Connect, and SCIM
    • includes v2 and DICOM end points
    • includes set of tests for the server and library
  • The FHIR toolkit - a set of utilities for developers

Also:

  • A VCL demo program that shows how to connect to to an argonaut interface (contributed by Wellsoft, thanks)
  • The FHIR Notepad++ plug-in - a set of useful utilities for FHIR developers (being phased out)

For binary releases of this content, see http://www.healthintersections.com.au/FhirServer

This project is maintained by the FHIR Project lead (Grahame Grieve). The server runs in multiple locations, including http://test.fhir.org, http://tx.fhir.org, and http://packages2.fhir.org

License

The license is standard BSD-3:

Copyright (c) 2011+, HL7, Inc and Health Intersections Pty Ltd All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of HL7 nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Support

See https://chat.fhir.org/#narrow/stream/179281-pascal

Reference Server

In form, this a middleware tool to help applications exchange data via a repository. It also shows how to implement a generic FHIR server against an SQL database. The server is specifically written as an reference server - it implements all parts of the specification as defined, and is co-developed with the specification. It is not well optimised for hosting/supporting very large repositories efficiently.

Libraries

The open source FHIR Server includes delphi/pascal implementations of:

  • Xml/XPath/XML Patch + XML Digital Signature
  • JSON/JSONPointer/Json Patch + JSON Digital Signature (+ JWT/JWK support using openSSL)
  • OAuth/openID Connect (including google/facebook clients)
  • Turtle format (RDF)
  • GraphQL
  • HL7 V2
  • DICOM
  • CDA
  • Liquid Templating language
  • Javascript and Java invocation libraries
  • SCIM
  • LOINC/SNOMED/RxNorm/CVX/UCUM
  • CQL (Clinical Query Language)
  • Graphical Components
    • simple quick graphing library
    • De Novo word processor
    • FHIR LCL Components
    • FHIR FMX Components. Note that FMX support is being phased out
  • All of FHIR + FHIRPath + smart all launch + cds-hooks, of course

Projects

FPC/Lazarus:

  • fhirprojects.lpg - a group containing the three projects
  • /server/fhirserver.lpi - the FHIR server (win64, win32, linux64, osx64)
  • /server/fhirconsole.lpi - management utility for the server (win64, win32, linux64, osx64)
  • /toolkit2/fhirtoolkit.lpi - ToolKit for FHIR developers (win64, win32, linux64, osx64)

Delphi:

  • fhir-projects.groupproj - a group containing these projects
  • \server\FHIRServer.dproj - the FHIR server (win64 or win32)
  • \utilities\vcldemo\FhirVclDemo.dproj - a demonstration of a working standalone client for Cerner and Epic
  • \utilities\nppformats\formatUtils.dproj - useful utility extensions for Notepad++ (not FHIR specific)
  • \utilities\cde\ClinicalDocumentEditor.dproj - word processor demo + CDA editor. Planned to be moved to FPC/Lazarus
  • \toolkit\FHIRToolkitR3.dproj and \toolkit\FHIRToolkitR4.dproj - win/osx - deprecated for fhirtoolkit.lpi - see above
  • \transformer\FHIRTransformer.dproj - Prototype transform tool - deprecated for fhirtoolkit.lpi - see above
  • \npp\fhirnpp.dproj - Notepad++ extensions for FHIR - deprecated for fhirtoolkit.lpi - see above
  • \utilities\publisher\IGPublisher.dproj - not sure what this is

Folders

  • library: the pascal reference implementation with supporting code

  • exec: files needed by the server at run time

  • .github: ci-build setup

  • exec: files required at execution time, and target for the compiled applications (e.g. exec/64)

  • build: build scripts for windows and linux. Will install the entire pascal toolchain from scratch - see below

  • dependencies: external code that isn't in it's own repository (mainly for legacy reasons)

  • doco: documentation for the product (though most documentation lives in the healthintersections wiki)

  • fixtures: resources used for running the tests during the ci-build

  • install: install scripts for the windows versions of the applications (to be reviewed)

  • library: library code as described above

  • npp: FHIR Npp - being phased out

  • packages: lazarus packages for the libraries

  • resources: resources used in the test scripts

  • server: server code (including the server console)

  • testcases: more resources for test cases

  • toolkit: old toolkit being phased out

  • toolkit2: new toolkit under development

  • transformer: - being phased out

  • utilities: - misc other projects as listed above + java code generator for pascal code

Compiling / Building

See [build/readme.md] for further instructions for building the programs in this repository.

Building Release

Also see [build/readme.md] for release information

fhirserver's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fhirserver's Issues

Compiling on Delphi XE7

1 - IndySoap – we are using XE7, and the IdCompilerDefines.inc in the source folder only goes as far as XE3 – on copying one of the standard XE7 IdCompilerDefines.inc from the Indy files under program files Embarcadero helped. In case it helps I have attached the Xe7 and XE3 files so you can check these, the IdCompilerDefines.inc is the XE7 Indy version.

We are compiling for XE7, this introduces some compiler alterations in generics it seems:

2 - In unit AdvGenerics.pas

function TAdvEnumerable.ToArrayImpl(Count: Integer): TArray;
var
x: T;
begin
// We assume our caller has passed correct Count
SetLength(Result, Count);
Count := 0;
for x in Self do
begin
TObject(Result[Count]) := TAdvObject(x).Link; //####JKB – have to cast the result to TObject in XE7
Inc(Count);
end;
end;

procedure TAdvList.InsertRange(Index: Integer; const Values: array of T);
var
I: Integer;
begin
if (Index < 0) or (Index > Count) then
raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange);

GrowCheck(Count + Length(Values));
if Index <> Count then
begin
FArrayManager.Move(FItems, Index, Index + Length(Values), Count - Index);
FArrayManager.Finalize(FItems, Index, Length(Values));
end;

for I := 0 to Length(Values) - 1 do
TObject(FItems[Index + I]) := TAdvObject(Values[I]).Link; // yes, here we link. This means that the user cannot construct an array of objects and link them assuming this will respect that
//####JKB have to cast the result to TObject in XE7

Inc(FCount, Length(Values));

for I := 0 to Length(Values) - 1 do
Notify(Values[I], cnAdded);
end;

  1. TADVObject – Enumerator

3 -

FHIRSUpport.pas
procedure TFHIRRequest.LoadParams(form: TIdSoapMimeMessage);
[dcc32 Error] FHIRSupport.pas(798): E2003 Undeclared identifier: 'ParamName'

We suspect that this may be meant to be ID instead of ParamName, but it makes us suspect that there is a later version of IndySoap than we have been able to get from the net.

The Indy Soap version we have used was V2 R22 from

http://sourceforge.net/p/indysoap/code-0/22/tree/trunk/

4 – Likely also not having the latest version of Indy Soap

procedure TFhirOperationManager.ExecuteQuestionnaireGeneration(request: TFHIRRequest; response : TFHIRResponse);
var
profile : TFHIRProfile;
op : TFhirOperationOutcome;
resourceKey : integer;
originalId, id, fid : String;
builder : TQuestionnaireBuilder;
questionnaire : TFHIRQuestionnaire;
begin
try
NotFound(request, response);
if check(response, opAllowed(request.ResourceType, request.CommandType), 400, lang, StringFormat(GetFhirMessage('MSG_OP_NOT_ALLOWED', lang), [CODES_TFHIRCommandType[request.CommandType], CODES_TFHIRResourceType[request.ResourceType]])) then
begin
if (request.id = '') or ((length(request.id) <= ID_LENGTH) and FindResource(frtProfile, request.Id, false, resourceKey, originalId, request, response, request.compartments)) then
begin
profile := nil;
try
// first, we have to identify the value set.
id := request.Id;
if request.Id <> '' then // and it must exist, because of the check above
profile := GetProfileById(request, request.Id, request.baseUrl)
else if request.Parameters.VarExists('identifier') then
profile := GetProfileByURL(request.Parameters.getvar('identifier'), id)
else if (request.form <> nil) and request.form.hasParam('profile') then //####JKB hasParam undefined
profile := LoadFromFormParam(request.form.getparam('profile'), request.Lang) as TFhirProfile //####JKB getParam undefined
else if (request.Resource <> nil) and (request.Resource is TFhirProfile) then
profile := request.Resource.Link as TFhirProfile
else
raise Exception.Create('Unable to find profile to convert (not provided by id, identifier, or directly');

      if id <> '' then
      begin
        fid := request.baseUrl+'Profile/'+id+'/$questionnaire';
        questionnaire := FRepository.QuestionnaireCache.getQuestionnaire(frtProfile, id);
      end
      else
      begin
        fid := newGUIDUrn;
        questionnaire := nil;
      end;

      try
        if questionnaire = nil then
        begin
          builder := TQuestionnaireBuilder.Create;
          try
            builder.Profile := profile.link;
            builder.OnExpand := FRepository.ExpandVS;
            builder.onLookupCode := FRepository.LookupCode;
            builder.Context := request.Link;
            builder.onLookupReference := LookupReference;
            builder.QuestionnaireId := fid;
            builder.build;
            questionnaire := builder.questionnaire.Link;
            if id <> '' then
              FRepository.QuestionnaireCache.putQuestionnaire(frtProfile, id, questionnaire, builder.dependencies);
          finally
            builder.Free;
          end;
        end;
        response.HTTPCode := 200;
        response.Message := 'OK';
        response.Body := '';
        response.LastModifiedDate := now;
        response.ContentLocation := ''; // does not exist as returned
        response.Resource := questionnaire.Link;
      finally
        questionnaire.Free;
      end;
    finally
      profile.free;
    end;
    op := FRepository.validator.validateInstance(nil, response.Resource, 'Produce Questionnaire', nil);
    try
      if (op.hasErrors) then
      begin
        response.HTTPCode := 500;
        response.Message := 'Questionnaire Generation Failed';
        response.Resource.xmlId := 'src';
        op.containedList.Add(response.Resource.Link);
        response.Resource := op.link;
      end;
    finally
      op.Free;
    end;
  end;
end;
inc(iCount);
TFHIRXhtmlComposer.Create('en').Compose(TFileStream.Create('c:\temp\q'+inttostr(iCount)+'.xml', fmCreate), response.Resource, true, nil);
AuditRest(request.session, request.ip, request.ResourceType, request.id, response.versionId, request.CommandType, request.Provenance, request.OperationName, response.httpCode, '', response.message);

except
on e: exception do
begin
AuditRest(request.session, request.ip, request.ResourceType, request.id, response.versionId, request.CommandType, request.Provenance, request.OperationName, 500, '', e.message);
raise;
end;
end;
end;
{$ENDIF}

The errors from the compiler are
[dcc32 Error] FHIROperation.pas(4200): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(4200): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(4201): E2003 Undeclared identifier: 'getparam'
[dcc32 Error] FHIROperation.pas(5504): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5504): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5505): E2003 Undeclared identifier: 'getparam'
[dcc32 Error] FHIROperation.pas(5682): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5682): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5683): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5683): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5687): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5732): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5732): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5733): E2003 Undeclared identifier: 'getparam'
[dcc32 Error] FHIROperation.pas(5742): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5742): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5745): E2003 Undeclared identifier: 'getParam'
[dcc32 Error] FHIROperation.pas(5747): E2003 Undeclared identifier: 'hasParam'
[dcc32 Error] FHIROperation.pas(5747): E2015 Operator not applicable to this operand type
[dcc32 Error] FHIROperation.pas(5748): E2003 Undeclared identifier: 'getParam'
[dcc32 Fatal Error] FHIRSubscriptionManager.pas(136): F2063 Could not compile used unit 'FHIROperation.pas'

5 - One of the other programmers here (Donald Hillier) is also having some issues with the JSON parser:

The inbuilt JSON parser in XE7 conflicts with the namespace of the Grieve parser – we have renamed your parser to ggjson to get around this (ie json functions with the same function names and incompatible parameters etc). We can give more detail about this if it helps.

Access violation with invalid enumeration

The following resource causes an access violation (note the invalid value for gender)
{"resourceType":"Patient","name":[{"family":["smith"],"given":["john"],"text":"john smith"}],"gender":"m","birthDate":"2015-09-11"}

DSTU 2 (version 0.50) FHIR-Specification -- corrupted Zip file

Grahame,

Get the following error when unzipping the 0.50 spec:

Windows cannot open the folder. The compressed folder '...fhir-spec.zip' is invalid.

7zip partly extracts then hangs about midway. Other unzip programs crash like 7Zip.

I see your reference to building our own spec but looks a bit daunting.

Some folks on the Fhir chat log complain of the same problem but nobody has offered a solution. Not sure who is in charge of the download zips.

Thank you,

Pete

json validation expects extension to be in the right place...

The following resources fails validation with an 'Unexpected error' (and no others):

If the extension is moved above the subject, then the other errors appear (missing code etc. )

{
"resourceType": "Observation",
"meta": {
"profile": [
"http://hl7.org/fhir/StructureDefinition/genetics"
]
},
"subject": {
"reference": "Patient/1843164",
"display": "John Doe"
},
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/geneticsGenomicStart",
"valueInteger": "12"
}
]
}

Not validating StructureDefinition

Try this:

GET /StructureDefinition/Basic
remove the id from the resource
POST /StructureDefinition

error: (sample)

"issue": [
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content telecom",
"location": [
"/f:StructureDefinition/f:contact[0]"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content telecom",
"location": [
"/f:StructureDefinition/f:contact"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content identity",
"location": [
"/f:StructureDefinition/f:mapping[0]"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content uri",
"location": [
"/f:StructureDefinition/f:mapping[0]"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content name",
"location": [
"/f:StructureDefinition/f:mapping[0]"
]
},
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content identity",
"location": [
"/f:StructureDefinition/f:mapping"
]
},
{
"extension": [
...

Unable to resolve local reference to resource urn:uuid:...

When posting a bundle with a DocumentReference, I am using UUIDs in the reference pointing to another bundle entry like so:

            <?xml version="1.0" encoding="UTF-8"?>
... ... ... ...

But I'm getting an error stating "Unable to resolve local reference to resource urn:uuid:cfe781a4-7dc0-4897-8b59-4e27cb3c1a5d". Per our discussion at the connectathon,

I think that error is incorrect, and that UUID references are legal.
bundle1-fixed-binary.zip

ValueSet Expansion filtering

When performing a valueset expansion, exclude the definition sections of the results, and just return the expansion section.
(specifically excluding the define and compose sections)

notepad++ plugin - editing partially complete resources throws continual errors

If there's an xml file open containing, say, an Appointment, and it starts out valid
attempt to add a new tag, and after I hit <, a dialog box pops up saying "The text associated with this error code could not be found". Click ok, type a character, the dialog comes back up. This continues until the resource is at least well-formed.

Though when I just tried this and added an element named s with no value, I got an access violation from fhirnpp.dll.

It seems like something is continually parsing the document, but I haven't been able to find anything in the FHIR plugin that indicates that it might be doing this.

Resource with extension being rejected

the following resource is being rejected by a POST to http://fhir-dev.healthintersections.com.au/open/Patient:

{
"resourceType": "Patient",
"meta": {
"lastUpdated": "2015-04-20T15:35:37+12:00",
"profile": [
"http://hl7.org/fhir/StructureDefinition/cda-patient-role"
]
},
"text": {
"status": "generated",
"div": "

extension:Adventist
"
},
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/us-core-religion",
"valueCodeableConcept": {
"coding": [
{
"system": "http://hl7.org/fhir/v3/ReligiousAffiliation",
"code": "1001",
"display": "Adventist"
}
],
"text": "Adventist"
}
}
]
}
error is: "details": "Required attribute 'url' is missing.\r\n",
"location": [
"line 13, Col 13"
]
looks OK to me…

Bundle rejected on /Bundle endpoint, accepted when sent to base

When posting an example document bundle (see http://hl7-fhir.github.io/document-example-dischargesummary.html) to http://fhir-dev.healthintersections.com.au/open/Bundle, the bundle is rejected with lots of errors.
Posting the same bundle to http://fhir-dev.healthintersections.com.au/open/ results in a 202 Accepted, which is not one of the listed responses for a POST.
I had expected to see errors on both posts or no errors at all, in stead of mixed results.

query for absolute resource reference

[21/12/15 8:35:30 am] David Hay 🔥: so I created an order reference on grahames server (fhir2.healthintersections.com.au/open/Order/25) that has a subject reference to a patient on the api server.
[21/12/15 8:35:37 am] David Hay 🔥: how do I query on that?
[21/12/15 8:36:19 am] David Hay 🔥: “fhir2.healthintersections.com.au/open/Order?subject=http://fhirtest.uhn.ca/baseDstu2/Patient/3858” complains that the subject content is invalid…

Valid (I think) MedicationOrder rejected

The following resource was rejected:

{
"resourceType": "MedicationOrder",
"meta": {
"lastUpdated": "2015-08-27T15:49:29+12:00"
},
"text": {
"status": "generated",
"div": "

text:1 tab twice a day
"
},
"medicationReference": {
"reference": "Medication/1",
"display": "Medication"
},
"dosageInstruction": [
{
"text": "1 tab twice a day"
}
],
"patient": {
"reference": "Patient/2",
"display": "Adam Everyman "
}
}

with an issue:

"issue": [
{
"extension": [
{
"url": "http://hl7.org/fhir/tools#issue-source",
"valueCode": "InstanceValidator"
}
],
"severity": "error",
"code": "structure",
"diagnostics": "Unrecognised Content text",
"location": [
"/f:MedicationOrder/f:dosageInstruction"
]
}
]

Various query errors and other things

Running

Windows 10 - 64bit
Delphi 10 Seatle Update 1
MSSQL 2014 Express
FHIR 1.0.30 - DSTU2

Commandline : -debug -password g -ini C:\Users\admin\Desktop\Components\fhirserver_build\fhir.ini -remount -tests -xindex -xloinc "C:\Users\admin\Desktop\Components\fhirserver_build\Data" -load "C:\Program Files\FHIRServer\spec\examples.zip" -mafile "C:\Users\admin\Desktop\Components\fhirserver_build\Data\mafile.CSV"

I've run into a few things while trying to set up FHIR from scratch :

In procedure TFHIRDatabaseInstaller.CreateResourceSearchEntries;
The first query has a ) missplaced in the middle of the query. It should probably be at the end.

In procedure TFHIRDatabaseInstaller.DoPostTransactionInstall;
I can't get the second query to work. I had to comment it out to proceed. MSSQL is complaining about a Full-Text thingy not working on this table. Really not sure.

In procedure TUcumServices.SetCommonUnits(vs: TFHIRValueSet);
It should be checked if FCommonUnits is assigned before freeing it. Got access violations there and couldn't continue. When i uncommented it ( bad idea :D ), i get the second error.

error

error2

Valid (I think) Conformance rejected

{
"kind": "requirements",
"description": "The functionality of a Terminology server required by clinFhir",
"resourceType": "Conformance",
"date": "2015-09-01",
"fhirVersion": "1.0.0",
"acceptUnknown": "both",
"format": ["json"],
"rest": [{
"mode": "client",
"resource": [{
"type": "ValueSet",
"interaction": [
{"code": "read"},
{"code": "create"},
{"code": "update"}
],
"searchParam": [{
"name": "url",
"type": "uri"
}]
}]
}]

}

SNOMED CT implicit ValueSets not working

A GET on URLs like:

results in:

{
  "resourceType": "OperationOutcome",
  "text": {
    "status": "generated",
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>Unable to find value set to expand (not provided by id, identifier, or directly</p></div>"
  },
  "issue": [
    {
      "severity": "error",
      "details": {
        "text": "Unable to find value set to expand (not provided by id, identifier, or directly"
      },
      "diagnostics": "(0000000000EA3173){FHIRServer.exe} [00000000012A4173] FHIROperation.TFhirExpandValueSetOperation.Execute + $5E3\r\n(0000000000040E6B){FHIRServer.exe} [0000000000441E6B] System.SysUtils.RaiseExceptObject + $2B\r\n(000000000000FD96){FHIRServer.exe} [0000000000410D96] System.@RaiseAtExcept + $E6\r\n(000000000000FDEC){FHIRServer.exe} [0000000000410DEC] System.@RaiseExcept + $1C\r\n(0000000000EA3173){FHIRServer.exe} [00000000012A4173] FHIROperation.TFhirExpandValueSetOperation.Execute + $5E3\r\n(0000000000E96FDF){FHIRServer.exe} [0000000001297FDF] FHIROperation.TFhirOperationManager.ExecuteOperation + $9F\r\n(0000000000E7669E){FHIRServer.exe} [000000000127769E] FHIROperation.TFhirOperationManager.Execute + $21E\r\n(0000000000F30BB1){FHIRServer.exe} [0000000001331BB1] FHIRRestServer.TFhirWebServer.ProcessRequest + $181\r\n(0000000000F26D3C){FHIRServer.exe} [0000000001327D3C] FHIRRestServer.TFhirWebServer.HandleRequest + $E9C\r\n(0000000000F241F4){FHIRServer.exe} [00000000013251F4] FHIRRestServer.TFhirWebServer.PlainRequest + $574\r\n(0000000000CFD97C){FHIRServer.exe} [00000000010FE97C] IdCustomHTTPServer.TIdCustomHTTPServer.DoCommandGet + $1C\r\n(0000000000CFF3F5){FHIRServer.exe} [00000000011003F5] IdCustomHTTPServer.TIdCustomHTTPServer.DoExecute + $AC5\r\n(00000000002AD9FE){FHIRServer.exe} [00000000006AE9FE] IdContext.TIdContext.Run + $1E\r\n(00000000002ABA01){FHIRServer.exe} [00000000006ACA01] IdTask.TIdTask.DoRun + $11\r\n(00000000002AFBA4){FHIRServer.exe} [00000000006B0BA4] IdThread.TIdThreadWithTask.Run + $14\r\n(00000000002AEC2A){FHIRServer.exe} [00000000006AFC2A] IdThread.TIdThread.Execute + $EA\r\n(000000000011F2B3){FHIRServer.exe} [00000000005202B3] System.Classes.ThreadProc + $43\r\n(000000000001099B){FHIRServer.exe} [000000000041199B] System.ThreadWrapper + $3B\r\n(000000000001552D){kernel32.dll} [000000007707652D] BaseThreadInitThunk + $D\r\n(000000000002B521){ntdll.dll   } [00000000771AC521] RtlUserThreadStart + $21\r\n"
    }
  ]
}

CSRF vulnerability on OAuth approval page

The "auth_choice" page can be invoked via HTTP GET as follows:

https://argonaut.healthintersections.com.au/oauth2/auth_choice?form=true&userinfo=1&readClinical=1&readData=1&readMeds=1&readSchedule=1&writeSchedule=1&readAudit=1&readDocuments=1&readFinancial=1&readOther=1&writeOther=1

This means that my app can ask you to authorize access, and then repeatedly reload the approval URL above in a background tab; as soon as you sign in (and before you hit approve), the app will receive a fully-loaded authorization code.

The fix: CSRF token on the approval page.

Snapshot not navigating across bases/types

Post to StructureDefinition/$snapshot

<StructureDefinition xmlns="http://hl7.org/fhir">
   <url value="http://example.com/DAF-Patient-Test" />
    <name value="DAF-Patient-Test" />
    <fhirVersion value="1.0.2" />
    <kind value="resource" />
    <base value="http://hl7.org/fhir/StructureDefinition/daf-patient" />
    <differential>
        <element>
            <path value="Patient.extension.valueCodeableConcept" />
            <name value="ethnicity.valueCodeableConcept" />
            <label value="Test for valueCodeableConcept within extension." />
        </element>
    </differential>
</StructureDefinition>

and note that the label change does not appear in the snapshot.

UCUM fails to load in version 1.0.30

I got 1.0.30 to install OK, but when I execute FHIRServer.exe -debug (or -start) I get the attached bug. This is the DEBUG trace. Could be something to do with loading the UCUM XML file from the cache?? There is no ucum.cache file in the package but the is a ucum-essense.xml file. Is this a problem?

ErrorRunningFHIRServer_1_0_30.txt
programdatafiles_20160131

notepad++ plugin - bundle validation ends up with a schematron violation

Validating the attached file results in a schematron violation of bdl-7 FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId).

However, the fullUrls are unique. The bundle passes a validate when posted to the server (though the bundle also passes a validate when posted to the server if the fullUrls are the same; not sure why?)

testbundle.txt

FHIR notepad plugin croaked with latest Notepad update

After update to Notepad ++, no longer validating resources. gives error even on the example messages (used example to test below): " Error validating: This does not appear to be valid FHIR content"

tests also gives errors.

capture

test message






Generated Narrative with Details



id: obs-407



identifier: obs-407



status: final



code: Bacteria susceptibility
(Details : {LOINC code "50545-3" := "50545-3", given as "Bacterial susceptibility panel in Isolate by Minimum inhibitory concentration (MIC)"})



subject:
Todd Lerr



effective: 12/5/2014



issued: 12/6/2014 3:42:15 PM



specimen:
Blood sample








Possible Validation error

I was trying to create an appointment with a reason of :


i.e. no coding, but the server rejected it. Is this because the binding strength is ‘required’ so a code is also, or a validation error?

Snapshot generator - extension magic

Presenting a differential with an extension with a name alone results in a snapshot without a sliced extension element. Posting:
<StructureDefinition xmlns="http://hl7.org/fhir"> <url value="http://example.com/fhir/Test-Patient" /> <name value="Test-Patient" /> <fhirVersion value="1.0.2" /> <kind value="resource" /> <base value="http://hl7.org/fhir/StructureDefinition/Patient" /> <differential> <element> <path value="Patient.extension" /> <name value="Text-Ext" /> <type> <code value="Extension" /> <profile value="http://example.com/my-profile" /> </type> </element> </differential> </StructureDefinition>

results in a snapshot with no Patient.extension element that includes a <slicing> tag.

notepad++ plugin - Validating a transaction Bundle gives errors for resources with no id

When validating a transaction bundle with resources that are going to be created, the validator raises errors such as
error Bundle.entry.item(0).resource.Patient (@ line 6/ col 10) Resource has no id invalid

However, resources being created shouldn't have ids (or at least that's what the bundle-transaction example says).

Attached bundle can be used to replicate the issue.

Rejecting Condition resource that looks OK

Error "Unrecognized Content Code" at evidence...

{
"resourceType": "Condition",
"meta": {
"lastUpdated": "2015-08-26T18:15:56+12:00"
},
"text": {
"status": "generated",
"div": "

code:Asthma finding (finding)
verificationStatus:confirmed
encounter:period:From2015-08-03 to 2015-08-05status:arrived
code:ASAs
code:asas
"
},
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "390798007",
"display": "Asthma finding (finding)"
}
],
"text": "Asthma finding (finding)"
},
"verificationStatus": "confirmed",
"encounter": {
"reference": "Encounter/1",
"display": "2015-08-03 -> 2015-08-05"
},
"evidence": [
{
"code": {
"text": "ASAs"
}
},
{
"code": {
"text": "asas"
}
}
],
"patient": {
"reference": "Patient/2",
"display": "Adam Everyman "
}
}

notepad++ plugin doesn't handle split-window session properly

If you've got notepad++ split into two panes, and the a document in the right-hand pane has focus, Change Format (for example) operates on whatever document is in the left-hand pane; alt-tabbing back to notepad++, the right-side document still has the input focus, so it doesn't seem to be a case of losing the input focus by going to the FHIR toolbox screen.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.