FY24 SPM (System Performance Measure) Export Process
Gain insights on how to effectively manage and improve the system performance measure export process in fiscal year 2024, ensuring optimal results and operational efficiency.
Table of Contents
The document is structured with valuable information presented in the following manner:
- FormID/MenuGroup/MenuOption Information
-
CSV Integrations
- IntegrationID = 198: HMIS SPM 2024
- IntegrationID = 201: HMIS SPM 2024 DQ Detail Export
- IntegrationID = 200: HMIS SPM 2024 Summary Export
- Appendix A
FormID/MenuGroup/MenuOption Information
The 2024 SPM Export Process is run through Report Launch Form (FormID 5107). This Form is a part of HMIS Reports (Menu Group). This Menu Group is located at the Report workspace for all the Baseline HMIS * Workgroups. One such instance of finding this Form to run the export is:
HMIS: Core* (Workgroup) -> Reports (Workspace) -> HMIS REPORTS (Menu Group) -> System Performance Measure (FY24)
CSV Integrations
SPM Export Process comprises of three Integrations, each having its own set of Stored Procedures and Parameters. The three integrations are:
-
IntegrationID = 198: HMIS SPM 2024 Export
It’s the First integration that runs when the Export is initiated from the Report Launch Form. Following is the list of Stored Procedures it runs in the order they are mentioned. Referenced from table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT* FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (198) ORDER BY IntegrationID, ExecutionOrder;
ProcID |
IntegrationID |
ExecutionOrder |
StoredProcName |
4480 |
198 |
0 |
SPM_Global_Setup |
4456 |
198 |
1 |
HMIS_2024_SysPerfMeasure1_1A |
4457 |
198 |
2 |
HMIS_2024_SysPerfMeasure1_1B |
4458 |
198 |
3 |
HMIS_2024_SysPerfMeasure1_2A |
4459 |
198 |
4 |
HMIS_2024_SysPerfMeasure1_2B |
4460 |
198 |
5 |
HMIS_2024_SysPerfMeasure2ab |
4461 |
198 |
6 |
HMIS_2024_SysPerfMeasure3 |
4462 |
198 |
7 |
HMIS_2024_SysPerfMeasure4_123 |
4463 |
198 |
8 |
HMIS_2024_SysPerfMeasure4_456 |
4464 |
198 |
9 |
HMIS_2024_SysPerfMeasure5_1 |
4465 |
198 |
10 |
HMIS_2024_SysPerfMeasure5_2 |
4466 |
198 |
11 |
HMIS_2024_SysPerfMeasure6ab |
4467 |
198 |
12 |
HMIS_2024_SysPerfMeasure6c1 |
4468 |
198 |
13 |
HMIS_2024_SysPerfMeasure6c2 |
4469 |
198 |
14 |
HMIS_2024_SysPerfMeasure7_A |
4470 |
198 |
15 |
HMIS_2024_SysPerfMeasure7_B |
4471 |
198 |
16 |
HMIS_2024_SysPerfMeasure7b2 |
4481 |
198 |
99 |
SPMCreateExportTask |
ProcID: Shows the ID of the Stored Procedure; Primary Key for the table dbo.CSVStoredProcedures.
IntegrationID: Shows the linked Integration to the ProcID. The IntegrationID is the Primary Key for the table dbo.CSVIntegration and this table stores the Integration setup information.
ExecutionOrder: This tells you about the order in which the Integration runs the Stored Procedures and it runs in the ascending order.
StoredProcName: Name of the Stored Procedure. Please note the schema for all these Stored Procedures is ‘report’.
The Stored Procedures named ‘HMIS_2024_SysPerfMeasure*’ are responsible for the exporting of the Measure details it’s named after.
The Stored Procedure named SPM_Global_Setup insert the report parameters into the table report.SPMRun and the values inserted for the specific **TaskID are used to extract the correct values from the result storing tables (Table names mentioned under the column ‘ResultStorageTable’) during the last step of the SPM Export Process.
The Stored Procedure SPMCreateExportTask is responsible for using the parameters from the current running Task and Insert a record into the table dbo.AsynchronousTask which will run the next IntegrationID required in the Export Process. In this case, after running the IntgrationID = 198, this procedure is responsible for inserting a record in the table dbo.AsynchronousTask to run the IntegrationID = 201 (HMIS SPM 2024 DQ Detail Export). This procedure runs as the last step of the IntegrationID and hence it’s ExecutionOrder is 99.
**TaskID is generated when an export task is started from the Report Launch Form, and the concerned tables are : dbo.AsynchronousTask (when a export is initiated, a record in first inserted into this table, first place that generates the TaskID) Inserting a record into this.
Following Table shows the Stored Procedures, the CSV file being generated as the part of the export and the resulting tables. Referenced table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT * FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (198);
StoredProcName |
CSVFileName |
Result Storage Schema |
ResultStorageTable |
HMIS_2024_SysPerfMeasure1_1A |
Measure1_1A |
report |
SPM_2024_Results_Measure1_1A |
HMIS_2024_SysPerfMeasure1_1B |
Measure1_1B |
report |
SPM_2024_Results_Measure1_1B |
HMIS_2024_SysPerfMeasure1_2A |
Measure1_2A |
report |
SPM_2024_Results_Measure1_2A |
HMIS_2024_SysPerfMeasure1_2B |
Measure1_2B |
report |
SPM_2024_Results_Measure1_2B |
HMIS_2024_SysPerfMeasure2ab |
Measure2_AB |
report |
SPM_2024_Results_Measure2_AB |
HMIS_2024_SysPerfMeasure3 |
Measure3 |
report |
SPM_2024_Results_Measure3 |
HMIS_2024_SysPerfMeasure4_123 |
Measure4_123 |
report |
SPM_2024_Results_Measure4_123 |
HMIS_2024_SysPerfMeasure4_456 |
Measure4_456 |
report |
SPM_2024_Results_Measure4_456 |
HMIS_2024_SysPerfMeasure5_1 |
Measure5_1 |
report |
SPM_2024_Results_Measure5_1 |
HMIS_2024_SysPerfMeasure5_2 |
Measure5_2 |
report |
SPM_2024_Results_Measure5_2 |
HMIS_2024_SysPerfMeasure6ab |
Measure6_AB |
report |
SPM_2024_Results_Measure6_AB |
HMIS_2024_SysPerfMeasure6c1 |
Measure6_C1 |
report |
SPM_2024_Results_Measure6_C1 |
HMIS_2024_SysPerfMeasure6c2 |
Measure6_C2 |
report |
SPM_2024_Results_Measure6_C2 |
HMIS_2024_SysPerfMeasure7_A |
Measure7_A1 |
report |
SPM_2024_Results_Measure7_A1 |
HMIS_2024_SysPerfMeasure7_B |
Measure7_B1 |
report |
SPM_2024_Results_Measure7_B1 |
HMIS_2024_SysPerfMeasure7b2 |
Measure7_B2 |
report |
SPM_2024_Results_Measure7_B2 |
SPM_Global_Setup |
ExportSetup |
NULL |
NULL |
SPMCreateExportTask |
ExportTaskCreated |
NULL |
NULL |
StoredProcName: Name of the Stored Procedure. Please note the schema for all these Stored Procedures is ‘report’.
CSVFileName: The name of the CSV File storing the data from running the respective Stored Procedure and will be available to view the results as the part of the Export Zip folder from running this integration. Please Note that CSV Files ExportSetup and ExportTaskCreated will be blank files because it’s part of the process and has nothing to do with the SPM output.
ResultStorageSchema: This represents the schema of the resulting tables used to store the output of the respective Stored Procedure.
ResultStorageTable: This represents the table name of the resulting tables used to store the output of the respective Stored Procedure. Please note that the Stored Procedures SPM_Global_Setup and SPMCreateExportTask doesn’t have a resulting table to store the results because first one is responsible for storing the report parameters and later one is responsible for executing the next CSV Integration so no output is required to be exported in CSV.
Once this Integration is successfully ran, the Export file will be generated and named as “hmis spm 2024 export_<datetime>_taskid_<tasked value>” and the Zip folder will be located for download at “Files on the Server” Tab located on the Top left of the Report Workspace in the CT 20 application.
2. IntegrationID = 201: HMIS SPM 2024 DQ Detail Export
It’s the second integration that runs in the SPM export Process. This Integration has three Stored Procedures, following is the list those three. Referenced from table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT * FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (201) ORDER BY IntegrationID, ExecutionOrder;
ProcID |
IntegrationID |
ExecutionOrder |
StoredProcName |
4473 |
201 |
1 |
SPM_2024_DQ_1 |
4474 |
201 |
2 |
SPM_2024_DQ_4 |
4482 |
201 |
99 |
SPMCreateExportTask |
ProcID: Shows the ID of the Stored Procedure; Primary Key for the table dbo.CSVStoredProcedures
IntegrationID: Shows the linked Integration to the ProcID. The IntegrationID is the Primary Key for the table dbo.CSVIntegration and this table stores the Integration setup information.
ExecutionOrder: This tells you about the order in which the Integration runs the Stored Procedures and it runs in the ascending order.
StoredProcName: Name of the Stored Procedure. Please note the schema for all these Stored Procedures is ‘report’.
The Stored Procedure SPMCreateExportTask in this Integration is responsible for using the parameters from the current running Task (generated by the previous Task) and Insert a record into the table dbo.AsynchronousTask which will run the next IntegrationID required in the Export Process. In this case, after running the IntgrationID = 201, this procedure is responsible for inserting a record in the table dbo.AsynchronousTask to run the IntegrationID = 200 (HMIS SPM 2024 Summary Export). This procedure runs as the last step of the IntegrationID and hence it’s ExecutionOrder is 99.
The Stored Procedure SPM_2024_DQ_1 provides the details for Data Quality Question1. The output generated from this procedure defines the value for Row 2 Column B – Q1 and Row 6 Column B – Q1. (Refer the screenshot below which is explained in detail in the link provided below (Page 27))
The Stored Procedure SPM_2024_DQ_4 provides the details for Data Quality Question4. The output generated from this procedure defines the value for Row 2 Column B and Column C – Q4. (Refer the screenshot below which is explained in detail in the *Link provided below (Page 32))
*Link - Please refer to the following link for details on how the Data Quality Stored Procedures for Q1 and Q4 have been created:
FY 2024 HMIS Standard Reporting Terminology Glossary - Version 1.1 (hudexchange.info)
Following Table shows the Stored Procedures, the CSV file being generated as the part of the export and the resulting tables. Referenced table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT * FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (201);
StoredProcName |
CSVFileName |
ResultStorageSchema |
ResultStorageTable |
SPM_2024_DQ_1 |
SPM_2024_DQ1 |
report |
SPM_2024_DQ1_Detail |
SPM_2024_DQ_4 |
SPM_2024_DQ4 |
report |
SPM_2024_DQ4_Detail |
SPMCreateExportTask |
ExportTaskCreated |
NULL |
NULL |
StoredProcName: Name of the Stored Procedure. Please note the schema for all these Stored Procedures is ‘report’.
CSVFileName: The name of the CSV File storing the data from running the respective Stored Procedure and will be available to view the results as the part of the Export Zip folder from running this integration. Please Note that CSV Files ExportTaskCreated will be a blank file because it’s part of the process and has nothing to do with the SPM Data Quality output.
ResultStorageSchema: This represents the schema of the resulting tables used to store the output of the respective Stored Procedure.
ResultStorageTable: This represents the table name of the resulting tables used to store the output of the respective Stored Procedure. Please note that the Stored Procedures SPMCreateExportTask doesn’t have a resulting table to store the results because it is responsible for executing the next CSV Integration so no output is required to be exported in CSV.
Once this Integration is successfully ran, the Export file will be generated and named as “hmis spm 2024 dq detail export_<datetime>_taskid_<tasked value>” and the Zip folder will be located for download at “Files on the Server” Tab located on the Top left of the Report Workspace in the CT 20 application.
3. IntegrationID = 200: HMIS SPM 2024 Summary Export
This is the last Integration that runs and completes this process. This Integration has only one Stored Procedure, following is the table showing the same. Referenced from table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT * FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (200) ORDER BY IntegrationID, ExecutionOrder;
ProcID |
IntegrationID |
ExecutionOrder |
StoredProcName |
4472 |
200 |
1 |
HMIS_SPM_2024_Summary |
ProcID: Shows the ID of the Stored Procedure; Primary Key for the table dbo.CSVStoredProcedures
IntegrationID: Shows the linked Integration to the ProcID. The IntegrationID is the Primary Key for the table dbo.CSVIntegration and this table stores the Integration setup information.
ExecutionOrder: This tells you about the order in which the Integration runs the Stored Procedures and it runs in the ascending order.
StoredProcName: Name of the Stored Procedure. Please note the schema for all these Stored Procedures is ‘report’.
The Stored Procedure HMIS_SPM_2024_Summary generates an export file that is calculated from the outputs generated by running the previous Integrations. The code for this Stored Procedure is labelled with comments which allows you to understand the columns and calculations being used from all the SPM Measures result tables and Data Quality result tables each being separated out as its own section based on individual Measure and Data Quality Question.
Following table will represent the CSV file name that will contain the final output of the SP HMIS_SPM_2024_Summary. Referenced table dbo.CSVStoredProcedures and the query used to extract the results below is:
SELECT * FROM dbo.CSVStoredProcedures WHERE IntegrationID IN (200);
StoredProcName |
CSVFileName |
ResultStorageSchema |
ResultStorageTable |
HMIS_SPM_2024_Summary |
SPM_Summary |
NULL |
NULL |
StoredProcName: Name of the Stored Procedure. Please note the schema for all this Stored Procedure is ‘report’.
CSVFileName: The name of the CSV File storing the data from running the respective Stored Procedure and will be available to view the results as the part of the Export Zip folder from running this integration.
ResultStorageSchema and ResultStorageTable: These two columns are mentioned as NULL because there is no resulting table which is storing the output for this Integration as it is being directly exported as a Zip folder.
Once this Integration is successfully ran, the Export file will be generated and named as “hmis spm 2024 summary export_<datetime>_taskid_<tasked value>” and the Zip folder will be located for download at “Files on the Server” Tab located on the Top left of the Report Workspace in the CT 20 application.
The complete description for this IntegrationID 200 is mentioned in Appendix A (Referenced the spec document provided at the time of the development).
APPENDIX A:
System Performance Measures (SPM) Comma Separated Value (CSV) Export Specifications for FY23
Introduction:
This document creates the specifications for an export of SPM data to be uploaded to HDX 2.0 in lieu of manual data entry of the values already programmed by the SPM Programming Specifications or the HMIS Data Quality Report. Uploading will be optional for CoCs for FY 23 SPM Submissions. However, uploading will be required for CoCs for FY 24 submissions.
Specifications:
The CSV Export should have 2 rows and 94 columns. The first row should be the Variable Name and the second row should be the value of that variable. A guide to the names, data types, and programming rules or references are provided below in the CSV Upload Field Guide Table. The table includes the specifications for the:
-
Variable Name exactly as it should appear.
-
Data Type which will be one of 5 types below:
-
Programming Rules or Reference. Provides a reference the existing specification documentation or else a definition for the variable and its value. Any reference to existing specification will be to either:
CSV Upload Field Guide Table:
94 Variables
Variable Name |
Data Type |
Programming Rules or Reference |
---|---|---|
CocCode |
String(6) |
HUD-defined code for the CoC submitting the report. |
ReportDateTime |
DateTime |
Date and time the report was produced. In yyyy-mm-dd hh:mm:ss format. |
ReportStartDate |
Date |
Start of FY Reporting Period. In yyyy-mm-dd format. |
ReportEndDate |
Date |
End of FY Reporting Period. In yyyy-mm-dd format. |
SoftwareName |
String(50) |
System defined name of the HMIS application generating the report. |
SourceContactFirst |
String(50) |
First name of the user generating the report |
SourceContactLast |
String(50) |
Last name of the user generating the report |
SourceContactEmail |
String(50) |
Email address of the user generating the report. |
ESSHUniverse_1A |
Integer |
A; Measure 1a, 1B |
ESSHAvgTime_1A |
Decimal |
A, Measure 1a, 1D |
ESSHMedianTime_1A |
Decimal |
A, Measure 1a, 1G |
ESSHTHUniverse_1A |
Integer |
A, Measure 1b, 2B |
ESSHTHAvgTime_1A |
Decimal |
A, Measure 1b, 2D |
ESSHTHMedianTime_1A |
Decimal |
A, Measure 1b, 2G |
ESSHUniverse_1B |
Integer |
A, Measure 1b, 1B |
ESSHAvgTime_1B |
Decimal |
A, Measure 1b, 1D |
ESSHMedianTime_1B |
Decimal |
A, Measure 1b, 1G |
ESSHTHUniverse_1B |
Integer |
A, Measure 1b, 2B |
ESSHTHAvgTime_1B |
Decimal |
A, Measure 1b, 2D |
ESSHTHMedianTime_1B |
Decimal |
A, Measure 1b, 2G |
SOExitPH_2 |
Integer |
A, Measure 2a and 2b, 2B |
SOReturn0to180_2 |
Integer |
A, Measure 2a and 2b, 2C |
SOReturn181to365_2 |
Integer |
A, Measure 2a and 2b, 2E |
SOReturn366to730_2 |
Integer |
A, Measure 2a and 2b, 2G |
ESExitPH_2 |
Integer |
A, Measure 2a and 2b, 3B |
ESReturn0to180_2 |
Integer |
A, Measure 2a and 2b, 3C |
ESReturn181to365_2 |
Integer |
A, Measure 2a and 2b, 3E |
ESReturn366to730_2 |
Integer |
A, Measure 2a and 2b, 3G |
THExitPH_2 |
Integer |
A, Measure 2a and 2b, 4B |
THReturn0to180_2 |
Integer |
A, Measure 2a and 2b, 4C |
THReturn181to365_2 |
Integer |
A, Measure 2a and 2b, 4E |
THReturn366to730_2 |
Integer |
A, Measure 2a and 2b, 4G |
SHExitPH_2 |
Integer |
A, Measure 2a and 2b, 5B |
SHReturn0to180_2 |
Integer |
A, Measure 2a and 2b, 5C |
SHReturn181to365_2 |
Integer |
A, Measure 2a and 2b, 5E |
SHReturn366to730_2 |
Integer |
A, Measure 2a and 2b, 5G |
PHExitPH_2 |
Integer |
A, Measure 2a and 2b, 6B |
PHReturn0to180_2 |
Integer |
A, Measure 2a and 2b, 6C |
PHReturn181to365_2 |
Integer |
A, Measure 2a and 2b, 6E |
PHReturn366to730_2 |
Integer |
A, Measure 2a and 2b, 6G |
TotalAnnual_3 |
Integer |
A, Metric 3.2, 2C |
ESAnnual_3 |
Integer |
A, Metric 3.2, 3C |
SHAnnual_3 |
Integer |
A, Metric 3.2, 4C |
THAnnual_3 |
Integer |
A, Metric 3.2, 5C |
AdultStayers_4 |
Integer |
A, Metric 4.1, 2C |
IncreaseEarned4_1 |
Integer |
A, Metric 4.1, 3C |
IncreaseOther4_2 |
Integer |
A, Metric 4.2, 3C |
IncreaseTotal4_3 |
Integer |
A, Metric 4.3, 3C |
AdultLeavers_4 |
Integer |
A, Metric 4.4, 2C |
IncreaseEarned4_4 |
Integer |
A, Metric 4.4, 3C |
IncreaseOther4_5 |
Integer |
A, Metric 4.5 3C |
IncreaseTotal4_6 |
Integer |
A, Metric 4.6, 3C |
EnterESSHTH5_1 |
Integer |
A, Metric 5.1, 2C |
ESSHTHWithPriorSvc5_1 |
Integer |
A, Metric 5.1, 3C |
EnterESSHTHPH5_2 |
Integer |
A, Metric 5.2, 2C |
ESSHTHPHWithPriorSvc5_2 |
Integer |
A, Metric 5.2, 3C |
THExitPH_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 4B |
THReturn0to180_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 4C |
THReturn181to365_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 4E |
THReturn366to730_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 4G |
SHExitPH_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 5B |
SHReturn0to180_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 5C |
SHReturn181to365_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 5E |
SHReturn366to730_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 5G |
PHExitPH_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 6B |
PHReturn0to180_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 6C |
PHReturn181to365_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 6E |
PHReturn366to730_6 |
Integer |
A, Metrics 6a.1 and 6b.1, 6G |
SHTHRRHCat3Leavers_6 |
Integer |
A, Metric 6c.1, 2C |
SHTHRRHCat3ExitPH_6 |
Integer |
A, Metric 6c.1, 3C |
PSHCat3Clients_6 |
Integer |
A, Metric 6c.2, 2C |
PSHCat3StayOrExitPH_6 |
Integer |
A, Metric 6c.2, 3C |
SOExit_7 |
Integer |
A, Metric 7a.1, 2C |
SOExitTempInst_7 |
Integer |
A, Metric 7a.1, 3C |
SOExitPH_7 |
Integer |
A, Metric 7a.1, 4C |
ESSHTHRRHExit_7 |
Integer |
A, Metric 7b.1, 2C |
ESSHTHRRHToPH_7 |
Integer |
A, Metric 7b.1, 3C |
PHClients_7 |
Integer |
A, Metric 7b.2, 2C |
PHClientsStayOrExitPH_7 |
Integer |
A, Metric 7b.2, 2C |
ESSH_UndupHMIS_DQ |
Integer |
B, Q1, 1B (with project type filters for ES and SH) |
TH_UndupHMIS_DQ |
Integer |
B, Q1, 1B (with project type filters for TH) |
PSHOPH_UndupHMIS_DQ |
Integer |
B, Q1, 1B (with project type filters for PSH, PH-Housing Only, PH Housing with Services) |
RRH_UndupHMIS_DQ |
Integer |
B, Q1, 1B (with project type filters for RRH) |
StOutreach_UndupHMIS_DQ |
Integer |
B, Q1, 1B (with project type filters for Street Outreach) |
ESSH_LeaversHMIS_DQ |
Integer |
B, Q1, 6B (with project type filters for ES and SH) |
TH_LeaversHMIS_DQ |
Integer |
B, Q1, 6B (with project type filters for TH) |
PSHOPH_LeaversHMIS_DQ |
Integer |
B, Q1, 6B (with project type filters for PSH, PH-Housing Only, PH Housing with Services) |
RRH_LeaversHMIS_DQ |
Integer |
B, Q1, 6B (with project type filters for RRH) |
StOutreach_LeaversHMIS_DQ |
Integer |
B, Q1, 6B (with project type filters for Street Outreach) |
ESSH_DkRMHMIS_DQ |
Integer |
B, Q4, 2B (with project type filters for ES and SH) |
TH_DkRMHMIS_DQ |
Integer |
B, Q4, 2B (with project type filters for TH) |
PSHOPH_DkRMHMIS_DQ |
Integer |
B, Q4, 2B (with project type filters for PSH, PH-Housing Only, PH Housing with Services) |
RRH_DkRMHMIS_DQ |
Integer |
B, Q4, 2B (with project type filters for RRH) |
StOutreach_DkRMHMIS_DQ |
Integer |
B, Q4, 2B (with project type filters for Street Outreach) |