CONDITION IAP_QueryToObject(Query * query, DCM_OBJECT ** object, char *SOPClass, int *elementCount) { CONDITION cond, returnCondition; int index; long flag; static char queryLevelString[48] = ""; /* Initialize for AIX compiler bug */ DCM_ELEMENT queryLevelElement = {DCM_IDQUERYLEVEL, DCM_CS, "", 1, sizeof(queryLevelString), (void *) &queryLevelString[0]}; static DCM_FLAGGED_ELEMENT localList[] = { {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, sizeof(q.Image.ImageUID), (void *) &q.Image.ImageUID[0], DB_K_QIMAGEUID, &q.Image.Query_Flag}, }; q = *query; *elementCount = 0; if (*object == NULL) { cond = DCM_CreateObject(object, 0); if (cond != DCM_NORMAL) return COND_PushCondition(IAP_OBJECTCREATEFAILED, IAP_Message(IAP_OBJECTCREATEFAILED), "IAP_QueryToObject"); } returnCondition = IAP_NORMAL; flag = q.QueryState & (DB_K_LEVELPAT | DB_K_LEVELSTUDY | DB_K_LEVELSERIES | DB_K_LEVELIMAGE); if (flag == 0){ returnCondition = COND_PushCondition(IAP_INCOMPLETEQUERY, "IAP_QueryToObject"); }else{ for (index = 0; index < DIM_OF(levelMap); index++) { if ((q.QueryState & levelMap[index].flag) != 0) { (void) strcpy(queryLevelString, levelMap[index].queryLevel); queryLevelElement.length = strlen(queryLevelElement.d.string); cond = DCM_ModifyElements(object, &queryLevelElement, 1, NULL, 0, NULL); if (cond != DCM_NORMAL) return cond; } } } flag = q.QueryState & (DB_K_CLASSPAT | DB_K_CLASSSTUDY | DB_K_CLASSPATSTUDY); if (flag == 0){ returnCondition = COND_PushCondition(IAP_INCOMPLETEQUERY, ""); }else{ for (index = 0; index < DIM_OF(classMap); index++) { if ((q.QueryState & classMap[index].flag) != 0) { (void) strcpy(SOPClass, classMap[index].SOPClass); cond = DCM_NORMAL; } } } cond = DCM_ModifyElements(object, NULL, 0, list, (int) DIM_OF(list), elementCount); if (cond != DCM_NORMAL) return COND_PushCondition(IAP_OBJECTACCESSFAILED, IAP_Message(IAP_OBJECTACCESSFAILED), "IAP_QueryToObject"); cond = DCM_ModifyElements(object, NULL, 0, localList, (int) DIM_OF(localList), elementCount); if (cond != DCM_NORMAL) return COND_PushCondition(IAP_OBJECTACCESSFAILED, IAP_Message(IAP_OBJECTACCESSFAILED), "IAP_QueryToObject"); return returnCondition; }
static void addString(DCM_OBJECT* obj, DCM_TAG tag, char* s) { DCM_ELEMENT e; CONDITION cond; if (s == 0) return; memset(&e, 0, sizeof(e)); e.tag = tag; cond = DCM_LookupElement(&e); if (cond != DCM_NORMAL) { COND_DumpConditions(); exit(1); } e.d.string = s; e.length = strlen(s); cond = DCM_ModifyElements(&obj, &e, 1, 0, 0, 0); if (cond != DCM_NORMAL) { COND_DumpConditions(); exit(1); } }
CONDITION HAP_BuildInterp(DCM_OBJECT ** object, HIS_InterpretationLevel * xl, HAP_INTERP_EVENT event) { CONDITION cond; int index, x; CTNBOOLEAN eventFound = FALSE; p = *xl; if (event != 0) { for (index = 0; index < (int) DIM_OF(array) && !eventFound; index++) { if (event == array[index].event) { eventFound = TRUE; if ((event & HAP_X_VARIABLE_EVENT) != 0) { if ((p.Update_Flag & array[index].required_event_attrib) != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } else { if (p.Update_Flag != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } } } if (!eventFound) return HAP_ILLEGALEVENT; } cond = DCM_ModifyElements(object, NULL, 0, list, (int) DIM_OF(list), NULL); if (cond != DCM_NORMAL) return HAP_ILLEGALOBJECT; if (p.Update_Flag & HIS_K_INTRRSEQUENCE) { x = i_buildSequence(object, SQ_K_REFRESULTSSOPINSTANCEUID); if (x < 0) return 0; /* needs repair */ } if (p.Update_Flag & HIS_K_INTIAPPSEQUENCE) { x = i_buildSequence(object, SQ_K_REQINTERPRETATIONAPPROVER); if (x < 0) return 0; /* needs repair */ } if (p.Update_Flag & HIS_K_INTIDCSEQUENCE) { x = i_buildSequence(object, SQ_K_REQDIAGNOSISCODE); if (x < 0) return 0; /* needs repair */ } return HAP_NORMAL; }
CONDITION DCM_SetFileMeta(DCM_OBJECT ** callerObject, DCM_FILE_META * fileMeta) { CONDITION cond; meta = *fileMeta; cond = DCM_ModifyElements(callerObject, metaRequired, (int) DIM_OF(metaRequired), metaOptional, (int) DIM_OF(metaOptional), NULL); if (cond != DCM_NORMAL) return cond; /* repair */ return DCM_NORMAL; }
CONDITION HAP_BuildResults(DCM_OBJECT ** object, HIS_ResultsLevel * xl, HAP_RESULTS_EVENT event) { CONDITION cond; int index, x; CTNBOOLEAN eventFound = FALSE; p = *xl; if (event != 0) { for (index = 0; index < (int) DIM_OF(array) && !eventFound; index++) { if (event == array[index].event) { eventFound = TRUE; if ((event & HAP_X_VARIABLE_EVENT) != 0) { if ((p.Update_Flag & array[index].required_event_attrib) != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } else { if (p.Update_Flag != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } } } if (!eventFound) return HAP_ILLEGALEVENT; } cond = DCM_ModifyElements(object, NULL, 0, list, (int) DIM_OF(list), NULL); if (cond != DCM_NORMAL) return HAP_ILLEGALOBJECT; if (p.Update_Flag & HIS_K_RESRISEQUENCE) { x = r_buildSequence(object, SQ_K_REFINTERPRETATIONSOPINSTANCEUID); if (x < 0) return 0; } if (p.Update_Flag & HIS_K_RESRSSEQUENCE) { x = r_buildSequence(object, SQ_K_REFSTUDYSOPINSTANCEUID); if (x < 0) return 0; } return HAP_NORMAL; }
CONDITION MSGPRV_BuildObject(DCM_OBJECT ** object, DCM_ELEMENT * required, int requiredCount, DCM_FLAGGED_ELEMENT * conditional, int conditionalCount) { int index; CONDITION cond; DCM_ELEMENT e; cond = DCM_CreateObject(object); if (cond != DCM_NORMAL) return COND_PushCondition(0, ""); /* repair */ cond = DCM_ModifyElements(object, required, requiredCount, conditional, conditionalCount, NULL); if (cond != DCM_NORMAL) return COND_PushCondition(0, ""); /* repair */ return MSG_NORMAL; }
CONDITION HAP_BuildVisit(DCM_OBJECT ** object, HIS_VisitLevel * xl, HAP_VISIT_EVENT event) { int index, x; CONDITION cond; CTNBOOLEAN eventFound = FALSE; static unsigned long his_flags[] = {HIS_K_VISRPSEQUENCE, HIS_K_VISRSSEQUENCE, HIS_K_VISADCSEQUENCE, HIS_K_VISDDCSEQUENCE}; static SQ_TYPE types[] = {SQ_K_REFPATIENTSOPINSTANCEUID, SQ_K_REFSTUDYSOPINSTANCEUID, SQ_K_ADMITDIAGNOSISCODE, SQ_K_DISCHARGEDIAGNOSISCODE}; p = *xl; if (event != 0) { for (index = 0; index < (int) DIM_OF(array) && !eventFound; index++) { if (event == array[index].event) { eventFound = TRUE; if ((event & HAP_X_VARIABLE_EVENT) != 0) { if ((p.Update_Flag & array[index].required_event_attrib) != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } else { if (p.Update_Flag != array[index].required_event_attrib) return HAP_INCOMPLETEEVENT; } } } if (!eventFound) return HAP_ILLEGALEVENT; } cond = DCM_ModifyElements(object, NULL, 0, list, (int) DIM_OF(list), NULL); if (cond != DCM_NORMAL) return HAP_ILLEGALOBJECT; for (index = 0; index < (int) DIM_OF(his_flags); index++) if (p.Update_Flag & his_flags[index]) { x = v_buildSequence(object, types[index]); if (x < 0) return 0; /* needs repair */ } /* if (p.Update_Flag & HIS_K_VISRPSEQUENCE) { x = v_buildSequence(object, SQ_K_REFPATIENTSOPINSTANCEUID); if (x < 0) return 0; } if (p.Update_Flag & HIS_K_VISRSSEQUENCE) { x = v_buildSequence(object, SQ_K_REFSTUDYSOPINSTANCEUID); if (x < 0) return 0; } */ return HAP_NORMAL; }
CONDITION HAP_QueryToObject(Query * query, DCM_OBJECT ** object, char *SOPClass, int *elementCount) { CONDITION cond, returnCondition; int index; DCM_ELEMENT e; long flag; static char queryLevelString[48]; DCM_ELEMENT queryLevelElement = { DCM_IDQUERYLEVEL, DCM_CS, "", 1, sizeof(queryLevelString), (void *) queryLevelString }; q = *query; *elementCount = 0; if (*object == NULL) { cond = DCM_CreateObject(object); if (cond != DCM_NORMAL) return HAP_OBJECTCREATEFAILED; } returnCondition = HAP_NORMAL; flag = q.QueryState & (DB_K_LEVELPAT | DB_K_LEVELSTUDY | DB_K_LEVELSERIES | DB_K_LEVELIMAGE); if (flag == 0) returnCondition = COND_PushCondition(HAP_INCOMPLETEQUERY, ""); else { for (index = 0; index < DIM_OF(levelMap); index++) { if ((q.QueryState & levelMap[index].flag) != 0) { (void) strcpy(queryLevelString, levelMap[index].queryLevel); queryLevelElement.length = strlen(queryLevelElement.d.string); cond = DCM_ModifyElements(object, &queryLevelElement, 1, NULL, 0, NULL); if (cond != DCM_NORMAL) return cond; } } } flag = q.QueryState & (DB_K_CLASSPAT | DB_K_CLASSSTUDY | DB_K_CLASSPATSTUDY); if (flag == 0) returnCondition = COND_PushCondition(HAP_INCOMPLETEQUERY, ""); else { for (index = 0; index < DIM_OF(classMap); index++) { if ((q.QueryState & classMap[index].flag) != 0) { (void) strcpy(SOPClass, classMap[index].SOPClass); cond = DCM_NORMAL; } } } for (index = 0; index < (int) DIM_OF(list); index++) { flag = *list[index].flagAddress; if ((flag & list[index].flag) != 0) { e = list[index].e; e.length = strlen(e.d.string); cond = DCM_AddElement(object, &e); if (cond != DCM_NORMAL) return cond; (*elementCount)++; } } return returnCondition; }