UNPKG

dhis2-mcp-server

Version:

A Model Context Protocol server providing 108 tools for DHIS2 development, including code generators, debugging helpers, and documentation access for web and Android app development.

919 lines 26.8 kB
export interface DHIS2Config { baseUrl: string; username: string; password: string; } export interface SystemInfo { version: string; revision: string; buildTime: string; serverDate: string; instanceName: string; } export interface DataElement { id: string; name: string; displayName: string; shortName: string; code?: string; valueType: 'NUMBER' | 'INTEGER' | 'POSITIVE_INT' | 'NEGATIVE_INT' | 'ZERO_OR_POSITIVE_INT' | 'TEXT' | 'LONG_TEXT' | 'LETTER' | 'PHONE_NUMBER' | 'EMAIL' | 'BOOLEAN' | 'TRUE_ONLY' | 'DATE' | 'DATETIME' | 'TIME' | 'URL' | 'FILE_RESOURCE' | 'IMAGE' | 'COORDINATE' | 'ORGANISATION_UNIT' | 'REFERENCE' | 'AGE' | 'USERNAME' | 'TRACKER_ASSOCIATE'; domainType: 'AGGREGATE' | 'TRACKER'; aggregationType: 'SUM' | 'AVERAGE' | 'AVERAGE_SUM_ORG_UNIT' | 'COUNT' | 'STDDEV' | 'VARIANCE' | 'MIN' | 'MAX' | 'NONE' | 'CUSTOM' | 'DEFAULT'; categoryCombo?: CategoryCombo; zeroIsSignificant?: boolean; url?: string; description?: string; } export interface OrganisationUnit { id: string; name: string; displayName: string; shortName: string; code?: string; level: number; path: string; } export interface Category { id: string; name: string; displayName: string; shortName: string; code?: string; dataDimension: boolean; dataDimensionType: 'DISAGGREGATION' | 'ATTRIBUTE'; categoryOptions: CategoryOption[]; } export interface CategoryOption { id: string; name: string; displayName: string; shortName: string; code?: string; startDate?: string; endDate?: string; } export interface CategoryCombo { id: string; name: string; displayName: string; shortName: string; code?: string; dataDimensionType: 'DISAGGREGATION' | 'ATTRIBUTE'; categories: Category[]; categoryOptionCombos?: CategoryOptionCombo[]; } export interface CategoryOptionCombo { id: string; name: string; displayName: string; code?: string; categoryOptions: CategoryOption[]; categoryCombo: CategoryCombo; } export interface DataSet { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; periodType: 'Daily' | 'Weekly' | 'Monthly' | 'Quarterly' | 'SixMonthly' | 'Yearly' | 'FinancialApril' | 'FinancialJuly' | 'FinancialOct'; categoryCombo?: CategoryCombo; dataSetElements: DataSetElement[]; organisationUnits: OrganisationUnit[]; sections?: Section[]; compulsoryDataElementOperands?: DataElementOperand[]; expiryDays?: number; timelyDays?: number; openFuturePeriods?: number; dataEntryForm?: DataEntryForm; } export interface DataSetElement { dataElement: DataElement; categoryCombo?: CategoryCombo; } export interface Section { id: string; name: string; displayName: string; sortOrder: number; dataElements: DataElement[]; categoryCombo?: CategoryCombo; greyedFields?: DataElementOperand[]; } export interface DataElementOperand { dataElement: DataElement; categoryOptionCombo?: CategoryOptionCombo; } export interface DataEntryForm { id: string; name: string; htmlCode: string; format: number; style: 'COMFORTABLE' | 'NORMAL' | 'COMPACT' | 'NONE'; } export interface OrganisationUnitGroup { id: string; name: string; displayName: string; shortName: string; code?: string; organisationUnits: OrganisationUnit[]; symbol?: string; } export interface OrganisationUnitGroupSet { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; compulsory: boolean; dataDimension: boolean; organisationUnitGroups: OrganisationUnitGroup[]; } export interface DataValue { dataElement: string; period: string; orgUnit: string; categoryOptionCombo?: string; attributeOptionCombo?: string; value: string; storedBy?: string; created?: string; lastUpdated?: string; comment?: string; followup?: boolean; } export interface ValidationRule { id: string; name: string; displayName: string; description?: string; instruction?: string; importance: 'HIGH' | 'MEDIUM' | 'LOW'; operator: 'equal_to' | 'not_equal_to' | 'greater_than' | 'greater_than_or_equal_to' | 'less_than' | 'less_than_or_equal_to' | 'compulsory_pair' | 'exclusive_pair'; leftSide: Expression; rightSide: Expression; periodType: string; organisationUnitLevels: number[]; } export interface Expression { expression: string; description?: string; missingValueStrategy: 'SKIP_IF_ANY_VALUE_MISSING' | 'SKIP_IF_ALL_VALUES_MISSING' | 'NEVER_SKIP'; } export interface ValidationResult { validationRule: ValidationRule; period: string; organisationUnit: OrganisationUnit; dayInPeriod: number; leftSideValue: number; rightSideValue: number; } export interface Program { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; version?: number; programType: 'WITH_REGISTRATION' | 'WITHOUT_REGISTRATION'; trackedEntityType?: TrackedEntityType; programStages: ProgramStage[]; programRules?: ProgramRule[]; programIndicators?: ProgramIndicator[]; organisationUnits: OrganisationUnit[]; categoryCombo?: CategoryCombo; useFirstStageDuringRegistration?: boolean; displayFrontPageList?: boolean; onlyEnrollOnce?: boolean; selectEnrollmentDatesInFuture?: boolean; selectIncidentDatesInFuture?: boolean; incidentDateLabel?: string; enrollmentDateLabel?: string; } export interface TrackedEntityType { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; trackedEntityTypeAttributes: TrackedEntityTypeAttribute[]; allowAuditLog?: boolean; minAttributesRequiredToSearch?: number; maxTeiCountToReturn?: number; } export interface TrackedEntityTypeAttribute { id: string; trackedEntityAttribute: TrackedEntityAttribute; displayInList: boolean; mandatory: boolean; searchable: boolean; sortOrder: number; } export interface TrackedEntityAttribute { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; valueType: string; unique: boolean; inherit: boolean; optionSet?: OptionSet; pattern?: string; confidential?: boolean; } export interface OptionSet { id: string; name: string; displayName: string; code?: string; options: Option[]; valueType: string; } export interface Option { id: string; name: string; displayName: string; code: string; sortOrder: number; } export interface ProgramStage { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; program: Program; sortOrder: number; repeatable: boolean; minDaysFromStart: number; generatedByEnrollmentDate: boolean; blockEntryForm: boolean; reportDateToUse: string; programStageDataElements: ProgramStageDataElement[]; programStageSections?: ProgramStageSection[]; validationStrategy: 'ON_COMPLETE' | 'ON_UPDATE_AND_INSERT'; executionDateLabel?: string; dueDateLabel?: string; allowGenerateNextVisit: boolean; openAfterEnrollment: boolean; remindCompleted: boolean; } export interface ProgramStageDataElement { id: string; dataElement: DataElement; programStage: ProgramStage; compulsory: boolean; allowProvidedElsewhere: boolean; sortOrder: number; displayInReports: boolean; allowFutureDate: boolean; skipSynchronization: boolean; } export interface ProgramStageSection { id: string; name: string; displayName: string; sortOrder: number; programStage: ProgramStage; dataElements: DataElement[]; programIndicators?: ProgramIndicator[]; } export interface ProgramRule { id: string; name: string; displayName: string; description?: string; program: Program; programStage?: ProgramStage; condition: string; priority?: number; programRuleActions: ProgramRuleAction[]; } export interface ProgramRuleAction { id: string; programRuleActionType: 'DISPLAYTEXT' | 'DISPLAYKEYVALUEPAIR' | 'HIDEFIELD' | 'HIDESECTION' | 'HIDEPROGRAM' | 'ASSIGN' | 'SHOWWARNING' | 'SHOWERROR' | 'WARNINGONFIELDINTERACTION' | 'ERRORONFIELDINTERACTION' | 'CREATEEVENT' | 'SETMANDATORYFIELD' | 'SENDMESSAGE' | 'SCHEDULEMESSAGE'; dataElement?: DataElement; trackedEntityAttribute?: TrackedEntityAttribute; programStageSection?: ProgramStageSection; programStage?: ProgramStage; data?: string; content?: string; location?: string; } export interface ProgramRuleVariable { id: string; name: string; displayName: string; program: Program; programStage?: ProgramStage; dataElement?: DataElement; trackedEntityAttribute?: TrackedEntityAttribute; sourceType: 'DATAELEMENT_NEWEST_EVENT_PROGRAM_STAGE' | 'DATAELEMENT_NEWEST_EVENT_PROGRAM' | 'DATAELEMENT_CURRENT_EVENT' | 'DATAELEMENT_PREVIOUS_EVENT' | 'CALCULATED_VALUE' | 'TEI_ATTRIBUTE'; } export interface ProgramIndicator { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; program: Program; expression: string; filter?: string; aggregationType: string; analyticsType: 'EVENT' | 'ENROLLMENT'; displayInForm: boolean; } export interface TrackedEntityInstance { id: string; trackedEntityType: string; orgUnit: string; attributes: TrackedEntityAttributeValue[]; enrollments?: Enrollment[]; relationships?: Relationship[]; inactive: boolean; deleted: boolean; potentialDuplicate: boolean; created: string; lastUpdated: string; } export interface TrackedEntityAttributeValue { attribute: string; value: string; displayValue?: string; created?: string; lastUpdated?: string; storedBy?: string; } export interface Enrollment { id: string; trackedEntityInstance: string; program: string; orgUnit: string; enrollmentDate: string; incidentDate: string; status: 'ACTIVE' | 'COMPLETED' | 'CANCELLED'; events?: Event[]; attributes?: TrackedEntityAttributeValue[]; notes?: Note[]; followup: boolean; deleted: boolean; created: string; lastUpdated: string; } export interface Event { id: string; enrollment?: string; program: string; programStage: string; orgUnit: string; trackedEntityInstance?: string; status: 'ACTIVE' | 'COMPLETED' | 'VISITED' | 'SCHEDULE' | 'OVERDUE' | 'SKIPPED'; eventDate?: string; dueDate?: string; coordinate?: Coordinate; dataValues: DataValue[]; notes?: Note[]; followup: boolean; deleted: boolean; created: string; lastUpdated: string; } export interface Note { id: string; noteText: string; storedDate: string; storedBy: string; } export interface Coordinate { latitude: number; longitude: number; } export interface Relationship { id: string; relationshipType: RelationshipType; from: RelationshipItem; to: RelationshipItem; created: string; lastUpdated: string; } export interface RelationshipType { id: string; name: string; displayName: string; fromToName: string; toFromName: string; bidirectional: boolean; } export interface RelationshipItem { trackedEntityInstance?: TrackedEntityInstance; enrollment?: Enrollment; event?: Event; } export interface Dashboard { id: string; name: string; displayName: string; description?: string; dashboardItems: DashboardItem[]; created: string; lastUpdated: string; user: User; publicAccess: string; externalAccess: boolean; userAccesses: UserAccess[]; userGroupAccesses: UserGroupAccess[]; } export interface DashboardItem { id: string; type: 'VISUALIZATION' | 'MAP' | 'CHART' | 'REPORT_TABLE' | 'EVENT_CHART' | 'EVENT_REPORT' | 'TEXT' | 'MESSAGES' | 'RESOURCES' | 'REPORTS' | 'USERS' | 'REPORT_TABLES' | 'CHARTS' | 'MAPS'; x: number; y: number; width: number; height: number; visualization?: Visualization; map?: Map; reportTable?: ReportTable; chart?: Chart; text?: string; } export interface Visualization { id: string; name: string; displayName: string; type: 'COLUMN' | 'STACKED_COLUMN' | 'BAR' | 'STACKED_BAR' | 'LINE' | 'AREA' | 'STACKED_AREA' | 'PIE' | 'RADAR' | 'GAUGE' | 'YEAR_OVER_YEAR_LINE' | 'YEAR_OVER_YEAR_COLUMN' | 'SINGLE_VALUE' | 'PIVOT_TABLE' | 'SCATTER' | 'BUBBLE'; dataDimensionItems: DataDimensionItem[]; columns: DimensionItem[]; rows: DimensionItem[]; filters: DimensionItem[]; organisationUnits: OrganisationUnit[]; periods: Period[]; created: string; lastUpdated: string; } export interface DataDimensionItem { id: string; dataDimensionItemType: 'DATA_ELEMENT' | 'DATA_ELEMENT_OPERAND' | 'INDICATOR' | 'REPORTING_RATE' | 'PROGRAM_DATA_ELEMENT' | 'PROGRAM_ATTRIBUTE' | 'PROGRAM_INDICATOR'; dataElement?: DataElement; indicator?: Indicator; programDataElement?: ProgramDataElement; programAttribute?: ProgramAttribute; programIndicator?: ProgramIndicator; } export interface DimensionItem { id: string; name: string; dimensionType: string; items?: DimensionItem[]; } export interface Period { id: string; name: string; displayName: string; periodType: string; startDate: string; endDate: string; } export interface Indicator { id: string; name: string; displayName: string; shortName: string; code?: string; description?: string; numerator: string; denominator: string; indicatorType: IndicatorType; decimals?: number; annualized: boolean; } export interface IndicatorType { id: string; name: string; displayName: string; factor: number; number: boolean; } export interface Map { id: string; name: string; displayName: string; mapViews: MapView[]; } export interface MapView { id: string; name: string; layer: string; organisationUnitGroupSet?: OrganisationUnitGroupSet; organisationUnits: OrganisationUnit[]; periods: Period[]; } export interface ReportTable { id: string; name: string; displayName: string; columns: DimensionItem[]; rows: DimensionItem[]; filters: DimensionItem[]; } export interface Chart { id: string; name: string; displayName: string; type: string; series: DimensionItem[]; category: DimensionItem[]; filter: DimensionItem[]; } export interface Report { id: string; name: string; displayName: string; type: 'JASPER_REPORT_TABLE' | 'JASPER_JDBC'; designContent: string; cacheStrategy: 'NO_CACHE' | 'CACHE_1_HOUR' | 'CACHE_6AM_TOMORROW' | 'CACHE_TWO_WEEKS'; } export interface User { id: string; username: string; firstName: string; surname: string; email?: string; phoneNumber?: string; organisationUnits: OrganisationUnit[]; userCredentials: UserCredentials; } export interface UserCredentials { id: string; username: string; disabled: boolean; twoFA: boolean; externalAuth: boolean; userRoles: UserRole[]; } export interface UserRole { id: string; name: string; displayName: string; description?: string; authorities: string[]; } export interface UserAccess { id: string; displayName: string; access: string; } export interface UserGroupAccess { id: string; displayName: string; access: string; } export interface ProgramDataElement { id: string; dataElement: DataElement; program: Program; } export interface ProgramAttribute { id: string; trackedEntityAttribute: TrackedEntityAttribute; program: Program; } export interface AnalyticsQuery { dimension?: string; filter?: string; startDate?: string; endDate?: string; aggregationType?: string; measureCriteria?: string; preAggregationMeasureCriteria?: string; skipMeta?: boolean; skipData?: boolean; skipRounding?: boolean; hierarchyMeta?: boolean; ignoreLimit?: boolean; tableLayout?: boolean; columns?: string; rows?: string; includeNumDen?: boolean; } export declare class DHIS2Client { private client; private baseUrl; constructor(baseUrl: string, username: string, password: string); get baseURL(): string; testConnection(): Promise<boolean>; getCurrentUser(): Promise<any>; getSystemInfo(): Promise<SystemInfo>; getDataElements(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ dataElements: DataElement[]; }>; getOrganisationUnits(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ organisationUnits: OrganisationUnit[]; }>; getAnalytics(query: AnalyticsQuery): Promise<any>; createDataElement(dataElement: Partial<DataElement>): Promise<any>; updateDataElement(id: string, dataElement: Partial<DataElement>): Promise<any>; deleteDataElement(id: string): Promise<any>; createDataValue(dataValue: Partial<DataValue>): Promise<any>; getDataSets(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ dataSets: DataSet[]; }>; createDataSet(dataSet: Partial<DataSet>): Promise<any>; updateDataSet(id: string, dataSet: Partial<DataSet>): Promise<any>; getCategories(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ categories: Category[]; }>; createCategory(category: Partial<Category>): Promise<any>; getCategoryOptions(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ categoryOptions: CategoryOption[]; }>; createCategoryOption(categoryOption: Partial<CategoryOption>): Promise<any>; getCategoryCombos(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ categoryCombos: CategoryCombo[]; }>; createCategoryCombo(categoryCombo: Partial<CategoryCombo>): Promise<any>; getCategoryOptionCombos(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ categoryOptionCombos: CategoryOptionCombo[]; }>; getOrganisationUnitGroups(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ organisationUnitGroups: OrganisationUnitGroup[]; }>; createOrganisationUnitGroup(orgUnitGroup: Partial<OrganisationUnitGroup>): Promise<any>; getValidationRules(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ validationRules: ValidationRule[]; }>; createValidationRule(validationRule: Partial<ValidationRule>): Promise<any>; runValidation(params: { startDate: string; endDate: string; organisationUnits: string[]; validationRuleGroups?: string[]; sendNotifications?: boolean; }): Promise<{ validationResults: ValidationResult[]; }>; getDataValues(params: { dataSet?: string; dataElement?: string[]; period?: string[]; startDate?: string; endDate?: string; orgUnit?: string[]; children?: boolean; categoryOptionCombo?: string[]; attributeOptionCombo?: string[]; includeDeleted?: boolean; lastUpdated?: string; lastUpdatedDuration?: string; limit?: number; }): Promise<{ dataValues: DataValue[]; }>; bulkImportDataValues(dataValues: DataValue[]): Promise<any>; deleteDataValue(params: { dataElement: string; period: string; orgUnit: string; categoryOptionCombo?: string; attributeOptionCombo?: string; }): Promise<any>; getPrograms(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ programs: Program[]; }>; createProgram(program: Partial<Program>): Promise<any>; updateProgram(id: string, program: Partial<Program>): Promise<any>; getTrackedEntityTypes(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ trackedEntityTypes: TrackedEntityType[]; }>; createTrackedEntityType(trackedEntityType: Partial<TrackedEntityType>): Promise<any>; getTrackedEntityAttributes(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ trackedEntityAttributes: TrackedEntityAttribute[]; }>; createTrackedEntityAttribute(attribute: Partial<TrackedEntityAttribute>): Promise<any>; getProgramStages(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ programStages: ProgramStage[]; }>; createProgramStage(programStage: Partial<ProgramStage>): Promise<any>; getProgramRules(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ programRules: ProgramRule[]; }>; createProgramRule(programRule: Partial<ProgramRule>): Promise<any>; getTrackedEntityInstances(params: { trackedEntityType?: string; program?: string; orgUnit?: string; orgUnitMode?: 'SELECTED' | 'CHILDREN' | 'DESCENDANTS' | 'ACCESSIBLE'; query?: string; attribute?: string[]; filter?: string[]; ou?: string[]; ouMode?: string; programStartDate?: string; programEndDate?: string; programStatus?: 'ACTIVE' | 'COMPLETED' | 'CANCELLED'; followUp?: boolean; eventStartDate?: string; eventEndDate?: string; eventStatus?: 'ACTIVE' | 'COMPLETED' | 'VISITED' | 'SCHEDULE' | 'OVERDUE' | 'SKIPPED'; includeDeleted?: boolean; includeAllAttributes?: boolean; fields?: string; page?: number; pageSize?: number; }): Promise<{ trackedEntityInstances: TrackedEntityInstance[]; }>; createTrackedEntityInstance(tei: Partial<TrackedEntityInstance>): Promise<any>; updateTrackedEntityInstance(id: string, tei: Partial<TrackedEntityInstance>): Promise<any>; getEnrollments(params: { program?: string; trackedEntityInstance?: string; orgUnit?: string; orgUnitMode?: 'SELECTED' | 'CHILDREN' | 'DESCENDANTS' | 'ACCESSIBLE'; programStartDate?: string; programEndDate?: string; programStatus?: 'ACTIVE' | 'COMPLETED' | 'CANCELLED'; followUp?: boolean; includeDeleted?: boolean; fields?: string; page?: number; pageSize?: number; }): Promise<{ enrollments: Enrollment[]; }>; createEnrollment(enrollment: Partial<Enrollment>): Promise<any>; updateEnrollment(id: string, enrollment: Partial<Enrollment>): Promise<any>; getEvents(params: { program?: string; programStage?: string; enrollment?: string; trackedEntityInstance?: string; orgUnit?: string; orgUnitMode?: 'SELECTED' | 'CHILDREN' | 'DESCENDANTS' | 'ACCESSIBLE'; startDate?: string; endDate?: string; status?: 'ACTIVE' | 'COMPLETED' | 'VISITED' | 'SCHEDULE' | 'OVERDUE' | 'SKIPPED'; followUp?: boolean; includeDeleted?: boolean; fields?: string; page?: number; pageSize?: number; order?: string; }): Promise<{ events: Event[]; }>; createEvent(event: Partial<Event>): Promise<any>; updateEvent(id: string, event: Partial<Event>): Promise<any>; bulkImportEvents(events: Event[]): Promise<any>; getEventAnalytics(params: { program: string; stage?: string; startDate: string; endDate: string; orgUnit: string; dimension?: string[]; filter?: string[]; value?: string; outputType?: 'EVENT' | 'ENROLLMENT' | 'TRACKED_ENTITY_INSTANCE'; coordinatesOnly?: boolean; page?: number; pageSize?: number; }): Promise<any>; getEnrollmentAnalytics(params: { program: string; startDate: string; endDate: string; orgUnit: string; dimension?: string[]; filter?: string[]; page?: number; pageSize?: number; }): Promise<any>; getDataStatistics(): Promise<any>; getDashboards(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ dashboards: Dashboard[]; }>; createDashboard(dashboard: Partial<Dashboard>): Promise<any>; getVisualizations(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ visualizations: Visualization[]; }>; createVisualization(visualization: Partial<Visualization>): Promise<any>; getReports(params?: { fields?: string; filter?: string; paging?: boolean; pageSize?: number; }): Promise<{ reports: Report[]; }>; generateReport(reportId: string, params?: { organisationUnit?: string; period?: string; date?: string; }): Promise<any>; createDataStoreNamespace(namespace: string, options?: { description?: string; sharing?: any; initialKeys?: Array<{ key: string; value: any; }>; }): Promise<any>; manageDataStoreKey(params: { operation: 'create' | 'read' | 'update' | 'delete' | 'list'; namespace: string; key?: string; value?: any; encrypt?: boolean; }): Promise<any>; private encryptValue; } //# sourceMappingURL=dhis2-client.d.ts.map