Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(feat) Add ability to edit program enrollments #735

Merged
merged 7 commits into from
Jun 29, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Progress work: Adding edit button on programs widget
benjamin committed Jun 29, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 1b7941f67c4ebc1fda053f23d8b33f4720f7d068
Original file line number Diff line number Diff line change
@@ -3,9 +3,14 @@ import styles from './attachment-thumbnail.scss';
import regularFile from '../assets/file-regular.svg';

export default function AttachmentThumbnail(props: AttachmentThumbnailProps) {

console.log("==================" , props)
return (
<div className={styles.thumbnail}>
<Thumbnail {...props} />
{/* <Thumbnail {...props} /> */}
{
props.imageProps.title
}
</div>
);
}
Original file line number Diff line number Diff line change
@@ -76,11 +76,11 @@ const AttachmentsOverview: React.FC<{ patientUuid: string }> = ({ patientUuid })
const pushAttachments = useCallback(async (items: Array<any>, abortController: AbortController) => {
const newAttachments = await Promise.all(
items.map(async (item) => {
if (!item.bytesContentFamily) {
// if (!item.bytesContentFamily) {
const { data } = await getAttachmentByUuid(item.uuid, abortController);
item.bytesContentFamily = data.bytesContentFamily;
}

//}
return {
...createGalleryEntry(item),
customOverlay: item.comment && (
Original file line number Diff line number Diff line change
@@ -9,8 +9,8 @@ export function getAttachmentByUuid(attachmentUuid: string, abortController: Abo
}

export function getAttachments(patientUuid: string, includeEncounterless: boolean, abortController: AbortController) {
return openmrsFetch(`${attachmentUrl}?patient=${patientUuid}&includeEncounterless=${includeEncounterless}`, {
signal: abortController.signal,
return openmrsFetch(`${attachmentUrl}?patient=${patientUuid}&includeEncounterless=${includeEncounterless}&v=full`, {
signal: abortController.signal,
});
}

Original file line number Diff line number Diff line change
@@ -47,7 +47,7 @@ export function DashboardView({ dashboard, patientUuid, patient }: DashboardView

const wrapItem = React.useCallback(
(slot: React.ReactNode, extension: ExtensionData) => {
const { columnSpan = 1 } = dashboardMeta[getExtensionNameFromId(extension.extensionId)];
const { columnSpan = 2 } = dashboardMeta[getExtensionNameFromId(extension.extensionId)];
return <div style={{ gridColumn: `span ${columnSpan}` }}>{slot}</div>;
},
[dashboardMeta],
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React from 'react';
import Add16 from '@carbon/icons-react/es/add/16';
import Edit16 from '@carbon/icons-react/es/edit/16';
import filter from 'lodash-es/filter';
import includes from 'lodash-es/includes';
import map from 'lodash-es/map';
@@ -59,6 +60,10 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
key: 'status',
header: t('status', 'Status'),
},
{
key: 'actions',
header: t('actions', 'Actions'),
},
],
[t],
);
@@ -73,6 +78,7 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
status: program.dateCompleted
? `${t('completedOn', 'Completed On')} ${formatDate(new Date(program.dateCompleted))}`
: t('active', 'Active'),
actions: <ProgramEditButton programEnrollmentId={program.uuid} />
};
});
}, [enrollments, t]);
@@ -143,4 +149,21 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
return <EmptyState displayText={displayText} headerTitle={headerTitle} launchForm={launchProgramsForm} />;
};

export default ProgramsDetailedSummary;
interface ProgramEditButtonProps {
programEnrollmentId: string
}

function ProgramEditButton ({programEnrollmentId}: ProgramEditButtonProps){

const launchEditProgramsForm = React.useCallback(() => launchPatientWorkspace('programs-form-workspace', {programEnrollmentId}), []);

return <Button
kind="ghost"
renderIcon={Edit16}
iconDescription="Edit Program"
onClick={launchEditProgramsForm}
/>
}


export default ProgramsDetailedSummary;
Original file line number Diff line number Diff line change
@@ -32,7 +32,11 @@ import {
import { DefaultWorkspaceProps } from '@openmrs/esm-patient-common-lib';
import styles from './programs-form.scss';

const ProgramsForm: React.FC<DefaultWorkspaceProps> = ({ closeWorkspace, patientUuid }) => {
interface ProgramsFormProps extends DefaultWorkspaceProps {
programEnrollmentId?: string
}

const ProgramsForm: React.FC<ProgramsFormProps> = ({ closeWorkspace, patientUuid, programEnrollmentId }) => {
const { t } = useTranslation();
const isTablet = useLayoutType() === 'tablet';
const session = useSession();
@@ -41,16 +45,17 @@ const ProgramsForm: React.FC<DefaultWorkspaceProps> = ({ closeWorkspace, patient

const { data: availablePrograms } = useAvailablePrograms();
const { data: enrollments } = useEnrollments(patientUuid);
const currentEnrollment = programEnrollmentId && enrollments.filter((e) => e.uuid == programEnrollmentId ) [0];

const eligiblePrograms = filter(
const eligiblePrograms = currentEnrollment ? [currentEnrollment.program] : filter(
availablePrograms,
(program) => !includes(map(enrollments, 'program.uuid'), program.uuid),
);

const [completionDate, setCompletionDate] = React.useState(null);
const [enrollmentDate, setEnrollmentDate] = React.useState(new Date());
const [selectedProgram, setSelectedProgram] = React.useState<string>('');
const [userLocation, setUserLocation] = React.useState('');
console.log("ppppp" , currentEnrollment, eligiblePrograms)
const [completionDate, setCompletionDate] = React.useState(currentEnrollment?.dateCompleted);
const [enrollmentDate, setEnrollmentDate] = React.useState(currentEnrollment?.dateEnrolled ?? new Date());
const [selectedProgram, setSelectedProgram] = React.useState(currentEnrollment?.program.uuid ?? '');
const [userLocation, setUserLocation] = React.useState(currentEnrollment?.location.uuid ?? '');

if (!userLocation && session?.sessionLocation?.uuid) {
setUserLocation(session?.sessionLocation?.uuid);