Skip to content

Commit

Permalink
Added fd messaging
Browse files Browse the repository at this point in the history
  • Loading branch information
RobertScalfani committed Jan 23, 2025
1 parent 43fbbac commit f216530
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ import axios from 'axios';
import React, { useEffect } from 'react';
import { Link } from 'react-router-dom';
import { Breadcrumb, Button, Container, Dimmer, Divider, Form, Grid, Header, Icon, Loader, Menu, Message, Statistic, Transition } from 'semantic-ui-react';
import { responseMessageTypeIconsVRDR, responseMessageTypeIconsBFDR, messageTypeIconsVRDR, messageTypeIconsBFDR, messageTypesVRDR, messageTypesBFDR } from '../../data';
import { responseMessageTypeIconsVRDR, responseMessageTypeIconsBFDR, messageTypeIconsVRDR, messageTypeIconsBFDR } from '../../data';
import { connectionErrorToast } from '../../error';
import { Getter } from '../misc/Getter';
import { FHIRInfo } from '../misc/info/FHIRInfo';
import { Record } from '../misc/Record';
import report from '../report';
import { useParams } from 'react-router-dom';
import { getMessageType } from '../tools/FHIRMessageSyntaxChecker'

export function FHIRMessageProducing(props) {

Expand All @@ -27,14 +28,6 @@ export function FHIRMessageProducing(props) {
const [response, setResponse] = React.useState();
const [responses, setResponses] = React.useState();

if (props.recordType.toLowerCase() === 'bfdr-fetaldeath') {
return (
<h1>
BFDR Fetal Death does not yet support messaging.
</h1>
)
}

useEffect(() => {
if (!!id) {
axios
Expand Down Expand Up @@ -66,16 +59,7 @@ export function FHIRMessageProducing(props) {
}, []);

const updateMessage = (message, issues) => {
let messageType = "Unknown";
if (props.recordType.toLowerCase() == 'vrdr') {
if (message && message.messageType in messageTypesVRDR) {
messageType = messageTypesVRDR[message.messageType];
}
} else {
if (message && message.messageType in messageTypesBFDR) {
messageType = messageTypesBFDR[message.messageType];
}
}
let messageType = getMessageType(props.recordType, message);

/*
* Only perform this when there are no other issues, since receiving errors here means
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { Breadcrumb, Button, Container, Dimmer, Divider, Dropdown, Input, Form, Grid, Header, Icon, Loader, Menu, Message, Statistic, Transition } from 'semantic-ui-react';
import { responseMessageTypeIconsVRDR, messageTypeIconsVRDR, messageTypesVRDR, messageTypesBFDR, stateOptions } from '../../data';
import { responseMessageTypeIconsVRDR, messageTypeIconsVRDR, stateOptions } from '../../data';
import { connectionErrorToast } from '../../error';
import { Getter } from '../misc/Getter';
import { FHIRInfo } from '../misc/info/FHIRInfo';
import { Record } from '../misc/Record';
import report from '../report';
import {getMessageType} from '../tools/FHIRMessageSyntaxChecker'

export class MessageConnectathonProducing extends Component {
displayName = MessageConnectathonProducing.name;
Expand Down Expand Up @@ -60,16 +61,7 @@ export class MessageConnectathonProducing extends Component {
}

updateMessage(message, issues) {
let messageType = "Unknown";
if (this.props.params.recordType.toLowerCase() == 'vrdr') {
if (message && message.messageType in messageTypesVRDR) {
messageType = messageTypesVRDR[message.messageType];
}
} else {
if (message && message.messageType in messageTypesBFDR) {
messageType = messageTypesBFDR[message.messageType];
}
}
let messageType = getMessageType(this.props.recordType, message);

/*
* Only perform this when there are no other issues, since receiving errors here means
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,6 @@ export class FHIRMessageCreator extends Component {

render() {

if (this.props.recordType.toLowerCase() == 'bfdr-fetaldeath') {
return (
<h1>
BFDR Fetal Death does not yet support messaging.
</h1>
);
}

const messageTypeIcons = this.props.recordType.toLowerCase() == 'vrdr' ? messageTypeIconsVRDR : messageTypeIconsBFDR;

return (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { Breadcrumb, Grid } from 'semantic-ui-react';
import { messageTypesVRDR, messageTypesBFDR } from '../../data';
import { messageTypesVRDR, messageTypesBirth, messageTypesFetalDeath } from '../../data';
import { Getter } from '../misc/Getter';
import { Record } from '../misc/Record';

export const getMessageType = (recordType, message) => {
if (recordType.toLowerCase() == 'vrdr' && message && message.messageType in messageTypesVRDR) {
return messageTypesVRDR[message.messageType];
}
if (recordType.toLowerCase() == 'bfdr-birth' && message && message.messageType in messageTypesBirth) {
return messageTypesBirth[message.messageType];
}
if (recordType.toLowerCase() == 'bfdr-fetaldeath' && message && message.messageType in messageTypesFetalDeath) {
return messageTypesFetalDeath[message.messageType];
}
console.log(recordType);
console.log(message);
return "Unknown";
}

export class FHIRMessageSyntaxChecker extends Component {
displayName = FHIRMessageSyntaxChecker.name;

Expand All @@ -15,30 +30,11 @@ export class FHIRMessageSyntaxChecker extends Component {
}

updateMessage(message, issues) {
let messageType = "Unknown";
if (this.props.recordType.toLowerCase() == 'vrdr') {
if (message && message.messageType in messageTypesVRDR) {
messageType = messageTypesVRDR[message.messageType];
}
} else {
if (message && message.messageType in messageTypesBFDR) {
messageType = messageTypesBFDR[message.messageType];
}
}

let messageType = getMessageType(this.props.recordType, message);
this.setState({ message: message, messageType: messageType, issues: issues });
}

render() {
if (this.props.recordType.toLowerCase() == 'bfdr-fetaldeath') {
return (
<React.Fragment>
<h1>
BFDR Fetal Death does not yet support messaging.
</h1>
</React.Fragment>
)
}
return (
<React.Fragment>
<Grid>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { Breadcrumb, Button, Container, Dimmer, Divider, Dropdown, Input, Form, Grid, Header, Icon, Loader, Menu, Message, Statistic, Transition } from 'semantic-ui-react';
import { Breadcrumb, Container, Divider, Form, Grid, Header, Icon } from 'semantic-ui-react';
import { Getter } from '../misc/Getter';
import { FHIRInfo } from '../misc/info/FHIRInfo';
import { Record } from '../misc/Record';
Expand All @@ -27,15 +27,6 @@ export class MessageInspector extends Component {
}

render() {

if (this.props.recordType.toLowerCase() === 'bfdr-fetaldeath') {
return (
<h1>
BFDR Fetal Death does not yet support messaging.
</h1>
)
}

return (
<React.Fragment>
<Grid>
Expand Down
11 changes: 10 additions & 1 deletion projects/Canary/ClientApp/src/data.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export const messageTypesVRDR = {
"http://nchs.cdc.gov/vrdr_extraction_error": "Extraction Error"
}

export const messageTypesBFDR = {
export const messageTypesBirth = {
"http://nchs.cdc.gov/birth_acknowledgement": "Acknowledgement",
"http://nchs.cdc.gov/birth_demographics_coding": "Demographics Coding",
"http://nchs.cdc.gov/birth_extraction_error": "Error",
Expand All @@ -79,6 +79,15 @@ export const messageTypesBFDR = {
"http://nchs.cdc.gov/birth_submission_update": "Update"
}

export const messageTypesFetalDeath = {
"http://nchs.cdc.gov/fd_acknowledgement": "Acknowledgement",
"http://nchs.cdc.gov/fd_demographics_coding": "Demographics Coding",
"http://nchs.cdc.gov/fd_extraction_error": "Error",
"http://nchs.cdc.gov/fd_status": "Status",
"http://nchs.cdc.gov/fd_submission": "Submission",
"http://nchs.cdc.gov/fd_submission_void": "Void",
"http://nchs.cdc.gov/fd_submission_update": "Update"
}

export const messageTypeIconsVRDR = [
{ key: 'submission', name: 'Submission', icon: 'paper plane' },
Expand Down
2 changes: 1 addition & 1 deletion projects/Canary/Models/CanaryBirthMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public static string GetDescriptionFor(string entry)
return myPropInfo != null ? myPropInfo.Name : messageDescription.GetValueOrDefault(entry, "Unknown Property");
}

public override Dictionary<string, Message> GetResponsesFor(String type)
public override Dictionary<string, Message> GetResponsesFor(string type)
{
Dictionary<string, Message> result = new Dictionary<string, Message>();
// Create acknowledgement
Expand Down
48 changes: 23 additions & 25 deletions projects/Canary/Models/CanaryFetalDeathMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,48 +28,46 @@ public CanaryFetalDeathMessage() { }

public CanaryFetalDeathMessage(string message)
{
// TODO: BFDR does not support messaging yet.
// this.message = BFDRBaseMessage.Parse(message, false);
this.message = BFDRBaseMessage.Parse(message, false);
}

public CanaryFetalDeathMessage(CommonMessage message) : base(message) {}

public CanaryFetalDeathMessage(Record record, String type)
{
FetalDeathRecord fdr = (FetalDeathRecord) record.GetRecord();
// TODO - Fetal Death Messaging
// switch (type)
// {
// case "Submission":
// case "http://nchs.cdc.gov/fd_submission":
// message = new BirthRecordSubmissionMessage(br);
// break;
// case "Update":
// case "http://nchs.cdc.gov/fd_submission_update":
// message = new BirthRecordUpdateMessage(br);
// break;
// case "Void":
// case "http://nchs.cdc.gov/fd_submission_void":
// message = new BirthRecordVoidMessage(br);
// break;
// default:
// throw new ArgumentException($"The given message type {type} is not valid.", "type");
// }
// message.MessageSource = "https://example.com/jurisdiction/message/endpoint";
switch (type)
{
case "Submission":
case "http://nchs.cdc.gov/fd_submission":
message = new FetalDeathRecordSubmissionMessage(fdr);
break;
case "Update":
case "http://nchs.cdc.gov/fd_submission_update":
message = new FetalDeathRecordUpdateMessage(fdr);
break;
case "Void":
case "http://nchs.cdc.gov/fd_submission_void":
message = new FetalDeathRecordVoidMessage(fdr);
break;
default:
throw new ArgumentException($"The given message type {type} is not valid.", "type");
}
message.MessageSource = "https://example.com/jurisdiction/message/endpoint";
}

public static string GetDescriptionFor(string entry)
{
PropertyInfo myPropInfo = typeof(BirthRecord).GetProperty(entry);
PropertyInfo myPropInfo = typeof(FetalDeathRecord).GetProperty(entry);
return myPropInfo != null ? myPropInfo.Name : messageDescription.GetValueOrDefault(entry, "Unknown Property");
}

public override Dictionary<string, Message> GetResponsesFor(String type)
public override Dictionary<string, Message> GetResponsesFor(string type)
{
Dictionary<string, Message> result = new Dictionary<string, Message>();
// Create acknowledgement
FetalDeathRecordAcknowledgementMessage ack = new FetalDeathRecordAcknowledgementMessage((BFDRBaseMessage) message);
Message ackMsg = new CanaryBirthMessage(ack);
Message ackMsg = new CanaryFetalDeathMessage(ack);
result.Add("ACK", ackMsg);

// Create the extraction error
Expand All @@ -79,7 +77,7 @@ public override Dictionary<string, Message> GetResponsesFor(String type)
var issue = new BFDR.Issue(OperationOutcome.IssueSeverity.Fatal, OperationOutcome.IssueType.Invalid, "This is a fake message");
issues.Add(issue);
err.Issues = issues;
Message errMsg = new CanaryBirthMessage(err);
Message errMsg = new CanaryFetalDeathMessage(err);
result.Add("Error", errMsg);

// Handle type of message.
Expand Down

0 comments on commit f216530

Please sign in to comment.