sos-portal-components-react 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -1
- package/README.md +22 -0
- package/dist/PortalCurrentSubject.d.ts +29 -0
- package/dist/PortalCurrentSubject.d.ts.map +1 -0
- package/dist/PortalCurrentSubject.js +62 -0
- package/dist/PortalCurrentSubject.js.map +1 -0
- package/dist/PortalHeader.d.ts +10 -0
- package/dist/PortalHeader.d.ts.map +1 -0
- package/dist/PortalHeader.js +11 -0
- package/dist/PortalHeader.js.map +1 -0
- package/dist/PortalSettingsPanel.d.ts +8 -0
- package/dist/PortalSettingsPanel.d.ts.map +1 -0
- package/dist/PortalSettingsPanel.js +10 -0
- package/dist/PortalSettingsPanel.js.map +1 -0
- package/dist/care/AnimalCardArtifact.d.ts +42 -0
- package/dist/care/AnimalCardArtifact.d.ts.map +1 -0
- package/dist/care/AnimalCardArtifact.js +32 -0
- package/dist/care/AnimalCardArtifact.js.map +1 -0
- package/dist/care/BrowserRealtimeCallPanel.d.ts +39 -0
- package/dist/care/BrowserRealtimeCallPanel.d.ts.map +1 -0
- package/dist/care/BrowserRealtimeCallPanel.js +43 -0
- package/dist/care/BrowserRealtimeCallPanel.js.map +1 -0
- package/dist/care/CardPreview.d.ts +6 -0
- package/dist/care/CardPreview.d.ts.map +1 -0
- package/dist/care/CardPreview.js +6 -0
- package/dist/care/CardPreview.js.map +1 -0
- package/dist/care/CommunicationsWorkspace.d.ts +18 -0
- package/dist/care/CommunicationsWorkspace.d.ts.map +1 -0
- package/dist/care/CommunicationsWorkspace.js +13 -0
- package/dist/care/CommunicationsWorkspace.js.map +1 -0
- package/dist/care/EmergencyTaskHub.d.ts +27 -0
- package/dist/care/EmergencyTaskHub.d.ts.map +1 -0
- package/dist/care/EmergencyTaskHub.js +25 -0
- package/dist/care/EmergencyTaskHub.js.map +1 -0
- package/dist/care/LegalMarkdownDocument.d.ts +6 -0
- package/dist/care/LegalMarkdownDocument.d.ts.map +1 -0
- package/dist/care/LegalMarkdownDocument.js +57 -0
- package/dist/care/LegalMarkdownDocument.js.map +1 -0
- package/dist/care/NotificationComposer.d.ts +49 -0
- package/dist/care/NotificationComposer.d.ts.map +1 -0
- package/dist/care/NotificationComposer.js +83 -0
- package/dist/care/NotificationComposer.js.map +1 -0
- package/dist/care/ProtectedIndexEmergencyData.d.ts +32 -0
- package/dist/care/ProtectedIndexEmergencyData.d.ts.map +1 -0
- package/dist/care/ProtectedIndexEmergencyData.js +13 -0
- package/dist/care/ProtectedIndexEmergencyData.js.map +1 -0
- package/dist/care/SelectedSubjectWorkspace.d.ts +32 -0
- package/dist/care/SelectedSubjectWorkspace.d.ts.map +1 -0
- package/dist/care/SelectedSubjectWorkspace.js +32 -0
- package/dist/care/SelectedSubjectWorkspace.js.map +1 -0
- package/dist/care/SoschainWorkspace.d.ts +119 -0
- package/dist/care/SoschainWorkspace.d.ts.map +1 -0
- package/dist/care/SoschainWorkspace.js +61 -0
- package/dist/care/SoschainWorkspace.js.map +1 -0
- package/dist/care/SubjectCommunicationCenter.d.ts +45 -0
- package/dist/care/SubjectCommunicationCenter.d.ts.map +1 -0
- package/dist/care/SubjectCommunicationCenter.js +40 -0
- package/dist/care/SubjectCommunicationCenter.js.map +1 -0
- package/dist/care/SubjectDemographicsFields.d.ts +42 -0
- package/dist/care/SubjectDemographicsFields.d.ts.map +1 -0
- package/dist/care/SubjectDemographicsFields.js +71 -0
- package/dist/care/SubjectDemographicsFields.js.map +1 -0
- package/dist/care/SubjectSectionIndex.d.ts +22 -0
- package/dist/care/SubjectSectionIndex.d.ts.map +1 -0
- package/dist/care/SubjectSectionIndex.js +34 -0
- package/dist/care/SubjectSectionIndex.js.map +1 -0
- package/dist/care/SubjectWorkspace.d.ts +29 -0
- package/dist/care/SubjectWorkspace.d.ts.map +1 -0
- package/dist/care/SubjectWorkspace.js +59 -0
- package/dist/care/SubjectWorkspace.js.map +1 -0
- package/dist/care/care.css +215 -0
- package/dist/care/index.d.ts +16 -0
- package/dist/care/index.d.ts.map +1 -0
- package/dist/care/index.js +16 -0
- package/dist/care/index.js.map +1 -0
- package/dist/care/notification-bff-client.d.ts +44 -0
- package/dist/care/notification-bff-client.d.ts.map +1 -0
- package/dist/care/notification-bff-client.js +89 -0
- package/dist/care/notification-bff-client.js.map +1 -0
- package/dist/clinical/BrowserClinicalSpeechInput.d.ts +25 -0
- package/dist/clinical/BrowserClinicalSpeechInput.d.ts.map +1 -0
- package/dist/clinical/BrowserClinicalSpeechInput.js +32 -0
- package/dist/clinical/BrowserClinicalSpeechInput.js.map +1 -0
- package/dist/clinical/ClinicalActionButton.d.ts +9 -0
- package/dist/clinical/ClinicalActionButton.d.ts.map +1 -0
- package/dist/clinical/ClinicalActionButton.js +13 -0
- package/dist/clinical/ClinicalActionButton.js.map +1 -0
- package/dist/clinical/ClinicalArtifactEditor.d.ts +147 -0
- package/dist/clinical/ClinicalArtifactEditor.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactEditor.js +382 -0
- package/dist/clinical/ClinicalArtifactEditor.js.map +1 -0
- package/dist/clinical/ClinicalArtifactEditorV2.d.ts +77 -0
- package/dist/clinical/ClinicalArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactEditorV2.js +89 -0
- package/dist/clinical/ClinicalArtifactEditorV2.js.map +1 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.d.ts +83 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.d.ts.map +1 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.js +46 -0
- package/dist/clinical/ClinicalArtifactPropertiesV2.js.map +1 -0
- package/dist/clinical/ClinicalBundleDraftEditor.d.ts +99 -0
- package/dist/clinical/ClinicalBundleDraftEditor.d.ts.map +1 -0
- package/dist/clinical/ClinicalBundleDraftEditor.js +225 -0
- package/dist/clinical/ClinicalBundleDraftEditor.js.map +1 -0
- package/dist/clinical/ClinicalEditorLayer.d.ts +8 -0
- package/dist/clinical/ClinicalEditorLayer.d.ts.map +1 -0
- package/dist/clinical/ClinicalEditorLayer.js +12 -0
- package/dist/clinical/ClinicalEditorLayer.js.map +1 -0
- package/dist/clinical/ClinicalSectionSummary.d.ts +36 -0
- package/dist/clinical/ClinicalSectionSummary.d.ts.map +1 -0
- package/dist/clinical/ClinicalSectionSummary.js +24 -0
- package/dist/clinical/ClinicalSectionSummary.js.map +1 -0
- package/dist/clinical/ClinicalSpeechInput.d.ts +58 -0
- package/dist/clinical/ClinicalSpeechInput.d.ts.map +1 -0
- package/dist/clinical/ClinicalSpeechInput.js +84 -0
- package/dist/clinical/ClinicalSpeechInput.js.map +1 -0
- package/dist/clinical/ClinicalTimeline.d.ts +52 -0
- package/dist/clinical/ClinicalTimeline.d.ts.map +1 -0
- package/dist/clinical/ClinicalTimeline.js +48 -0
- package/dist/clinical/ClinicalTimeline.js.map +1 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.d.ts +15 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.js +62 -0
- package/dist/clinical/ImmunizationArtifactEditorV2.js.map +1 -0
- package/dist/clinical/IpsBundleSummary.d.ts +34 -0
- package/dist/clinical/IpsBundleSummary.d.ts.map +1 -0
- package/dist/clinical/IpsBundleSummary.js +75 -0
- package/dist/clinical/IpsBundleSummary.js.map +1 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.d.ts +11 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.d.ts.map +1 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.js +62 -0
- package/dist/clinical/SchemaClinicalArtifactEditorV2.js.map +1 -0
- package/dist/clinical/clinical.css +148 -0
- package/dist/clinical/index.d.ts +14 -0
- package/dist/clinical/index.d.ts.map +1 -0
- package/dist/clinical/index.js +14 -0
- package/dist/clinical/index.js.map +1 -0
- package/dist/identity/AnimalIdentityDetailsV2.d.ts +43 -0
- package/dist/identity/AnimalIdentityDetailsV2.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityDetailsV2.js +9 -0
- package/dist/identity/AnimalIdentityDetailsV2.js.map +1 -0
- package/dist/identity/AnimalIdentityOnboarding.d.ts +91 -0
- package/dist/identity/AnimalIdentityOnboarding.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityOnboarding.js +73 -0
- package/dist/identity/AnimalIdentityOnboarding.js.map +1 -0
- package/dist/identity/AnimalIdentityOnboardingV2.d.ts +56 -0
- package/dist/identity/AnimalIdentityOnboardingV2.d.ts.map +1 -0
- package/dist/identity/AnimalIdentityOnboardingV2.js +174 -0
- package/dist/identity/AnimalIdentityOnboardingV2.js.map +1 -0
- package/dist/identity/current-subject.css +11 -0
- package/dist/identity/identity.css +64 -0
- package/dist/identity/index.d.ts +9 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +10 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/preferences.d.ts +12 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +57 -0
- package/dist/preferences.js.map +1 -0
- package/dist/styles.css +24 -0
- package/dist/usePortalUiPreferences.d.ts +9 -0
- package/dist/usePortalUiPreferences.d.ts.map +1 -0
- package/dist/usePortalUiPreferences.js +39 -0
- package/dist/usePortalUiPreferences.js.map +1 -0
- package/package.json +20 -4
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import { composeFhirDateTimeFromLocalParts, formatFhirTemporalForLocale, isFhirTemporalWithinRange, splitFhirDateTimeForInput, } from 'fhir-data-utils-ts/fhir-temporal-presentation';
|
|
4
|
+
export function ClinicalDateTimeFields({ value, onChange, labels, timeZone, now = new Date(), includeSeconds = true, }) {
|
|
5
|
+
const current = splitFhirDateTimeForInput(now, timeZone);
|
|
6
|
+
const time = includeSeconds ? current.time : current.time.slice(0, 5);
|
|
7
|
+
return (_jsxs("div", { className: "uhcp-clinical-date-time-fields", children: [_jsxs("label", { children: [labels.date, _jsx("input", { type: "date", value: value.date, onChange: (event) => onChange({ ...value, date: event.target.value }) })] }), _jsx("button", { type: "button", title: labels.useToday, "aria-label": labels.useToday, onClick: () => onChange({ ...value, date: current.date }), children: "\u25C9" }), _jsxs("label", { children: [labels.time, _jsx("input", { type: "time", step: includeSeconds ? 1 : 60, value: value.time, onChange: (event) => onChange({ ...value, time: event.target.value }) })] }), _jsx("button", { type: "button", title: labels.useCurrentTime, "aria-label": labels.useCurrentTime, onClick: () => onChange({ ...value, time }), children: "\u25F7" })] }));
|
|
8
|
+
}
|
|
9
|
+
export function ClinicalTimeline({ entries, facets = [], locale, timeZone, labels, now = new Date() }) {
|
|
10
|
+
const [selectedFacets, setSelectedFacets] = useState({});
|
|
11
|
+
const [from, setFrom] = useState({ date: '', time: '' });
|
|
12
|
+
const [to, setTo] = useState({ date: '', time: '' });
|
|
13
|
+
const [requestedIndex, setRequestedIndex] = useState(0);
|
|
14
|
+
const [showAll, setShowAll] = useState(false);
|
|
15
|
+
const current = splitFhirDateTimeForInput(now, timeZone);
|
|
16
|
+
const filtered = useMemo(() => [...entries]
|
|
17
|
+
.filter((entry) => matchesEverySelectedFacet(entry, selectedFacets))
|
|
18
|
+
.filter((entry) => {
|
|
19
|
+
const start = composeOptionalBoundary(from, timeZone, 'from');
|
|
20
|
+
const end = composeOptionalBoundary(to, timeZone, 'to');
|
|
21
|
+
return isFhirTemporalWithinRange(entry.dateTime, { ...(start === undefined ? {} : { from: start }), ...(end === undefined ? {} : { to: end }) }, now);
|
|
22
|
+
})
|
|
23
|
+
.sort((left, right) => new Date(right.dateTime).getTime() - new Date(left.dateTime).getTime()), [entries, from, now, selectedFacets, timeZone, to]);
|
|
24
|
+
const index = Math.min(requestedIndex, Math.max(filtered.length - 1, 0));
|
|
25
|
+
const selected = filtered[index];
|
|
26
|
+
return (_jsxs("section", { className: "uhcp-clinical-timeline", children: [_jsxs("div", { className: "uhcp-clinical-filters", children: [_jsxs("div", { className: "uhcp-clinical-range", children: [_jsx(DateTimeBoundary, { label: labels.from, labels: labels, current: current, value: from, onChange: (value) => { setFrom(value); setRequestedIndex(0); } }), _jsx(DateTimeBoundary, { label: labels.to, labels: labels, current: current, value: to, onChange: (value) => { setTo(value); setRequestedIndex(0); } })] }), facets.map((facet) => _jsxs("fieldset", { children: [_jsx("legend", { children: facet.label }), facet.options.map((option) => _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: selectedFacets[facet.id]?.includes(option.id) ?? false, onChange: () => {
|
|
27
|
+
setSelectedFacets((current) => toggleFacet(current, facet.id, option.id));
|
|
28
|
+
setRequestedIndex(0);
|
|
29
|
+
} }), option.label] }, option.id))] }, facet.id))] }), selected ? _jsxs(_Fragment, { children: [_jsxs("article", { className: "uhcp-clinical-timeline-card", children: [_jsx("h4", { children: selected.title }), _jsx("time", { dateTime: selected.dateTime, children: formatFhirTemporalForLocale(selected.dateTime, locale, { timeZone, includeTime: true }) }), selected.content] }), _jsxs("nav", { className: "uhcp-clinical-timeline-navigation", "aria-label": `${selected.title} history`, children: [_jsx("button", { type: "button", disabled: index === 0, onClick: () => setRequestedIndex((value) => Math.max(0, value - 1)), children: labels.previous }), _jsxs("output", { "aria-live": "polite", children: [index + 1, " / ", filtered.length] }), _jsx("button", { type: "button", disabled: index >= filtered.length - 1, onClick: () => setRequestedIndex((value) => value + 1), children: labels.next }), _jsx("button", { type: "button", "aria-expanded": showAll, onClick: () => setShowAll((value) => !value), children: labels.showAll })] }), showAll ? _jsx("ol", { className: "uhcp-clinical-timeline-list", children: filtered.map((entry) => _jsxs("li", { children: [_jsx("strong", { children: entry.title }), _jsx("time", { dateTime: entry.dateTime, children: formatFhirTemporalForLocale(entry.dateTime, locale, { timeZone, includeTime: true }) })] }, entry.id)) }) : null] }) : _jsx("p", { className: "uhcp-clinical-empty", children: labels.empty })] }));
|
|
30
|
+
}
|
|
31
|
+
function DateTimeBoundary({ label, labels, current, value, onChange }) {
|
|
32
|
+
return _jsxs("fieldset", { children: [_jsx("legend", { children: label }), _jsxs("label", { children: [labels.date, _jsx("input", { "aria-label": `${label} ${labels.date}`, type: "date", value: value.date, onChange: (event) => onChange({ ...value, date: event.target.value }) })] }), _jsx("button", { type: "button", title: `${labels.useToday} (${label})`, "aria-label": `${labels.useToday} (${label})`, onClick: () => onChange({ ...value, date: current.date }), children: "\u25C9" }), _jsxs("label", { children: [labels.time, _jsx("input", { "aria-label": `${label} ${labels.time}`, type: "time", step: "1", value: value.time, onChange: (event) => onChange({ ...value, time: event.target.value }) })] }), _jsx("button", { type: "button", title: `${labels.useCurrentTime} (${label})`, "aria-label": `${labels.useCurrentTime} (${label})`, onClick: () => onChange({ ...value, time: current.time }), children: "\u25F7" })] });
|
|
33
|
+
}
|
|
34
|
+
function composeOptionalBoundary(parts, timeZone, edge) {
|
|
35
|
+
if (!parts.date)
|
|
36
|
+
return undefined;
|
|
37
|
+
const defaultTime = edge === 'from' ? '00:00:00' : '23:59:59';
|
|
38
|
+
return composeFhirDateTimeFromLocalParts({ date: parts.date, time: parts.time || defaultTime, timeZone });
|
|
39
|
+
}
|
|
40
|
+
function matchesEverySelectedFacet(entry, selected) {
|
|
41
|
+
return Object.entries(selected).every(([facetId, selectedOptions]) => selectedOptions.length === 0 || selectedOptions.some((option) => entry.facets?.[facetId]?.includes(option)));
|
|
42
|
+
}
|
|
43
|
+
function toggleFacet(current, facetId, optionId) {
|
|
44
|
+
const existing = current[facetId] ?? [];
|
|
45
|
+
const next = existing.includes(optionId) ? existing.filter((id) => id !== optionId) : [...existing, optionId];
|
|
46
|
+
return { ...current, [facetId]: next };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ClinicalTimeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClinicalTimeline.js","sourceRoot":"","sources":["../../src/clinical/ClinicalTimeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ClinicalArtifactEditorCopyV2, type ClinicalArtifactEditorV2Props } from './ClinicalArtifactEditorV2.js';
|
|
2
|
+
export declare const ImmunizationArtifactEditorV2Claim: Readonly<{
|
|
3
|
+
readonly NextDoseDate: "Immunization.next-dose-date";
|
|
4
|
+
}>;
|
|
5
|
+
export type ImmunizationArtifactEditorCopyV2 = ClinicalArtifactEditorCopyV2 & Readonly<{
|
|
6
|
+
doseSequenceInvalid: string;
|
|
7
|
+
seriesDosesInvalid: string;
|
|
8
|
+
}>;
|
|
9
|
+
export type ImmunizationArtifactEditorV2Props = Omit<ClinicalArtifactEditorV2Props, 'fields' | 'initialVisibleClaims' | 'initialClaims' | 'validate' | 'buildRelatedEntries' | 'copy'> & Readonly<{
|
|
10
|
+
copy: ImmunizationArtifactEditorCopyV2;
|
|
11
|
+
}>;
|
|
12
|
+
/** Demo-first Immunization specialization over the reusable progressive V2 shell. */
|
|
13
|
+
/** @deprecated Use ClinicalBundleDraftEditorV2 for every new clinical authoring flow. */
|
|
14
|
+
export declare function ImmunizationArtifactEditorV2({ copy, locale, ...props }: ImmunizationArtifactEditorV2Props): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=ImmunizationArtifactEditorV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImmunizationArtifactEditorV2.d.ts","sourceRoot":"","sources":["../../src/clinical/ImmunizationArtifactEditorV2.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAEnC,MAAM,+BAA+B,CAAA;AAEtC,eAAO,MAAM,iCAAiC;;EAEnC,CAAA;AAEX,MAAM,MAAM,gCAAgC,GAAG,4BAA4B,GAAG,QAAQ,CAAC;IACrF,mBAAmB,EAAE,MAAM,CAAA;IAC3B,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAC,CAAA;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAAC,6BAA6B,EAAE,QAAQ,GAAG,sBAAsB,GAAG,eAAe,GAAG,UAAU,GAAG,qBAAqB,GAAG,MAAM,CAAC,GAAG,QAAQ,CAAC;IAChM,IAAI,EAAE,gCAAgC,CAAA;CACvC,CAAC,CAAA;AAEF,qFAAqF;AACrF,yFAAyF;AACzF,wBAAgB,4BAA4B,CAAC,EAAE,IAAI,EAAE,MAAa,EAAE,GAAG,KAAK,EAAE,EAAE,iCAAiC,+BAsChH"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ImmunizationClaim, buildImmunizationRecommendationFlatEntry, clinicalArtifactCodedOptionsForClaim, validateImmunizationDoseSeries, } from 'fhir-data-utils-ts';
|
|
4
|
+
import { ClinicalArtifactEditorV2, } from './ClinicalArtifactEditorV2.js';
|
|
5
|
+
export const ImmunizationArtifactEditorV2Claim = Object.freeze({
|
|
6
|
+
NextDoseDate: 'Immunization.next-dose-date',
|
|
7
|
+
});
|
|
8
|
+
/** Demo-first Immunization specialization over the reusable progressive V2 shell. */
|
|
9
|
+
/** @deprecated Use ClinicalBundleDraftEditorV2 for every new clinical authoring flow. */
|
|
10
|
+
export function ImmunizationArtifactEditorV2({ copy, locale = 'en', ...props }) {
|
|
11
|
+
const fields = immunizationFields(locale);
|
|
12
|
+
return _jsx(ClinicalArtifactEditorV2, { ...props, locale: locale, copy: copy, fields: fields, initialVisibleClaims: [ImmunizationClaim.Status, ImmunizationClaim.VaccineCodeText, ImmunizationClaim.Date], initialClaims: {
|
|
13
|
+
[ImmunizationClaim.Status]: 'completed',
|
|
14
|
+
[ImmunizationClaim.Patient]: props.authoringContext.subjectReference,
|
|
15
|
+
[ImmunizationClaim.Performer]: props.authoringContext.dataAuthorReference,
|
|
16
|
+
}, validate: claims => {
|
|
17
|
+
try {
|
|
18
|
+
validateImmunizationDoseSeries(claims[ImmunizationClaim.DoseSequence], claims[ImmunizationClaim.SeriesDoses]);
|
|
19
|
+
}
|
|
20
|
+
catch (reason) {
|
|
21
|
+
if (reason instanceof Error && reason.message === 'immunization_dose_sequence_invalid')
|
|
22
|
+
throw new TypeError(copy.doseSequenceInvalid);
|
|
23
|
+
throw new TypeError(copy.seriesDosesInvalid);
|
|
24
|
+
}
|
|
25
|
+
}, buildRelatedEntries: (claims, draftId) => {
|
|
26
|
+
const nextDoseDate = claims[ImmunizationArtifactEditorV2Claim.NextDoseDate];
|
|
27
|
+
const vaccineToken = claims[ImmunizationClaim.VaccineCode];
|
|
28
|
+
if (!nextDoseDate || !vaccineToken)
|
|
29
|
+
return [];
|
|
30
|
+
const separator = vaccineToken.indexOf('|');
|
|
31
|
+
if (separator <= 0 || separator === vaccineToken.length - 1)
|
|
32
|
+
return [];
|
|
33
|
+
const display = claims[ImmunizationClaim.VaccineCodeDisplay];
|
|
34
|
+
const text = claims[ImmunizationClaim.VaccineCodeText];
|
|
35
|
+
const recommendation = buildImmunizationRecommendationFlatEntry({
|
|
36
|
+
entryId: `${draftId}-recommendation`, immunizationEntryId: draftId,
|
|
37
|
+
subjectReference: props.authoringContext.subjectReference,
|
|
38
|
+
recommendationDate: props.authoringContext.createdAt,
|
|
39
|
+
nextDoseDate,
|
|
40
|
+
vaccineCode: { system: vaccineToken.slice(0, separator), code: vaccineToken.slice(separator + 1), ...(display === undefined ? {} : { display }), ...(text === undefined ? {} : { text }) },
|
|
41
|
+
});
|
|
42
|
+
return [recommendation];
|
|
43
|
+
} });
|
|
44
|
+
}
|
|
45
|
+
function immunizationFields(locale) {
|
|
46
|
+
return Object.freeze([
|
|
47
|
+
{ claim: ImmunizationClaim.Status, kind: 'coded-select', required: true, options: clinicalArtifactCodedOptionsForClaim(ImmunizationClaim.Status, locale).map(option => ({ value: option.code, label: option.label })) },
|
|
48
|
+
{ claim: ImmunizationClaim.VaccineCodeText, textClaim: ImmunizationClaim.VaccineCodeText, codeClaim: ImmunizationClaim.VaccineCode, displayClaim: ImmunizationClaim.VaccineCodeDisplay, kind: 'coded-concept', required: true },
|
|
49
|
+
{ claim: ImmunizationClaim.Date, kind: 'date-time', required: true },
|
|
50
|
+
{ claim: ImmunizationClaim.TargetDiseaseText, textClaim: ImmunizationClaim.TargetDiseaseText, codeClaim: ImmunizationClaim.TargetDisease, displayClaim: ImmunizationClaim.TargetDiseaseDisplay, kind: 'coded-concept' },
|
|
51
|
+
{ claim: ImmunizationClaim.LotNumber, kind: 'text' },
|
|
52
|
+
{ claim: ImmunizationClaim.DoseSequence, kind: 'positive-integer' },
|
|
53
|
+
{ claim: ImmunizationClaim.SeriesDoses, kind: 'positive-integer' },
|
|
54
|
+
{ claim: ImmunizationClaim.Series, kind: 'text' },
|
|
55
|
+
{ claim: ImmunizationArtifactEditorV2Claim.NextDoseDate, kind: 'date', transient: true },
|
|
56
|
+
{ claim: ImmunizationClaim.Route, codeClaim: ImmunizationClaim.Route, displayClaim: ImmunizationClaim.RouteDisplay, kind: 'coded-concept' },
|
|
57
|
+
{ claim: ImmunizationClaim.Site, codeClaim: ImmunizationClaim.Site, displayClaim: ImmunizationClaim.SiteDisplay, kind: 'coded-concept' },
|
|
58
|
+
{ claim: ImmunizationClaim.Note, kind: 'text' },
|
|
59
|
+
{ claim: '__documents', kind: 'documents', transient: true },
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ImmunizationArtifactEditorV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImmunizationArtifactEditorV2.js","sourceRoot":"","sources":["../../src/clinical/ImmunizationArtifactEditorV2.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ClinicalResourceBundleLike, type ClinicalSectionView, type ClinicalTerminologyTranslationInput } from 'fhir-data-utils-ts/clinical-resource-view';
|
|
3
|
+
import { type ClinicalTimelineLabels } from './ClinicalTimeline.js';
|
|
4
|
+
export type IpsBundleSummaryProps = Readonly<{
|
|
5
|
+
bundle: ClinicalResourceBundleLike;
|
|
6
|
+
locale?: string;
|
|
7
|
+
timeZone?: string;
|
|
8
|
+
translateCode?: (input: ClinicalTerminologyTranslationInput) => string | undefined;
|
|
9
|
+
emptyLabel: string;
|
|
10
|
+
noSectionsLabel?: string;
|
|
11
|
+
/** Omits Composition sections that resolve to no resources. */
|
|
12
|
+
hideEmptySections?: boolean;
|
|
13
|
+
sectionTitle?: (section: ClinicalSectionView) => string;
|
|
14
|
+
resourceTypeLabel?: (resourceType: string) => string;
|
|
15
|
+
sectionActions?: (section: ClinicalSectionView) => ReactNode;
|
|
16
|
+
/** Resource-owned actions such as edit or delete, rendered inside that resource card. */
|
|
17
|
+
resourceActions?: (section: ClinicalSectionView, resource: ClinicalSectionView['resources'][number]) => ReactNode;
|
|
18
|
+
timeline?: Readonly<{
|
|
19
|
+
labels: ClinicalTimelineLabels;
|
|
20
|
+
sectionFacetLabel: string;
|
|
21
|
+
resourceTypeFacetLabel: string;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Renders every section declared by an IPS Composition and the cards referenced
|
|
26
|
+
* by each section.
|
|
27
|
+
*
|
|
28
|
+
* The shared clinical reader owns Bundle traversal, section placement and card
|
|
29
|
+
* projection. `Composition.section.entry` is authoritative for placement;
|
|
30
|
+
* native FHIR fields or canonical `resource.meta.claims` provide card content.
|
|
31
|
+
* This component performs no ingestion, persistence or GW call.
|
|
32
|
+
*/
|
|
33
|
+
export declare function IpsBundleSummary({ bundle, locale, timeZone, translateCode, emptyLabel, noSectionsLabel, hideEmptySections, sectionTitle, resourceTypeLabel, sectionActions, resourceActions, timeline, }: IpsBundleSummaryProps): import("react").JSX.Element;
|
|
34
|
+
//# sourceMappingURL=IpsBundleSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IpsBundleSummary.d.ts","sourceRoot":"","sources":["../../src/clinical/IpsBundleSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,mCAAmC,EACzC,MAAM,2CAA2C,CAAA;AAElD,OAAO,EAAgD,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAEjH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,MAAM,EAAE,0BAA0B,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,MAAM,GAAG,SAAS,CAAA;IAClF,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,MAAM,CAAA;IACvD,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;IACpD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,SAAS,CAAA;IAC5D,yFAAyF;IACzF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAA;IACjH,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAClB,MAAM,EAAE,sBAAsB,CAAA;QAC9B,iBAAiB,EAAE,MAAM,CAAA;QACzB,sBAAsB,EAAE,MAAM,CAAA;KAC/B,CAAC,CAAA;CACH,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,eAA4B,EAC5B,iBAAyB,EACzB,YAAyC,EACzC,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,GACT,EAAE,qBAAqB,+BAwEvB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { toClinicalSectionViews, } from 'fhir-data-utils-ts/clinical-resource-view';
|
|
3
|
+
import { ClinicalSectionSummary } from './ClinicalSectionSummary.js';
|
|
4
|
+
import { ClinicalTimeline } from './ClinicalTimeline.js';
|
|
5
|
+
/**
|
|
6
|
+
* Renders every section declared by an IPS Composition and the cards referenced
|
|
7
|
+
* by each section.
|
|
8
|
+
*
|
|
9
|
+
* The shared clinical reader owns Bundle traversal, section placement and card
|
|
10
|
+
* projection. `Composition.section.entry` is authoritative for placement;
|
|
11
|
+
* native FHIR fields or canonical `resource.meta.claims` provide card content.
|
|
12
|
+
* This component performs no ingestion, persistence or GW call.
|
|
13
|
+
*/
|
|
14
|
+
export function IpsBundleSummary({ bundle, locale, timeZone, translateCode, emptyLabel, noSectionsLabel = emptyLabel, hideEmptySections = false, sectionTitle = (section) => section.title, resourceTypeLabel, sectionActions, resourceActions, timeline, }) {
|
|
15
|
+
const sections = toClinicalSectionViews(bundle, { ...(locale === undefined ? {} : { locale }), ...(translateCode === undefined ? {} : { translateCode }) })
|
|
16
|
+
.filter(section => !hideEmptySections || section.resources.length > 0);
|
|
17
|
+
const nativeResources = new Map((bundle.entry ?? bundle.data ?? []).flatMap((entry) => entry.fullUrl && entry.resource ? [[entry.fullUrl, entry.resource]] : []));
|
|
18
|
+
if (sections.length === 0) {
|
|
19
|
+
return _jsx("p", { className: "uhcp-clinical-empty", "data-ips-summary-empty": true, children: noSectionsLabel });
|
|
20
|
+
}
|
|
21
|
+
const timelineEntries = sections.flatMap((section, sectionIndex) => section.resources.flatMap((resource, resourceIndex) => resource.date ? [{
|
|
22
|
+
id: resource.fullUrl ?? `${sectionIndex}:${resourceIndex}:${resource.resourceType}`,
|
|
23
|
+
title: resource.title,
|
|
24
|
+
dateTime: resource.date,
|
|
25
|
+
facets: {
|
|
26
|
+
section: [section.code ?? section.title],
|
|
27
|
+
resourceType: [resource.resourceType],
|
|
28
|
+
},
|
|
29
|
+
content: _jsx("small", { children: resourceTypeLabel?.(resource.resourceType) ?? resource.resourceType }),
|
|
30
|
+
}] : []));
|
|
31
|
+
const timelineFacets = timeline ? [
|
|
32
|
+
{
|
|
33
|
+
id: 'section',
|
|
34
|
+
label: timeline.sectionFacetLabel,
|
|
35
|
+
options: uniqueOptions(sections.map((section) => ({ id: section.code ?? section.title, label: sectionTitle(section) }))),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'resourceType',
|
|
39
|
+
label: timeline.resourceTypeFacetLabel,
|
|
40
|
+
options: uniqueOptions(sections.flatMap((section) => section.resources.map((resource) => ({
|
|
41
|
+
id: resource.resourceType,
|
|
42
|
+
label: resourceTypeLabel?.(resource.resourceType) ?? resource.resourceType,
|
|
43
|
+
})))),
|
|
44
|
+
},
|
|
45
|
+
] : [];
|
|
46
|
+
return (_jsxs("div", { className: "uhcp-clinical-summary", "data-ips-summary": true, children: [timeline && timeZone && timelineEntries.length ? _jsx(ClinicalTimeline, { entries: timelineEntries, facets: timelineFacets, locale: locale ?? 'en', timeZone: timeZone, labels: timeline.labels }) : null, sections.map((section, sectionIndex) => (_jsx(ClinicalSectionSummary, { code: section.code ?? '', title: sectionTitle(section), resources: section.resources.map((resource, resourceIndex) => {
|
|
47
|
+
const details = observationComponentDetails(nativeResources.get(resource.fullUrl ?? ''));
|
|
48
|
+
return {
|
|
49
|
+
key: resource.fullUrl ?? `${resource.resourceType}:${resourceIndex}:${resource.title}`,
|
|
50
|
+
title: resource.title,
|
|
51
|
+
resourceType: resource.resourceType,
|
|
52
|
+
...(resource.date === undefined ? {} : { date: resource.date }),
|
|
53
|
+
...(details === undefined ? {} : { details }),
|
|
54
|
+
actions: resourceActions?.(section, resource),
|
|
55
|
+
};
|
|
56
|
+
}), emptyLabel: emptyLabel, ...(resourceTypeLabel === undefined ? {} : { resourceTypeLabel }), actions: sectionActions?.(section), ...(locale === undefined ? {} : { locale }), ...(timeZone === undefined ? {} : { timeZone }) }, section.code ?? `${section.title}:${sectionIndex}`)))] }));
|
|
57
|
+
}
|
|
58
|
+
function uniqueOptions(options) {
|
|
59
|
+
return [...new Map(options.map((option) => [option.id, option])).values()];
|
|
60
|
+
}
|
|
61
|
+
function observationComponentDetails(resource) {
|
|
62
|
+
const candidate = resource;
|
|
63
|
+
if (candidate?.resourceType !== 'Observation' || !Array.isArray(candidate.component))
|
|
64
|
+
return undefined;
|
|
65
|
+
const details = candidate.component.flatMap((value) => {
|
|
66
|
+
const component = value;
|
|
67
|
+
const label = component.code?.text ?? component.code?.coding?.find((coding) => coding.display)?.display;
|
|
68
|
+
const quantity = component.valueQuantity;
|
|
69
|
+
if (!label || !Number.isFinite(quantity?.value))
|
|
70
|
+
return [];
|
|
71
|
+
return [{ label, value: String(quantity.value), ...(quantity?.unit ? { unit: quantity.unit } : {}) }];
|
|
72
|
+
});
|
|
73
|
+
return details.length ? details : undefined;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=IpsBundleSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IpsBundleSummary.js","sourceRoot":"","sources":["../../src/clinical/IpsBundleSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,sBAAsB,GAIvB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAA2D,MAAM,uBAAuB,CAAA;AAuBjH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,MAAM,EACN,QAAQ,EACR,aAAa,EACb,UAAU,EACV,eAAe,GAAG,UAAU,EAC5B,iBAAiB,GAAG,KAAK,EACzB,YAAY,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EACzC,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,GACc;IACtB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;SACxJ,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACxE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACpF,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAClF,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,YAAG,SAAS,EAAC,qBAAqB,4CAAyB,eAAe,GAAK,CAAA;IACxF,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CACxH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,EAAE,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG,YAAY,IAAI,aAAa,IAAI,QAAQ,CAAC,YAAY,EAAE;YACnF,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;gBACxC,YAAY,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;aACtC;YACD,OAAO,EAAE,0BAAQ,iBAAiB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,YAAY,GAAS;SAC9F,CAAC,CAAC,CAAC,CAAC,EAAE,CACR,CAAC,CAAA;IACF,MAAM,cAAc,GAAqC,QAAQ,CAAC,CAAC,CAAC;QAClE;YACE,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,QAAQ,CAAC,iBAAiB;YACjC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;SACzH;QACD;YACE,EAAE,EAAE,cAAc;YAClB,KAAK,EAAE,QAAQ,CAAC,sBAAsB;YACtC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACxF,EAAE,EAAE,QAAQ,CAAC,YAAY;gBACzB,KAAK,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,YAAY;aAC3E,CAAC,CAAC,CAAC,CAAC;SACN;KACF,CAAC,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,uCACnC,QAAQ,IAAI,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAC,gBAAgB,IACjE,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,IAAI,IAAI,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,GACvB,CAAC,CAAC,CAAC,IAAI,EACR,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,CACvC,KAAC,sBAAsB,IAErB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EACxB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE;oBAC3D,MAAM,OAAO,GAAG,2BAA2B,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAA;oBACxF,OAAO;wBACP,GAAG,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG,QAAQ,CAAC,YAAY,IAAI,aAAa,IAAI,QAAQ,CAAC,KAAK,EAAE;wBACtF,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC/D,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;wBAC7C,OAAO,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;qBAC9C,CAAA;gBAAA,CAAC,CAAC,EACH,UAAU,EAAE,UAAU,KAClB,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAClE,OAAO,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,KAC9B,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,KACxC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAjB3C,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE,CAkBvD,CACH,CAAC,IACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA2D;IAChF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAiB;IACpD,MAAM,SAAS,GAAG,QAA2F,CAAA;IAC7G,IAAI,SAAS,EAAE,YAAY,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IACtG,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACpD,MAAM,SAAS,GAAG,KAGhB,CAAA;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;QACvG,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAA;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAC1D,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,QAAS,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACxG,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ClinicalArtifactEditorV2Props, type ClinicalArtifactFieldV2 } from './ClinicalArtifactEditorV2.js';
|
|
2
|
+
import type { ClinicalArtifactSchema } from './ClinicalArtifactEditor.js';
|
|
3
|
+
export type SchemaClinicalArtifactEditorV2Props = Omit<ClinicalArtifactEditorV2Props, 'fields' | 'initialVisibleClaims' | 'initialClaims'> & Readonly<{
|
|
4
|
+
schema: ClinicalArtifactSchema;
|
|
5
|
+
}>;
|
|
6
|
+
/** Adapts every schema-backed IPS resource to the same progressive V2 editor. */
|
|
7
|
+
/** @deprecated Use ClinicalBundleDraftEditorV2 for every new clinical authoring flow. */
|
|
8
|
+
export declare function SchemaClinicalArtifactEditorV2({ schema, locale, ...props }: SchemaClinicalArtifactEditorV2Props): import("react").JSX.Element;
|
|
9
|
+
/** Keeps form control selection deterministic and owned by the canonical schema/catalog. */
|
|
10
|
+
export declare function clinicalArtifactFieldsV2FromSchema(schema: ClinicalArtifactSchema, locale?: string): readonly ClinicalArtifactFieldV2[];
|
|
11
|
+
//# sourceMappingURL=SchemaClinicalArtifactEditorV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaClinicalArtifactEditorV2.d.ts","sourceRoot":"","sources":["../../src/clinical/SchemaClinicalArtifactEditorV2.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC7B,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,MAAM,MAAM,mCAAmC,GAAG,IAAI,CAAC,6BAA6B,EAAE,QAAQ,GAAG,sBAAsB,GAAG,eAAe,CAAC,GAAG,QAAQ,CAAC;IACpJ,MAAM,EAAE,sBAAsB,CAAA;CAC/B,CAAC,CAAA;AAEF,iFAAiF;AACjF,yFAAyF;AACzF,wBAAgB,8BAA8B,CAAC,EAAE,MAAM,EAAE,MAAa,EAAE,GAAG,KAAK,EAAE,EAAE,mCAAmC,+BAQtH;AAED,4FAA4F;AAC5F,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,SAAO,GAAG,SAAS,uBAAuB,EAAE,CA8BpI"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { clinicalArtifactCodedOptionsForClaim } from 'fhir-data-utils-ts';
|
|
4
|
+
import { ClinicalArtifactEditorV2, } from './ClinicalArtifactEditorV2.js';
|
|
5
|
+
/** Adapts every schema-backed IPS resource to the same progressive V2 editor. */
|
|
6
|
+
/** @deprecated Use ClinicalBundleDraftEditorV2 for every new clinical authoring flow. */
|
|
7
|
+
export function SchemaClinicalArtifactEditorV2({ schema, locale = 'en', ...props }) {
|
|
8
|
+
return _jsx(ClinicalArtifactEditorV2, { ...props, locale: locale, fields: clinicalArtifactFieldsV2FromSchema(schema, locale), initialVisibleClaims: schema.requiredClaims, ...(schema.initialClaims === undefined ? {} : { initialClaims: schema.initialClaims }) });
|
|
9
|
+
}
|
|
10
|
+
/** Keeps form control selection deterministic and owned by the canonical schema/catalog. */
|
|
11
|
+
export function clinicalArtifactFieldsV2FromSchema(schema, locale = 'en') {
|
|
12
|
+
const required = new Set(schema.requiredClaims);
|
|
13
|
+
const terminologyText = new Set(schema.terminologyTextClaims ?? []);
|
|
14
|
+
const pairedClaims = new Set();
|
|
15
|
+
const fields = [];
|
|
16
|
+
for (const textClaim of terminologyText) {
|
|
17
|
+
const pair = codedClaimPair(textClaim);
|
|
18
|
+
pairedClaims.add(pair.codeClaim);
|
|
19
|
+
pairedClaims.add(pair.displayClaim);
|
|
20
|
+
}
|
|
21
|
+
for (const claim of [...schema.requiredClaims, ...schema.optionalClaims]) {
|
|
22
|
+
if (pairedClaims.has(claim))
|
|
23
|
+
continue;
|
|
24
|
+
const options = clinicalArtifactCodedOptionsForClaim(claim, locale);
|
|
25
|
+
if (terminologyText.has(claim)) {
|
|
26
|
+
const pair = codedClaimPair(claim);
|
|
27
|
+
fields.push({ claim, textClaim: claim, codeClaim: pair.codeClaim, displayClaim: pair.displayClaim, kind: 'coded-concept', required: required.has(claim) });
|
|
28
|
+
}
|
|
29
|
+
else if (options.length) {
|
|
30
|
+
fields.push({ claim, kind: 'coded-select', required: required.has(claim), options: options.map(option => ({ value: option.code, label: option.label })) });
|
|
31
|
+
}
|
|
32
|
+
else if (isDateTimeClaim(claim)) {
|
|
33
|
+
fields.push({ claim, kind: 'date-time', required: required.has(claim) });
|
|
34
|
+
}
|
|
35
|
+
else if (isPositiveIntegerClaim(claim)) {
|
|
36
|
+
fields.push({ claim, kind: 'positive-integer', required: required.has(claim) });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
fields.push({ claim, kind: 'text', required: required.has(claim) });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
fields.push({ claim: '__documents', kind: 'documents', transient: true });
|
|
43
|
+
return Object.freeze(fields);
|
|
44
|
+
}
|
|
45
|
+
function codedClaimPair(textClaim) {
|
|
46
|
+
if (textClaim.endsWith('-text')) {
|
|
47
|
+
const base = textClaim.slice(0, -'-text'.length);
|
|
48
|
+
return { codeClaim: base, displayClaim: `${base}-display` };
|
|
49
|
+
}
|
|
50
|
+
if (textClaim.endsWith('.code-text')) {
|
|
51
|
+
const base = textClaim.slice(0, -'-text'.length);
|
|
52
|
+
return { codeClaim: base, displayClaim: `${base}-display` };
|
|
53
|
+
}
|
|
54
|
+
return { codeClaim: `${textClaim}-code`, displayClaim: `${textClaim}-display` };
|
|
55
|
+
}
|
|
56
|
+
function isDateTimeClaim(claim) {
|
|
57
|
+
return /(?:^|[-.])(date|datetime|effective|onset)(?:$|[-.])/.test(claim);
|
|
58
|
+
}
|
|
59
|
+
function isPositiveIntegerClaim(claim) {
|
|
60
|
+
return /(?:dose-sequence|series-doses|timing-frequency)$/.test(claim);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=SchemaClinicalArtifactEditorV2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaClinicalArtifactEditorV2.js","sourceRoot":"","sources":["../../src/clinical/SchemaClinicalArtifactEditorV2.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/* SOS-owned clinical rendering. Host theme supplies neutral --uhcp-* compatibility tokens; no product branding or assets. */
|
|
2
|
+
.uhcp-clinical-section {
|
|
3
|
+
background: var(--uhcp-panel);
|
|
4
|
+
border: 1px solid var(--uhcp-border);
|
|
5
|
+
border-radius: 2rem;
|
|
6
|
+
color: var(--uhcp-text);
|
|
7
|
+
padding: 1.25rem;
|
|
8
|
+
}
|
|
9
|
+
.uhcp-clinical-editor-backdrop { align-items:center; background:rgb(15 23 42 / 42%); display:flex; inset:0; justify-content:center; padding:1rem; position:fixed; z-index:1000; }
|
|
10
|
+
.uhcp-clinical-editor { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:1.5rem; box-shadow:0 20px 60px rgb(15 23 42 / 22%); color:var(--uhcp-text); display:flex; flex-direction:column; max-height:calc(100dvh - 2rem); max-width:48rem; min-width:0; overflow:hidden; padding:1.5rem; width:100%; }
|
|
11
|
+
.uhcp-clinical-editor>header { align-items:flex-start; display:flex; gap:1rem; justify-content:space-between; }
|
|
12
|
+
.uhcp-clinical-editor h2,.uhcp-clinical-editor p { margin:.2rem 0; }
|
|
13
|
+
.uhcp-clinical-editor>header>button { background:transparent; border:1px solid var(--uhcp-border); border-radius:50%; color:inherit; cursor:pointer; font-size:1.4rem; height:2.5rem; width:2.5rem; }
|
|
14
|
+
.uhcp-clinical-editor form { display:grid; gap:1rem; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:1.25rem; min-width:0; overflow:auto; }
|
|
15
|
+
.uhcp-clinical-editor label { color:var(--uhcp-text); font-weight:700; }
|
|
16
|
+
.uhcp-clinical-editor label,.uhcp-clinical-editor fieldset,.uhcp-clinical-editor-field { min-width:0; }
|
|
17
|
+
.uhcp-clinical-editor-field { display:grid; gap:.35rem; }
|
|
18
|
+
.uhcp-clinical-editor-field-heading { align-items:center; display:flex; gap:.5rem; justify-content:space-between; }
|
|
19
|
+
.uhcp-clinical-speech-control { align-items:center; display:flex; gap:.4rem; }
|
|
20
|
+
.uhcp-clinical-speech-button { align-items:center; background:transparent; border:1px solid var(--uhcp-border); border-radius:50%; color:inherit; cursor:pointer; display:inline-flex; height:2.25rem; justify-content:center; padding:.45rem; width:2.25rem; }
|
|
21
|
+
.uhcp-clinical-speech-button:disabled { cursor:not-allowed; opacity:.45; }
|
|
22
|
+
.uhcp-clinical-speech-button svg { fill:currentColor; height:1.15rem; width:1.15rem; }
|
|
23
|
+
.uhcp-clinical-editor input,.uhcp-clinical-editor select,.uhcp-clinical-editor textarea { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.7rem; color:inherit; font:inherit; min-width:0; padding:.75rem; width:100%; }
|
|
24
|
+
.uhcp-clinical-editor-date-time { grid-column:1/-1; }
|
|
25
|
+
.uhcp-clinical-editor-wide,.uhcp-clinical-editor-error,.uhcp-clinical-editor footer { grid-column:1/-1; }
|
|
26
|
+
.uhcp-clinical-editor footer { background:var(--uhcp-panel); bottom:0; display:flex; gap:.75rem; justify-content:flex-end; padding:.75rem 0; position:sticky; z-index:2; }
|
|
27
|
+
.uhcp-clinical-editor footer button,.uhcp-terminology-results button { border:1px solid var(--uhcp-border); border-radius:.7rem; cursor:pointer; font:inherit; padding:.7rem 1rem; }
|
|
28
|
+
.uhcp-clinical-editor footer .uhcp-clinical-editor-submit { background:linear-gradient(135deg,color-mix(in srgb,var(--uhcp-emerald) 90%,#fff),var(--uhcp-emerald)); border-color:var(--uhcp-emerald); color:#fff; font-weight:800; }
|
|
29
|
+
.uhcp-clinical-editor footer .uhcp-clinical-editor-cancel { background:color-mix(in srgb,#b42318 12%,var(--uhcp-panel)); border-color:color-mix(in srgb,#b42318 52%,var(--uhcp-border)); color:color-mix(in srgb,#b42318 84%,var(--uhcp-text)); }
|
|
30
|
+
.uhcp-clinical-entry-credential-panel { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.85rem; grid-column:1/-1; margin-top:.75rem; padding:1rem; width:100%; }
|
|
31
|
+
.uhcp-clinical-editor-error { color:#b42318; font-weight:700; }
|
|
32
|
+
.uhcp-terminology-results ul { display:grid; gap:.35rem; list-style:none; margin:.25rem 0 0; padding:0; }
|
|
33
|
+
.uhcp-terminology-results button { background:var(--uhcp-surface-muted); color:inherit; display:grid; text-align:start; width:100%; }
|
|
34
|
+
.uhcp-terminology-results small { color:var(--uhcp-muted); display:block; font-weight:400; }
|
|
35
|
+
.uhcp-terminology-source-picker { border:1px solid var(--uhcp-border); border-radius:.7rem; margin:.25rem 0; position:relative; }
|
|
36
|
+
.uhcp-terminology-source-picker summary { cursor:pointer; font-weight:750; list-style:none; padding:.7rem .8rem; }
|
|
37
|
+
.uhcp-terminology-source-picker summary::-webkit-details-marker { display:none; }
|
|
38
|
+
.uhcp-terminology-source-picker summary::after { content:'▾'; float:inline-end; }
|
|
39
|
+
.uhcp-terminology-source-picker[open] summary::after { content:'▴'; }
|
|
40
|
+
.uhcp-terminology-source-picker fieldset { background:var(--uhcp-panel); border:0; border-top:1px solid var(--uhcp-border); display:grid; gap:.45rem; margin:0; padding:.7rem .8rem; }
|
|
41
|
+
.uhcp-terminology-source-picker label { align-items:center; display:flex; gap:.55rem; }
|
|
42
|
+
.uhcp-terminology-source-picker input { margin:0; width:auto; }
|
|
43
|
+
.uhcp-sr-only { clip:rect(0,0,0,0); clip-path:inset(50%); height:1px; overflow:hidden; position:absolute; white-space:nowrap; width:1px; }
|
|
44
|
+
.uhcp-clinical-editor-v2 { max-width:44rem; }
|
|
45
|
+
.uhcp-clinical-editor-v2 form { grid-template-columns:1fr; }
|
|
46
|
+
.uhcp-progressive-field-v2 { background:var(--uhcp-surface-muted); border:1px solid var(--uhcp-border); border-radius:1rem; display:grid; gap:.45rem; padding:.85rem; position:relative; }
|
|
47
|
+
.uhcp-progressive-field-v2>.uhcp-remove-field-v2 { align-items:center; background:#fff1f0; border:1px solid #fda29b; border-radius:50%; color:#b42318; cursor:pointer; display:flex; font-size:1.1rem; height:1.8rem; justify-content:center; position:absolute; right:.55rem; top:.55rem; width:1.8rem; z-index:1; }
|
|
48
|
+
.uhcp-clinical-property-v2 { display:grid; gap:.45rem; min-width:0; }
|
|
49
|
+
.uhcp-clinical-property-v2 input,.uhcp-clinical-property-v2 select { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.7rem; color:inherit; font:inherit; min-width:0; padding:.7rem; width:100%; }
|
|
50
|
+
.uhcp-date-time-property-v2 { align-items:end; border:0; grid-template-columns:minmax(9rem,1fr) auto minmax(7rem,.65fr) auto; margin:0; padding:0; }
|
|
51
|
+
.uhcp-date-time-property-v2 legend { font-weight:800; margin-bottom:.35rem; }
|
|
52
|
+
.uhcp-date-time-property-v2 label { display:grid; gap:.3rem; }
|
|
53
|
+
.uhcp-date-time-property-v2 button,.uhcp-optional-fields-v2 button { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.7rem; color:inherit; cursor:pointer; font:inherit; min-height:2.7rem; padding:.55rem .75rem; }
|
|
54
|
+
.uhcp-coded-concept-query-v2 { display:grid; gap:.4rem; grid-template-columns:minmax(0,1fr) auto auto; }
|
|
55
|
+
.uhcp-icon-button-v2,.uhcp-clear-code-v2 { align-items:center; background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:50%; color:inherit; cursor:pointer; display:flex; height:2.75rem; justify-content:center; padding:.65rem; width:2.75rem; }
|
|
56
|
+
.uhcp-icon-button-v2 svg { fill:none; height:1.2rem; stroke:currentColor; stroke-linecap:round; stroke-width:2; width:1.2rem; }
|
|
57
|
+
.uhcp-clear-code-v2 { background:#fff1f0; border-color:#fda29b; color:#b42318; font-size:1.15rem; }
|
|
58
|
+
.uhcp-coding-sources-v2 { border:0; display:flex; flex-wrap:wrap; gap:.45rem .8rem; margin:0; padding:.2rem 0; }
|
|
59
|
+
.uhcp-coding-sources-v2 legend { color:var(--uhcp-muted); font-size:.8rem; width:100%; }
|
|
60
|
+
.uhcp-coding-sources-v2 label { align-items:center; display:flex; font-size:.85rem; gap:.3rem; }
|
|
61
|
+
.uhcp-coding-sources-v2 input { width:auto; }
|
|
62
|
+
.uhcp-selected-code-v2 { display:grid; gap:.6rem; grid-template-columns:1fr 1fr; }
|
|
63
|
+
.uhcp-selected-code-v2 input[readonly] { background:var(--uhcp-panel-muted); color:var(--uhcp-muted); }
|
|
64
|
+
.uhcp-optional-fields-v2 { align-items:end; border:1px dashed var(--uhcp-border); border-radius:1rem; display:grid; gap:.6rem; grid-template-columns:minmax(0,1fr) auto; margin:0; padding:.8rem; }
|
|
65
|
+
.uhcp-optional-fields-v2 legend { font-weight:800; padding:0 .35rem; }
|
|
66
|
+
.uhcp-optional-fields-v2 select { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.7rem; color:inherit; font:inherit; padding:.7rem; }
|
|
67
|
+
.uhcp-document-references-property-v2 ul { display:grid; gap:.4rem; list-style:none; margin:.2rem 0 0; padding:0; }
|
|
68
|
+
.uhcp-document-references-property-v2 li { align-items:center; display:flex; justify-content:space-between; }
|
|
69
|
+
.uhcp-document-references-property-v2 li button { background:#fff1f0; border:1px solid #fda29b; border-radius:50%; color:#b42318; cursor:pointer; height:1.8rem; width:1.8rem; }
|
|
70
|
+
@media (max-width:620px) { .uhcp-date-time-property-v2,.uhcp-selected-code-v2 { grid-template-columns:minmax(0,1fr) auto; } .uhcp-date-time-property-v2 legend,.uhcp-selected-code-v2 label { grid-column:1/-1; } .uhcp-optional-fields-v2 { grid-template-columns:1fr; } }
|
|
71
|
+
@media (max-width:44rem) { .uhcp-clinical-editor form { grid-template-columns:1fr; } }
|
|
72
|
+
|
|
73
|
+
.uhcp-clinical-summary {
|
|
74
|
+
display: grid;
|
|
75
|
+
gap: 1rem;
|
|
76
|
+
}
|
|
77
|
+
.uhcp-clinical-section > header { align-items: center; display: flex; gap: 1rem; justify-content: space-between; }
|
|
78
|
+
.uhcp-clinical-section h3 { font-size: 1.125rem; margin: 0; }
|
|
79
|
+
.uhcp-clinical-section h3 span { color: var(--uhcp-muted); }
|
|
80
|
+
.uhcp-clinical-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); margin-top: 1rem; }
|
|
81
|
+
.uhcp-clinical-card { background: var(--uhcp-panel-muted); border-radius: 1rem; display: flex; flex-direction: column; min-width: 0; padding: 1rem; }
|
|
82
|
+
.uhcp-clinical-card-actions { align-items: center; display: flex; gap: .4rem; justify-content: flex-end; margin-top: .75rem; }
|
|
83
|
+
.uhcp-clinical-icon-action { align-items:center; background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.65rem; color:var(--uhcp-text); cursor:pointer; display:inline-flex; height:2.5rem; justify-content:center; padding:0; width:2.5rem; }
|
|
84
|
+
.uhcp-clinical-icon-action:hover { border-color:var(--uhcp-turquoise); color:var(--uhcp-turquoise); }
|
|
85
|
+
.uhcp-clinical-icon-action:focus-visible { outline:3px solid var(--uhcp-turquoise); outline-offset:2px; }
|
|
86
|
+
.uhcp-clinical-icon-action:disabled { cursor:not-allowed; opacity:.42; }
|
|
87
|
+
.uhcp-clinical-icon-action svg { fill:none; height:1.2rem; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; width:1.2rem; }
|
|
88
|
+
.uhcp-clinical-icon-action-delete:hover { border-color:var(--uhcp-attention); color:var(--uhcp-attention); }
|
|
89
|
+
.uhcp-clinical-bundle-draft { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:1.5rem; color:var(--uhcp-text); display:grid; gap:1rem; padding:1.25rem; }
|
|
90
|
+
.uhcp-clinical-bundle-draft>header h2,.uhcp-clinical-bundle-draft>header p { margin:.15rem 0; }
|
|
91
|
+
.uhcp-clinical-bundle-draft>header p,.uhcp-clinical-bundle-draft details>p { color:var(--uhcp-muted); }
|
|
92
|
+
.uhcp-clinical-bundle-draft details { background:var(--uhcp-panel-muted); border:1px solid var(--uhcp-border); border-radius:1rem; padding:.85rem 1rem; position:relative; }
|
|
93
|
+
.uhcp-clinical-bundle-draft summary { cursor:pointer; font-weight:800; }
|
|
94
|
+
.uhcp-clinical-bundle-draft-create { align-items:end; background:var(--uhcp-panel-muted); border:1px solid var(--uhcp-border); border-radius:1rem; display:grid; gap:.8rem; grid-template-columns:minmax(10rem,1fr) minmax(10rem,1fr) auto; padding:1rem; }
|
|
95
|
+
.uhcp-clinical-bundle-draft-create label { display:grid; gap:.35rem; font-weight:700; }
|
|
96
|
+
.uhcp-clinical-bundle-draft-create select { background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.7rem; color:var(--uhcp-text); font:inherit; min-height:2.75rem; padding:.55rem .7rem; }
|
|
97
|
+
.uhcp-clinical-bundle-draft-create button.uhcp-add-section-button { background:color-mix(in srgb,var(--uhcp-turquoise) 13%,var(--uhcp-panel)); border:1px solid color-mix(in srgb,var(--uhcp-turquoise) 45%,var(--uhcp-border)); border-radius:.75rem; color:var(--uhcp-text); cursor:pointer; font:inherit; font-weight:800; min-height:2.75rem; padding:.65rem 1rem; }
|
|
98
|
+
.uhcp-clinical-bundle-draft-create button:disabled { cursor:not-allowed; opacity:.5; }
|
|
99
|
+
.uhcp-clinical-bundle-draft .uhcp-add-entry-button { background:var(--uhcp-emerald); border:0; border-radius:.65rem; color:#fff; cursor:pointer; font-size:1.3rem; font-weight:900; height:2.5rem; margin-top:.65rem; width:2.5rem; }
|
|
100
|
+
.uhcp-clinical-bundle-draft .uhcp-remove-section-button { background:color-mix(in srgb,#c64747 12%,var(--uhcp-panel)); border:1px solid color-mix(in srgb,#c64747 42%,var(--uhcp-border)); border-radius:.6rem; color:#a72f2f; cursor:pointer; font-size:1.25rem; font-weight:900; height:2.25rem; position:absolute; right:.7rem; top:.55rem; width:2.25rem; }
|
|
101
|
+
.uhcp-clinical-bundle-draft ul { display:grid; gap:.55rem; list-style:none; margin:.8rem 0 0; padding:0; }
|
|
102
|
+
.uhcp-clinical-bundle-draft li { align-items:center; background:var(--uhcp-panel); border:1px solid var(--uhcp-border); border-radius:.8rem; display:grid; gap:1rem; grid-template-columns:minmax(0,1fr) auto; justify-content:space-between; padding:.7rem; }
|
|
103
|
+
.uhcp-clinical-bundle-draft li>span { display:flex; gap:.45rem; }
|
|
104
|
+
.uhcp-clinical-bundle-draft li>span:first-child { align-items:flex-start; flex-direction:column; min-width:0; }
|
|
105
|
+
.uhcp-clinical-bundle-draft li strong { overflow-wrap:anywhere; }
|
|
106
|
+
.uhcp-clinical-bundle-draft li small { color:var(--uhcp-muted); }
|
|
107
|
+
.uhcp-clinical-bundle-draft>footer { align-items:center; background:var(--uhcp-panel-muted); border:1px solid var(--uhcp-border); border-radius:1rem; display:flex; gap:.75rem; justify-content:space-between; padding:.7rem .8rem; }
|
|
108
|
+
.uhcp-clinical-document-secondary-actions { align-items:center; display:flex; flex:1; flex-wrap:wrap; gap:.65rem; min-width:0; }
|
|
109
|
+
.uhcp-clinical-bundle-draft>footer .uhcp-clinical-document-submit { background:var(--uhcp-emerald); border:0; border-radius:.75rem; color:#fff; cursor:pointer; flex:0 0 auto; font:inherit; font-weight:800; padding:.75rem 1rem; }
|
|
110
|
+
.uhcp-clinical-bundle-draft>footer .uhcp-clinical-document-submit:disabled { cursor:not-allowed; opacity:.5; }
|
|
111
|
+
.uhcp-clinical-bundle-draft .uhcp-clinical-entry-credential-action { background:color-mix(in srgb,var(--uhcp-attention) 24%,var(--uhcp-panel)); border:1px solid color-mix(in srgb,var(--uhcp-attention) 58%,var(--uhcp-border)); color:var(--uhcp-text); }
|
|
112
|
+
.uhcp-clinical-bundle-draft button[data-tooltip]:not(.uhcp-remove-section-button),.uhcp-clinical-icon-action[data-tooltip] { position:relative; }
|
|
113
|
+
.uhcp-clinical-bundle-draft button[data-tooltip]:is(:hover,:focus-visible)::after,.uhcp-clinical-icon-action[data-tooltip]:is(:hover,:focus-visible)::after { background:var(--uhcp-text); border-radius:.45rem; bottom:calc(100% + .45rem); color:var(--uhcp-panel); content:attr(data-tooltip); font-size:.78rem; font-weight:700; left:50%; max-width:16rem; padding:.35rem .5rem; pointer-events:none; position:absolute; transform:translateX(-50%); white-space:nowrap; z-index:50; }
|
|
114
|
+
.uhcp-clinical-editor-attachments { border:1px solid var(--uhcp-border); border-radius:.85rem; display:grid; gap:.65rem; grid-column:1/-1; padding:.85rem; }
|
|
115
|
+
.uhcp-clinical-editor-attachments label { display:grid; gap:.35rem; }
|
|
116
|
+
.uhcp-clinical-editor-attachments input[type=file] { border:1px dashed var(--uhcp-border); border-radius:.7rem; padding:.65rem; }
|
|
117
|
+
.uhcp-clinical-editor-attachments ul { display:grid; gap:.4rem; list-style:none; margin:0; padding:0; }
|
|
118
|
+
.uhcp-clinical-editor-attachments li { align-items:center; background:var(--uhcp-panel-muted); border-radius:.65rem; display:flex; justify-content:space-between; padding:.5rem .65rem; }
|
|
119
|
+
.uhcp-clinical-editor-attachments li button { background:transparent; border:0; color:var(--uhcp-text); cursor:pointer; font-size:1.2rem; }
|
|
120
|
+
@media (max-width:720px) { .uhcp-clinical-bundle-draft-create { grid-template-columns:1fr; } .uhcp-clinical-bundle-draft>footer { align-items:stretch; flex-direction:column; } .uhcp-clinical-bundle-draft>footer .uhcp-clinical-document-submit { align-self:flex-end; } }
|
|
121
|
+
.uhcp-clinical-title { font-weight: 800; margin: 0; }
|
|
122
|
+
.uhcp-clinical-type { color: var(--uhcp-muted); font-size: .72rem; font-weight: 800; letter-spacing: .06em; margin: .35rem 0 0; text-transform: uppercase; }
|
|
123
|
+
.uhcp-clinical-date, .uhcp-clinical-empty { color: var(--uhcp-muted); margin: .35rem 0 0; }
|
|
124
|
+
.uhcp-clinical-timeline { display: grid; gap: 1rem; }
|
|
125
|
+
.uhcp-clinical-filters, .uhcp-clinical-range { display: grid; gap: .75rem; }
|
|
126
|
+
.uhcp-clinical-range { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
127
|
+
.uhcp-clinical-filters fieldset { border: 1px solid var(--uhcp-border); border-radius: 1rem; display: flex; flex-wrap: wrap; gap: .75rem; margin: 0; padding: .75rem; }
|
|
128
|
+
.uhcp-clinical-filters legend { font-weight: 800; padding: 0 .35rem; }
|
|
129
|
+
.uhcp-clinical-filters label { display: grid; gap: .3rem; }
|
|
130
|
+
.uhcp-clinical-filters label:has(input[type='checkbox']) { align-items: center; display: flex; }
|
|
131
|
+
.uhcp-clinical-filters input { background: var(--uhcp-panel); border: 1px solid var(--uhcp-border); border-radius: .65rem; color: var(--uhcp-text); font: inherit; padding: .55rem; }
|
|
132
|
+
.uhcp-clinical-timeline-card { background: var(--uhcp-panel-muted); border-radius: 1rem; display: grid; gap: .4rem; padding: 1rem; }
|
|
133
|
+
.uhcp-clinical-timeline-card h4 { margin: 0; }
|
|
134
|
+
.uhcp-clinical-timeline-card time, .uhcp-clinical-timeline-list time { color: var(--uhcp-muted); }
|
|
135
|
+
.uhcp-clinical-timeline-navigation { align-items: center; display: flex; flex-wrap: wrap; gap: .6rem; }
|
|
136
|
+
.uhcp-clinical-timeline button, .uhcp-clinical-date-time-fields button { background: var(--uhcp-panel); border: 1px solid var(--uhcp-border); border-radius: .7rem; color: var(--uhcp-text); cursor: pointer; font: inherit; min-height: 2.5rem; padding: .55rem .75rem; }
|
|
137
|
+
.uhcp-clinical-timeline button:disabled { cursor: not-allowed; opacity: .45; }
|
|
138
|
+
.uhcp-clinical-timeline-list { display: grid; gap: .5rem; margin: 0; padding-left: 1.5rem; }
|
|
139
|
+
.uhcp-clinical-timeline-list li { padding: .5rem; }
|
|
140
|
+
.uhcp-clinical-timeline-list time { display: block; margin-top: .2rem; }
|
|
141
|
+
.uhcp-clinical-date-time-fields { align-items: end; display: grid; gap: .5rem; grid-template-columns: minmax(0, 1fr) auto minmax(0, .7fr) auto; min-width: 0; }
|
|
142
|
+
.uhcp-clinical-date-time-fields label { display: grid; font-weight: 800; gap: .35rem; }
|
|
143
|
+
.uhcp-clinical-date-time-fields input { border: 1px solid var(--uhcp-border); border-radius: .7rem; color: var(--uhcp-text); font: inherit; min-width: 0; padding: .65rem; width: 100%; }
|
|
144
|
+
@media (max-width: 620px) { .uhcp-clinical-range, .uhcp-clinical-date-time-fields { grid-template-columns: minmax(0, 1fr) auto; } .uhcp-clinical-editor form { grid-template-columns:minmax(0,1fr); } .uhcp-clinical-editor-date-time,.uhcp-clinical-editor-wide,.uhcp-clinical-editor-error,.uhcp-clinical-editor footer { grid-column:1; } }
|
|
145
|
+
.uhcp-clinical-details { display: grid; gap: .3rem; margin: .6rem 0 0; }
|
|
146
|
+
.uhcp-clinical-details div { align-items: baseline; display: flex; gap: .75rem; justify-content: space-between; }
|
|
147
|
+
.uhcp-clinical-details dt { color: var(--uhcp-muted); font-size: .78rem; }
|
|
148
|
+
.uhcp-clinical-details dd { font-size: .9rem; font-weight: 800; margin: 0; }
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './ClinicalArtifactEditor.js';
|
|
2
|
+
export * from './ClinicalArtifactEditorV2.js';
|
|
3
|
+
export * from './ClinicalArtifactPropertiesV2.js';
|
|
4
|
+
export * from './ClinicalEditorLayer.js';
|
|
5
|
+
export * from './ClinicalSpeechInput.js';
|
|
6
|
+
export * from './BrowserClinicalSpeechInput.js';
|
|
7
|
+
export * from './ClinicalTimeline.js';
|
|
8
|
+
export * from './ClinicalSectionSummary.js';
|
|
9
|
+
export * from './IpsBundleSummary.js';
|
|
10
|
+
export * from './ClinicalActionButton.js';
|
|
11
|
+
export * from './ClinicalBundleDraftEditor.js';
|
|
12
|
+
export * from './ImmunizationArtifactEditorV2.js';
|
|
13
|
+
export * from './SchemaClinicalArtifactEditorV2.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clinical/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,qCAAqC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './ClinicalArtifactEditor.js';
|
|
2
|
+
export * from './ClinicalArtifactEditorV2.js';
|
|
3
|
+
export * from './ClinicalArtifactPropertiesV2.js';
|
|
4
|
+
export * from './ClinicalEditorLayer.js';
|
|
5
|
+
export * from './ClinicalSpeechInput.js';
|
|
6
|
+
export * from './BrowserClinicalSpeechInput.js';
|
|
7
|
+
export * from './ClinicalTimeline.js';
|
|
8
|
+
export * from './ClinicalSectionSummary.js';
|
|
9
|
+
export * from './IpsBundleSummary.js';
|
|
10
|
+
export * from './ClinicalActionButton.js';
|
|
11
|
+
export * from './ClinicalBundleDraftEditor.js';
|
|
12
|
+
export * from './ImmunizationArtifactEditorV2.js';
|
|
13
|
+
export * from './SchemaClinicalArtifactEditorV2.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clinical/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,qCAAqC,CAAA"}
|