Difference between revisions of "FHIR Connectathon Brisbane"
|Line 122:||Line 122:|
=== Track 2 - v2 Message conversion ===
=== Track 2 - v2 Message conversion ===
This message involves writing some software (in a programming or scripting language of your choice) and submitting
This message involves writing some software (in a programming or scripting language of your choice) and submitting transaction to http://fhir-dev.healthintersections.com.au/open. The definition of 'success' is that the content of the message is successfully transferred to the server - use the web interface on the FHIR server to confirm successful delivery.
Revision as of 06:43, 15 June 2015
- 1 Introduction
- 2 Important notes:
- 3 Themes
- 4 Connectathon Organization
- 5 Enrollment
- 6 Connectathon Planning Team
- 6.1 Test servers
- 6.2 Connectathon tracks
- 6.3 Servers
This page describes the FHIR Connectathon that will be held on Thursday June 18 Brisbane. Australia
The meeting will be held at Australian e-Health Research Centre, Level 5, UQ Health Sciences Building 901/16, Royal Brisbane and Women's Hospital, Brisbane, Australia
- To be added to the skype Implementers chat, skype david hay (david.hay25) or anyone who is already on the chat
- This connectathon is based on this FHIR version: []
This connectathon will have 3 separate themes
- Basic patient management
- The patient resource is well defined, and these scenarios are intended for a user new to FHIR to interact with it at a basic level. it covers:
- Version 2 mapping to FHIR Messages
- Terminology Services
Note: at every connectathon, participants attend and test functionality other than that described in the scenarios.
Note also that the connectathon will be based on the DSTU-2 Candidate version of FHIR which is posted at 
The connectathon will be held over a single day, with most of the day intended for participants to test and develop software in an informal way. Test servers will be available (actually, they are already - FHIR Test Servers ), but some participants may bring other servers along depending on the actors they are fulfilling.
The latter part of the day - likely around 3.30 - will be a 'show and tell' for participants to demonstrate their progress to the group.
If you or your company are interested in participating in the connectathon, please do the following.
- Read the FHIR Specification and the FHIR wiki if you haven't already done so, to become familiar with the concepts.
- Read the scenario descriptions below.
email: admin@HL7.org.au to register
- Optionally add your details below (in the 'Registered Participants' section) to indicate the scenarios you intend to participate in
Space at the venue is limited, so please register as soon as possible. Preference will be given to those who are actually participating in the technical event, but observers are welcome if space permits.
For any queries, either contact a member of the planning team, or post your question in the FHIR list server
- Orion Health / David Hay
- HL7 v2 integration
- Grahame Grieve
- Server - http://fhir-dev.healthintersections.com.au + a bunch of utilities from the build tools as clients
Connectathon Planning Team
This section lists the scenarios that are proposed for this connectathon. The scenarios are grouped into 3 tracks. Track 1 is for those new to FHIR and requires minimal preparation in advance of the connectathon (at least for client applications). Tracks 2 and 3 are focused on particular implementation activities with FHIR and exercise a more complete set of behavior designed to reflect a full production experience - preparation in advance will be required.
Note that this track - as with all tracks - will use the candidate 'DSTU-2' version of FHIR as described here. If you've been to a connectathon before and done this track, then you may need to change your code, as there have been many important changes to the specification.
Track 1 - Patient
Coordinator: David Hay
If creating a client, this track should require minimal work in advance of the connectathon, though at least a bit of playing is recommended. If creating a server, advanced preparation will be required, but this scenario should somewhat limit the effort involved.
FHIR Interactions: search, read, create, update, history
1. Search for a patient on name
- Action: (Patient Demographics consumer) searches the patient Service for patients with a given name
- Success Criteria: patients displayed in interface, or a message that no patients exist. (use browser query to confirm)
2. Register a new patient
- Action: (Patient Demographics consumer) creates a new patient and save to Patient Service. The client can assign the Id (or not - leave it to the server)
- Precondition: Patient does not exist in service prior to action
- Success Criteria: Patient created correctly on server (use browser to inspect Patient, or find Patient by search from #1)
- Bonus point: The Patient resource has an extension
>> Note: if the server assigns the Id, then the client will need to be able to retrieve the Id from the server response
3. Update a patient
- Action: (Patient Demographics consumer) updates the patient created in scenario #2 and updates to Patient Service. The patient is retrieved by Id.
- Precondition: Patient has been created
- Success Criteria: Patient updated on server (use browser to inspect Patient)
- Bonus Point #1: Update a patient that has extensions, but leaving the extension untouched.
- Bonus Point #2: Update a patient that has extensions, and update the extension also.
4. Retrieve Patient history
- Action: (Patient Demographics consumer) searches the patient Service for the history of a Patient
- Precondition: There is a patient that has at least one update
- Success Criteria: Patient's history displayed in interface. (use browser query Patient Service)
- Bonus point: The UI allows the user to display previous versions of the Patient Resource
Some help links:
Track 2 - v2 Message conversion
This message involves writing some software (in a programming or scripting language of your choice) that converts a v2 message into a series of FHIR resource operations and submitting them directly, or as a single transaction (preferred) to http://fhir-dev.healthintersections.com.au/open. The definition of 'success' is that the content of the message is successfully transferred to the server - use the web interface on the FHIR server to confirm successful delivery.
- Most of the v2 identifiers do not have namespaces. You should make up your own as you do the conversion
- In order to avoid identifier clashes with other connectathon participants, you should append your initials to the message & segment identifiers
- All resources have a mapping page with v2 & v3 mappings (This connectathon is to test them!)
- There are 2 sample messages below that you can use as the basis for your work, or you can choose any v2 message of your own (that doesn't involve real patient data!)
- Whitepaper about v2 -> FHIR: Blog post, whitepaper
- Further details of a similar track can be found here: Version 2 - FHIR Mapping Scenarios.
Example Message 1 (ADT)
MSH|^~\&|SomeSystem||TransformationAgent||20150502090000||ADT^A01|controlID|P|2.5 EVN|A01|20150502090000| PID|1||NHS_Number^10^^NHS^NH~LocalPatId^^^TCPAS^MR||Kennedy^Ann^F^^Ms^^L||19280524^Y|F|||22 Stable Road^^Whitstable^Kent^^CR5 1EL^^^^P||277543^PRN|||U|| NK1|1|Kennedy^Joe|FTH|||+44 201 12345678|| PV1||I|INT^0001^02^GENHOS||||0100^ANDERSON,CARL|0148^ADDISON,JAMES||SUR|||||||0148^ANDERSON,CARL|S|VisitNumber^^^GENHOS|A|||||||||||||||||||GENHOS|||||20150502090000| AL1|1|DA|1605^acetaminophen^L|MO|Muscle Pain~hair loss AL1|2|DA|1558^Oxycodone^L|MO|Muscle Pain~hair loss AL1|3|MA|2221^Peanuts^L|SV|Anaphylactic Shock
Example Message 2 (Lab)
MSH|^~\&|SUPER-LIS^2.16.840.1.113883.19.1^GUID|ACMEPATH^4321^AUSNATA|PCEHR^2.16.840.1.113883.19.2^GUID|DOHA^2.16.840.1.113883.19.3^GUID|20150410083015+1000||ORU^R01^ORU_R01|P4560801311070004069|P|2.4|||AL|NE|AUS|8859/1 PID|1||2142363^^^ACMEHOSP^MR~61405230941^^^AUSHIC^MC~WA123456B^^^AUSDVA^PEN||PatientSurnameOne^FirstnameOne^MiddleNameOne^SufixOne^PrefixOne^^L~PatientSurnameTwo^FirstnameTwo^MiddleNameTwo^SufixTwo^PrefixTwo^^M||194506241031|M|||Unit 1^111 ACME Street^Brisbane^^4000^AUS^H~Unit 2^222 ACMETwo Street^Brisbane^^4000^AUS^B||^^^^^^93235615|^WPN^CP^^^^0414778341 PV1|1|O|Ward1^RoomE8^Bed10^ACMEHOSP&2.16.840.1.113883.19.5&GUID||||ABCB^DrASurname^DrAttending^^^^Dr^^SUPER-LIS~123456^DrASurname^DrAttending^^^^Dr^^ACMEHOSP~2304227F^DrASurname^DrAttending^^^^Dr^^AUSHICPR|HIJK^DrASurname^DrReferring^^^^Dr^^SUPER-LIS~858595^DrASurname^DrReferring^^^^Dr^^ACMEHOSP~2929016F^DrASurname^DrReferring^^^^Dr^^AUSHICPR ORC|RE|112233^RhubarbOrders^2.16.840.1.1138126.96.36.199^GUID|15P456080-123456^SUPER-LIS^2.16.840.1.113883.19.1^GUID|44556677^RhubarbOrdersGroupID^2.16.840.1.1138188.8.131.52^GUID|CM||||201504100800+1000|||DFTR^DrBSurname^DrOrdering^^^^Dr^^SUPER-LIS~958678^DrASurname^DrOrdering^^^^Dr^^ACMEHOSP~4322581B^DrBSurname^DrOrdering^^^^Dr^^AUSHICPR||^WPN^PH^^^^0893412041|201504100730+1000 OBR|1|112233^RhubarbOrders^2.16.840.1.1138184.108.40.206^GUID|15P456080-123456^SUPER-LIS^2.16.840.1.113883.19.1^GUID|FBE^Full Blood Count^SUPER-LIS^26604007^Complete blood count^SCT|||20131107000024+0800|20131106233000+0800||||""|Patient has a history of severe gout caused by rhubarb.|20131106235200+0800||DFTR^DrBSurname^DrOrdering^^^^Dr^^SUPER-LIS~958678^DrASurname^DrOrdering^^^^Dr^^ACMEHOSP~4322581B^DrBSurname^DrOrdering^^^^Dr^^AUSHICPR|^WPN^PH^^^^0893412041|ARMC|8E|CP=N,DR=4322581B|13P456080|20131107000200+0800||HM|F||^^^201504100800+1000^^RT|2304227F^DrCopyASurname^DrCopyToA^^^^Dr^^AUSHICPR~0813266H^DrCopyBSurname^DrCopyToB^^^^Dr^^AUSHICPR~4628361B^DrCopyCSurname^DrCopyToC^^^^Dr^^AUSHICPR OBX|1|NM|718-7^Hemoglobin^LN^HB^Haemoglobin^ACMEPATH||145|g/L^^ISO+|130-180||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|2|NM|789-8^Erythrocytes^LN^RCC^Red Cell Count^ACMEPATH||5.30|x10\S\12/L^^ISO+|4.50-6.50||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|3|NM|4544-3^Hematocrit^LN^HCT^HCT^ACMEPATH||0.43|L/L^^ISO+|0.40-0.54||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|4|NM|MCV^MCV^ACMEPATH||81|fL^^ISO+|80-96||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|5|NM|MCH^MCH^ACMEPATH||27.4|pg^^ISO+|24.0-32.0||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|6|NM|MCHC^MCHC^ACMEPATH||338|g/L^^ISO+|320-360||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|7|NM|PLAT^Platelet^ACMEPATH||198|x10\S\9/L^^ISO+|150-400||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|8|NM|WCC^White Cell Count^ACMEPATH||12.1|x10\S\9/L^^ISO+|4.0-11.0|H|||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|9|NM|NEUTS^Neutrophils^ACMEPATH||9.3|x10\S\9/L^^ISO+|2.0-7.5|H|||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|10|NM|LYMPHOS^Lymphocytes^ACMEPATH||2.1|x10\S\9/L^^ISO+|1.0-4.0||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|11|NM|MONOS^Monocytes^ACMEPATH||0.7|x10\S\9/L^^ISO+|0.1-0.8||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|12|NM|EOS^Eosinophils^ACMEPATH||0.0|x10\S\9/L^^ISO+|0.0-0.4||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|13|NM|BASOS^Basophils^ACMEPATH||0.0|x10\S\9/L^^ISO+|0.0-0.2||||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS OBX|14|TX|TXT^TXT^AUSPDI^HFBC^HFBC Image^ACMEPATH||CUMULATIVE REPORT~Req No: P261477 P262309 P263409 P287303 P456080~ Date: 29/06/13 30/06/13 01/07/13 16/07/13 06/11/13~ Time: 07:37 08:23 08:20 19:20 23:30 Units Ref Range~------------------------------------------------------------------------------~BLOOD COUNT~Hb 138 141 139 135 145 g/L 130-180~WCC 7.9 7.5 7.5 9.5 12.1H x10\S\9/L 4.0-11.0~Plat 280 299 272 186 198 x10\S\9/L 150-400~MCV 87 88 86 86 81 fL 80-96~RCC 4.87 5.02 4.97 4.79 5.30 x10\S\12/L 4.50-6.50~HCT 0.42 0.44 0.43 0.41 0.43 L/L 0.40-0.54~MCH 28.3 28.1 28.0 28.2 27.4 pg 24.0-32.0~MCHC 327 320 326 328 338 g/L 320-360~RDW 13.8 13.9 14.0 14.3H 15.5H % 11.0-14.0~MPV 10.7 10.8H 10.7 11.0H 11.2H fL 6.4-10.7~Differential~Neut 3.9 3.6 3.7 4.6 9.3H x10\S\9/L 2.0-7.5~Lymph 2.9 2.9 2.7 3.6 2.1 x10\S\9/L 1.0-4.0~Mono 0.7 0.5 0.6 0.7 0.7 x10\S\9/L 0.1-0.8~Eos 0.5H 0.4 0.4 0.6H 0.0 x10\S\9/L 0.0-0.4~Baso 0.0 0.0 0.0 0.0 0.0 x10\S\9/L 0.0-0.2|||A|||F|||20131107000024+0800|""|RO56^SurnameResponsibleObserver^Givenname^^^^^^SUPER-LIS
Track 3 - Terminology Services
For service providers, implement the following operations from http://hl7.org/fhir/2015May/terminology-service.html:
- $validate-code (note: there's a set of typos on the terminology service page where this operation is called "validate" but its actually "validate-code" - editorial oversight)
- $translate (note: there's a typo on the terminology service page where the example has '$validate' not '$translate')
Service providers are not required to implement all this functionality - it's a lot to do. For new implementers, start at the top and work down (generally)
(note for participants in the first terminology services connectathon: this stream builds on the previous connectathon by adding $lookup and $translate)
There's a fairly specific test script with detail descriptions of scenarios at http://gforge.hl7.org/svn/fhir/trunk/connectathons/Paris2015/tx_test_script.xml (for anonymous access, use 'anonymous' with our email as a password). Implementers are not required to implement the full script and pass those particular tests, though it is encouraged to be able to do so
note about the test script: you need a version of Sprinkler to execute it (details to be provided). It looks like a resource, and there is a proposal to actually add it as a resource. On the other hand, we'll be considering alternative proposals in Paris as well as that format. Or you can use any other kind of http based test service; there's nothing magic there.
Any one of
- do a value set expansion of one of the value sets in the spec
- validate a code using the spec against a FHIR value set, a v2 value set, or LOINC or snomed CT
- look up a display for a code (most appropriate for v2/FHIR conversion)
At least one server supports all these operations (http://fhir-dev.healthintersections.com.au). Other servers, including the Apelon server (http://dtsonfhirdemo.apelon.com:8081/_DTS_ON_FHIR_DEMO_02) will support some of those operations
http://wiki.hl7.org/index.php?title=Version_2_-_FHIR_Mapping_Scenarios (Supporting the messaging interoperability paradigm)