Stream: implementers
Topic: Implementation Guide resources
Adam Hatherly (Feb 22 2017 at 14:26):
Hi, I am working on an experimental FHIR server for us to publish profiles on to better support implementers. I was looking at the ImplementationGuide resoucre as a way of providing a helpful entrypoint for users wanting to understand the subset of profiles required to implement a specific set of APIs for a domain. I can see how to create a resource showing the various profiles, but the spec isn't 100% clear on how the "pages" should be used. We have some online documentation already for specific domains which cover all the aspects of API implementation, and I wanted to see if we could use the "pages" entries in the ImplementationGuide resource to give a high level overview of the domain and link out to the detailed online content. My difficulty is in interpreting the spec and understanding how the "pages" in the ImplementationGuide should ideally be used. Can anyone point me to any good worked examples (the one on the spec page is not very helpful), or blog posts talking about how this resource was intended to be used in a bit more detail?
Eric Haas (Feb 22 2017 at 19:18):
If you are looking for and implementation guide like Argonaut in both DSTU2 and US Core STU3. There is FHIR publishing tool that ties this all together. I have put up a very simple template for this and Forge has an IG tool as well. This uses the implementationGuide resource but only tangentially and does the pages using a Jekyll framework ( don't know if that is the right word)
Michel Rutten (Feb 23 2017 at 11:22):
Hi @Adam Hatherly, note that the ImplementationGuide resource is still at maturity level 0:
http://build.fhir.org/implementationguide.html
There are many possible ways to create/generate an IG, which may or may not involve the IG resource. Forge (the FHIR profile editor) provides some basic support for managing IG resources. But this is mainly focused on creating IG packages; support for IG pages is very primitive. At Furore, we create FHIR IG's for our customers, but currently our internal process does not involve the IG resource. If the current IG resource is convenient for you, then go ahead and implement it; if not, then feel free to try something else. Any which way, as the IG resource is still immature, community feedback on how to improve it is very welcome!
Lloyd McKenzie (Feb 23 2017 at 14:38):
I'm using the IGPublisher but have an Ant script around it. The pages part of ImplementationGuide gets used to create a table of contents and manage section headings for the IG
Grahame Grieve (Feb 24 2017 at 19:24):
to actually answer the question: the pages part is provided so that you can provide a structured view into the html documentation that accompanies the definitions. It's not required to be comprehensive; it's intent is to allow a tool that is using the IG to jump into the documentation, or to show a user some index/toc type view. Minimally the IG reosurce should include a single page, which is the welcome page (which is traditionally index.html, but there is no formal rule to this effect)
Eric Haas (Feb 26 2017 at 03:26):
That said, I'm on the opposite end of Lloyd. Don't use the pages at all. In fact, I think its unnecessary overhead and my .Page content says "blah".
Grahame Grieve (Feb 26 2017 at 03:39):
you should at least register the index.
Eric Haas (Feb 26 2017 at 03:42):
OK - that's easy enough to do
Lloyd McKenzie (Feb 26 2017 at 04:29):
@Eric Haas How do you generate a table of contents or manage section numbering?
wassim (Feb 26 2017 at 09:00):
hello , please do semone have a tutorial of how to start a hapi fhir server and use it with its own oracle for ex database ,,,
Eric Haas (Feb 26 2017 at 16:34):
I think you will have better luck posting this question to the hapi stream. Have you looked here?
Jack Anelson (Mar 07 2017 at 11:44):
Hello all, I want to implement FHIR server with MySQL? Can I have all the required steps to be done?
Lloyd McKenzie (Mar 07 2017 at 18:13):
Hi @Jack Anelson - welcome. I'd suggest you start here: http://wiki.hl7.org/index.php?title=FHIR_Rules_for_asking_questions
Lloyd McKenzie (Mar 07 2017 at 18:16):
There isn't a single recipe for implementing FHIR. Your question is sort of like walking into a grocery store and saying "Can you feed me supper?". We can help you on the way to getting fed, but you're going to need to narrow down your parameters a bit (what do you want to eat, what's your cooking experience), etc. Start by reading through the spec, figuring out what parts of FHIR are relevant to you, what you want your server to do, looking at the reference implementations for your language of choice, perhaps examinging some of the open source servers and then once you've gotten up to speed a bit, ask your more detailed questions here.
Travis Stenerson (Mar 09 2017 at 05:35):
Hi FHIR pros. I'm hoping to model some clinical and workflow elements that I have mapped pen-and-paper style and I would like to create an IG. I intend to use the IG spreadsheet (until Forge's update) and have some questions. Please excuse my newbie questions, still leveling my FHIR magic.
I want to define some value sets. Can this be done within the IG template spreadsheet? Might you direct me to some instructions or information? I could just alter a value set json, but I don't know what happens when that jar file runs, so I want to get it right. I've read the majority of the authoring wikis and the answer didn't jump out at me
Second, can the code field be hard bound to a single code(like in an observation type), such that this profile only represents that particular concept? Though I don't expect it to be necessary, I couldn't find the answer. Is there a better solution to constrain a profile with code 'X-finding' to value set 'types-of-X-findings'?
Third, I suspect this is true but to be sure.. is it only one profile per spreadsheet? or can multiple exist within one?
Grahame Grieve (Mar 09 2017 at 05:48):
multiple profiles can be defined in the spreadsheet
Grahame Grieve (Mar 09 2017 at 05:48):
you can bind a code to a fixed value.
Grahame Grieve (Mar 09 2017 at 05:49):
you edit the value sets by hand- there is no designer at the moment
Travis Stenerson (Mar 09 2017 at 05:50):
Ok great. Thanks Graham. Your second answer - would that mean if I have two observations, codes X-finding and Y-finding. Both findings are similar but the value field will have different value sets(types-of-X and types-of-Y). Does this situation require two profiles?
Grahame Grieve (Mar 09 2017 at 05:52):
that's the simplest way to do it. The other way is a single profile with invariants that assert bindings; this is much harder all around
Travis Stenerson (Mar 09 2017 at 05:55):
Awesome, thank you. Finally, multiple profiles from the same spreadsheet. Do I just need multiple structure definition tabs?
Grahame Grieve (Mar 09 2017 at 06:41):
yes you register them in the meta data tab
Mario Hyland (Mar 10 2017 at 14:24):
@Travis Stenerson pardon my intrusion - as you think about your IG - I would also like to introduce IG modelers and writers to consider developing test-cases to accompany their IG. A core component to FHIR is the Test Script Resource - we have been developing Test Scripts against FHIR base resource profiles. Looking forward, as each new IG comes on line - and IG sponsors want to ensure their IG is being implemented in a consistent manner - (e.g. Interoperable across organizational implementations) - we believe FHIR will benefit from continuing to leverage FHIR Test Script. Initiall IG folks can simply put pen-to-paper to write what/how they believe their IG should be tested (please do not forget about the negative testing and exception handling - if something goes wrong what should be done). Learn more about Test Script, and how Test Script can help an IG gain wider interoperable adoption. If you would like to see a demosntration of Test Script being used - Touchstone currently has more 1,200 avaialble to review as a reference example or template. If anyone is interested - please send me a directed message.
Jayashree Surnar (Mar 14 2017 at 07:33):
hello everyone, can anybody suggest me, how to add race extension to patient resource using clin fhir?
Eric Haas (Mar 14 2017 at 16:16):
you might have better luck getting an answer in the clinfhir stream
Jayashree Surnar (Mar 16 2017 at 10:01):
hello all, can anyone explain briefly which resource(encounter or episode of care) is used to store patient admission info?
and how to implement EMPI, MRN for patient?
Lloyd McKenzie (Mar 16 2017 at 15:05):
Encounter would capture admissions. Episode of care is more for things like tying records to a pregnancy or to a patient's diabetes. Medical Record Number would just be an identifier on Patient. EMPI would be a server that supports Patient. It would probably also support the Patient/$match operation
Jayashree Surnar (Mar 17 2017 at 04:30):
@Lloyd McKenzie
wrt to Encounter,
actually here my doubt is, for example a patient joins in a hospital for 3days. so 3 encounters will be created. and we stode admission info in 1st encounter along with other details, but 2nd day onwards admission info is not required right? so how to recognize this is the 2nd encounter, 3rd encounter etc? can we create 1st Encounter as main Encounter and then add the other encounters to that main Encounter as partOfEncounter?
in HL7 website they have given like this
The primary difference between the EpisodeOfCare and the Encounter is that the Encounter records the details of an activity directly relating to the patient, while the EpisodeOfCare is the container that can link a series of Encounters together for problems/issues.
so what i'm thinking is we can link no of Encounters to EpisodeOfCare. but when i see the profile or base resource we don't have any link to add Encounter to EpisodeOfCare. but reverse is possible(we can add the EpisodeOfCare to Encounter). i'm confusing alot.
Lloyd McKenzie (Mar 17 2017 at 07:30):
In North America and most other places I'm familiar with, if a patient is in the hospital for 3 days, that's a single encounter. The only time you'd have multiple encounters is if they were initially admitted to Emergency and later were admitted as an in-patient. You could also have "child" encounters if they were sent to radiology for a bit or went from one department to another. An encounter is the coming together of a patient and a care provider for a particular continuous duration (with exceptions for things like leave-of-absence). On the other hand, EpisodeOfCare only deals with the responsibility for care, but doesn't require continuous engagement. So you might have a single episode of care for a particular pregnancy. Attached to that would be separate encounters representing each office visit, a few home consultations, a 2-night hospital stay due to high blood pressure, the mid-wife attended home-birth and a few follow-up visits. On the other hand, you can have a single encounter that represents a continuous 2.5 year stay in a psychiatric institution or even one that represents a 10 year stay in a nursing home. It's considered a single encounter because the patient is "meeting with" the care provider continuously (with the exception of the odd weekend pass) over the entire period of time of the stay.
Jayashree Surnar (Mar 17 2017 at 08:16):
@Lloyd McKenzie
thank you so much
Jayashree Surnar (Mar 17 2017 at 11:01):
hello @Lloyd McKenzie , dose hapi fhir supports EMPI consept? if yes, could you please explain how to implement that.
John Moehrke (Mar 17 2017 at 13:27):
for guidance on EMPI -- See http://build.fhir.org/patient.html#match or See the IHE PIXm profile http://wiki.ihe.net/index.php/Patient_Identifier_Cross-Reference_for_Mobile_(PIXm)
Jayashree Surnar (Mar 20 2017 at 05:00):
ok, thank you @John Moehrke
Jayashree Surnar (Mar 20 2017 at 13:04):
hello everyone, can anyody explain how to implement the questions and ans. for example quest-and-ans.PNG. i have gone through the Questionnaire,QuestionnaireResponse resources, but didn't get how to implement that. so please help.
Lloyd McKenzie (Mar 20 2017 at 14:41):
Questionnaire would represent your form, QuestionnaireResponse would represent a particular answered form. Can you be a bit more specific in your question? "How to implement" is a bit generic :)
Jayashree Surnar (Mar 21 2017 at 12:55):
our scenario - in consent form we want to use Q, QA. Using MOLTS form we created the Q,QA now we want to use it. We are facing following problems - multiple questions & Answers in the consent form. How to have multiple questions and answers in consent form ?
http://molst-ma.org/sites/molst-ma.org/files/MOLST%20Form%20and%20Instructions%208.10.13%20FINAL.pdf
Lloyd McKenzie (Mar 21 2017 at 15:34):
Still not understanding the issue. Each question or group of questions is an "item". You can have as many items as you like in the Questionnaire. Each item in the QuestionnaireResponse will "link" to the corresponding item in the Questionnaire. If an item in the Questionnaire had repeats=true, then you can have multiple items in the QR pointing to one item in the Q.
Jayashree Surnar (Mar 22 2017 at 03:49):
hello @Lloyd McKenzie, actually we want to implement
the Privacy Consent Directive: Agreement to collect, access, use or disclose (share) information.
Medical Treatment Consent Directive: Consent to undergo a specific treatment (or record of refusal to consent).
Advance Care Directives: Consent to instructions for potentially needed medical treatment (e.g. DNR).
we want to use the above Q and QR for Advance Care Directives.
Lloyd McKenzie (Mar 22 2017 at 04:04):
Ok. That seems reasonable. I'm still not understanding what challenge you're running into
Jayashree Surnar (Mar 22 2017 at 04:22):
actually we want to implement the above Q and A then attach it to consent.
Jayashree Surnar (Mar 22 2017 at 07:21):
is it necessary to have both Q and QR to implement the above form?
Lloyd McKenzie (Mar 22 2017 at 16:31):
Q is for the form, R is for a filled-out form. You can render just the response, but if you want to see what the choice options were, what was required, etc., you'll need the Q too.
Lloyd McKenzie (Mar 22 2017 at 16:33):
If you want the Consent to point to the Questionnaire, you'll need to use an extension. (Might make sense to request getting this defined as a 'standard' extension.)
John Moehrke (Mar 22 2017 at 16:48):
Not true.. Consent.sourceReference is specifically there to point at QuestionnaireResponse where one is used to obtain a consent. The use of Questionnaire to obtain consent is considered a primary pathway, we have just not yet had time to focus on that. We would love to get your feedback, and hear of experience that we can leverage to advance the state-of-the-art
Lloyd McKenzie (Mar 22 2017 at 17:02):
Thanks @John Moehrke - not sure how I missed that
John Moehrke (Mar 22 2017 at 18:10):
Glad to bring good news to you @Lloyd McKenzie
Jayashree Surnar (Mar 23 2017 at 04:32):
Thank you everyone for your help, we want to implement the above MOLTS form and use it in consent this is our main thing, so please any suggestions to implement that? whether we should attache that form to consent's resource as QR or any other way? because in consent (http://build.fhir.org/consent.html) we have Except element also right? so whats the exact use of that? and what is the best scenario?
nisha ks (Mar 23 2017 at 04:33):
Hi evryone,
nisha ks (Mar 23 2017 at 04:38):
I was trying to do a reverse include of communication in my encounter resource, but I found that communication context ref is not getting saved in communication resource. that is why I am not able to do a rev include . Can any one help me with that.
nisha ks (Mar 23 2017 at 04:38):
Got the answer... thank u...
Pranitha Sruthi (Apr 07 2017 at 11:57):
Hello everyone, which datatype should I use to indicate the occupation of a patient? what is the difference between the "add element" in the logical modeller and extension definition builder?
Pranitha Sruthi (Apr 07 2017 at 12:05):
Also, please let me know about annotation data type
Lloyd McKenzie (Apr 07 2017 at 13:30):
The data type for occupation would usually be CodeableConcept - that lets you capture coded information (which is usually necessary for that sort of element). It also lets you capture free text for those situations where your value set doesn't cover the relevant occupation or you want to cpature more detail. Annotation allows you to capture "notes" - it lets you capture who recorded the note, when and what was said. So it's most useful when multiple people might capture notes over time. There's no specific meaning to the notes though - you can't use them to capture specific data elements.
Pranitha Sruthi (Apr 07 2017 at 13:32):
Ok thank you. Can I use it for the resource DiagnosticReport? Cause the DiagnosticReport resource is not given in the list of resources where the annotation datatype can be used
Jayashree Surnar (Apr 07 2017 at 13:33):
hello all, we are using the Encounter resource to store admission info along with the practitioners info. here i'm confusing whether to use Encounter.participant or careTeam? which one is the better? and whats the diff?
Lloyd McKenzie (Apr 07 2017 at 13:40):
@Pranitha Sruthi With extensions, you can put it anywhere. It's not core to DiagnosticReport because DiagnosticReports are typically authored once and are then static - they don't tend to accumulate comments the way Conditions, Allergies and other types of resources do.
Pranitha Sruthi (Apr 07 2017 at 13:41):
Ok thank you so much
Lloyd McKenzie (Apr 07 2017 at 13:43):
@Jayashree Surnar Encounter.participant is limited to the scope of the Encounter. CareTeam is not. For your use-case as described, it sounds like Encounter is appropriate. That's certainly where you'd capture the admitting clinician - that would make no sense on CareTeam.
Pranitha Sruthi (Apr 07 2017 at 13:45):
Shall I add the occupation as an extension or just add simply using the 'add element ' option in the logical modeller module? Please let me know
Lloyd McKenzie (Apr 07 2017 at 13:47):
If you want to send it over the wire, you'll need to use an extension. Logical models are for mapping, but don't let you send real instances
Pranitha Sruthi (Apr 07 2017 at 13:47):
Ok thank you
David Hay (Apr 07 2017 at 19:35):
btw - if you're talking about clinFHIR it's exactly as Lloyd says - that's intended to help with modelling a specific domain, and as a precursor to 'real' profiles (it can generate simple ones, but otherwise use it to capture information then a tool like Forge to create it)
Eric Haas (Apr 07 2017 at 20:39):
@Pranitha Sruthi and @Jayashree Surnar Please create a new topic with more appropriate titles when discussing some issue other than the Implementation Guide resources.
Jayashree Surnar (Apr 08 2017 at 09:14):
okay @Eric Haas
Pranitha Sruthi (Apr 10 2017 at 04:47):
Okay @Eric Haas
Jayashree Surnar (Apr 10 2017 at 04:59):
thank you @Lloyd McKenzie , but in our admission info screen we want to capture team, resident, attendingTeam, service, room, unit and chief complaints info. for room i'm mapping location name and for unit( http://hl7.org/fhir/2017Jan/v3/ServiceDeliveryLocationRoleType/vs.html) we are using Location. for attendingTeam using Encounter.participant.type and for remaining things i'm not sure which one should use? so please let me know.
Christopher Vitale (May 26 2020 at 20:25):
Lloyd McKenzie said:
Encounter would capture admissions. Episode of care is more for things like tying records to a pregnancy or to a patient's diabetes. Medical Record Number would just be an identifier on Patient. EMPI would be a server that supports Patient. It would probably also support the Patient/$match operation
Hello @Lloyd McKenzie . I am also interested in knowing how to capture an EMPI as an identifier. For MRN, we will use the patient.identifier, and .type = "MR" (from http://hl7.org/fhir/R4/v2/0203/index.html). I was hoping to capture EMPI identifiers the same way, but there is no code in this value set for EMPI (not in SCT or LOINC either). Can you suggest how to do this? Would we create an extension, something like identifier:empiid?
Lloyd McKenzie (May 26 2020 at 21:50):
You would still have to use 'MR'. You could choose to send an additional finer-grained code too, but the extensible binding requires you to use the one of the codes if they apply (even if you might rather have more detail). And an EMPI is a type of MR. If you're interested in it being a specific EMPI identifier, you should distinguish that by using the Identifier.system.
Last updated: Apr 12 2022 at 19:14 UTC