HUD-Data-Lab / Data.Exchange.and.Interoperability

Repository for Homeless Management Information System (HMIS) development and management of products to support data exchange and interoperability
GNU General Public License v3.0
2 stars 5 forks source link

List of projects #1

Closed eanders closed 1 month ago

eanders commented 4 months ago

https://github.com/HUD-Data-Lab/Data.Exchange.and.Interoperability/blob/0a60d2ae6eca8cd040f89051eb227712c6954eee/hmis-openapi-spec.yml#L108

Often it is helpful to be able request a list of name-id pairs of projects since you may not know the ProjectID of a project in someone else's system. (Same goes for organization).

kaungst commented 3 months ago

are you thinking of something like /projects?name=${projectName}?

eanders commented 3 months ago

@kaungst yes, something like that or even simply /projects which could return the project name ID pairs.

kiadso commented 3 months ago

Hi- I'm not a vendor, but I work with HMIS data as a TA provider where we accept exports from around the US for the VA (SSVF data) into a data warehouse. In SSVF reporting, we use ImplementationID plus ProjectID (or any number of other IDs). The ImplementationID is expected to be the same across time for each HMIS implementation/database. In using it since the Data Standards change, I've found there's only one very small vendor not doing this correctly (so I just hard-coded the fix for them.) Thanks, Genelle

Grant-ICF commented 1 month ago

We added the following endpoint to address this:

  /projectsummary:
    get: 
      tags: 
        -  ProjectSummary
      summary: Get a list of Projects by partial Project Information
      description: |
        Get a list of Projects by partial Project Information. 
      parameters: 
        - in: query
          name: ProjectSummaryQuery
          schema: 
            $ref: "#/components/schemas/ProjectSummaryQuery"
      responses:
        '200':
          description: A list of proejcts that match the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ProjectSummaryResponse"
        '404':
          description: Project not found
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request generated an error and could not process.

This allows the query to use OrganizationID, OrgnaizationName, ProjectID, ProjectName, ProjectCommonName, OperatingStartDate, or OperatingEndDate to help narrow the search of projectIDs. We felt just pulling all ProjectIDs out of a system may not be the most useful endpoint. So we created the endpoint to return a subset based on the search query. The return response will include the ProjectID, ProjectName, ProjectCommonName, OperatingStartDate, OperatingEndDate, and OrganizationID.

We created an endpoint for organization to as well.

  /organizationsummary:
    get: 
      tags: 
        -  OrganizationSummary
      summary: Get a list of Organizations by partial Organization name
      description: |
        Get a list of Organizations by partial Organization name
      parameters: 
        - in: query
          name: OrganizationSummaryQuery
          schema: 
            $ref: "#/components/schemas/OrganizationSummaryQuery"
      responses:
        '200':
          description: A list of Organizations that match the query
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/OrganizationSummaryResponse"
        '404':
          description: Organizaiton not found
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request generated an error and could not process.