This system is for test purposes only. Do not submit production data. As a precaution all submitted data will be deleted once a day.
IIS Sandbox is deployed using a R5 FHIR Server, functionalities related to FHIR Subscriptions and Covid are enabled
Documentation
Please see the project wiki: https://github.com/immregistries/IIS-Sandbox/wiki
Primary Functions Supported
- Send Now: Send an HL7 message in now.
- Messages: Review recently submitted messages
- Patients: See data received by patient
- Locations: See administered-at-locations
- Recommendations: Generate Immunization Recommendations for Patients
- Subscriptions: Visualize and manually trigger FHIR subscriptions
- CDC WSDL: HL7 realtime interfacing using CDC WSDL
- FHIR Server: FHIR Restful server, partitioned for each tenants
Concepts and dependencies
HAPIFHIR Server Backend:
This sandbox uses HAPIFHIR JPA Server framework as an end layer to store records, using an experimental mapping layer to use inherited Hl7v2 based functionalities, current version of HAPIFHIR is a modded 6.8.3
Multitenancy:
Tenants allow separate testing environments, using different Flavors and different partitions of FHIR Server, Base URLs are formatted as /iis/fhir/{tenantName}
Record's Matching:
Matching resources using MISMO for Patients (Activated with a Flavor), vaccination_deduplication for Immunizations
Master Data Management (MDM):
Expanded from HAPIFHIR's MDM, Customization includes the above matching logic, a layer to add all the record's identifiers in Golden records, and R5 Support
Consolidated (Golden) record:
Golden records are generated by MDM system as the reference records to match with and merge information in
Bulk data exchange server:
Bulk data export implemented, alongside $member-add and $member-remove operations on Groups, SMART authentication is supported, but key registering is still in progress (Currently disabled)
Immunization Recommendation Forecast:
ImmDSForecast operations implemented, current result is randomly generated
Secondary Functions Supported
Processing Flavors
If any of the following words appear in the name of the tenant then special processing rules will apply. These processing rules can be used to simulate specific IIS behavior.
- Mismo: Uses Mismo Model for Patient Matching
- Melon: Missing or incorrect important message headers
- Lime: Missing non-critical required fields
- Coconut: Forecast never returned
- Orange: Z32 is returned for query matches
- Lemon: Vaccinations are randomly not returned
- Green: Typhoid vaccination is never returned
- Cranberry: Vaccination update is not accepted without at least one vaccination reported
- Bilberry: Vaccination update is not accepted without at least one vaccination or refusal reported
- Pear: The administered-at-location will not be recognized if valued and the message rejected
- Blackberry: The patient's address is required
- Spruce: The RXR segment is required for all administered vaccinations
- Cantaloupe: Dates will not be strictly parsed
- Clementine: Will accept vaccination given before date of birth
- Elderberries: Will accept invalid sex codes and valid sex codes other than M, F, or U
- Guava: Will accept invalid state or country codes in address
- Fig: Will not accept invalid or unrecognized race or ethnicity codes
- Pitaya: Will return race and ethnicity in RSP as it was accepted
- Persimmon: Will return race and ethnicity in RSP, if it is valid
- Plantain: Will accept invalid multiple birth indicator or birth orders
- Quinze: Will not accept phone numbers unless they are of Telecommunication Use Code PRN
- Soursop: The facility submitted in MSH-4 must match what is sent in the CDC SOAP WSDL request
- Ice: Forecast generated with open-cds ICE
- PHI: Trailing "AIRA" is removed from patient and mother maiden names 10% of the time on RSPs
- Citrus: Randomly omit first name, last name or date of birth on RSPs
- Cherry: Omit one vaccination admin date on RSPs
- Kumquat: Vaccination forecast sends back a bad CVX code
- Snail: Patients are not returned until 0, 30, 60, or 90 seconds after they have been submitted
- Snail30: Patients are not returned until 30 seconds after they have been submitted
- Snail60: Patients are not returned until 60 seconds after they have been submitted
- Snail90: Patients are not returned until 90 seconds after they have been submitted
- Punkin: Will return unknown race and ethnicity codes in RSP if no race or ethnicity is specified
- Medlar: Will only return errors but no warnings or informational error segments in ACK messages
- Applesauce: Will activate detect Temporary name detection including 'Babynames' and 'Test' and change the name type
- Grapefruit: Will randomly (60%) reject only vaccines and not patient
- Singlename: Only first name recieved will be processed and stored
- UPPERCASENAME: Converts all incoming names to uppercase upon storing, regardless of the case sent by the EHR
- LIMITSIZENAME: Truncates names exceeding a set length (e.g., 15 characters) and stores them with a cutoff marker, simulating systems with limited name field lengths
- REJECTLONGNAME: Flags and rejects names that exceed the length limit to demonstrate compliance with strict length constraints.
- MANDATORYLEGALNAME: Legal name is mandatory
- MIDDLENAMECONCAT: Stores names by appending the middle name to the first name (e.g., 'Sue^Ann' becomes 'Sue Ann^').
- SEPARATEMIDDLENAME: Ensures the middle name is preserved as a distinct field and not appended to the first name.
- ASCIICONVERT: Converts special characters (e.g., ñ → n) on receipt to simulate systems that cannot handle non-ASCII characters
- NONASCIIREJECT: Flags names containing unsupported characters, returning an error message.
- REMOVEHYPHENSPACES: Removes hyphens and spaces, storing names in a compressed format (e.g., 'AnneMarie' or 'DeLaCruz').
- IGNORENAMETYPE: Operates in a mode where the system only recognizes the first name received, disregarding other names or name type codes.
- NOSINGLECHARNAME: Requires a minimum of two characters for each name component and flags single characters as an error.
- StarFruit: Will store but not share info, Will consider patients whose first name start with 'A' or 'S' as non consenting
- MoonFruit: Will not store but not will not share info, Will consider patients whose first name start with 'A' or 'S' as non consenting
- MeteorFruit: (incoming) Will reject every patient consent status as unacceptable
- DURIAN: (incoming) Simulates Public Health Emergency when it comes to consent
- NOTICE: Return shifts ERR codes Error to Warnings to Notice to Informational