@autoscriber/core 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,5 +74,16 @@ export declare class AssistantClient {
74
74
  private handlePartialResult;
75
75
  private handleVoiceTranscription;
76
76
  private resetRecordingState;
77
+ /**
78
+ * Sanitizes FHIR resources by removing empty answer values that fail FHIR validation.
79
+ * Specifically handles QuestionnaireResponse resources by removing empty valueString entries
80
+ * and empty answer arrays to comply with FHIR validation patterns.
81
+ */
82
+ private sanitizeFhirResource;
83
+ /**
84
+ * Recursively sanitizes a QuestionnaireResponse by removing empty answer values.
85
+ * Removes empty valueString entries and empty answer arrays to comply with FHIR validation.
86
+ */
87
+ private sanitizeQuestionnaireResponse;
77
88
  }
78
89
  //# sourceMappingURL=assistant-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-client.d.ts","sourceRoot":"","sources":["../../src/core/assistant-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-client.d.ts","sourceRoot":"","sources":["../../src/core/assistant-client.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1312,6 +1312,7 @@ var AssistantClient = class {
1312
1312
  setFhirContext(resource) {
1313
1313
  const id = generateMessageId();
1314
1314
  const resourceType = typeof resource === "object" && resource && "resourceType" in resource ? String(resource.resourceType) : "Resource";
1315
+ const sanitizedResource = this.sanitizeFhirResource(resource);
1315
1316
  this.pushInteraction({
1316
1317
  id,
1317
1318
  label: `Updating ${resourceType} context`,
@@ -1325,7 +1326,7 @@ var AssistantClient = class {
1325
1326
  method: "fhirContext",
1326
1327
  params: {
1327
1328
  mediaType: "application/fhir+json",
1328
- data: resource
1329
+ data: sanitizedResource
1329
1330
  }
1330
1331
  });
1331
1332
  this.pendingRequests.set(id, { id, method: "fhirContext" });
@@ -1987,6 +1988,65 @@ var AssistantClient = class {
1987
1988
  };
1988
1989
  this.emitRecording();
1989
1990
  }
1991
+ /**
1992
+ * Sanitizes FHIR resources by removing empty answer values that fail FHIR validation.
1993
+ * Specifically handles QuestionnaireResponse resources by removing empty valueString entries
1994
+ * and empty answer arrays to comply with FHIR validation patterns.
1995
+ */
1996
+ sanitizeFhirResource(resource) {
1997
+ if (!resource || typeof resource !== "object") {
1998
+ return resource;
1999
+ }
2000
+ const resourceObj = resource;
2001
+ if (resourceObj.resourceType === "QuestionnaireResponse") {
2002
+ return this.sanitizeQuestionnaireResponse(resourceObj);
2003
+ }
2004
+ return resource;
2005
+ }
2006
+ /**
2007
+ * Recursively sanitizes a QuestionnaireResponse by removing empty answer values.
2008
+ * Removes empty valueString entries and empty answer arrays to comply with FHIR validation.
2009
+ */
2010
+ sanitizeQuestionnaireResponse(resource) {
2011
+ const sanitized = { ...resource };
2012
+ if (Array.isArray(sanitized.item)) {
2013
+ sanitized.item = sanitized.item.map((item) => {
2014
+ if (!item || typeof item !== "object") {
2015
+ return item;
2016
+ }
2017
+ const itemObj = item;
2018
+ const sanitizedItem = { ...itemObj };
2019
+ if (Array.isArray(itemObj.item)) {
2020
+ sanitizedItem.item = itemObj.item.map((nestedItem) => {
2021
+ if (nestedItem && typeof nestedItem === "object") {
2022
+ return this.sanitizeQuestionnaireResponse(nestedItem);
2023
+ }
2024
+ return nestedItem;
2025
+ });
2026
+ }
2027
+ if (Array.isArray(itemObj.answer)) {
2028
+ const sanitizedAnswers = itemObj.answer.filter((answer) => {
2029
+ if (!answer || typeof answer !== "object") {
2030
+ return true;
2031
+ }
2032
+ const answerObj = answer;
2033
+ const valueString = answerObj.valueString;
2034
+ if (typeof valueString === "string" && valueString.trim() === "") {
2035
+ return false;
2036
+ }
2037
+ return true;
2038
+ });
2039
+ if (sanitizedAnswers.length > 0) {
2040
+ sanitizedItem.answer = sanitizedAnswers;
2041
+ } else {
2042
+ delete sanitizedItem.answer;
2043
+ }
2044
+ }
2045
+ return sanitizedItem;
2046
+ });
2047
+ }
2048
+ return sanitized;
2049
+ }
1990
2050
  };
1991
2051
 
1992
2052
  // src/headless/create-assistant.ts
package/dist/index.js CHANGED
@@ -1285,6 +1285,7 @@ var AssistantClient = class {
1285
1285
  setFhirContext(resource) {
1286
1286
  const id = generateMessageId();
1287
1287
  const resourceType = typeof resource === "object" && resource && "resourceType" in resource ? String(resource.resourceType) : "Resource";
1288
+ const sanitizedResource = this.sanitizeFhirResource(resource);
1288
1289
  this.pushInteraction({
1289
1290
  id,
1290
1291
  label: `Updating ${resourceType} context`,
@@ -1298,7 +1299,7 @@ var AssistantClient = class {
1298
1299
  method: "fhirContext",
1299
1300
  params: {
1300
1301
  mediaType: "application/fhir+json",
1301
- data: resource
1302
+ data: sanitizedResource
1302
1303
  }
1303
1304
  });
1304
1305
  this.pendingRequests.set(id, { id, method: "fhirContext" });
@@ -1960,6 +1961,65 @@ var AssistantClient = class {
1960
1961
  };
1961
1962
  this.emitRecording();
1962
1963
  }
1964
+ /**
1965
+ * Sanitizes FHIR resources by removing empty answer values that fail FHIR validation.
1966
+ * Specifically handles QuestionnaireResponse resources by removing empty valueString entries
1967
+ * and empty answer arrays to comply with FHIR validation patterns.
1968
+ */
1969
+ sanitizeFhirResource(resource) {
1970
+ if (!resource || typeof resource !== "object") {
1971
+ return resource;
1972
+ }
1973
+ const resourceObj = resource;
1974
+ if (resourceObj.resourceType === "QuestionnaireResponse") {
1975
+ return this.sanitizeQuestionnaireResponse(resourceObj);
1976
+ }
1977
+ return resource;
1978
+ }
1979
+ /**
1980
+ * Recursively sanitizes a QuestionnaireResponse by removing empty answer values.
1981
+ * Removes empty valueString entries and empty answer arrays to comply with FHIR validation.
1982
+ */
1983
+ sanitizeQuestionnaireResponse(resource) {
1984
+ const sanitized = { ...resource };
1985
+ if (Array.isArray(sanitized.item)) {
1986
+ sanitized.item = sanitized.item.map((item) => {
1987
+ if (!item || typeof item !== "object") {
1988
+ return item;
1989
+ }
1990
+ const itemObj = item;
1991
+ const sanitizedItem = { ...itemObj };
1992
+ if (Array.isArray(itemObj.item)) {
1993
+ sanitizedItem.item = itemObj.item.map((nestedItem) => {
1994
+ if (nestedItem && typeof nestedItem === "object") {
1995
+ return this.sanitizeQuestionnaireResponse(nestedItem);
1996
+ }
1997
+ return nestedItem;
1998
+ });
1999
+ }
2000
+ if (Array.isArray(itemObj.answer)) {
2001
+ const sanitizedAnswers = itemObj.answer.filter((answer) => {
2002
+ if (!answer || typeof answer !== "object") {
2003
+ return true;
2004
+ }
2005
+ const answerObj = answer;
2006
+ const valueString = answerObj.valueString;
2007
+ if (typeof valueString === "string" && valueString.trim() === "") {
2008
+ return false;
2009
+ }
2010
+ return true;
2011
+ });
2012
+ if (sanitizedAnswers.length > 0) {
2013
+ sanitizedItem.answer = sanitizedAnswers;
2014
+ } else {
2015
+ delete sanitizedItem.answer;
2016
+ }
2017
+ }
2018
+ return sanitizedItem;
2019
+ });
2020
+ }
2021
+ return sanitized;
2022
+ }
1963
2023
  };
1964
2024
 
1965
2025
  // src/headless/create-assistant.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autoscriber/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Headless Autoscriber Assistant SDK for web applications.",
5
5
  "license": "MIT",
6
6
  "keywords": [