Repository navigation
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@jkiddo is this ready for review? |
|
I'd say so, yes |
|
Clinical validation feedback on DkCoreImmunization I experimented a bit and ran an informal clinical validation on this profile before diving further into review: I built two cases from the two example instances already in the PR ( DkCoreImmunization_kliniske_cases-kopi.docx Where both clinicians agreed:
lotNumber matters more than the profile currently treats it. Both flagged batch number as safety-critical for tracing adverse events and product defects, and both said it's normally physically available on the vaccine — so I'd check whether the empty value in the example reflects a real DDV data-capture gap rather than genuine unavailability, and consider The mapping text already prefers a structured reference to The private-marking UX (show that something's hidden, let the clinician reveal it) matches what both clinicians expect and called "standard setup." I don't think this needs a profile change as Counting a private-marked vaccination fully in coverage statistics while hiding it from individual clinicians checked out with both. Worth digging into further Both independently want a computable "next dose due," at least for interval/multi-dose vaccines (one called it potentially life-critical for something like Twinrix), while agreeing it's unnecessary for annual vaccines like influenza. CoverageDuration currently just becomes free-text note, which kills computability. I'd check whether DDV's source field is actually structured (duration + unit) — if it is, a structured element or extension seems better than folding it into a note string. Out of scope for the profile, but.. Both clinicians landed on: routine single-vaccine administration (e.g. giving a tetanus shot) probably doesn't on its own justify "værdispring" on a private-marked record. That's reserved for broader clarification/workup. This traces back to Sundhedsloven, and the actual threshold probably sits with SSI (?). I'd just add a line in the intro saying the profile intentionally doesn't (and can't) define this access threshold, so nobody assumes it's covered (if we want to acknowledge that...) |
|
Further I asked Claude to compare DkCoreImmunization agaist the Immunization profile from HL7 EU. Sammenligning: DK Core Immunization vs. HL7 Europe Immunization (EU core)Overordnet forskel i formål: DK Core er en snæver, kildesystem-tro profilering af DDV (kun administrerede vaccinationer, Hvor EU core er strengere/mere restriktiv
Hvor DK Core er strengere (modsat retning)
Vigtigste strukturelle observationEU core's ekstra strenghed ligger primært i terminologibindinger (vaccineCode), obligatorisk performer-rolle-kodning, og formelle FHIR-invarianter — dvs. den er strengere på interoperabilitets-niveau. DK Core's strenghed ligger i fast kildesystem-mapping og eksplicit begrænsning af statusrummet til det, DDV faktisk kan levere — dvs. den er strengere på semantisk præcision ift. kildedata, men mere lempelig på selve terminologibindingerne. |
|
On the findings from the clinicans: We need to add text to the profile describing that e.g. the importance of batch and lot numbers should not carry significant value during consumption of the data with regards to forensics and audit - as DDV - being the central governed system of Immunizations is the system that is responsible to notify and carry out any needed investigation should it come to that matter. All batch and lot numbers and all other data will reside in DDV. Whether its exposed to consumers of the data is another matter, so I'd say its safe to to require it to be present at all times - e.g. the 'private marking case'. The story will be the same for 'private marking cases' on medication in #216. It may also generally be relevant to revisit this in the future @tmsMedcom on a higher level, depending on whether Denmark will adopt https://eur-lex.europa.eu/legal-content/DA/TXT/?uri=CELEX%3A32025R0327#art_10. |
|
Will we see a follow up commit? should I directly address the findings from clinicians or will we have a discussion on our next meeting? |
|
Christopher writes:
Christopher writes:
|
|
@Kirstinerosenbeck Your arguments make complete sense to me with reference to compliant FHIR design for DK Core (which I'm still in the process of understanding). I agree with what you're proposing if it hits the mark while still addressing the clinical feedback. Essentially, I understand your point as: both are implementation-relevant rather than profile-relevant Thank you for teaching me! |
|
@tmsMedcom / @Kirstinerosenbeck / @boldagechris - I've been across the different comments and updated the branch. I've left this - especially - for further comments: https://github.com/hl7dk/dk-core/pull/227/changes#diff-9dfe020e1f2a22a6aa404b3054d720123b668ed9852fb33bc66d4f6c42cba4f8R3 - while the profile is not bound to DDV, its highly related. Let me hear what you think of it (the top description part). |
|
Note to self - 4 codes are missing from #terminology > ATC codesystem missing or wrong? @ 💬 |
| * meta.source ^short = "Register or system the vaccination was recorded in, where one can be identified" | ||
| * meta.security ^short = "[DA] Privatmarkering" | ||
| * status ^short = "Status of the vaccination - an administered vaccination is completed" | ||
| * statusReason ^short = "Reason the vaccination was not administered - not used by this profile" |
There was a problem hiding this comment.
Since statusReason is described as "not used by this profile", should it be 0..0?
There was a problem hiding this comment.
No - that would narrow it down unnecessarily
There was a problem hiding this comment.
Omformuleres, så det fremgår, at den ikke er understøttet i DDV. @jkiddo
|
|
||
| #### Identifier namespaces | ||
|
|
||
| Earlier drafts of this profile used `https://www.sundhed.dk/vaccination/...` URLs deduced from the sundhed.dk JSON proxy. Those URLs are not registered anywhere and have been replaced with URIs rooted at the authoritative DDV XML schema namespace (`http://vaccinationsregister.dk/schemas/2013/12/01`). Consumers proxying DDV via sundhed.dk should normalise their identifier systems to these authoritative URIs when producing dk-core resources. |
There was a problem hiding this comment.
Is it relevant to mention drafts of the profile?
| A **computable "next dose due"** is not part of this profile, and it should not be added as an extension — for interval or multi-dose vaccines such as Twinrix that information is clinically important, but modelling it on the `Immunization` resource is not compliant FHIR design. `Immunization` records a dose that *was* given; a dose that is *due* is a plan. The recommended design is: | ||
|
|
||
| - organise the vaccination treatment as a whole in a plan element — a `ServiceRequest` or a `CarePlan`; | ||
| - have each `Immunization` (the doses actually given) reference that plan; |
There was a problem hiding this comment.
The documentation recommends that each Immunization references a ServiceRequest or CarePlan. Which element is intended to carry this reference? I cannot find a reference from Immunization to the resources.
There was a problem hiding this comment.
@jkiddo Omformuleres til noget ala: "Traditional set har "next due dose" været understøttet i DDV, men er ikke en del af denne profil og bør ikke understøttes med en extension. Fremtidige doser kan repræsenteres i en 'event'-ressource."
Det behøver ikke have sit eget afsnit, men kan være en note.
|
|
||
| `lotNumber` carries the batch number of the administered product. Batch numbers are clinically important for tracing adverse events and product defects, and the batch number is normally physically available on the vaccine at the time of administration. | ||
|
|
||
| The element is nevertheless **optional** in this profile, and `MustSupport` is deliberately **not** used on it. Two reasons: |
There was a problem hiding this comment.
Why is it deliberately not used specifically here, when MustSupport is not used in general in DK Core?
|
Input fra Kirsten Lei Hansen. Her er noget input til profilen Til 7.5.1.1.4: Der er eksempler på vacciner med flere komponenter, hvor den samlede vaccine omtales med batchnr og lotnr bruges om enkeltkomponenterne. Derfor er det ærgerligt at lotnr bruges om batchnummeret i profilen. Som minimum bør det være tydeligere i beskrivelsen, at det er batchnr på den samlede effektuering der fremgår af DDV, hvis det ikke er muligt at ændre til batchnr i feltnavnet. Af forskellige årsager er batchnr et fritekstfelt i DDV og kvaliteten af data varierer, afhængigt af scenariet. Til 7.5.1.1.5: I statistik- og analysesammenhæng fokuserer eksisterende rapportering på vaccinationsstedet frem for den udførende, da der, specielt for de større vaccinationsindsatser sker en delegering af den udførende opgave. Dvs. det kan være en midlertidigt ansat, der står som effektuerende, hvor vaccinationsstedet er mere sigende om ansvaret for effektueringen. Ordinationsansvaret er en tredje oplysning, som kan variere afhængigt af, om det er et nationalt program (sæsonvaccination) eller en individuel ordination. Til 7.5.1.1.6: Som jeg læser beskrivelsen læner den sig op ad, hvad der i DDV-kontekst omtales som vaccinationsforløb. Vaccinationsforløbene skabes i DDV, som også har en aktiv rolle med at påminde om kommende vaccinationer. Specielt børnevaccinationerne er længerevarende forløb, som derfor kan være effektueret forskellige steder. DDV holder logikken for forløb, inkl. et sæt regler for substituering mellem vacciner, som defineres og vedligeholdes af SSI. Det anbefales at det kommunikeres at DDV er den ajourførte master på forløb. |
See #228 |
@jkiddo "lotNumber" skal erstattes af "Batch Number". lotNumber er ikke registreret. |
@jkiddo Performer afsnittet gøres kortere, behold den første sætning, men tilføj en paragraf, at det er lokationen, der er obligatorisk og vigtigt i DDV. Performer er ikke interessant i DDV sammenhæng. |
Jeg har padlet igennem noget dokumentation. Så vidt jeg kan læse, så bruges batch og lot 'for det meste' som synonymer. Der findes undtagelser, men som oftes er det synonymer. Datamodellen i DDV (https://wiki.fmk-teknik.dk/fmk:ddv:1.4.0:services) omtaler kun batch - og ikke lot. Hvis der er terminologisk forskellighed imellem batch og lot i DDB, som bør understøttes, burde det så ikke have været en del af datamodellen? |
@jkiddo Som jeg forstod det på Kirsten er batch og lot synonymer, og at man i DDV har ensrettet brugen til kun at anvende batch. |
|
Ok ... Så er der noget description der skal rettes til |
This pull request introduces the Danish Core Immunization profile, aligning the FHIR Immunization resource with Det Danske Vaccinationsregister (DDV) data structures and semantics. It defines the profile, provides detailed mapping and documentation, sets up relevant FHIR aliases for DDV systems, and configures validation warnings for DDV-specific URIs. The main changes are grouped below:
Danish Core Immunization Profile and Mapping:
DkCoreImmunizationprofile inDkCoreImmunization.fsh, specifying structure, constraints, and detailed mappings from DDV XML elements to FHIR Immunization fields, including handling of DDV-specific concepts likeActiveStatus,NegativeConsentIndicator, and vaccine coding. Also includes two example instances.StructureDefinition-dk-core-immunization-intro.md, explaining DDV data model, mapping rationale, status handling, private-marking, credibility, and identifier namespace considerations.FHIR Alias and Namespace Configuration:
aliases.fsh, ensuring consistent referencing of DDV fields and codes in the profile.Validation and Ignore Rules:
ignoreWarnings.txtto suppress warnings for DDV-specific URIs and code systems that are not defined in standard FHIR packages, reflecting their authoritative use in this context.