| 1 | XHDPCAT        ; SLC/JER - Configurator Server Calls ; 25 Jul 2003  9:42 AM
 | 
|---|
| 2 |  ;;1.0;HEALTHEVET DESKTOP;;Jul 15, 2003
 | 
|---|
| 3 | INSERT(ERR,CATFLDS)      ; Insert ParameterCategory
 | 
|---|
| 4 |  N XHDI,FDA,LASTI,LASTS,LASTN,X,XHDDAD,NEWDA
 | 
|---|
| 5 |  S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
 | 
|---|
| 6 |  S XHDI="",(ERR,LASTS,LASTN)=0,LASTI=1
 | 
|---|
| 7 |  F  S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0  D
 | 
|---|
| 8 |  . S FDA($$GETFILE(XHDI),$$GETIENS(XHDI),$$GETORI(XHDI))=CATFLDS(XHDI)
 | 
|---|
| 9 |  I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
 | 
|---|
| 10 |  D UPDATER(.ERR,.FDA) Q:+ERR
 | 
|---|
| 11 |  I '+ERR S NEWDA=$P(ERR,U,2)
 | 
|---|
| 12 |  ; If new record's parent doesn't include it as a subCategory, add it
 | 
|---|
| 13 |  S XHDDAD=+$P(^XHD(8935.91,NEWDA,0),U,4)
 | 
|---|
| 14 |  I +XHDDAD,'+$O(^XHD(8935.91,"SCAT",NEWDA,XHDDAD,0)) D  Q:+ERR
 | 
|---|
| 15 |  . N FDA,SUBERR
 | 
|---|
| 16 |  . S FDA(8935.913,"?+1,"_XHDDAD_",",.01)=(+$O(^XHD(8935.91,1,3,"A"),-1)+1)
 | 
|---|
| 17 |  . S FDA(8935.913,"?+1,"_XHDDAD_",",.02)="`"_NEWDA
 | 
|---|
| 18 |  . D UPDATER(.SUBERR,.FDA) S:+SUBERR ERR=SUBERR
 | 
|---|
| 19 |  ; If there are subcategories, file NEWDA as their parentId
 | 
|---|
| 20 |  I +NEWDA D
 | 
|---|
| 21 |  . N XHDJ,SUBERR S XHDJ=0
 | 
|---|
| 22 |  . F  S XHDJ=$O(^XHD(8935.91,NEWDA,3,XHDJ)) Q:+XHDJ'>0!+ERR  D
 | 
|---|
| 23 |  . . N SUBDA,FDA,IEN,MSG
 | 
|---|
| 24 |  . . S SUBDA=$P($G(^XHD(8935.91,NEWDA,3,XHDJ,0)),U,2) Q:+SUBDA'>0
 | 
|---|
| 25 |  . . I +$P($G(^XHD(8935.91,SUBDA,0)),U,4)=NEWDA Q
 | 
|---|
| 26 |  . . S FDA(8935.91,SUBDA_",",.04)="`"_NEWDA
 | 
|---|
| 27 |  . . D FILER(.SUBERR,.FDA,SUBDA) S:+SUBERR ERR=SUBERR
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | ADDPARAM(ERR,CATFLDS) ; Add Parameter to Category
 | 
|---|
| 30 |  N XHDI,FDA,PCDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
 | 
|---|
| 31 |  S XHDI="",ERR=0,PCDA=+$G(CATFLDS("IEN"))
 | 
|---|
| 32 |  I $S('PCDA:1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D  Q
 | 
|---|
| 33 |  . S ERR="1^Invalid ID passed."
 | 
|---|
| 34 |  L +^XHD(8935.91,PCDA):1
 | 
|---|
| 35 |  E  D  Q
 | 
|---|
| 36 |  . S ERR="1^Another process is modifying Category #"_PCDA
 | 
|---|
| 37 |  F  S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0  D
 | 
|---|
| 38 |  . S FDA(8935.912,"?+1,"_PCDA_",",$P(XHDI,U,3))=CATFLDS(XHDI)
 | 
|---|
| 39 |  I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
 | 
|---|
| 40 |  D UPDATER(.ERR,.FDA)
 | 
|---|
| 41 |  L -^XHD(8935.91,PCDA)
 | 
|---|
| 42 |  Q
 | 
|---|
| 43 | UPDATER(ERR,FDA)        ; Call UPDATE^DIE to create pCats or subCats
 | 
|---|
| 44 |  N IEN,MSG
 | 
|---|
| 45 |  D UPDATE^DIE("E","FDA","IEN","MSG")
 | 
|---|
| 46 |  I $D(MSG("DIERR")) S ERR="1^"_MSG("DIERR",1,"TEXT",1) Q
 | 
|---|
| 47 |  S ERR="0^"_IEN(1)_U_IEN(1,0)
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 | UPDATE(ERR,CATFLDS)     ; Call FILE^DIE to update ParameterCategory
 | 
|---|
| 50 |  N XHDI,FDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
 | 
|---|
| 51 |  S XHDI="",ERR=0,PCDA=+$G(CATFLDS("IEN"))
 | 
|---|
| 52 |  I $S('PCDA:1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D  Q
 | 
|---|
| 53 |  . S ERR="1^Invalid ID passed."
 | 
|---|
| 54 |  F  S XHDI=$O(CATFLDS(XHDI)) Q:+XHDI'>0  D
 | 
|---|
| 55 |  . S FDA($$GETFILE(XHDI),$$GETUPIEN(PCDA,XHDI),$$GETORI(XHDI))=CATFLDS(XHDI)
 | 
|---|
| 56 |  I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
 | 
|---|
| 57 |  D UPDATER(.ERR,.FDA)
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 | REMPARAM(ERR,PDEF,PCDA) ; Remove Parameter from Category
 | 
|---|
| 60 |  N XHDSDA,XHDI,FDA,X S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
 | 
|---|
| 61 |  S XHDI="",ERR=0
 | 
|---|
| 62 |  I $S('+$G(PCDA):1,'$D(^XHD(8935.91,PCDA,0)):1,1:0) D  Q
 | 
|---|
| 63 |  . S ERR="1^Invalid ID passed."
 | 
|---|
| 64 |  S XHDSDA=$O(^XHD(8935.91,PCDA,2,"C",PDEF,0))
 | 
|---|
| 65 |  I +XHDSDA S FDA(8935.912,XHDSDA_","_PCDA_",",.01)="@"
 | 
|---|
| 66 |  I $D(FDA)'>9 S ERR="1^Parameter "_PDEF_" not found in Category "_PCDA_"." Q
 | 
|---|
| 67 |  D FILER(.ERR,.FDA,PCDA)
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | REMOVE(ERR,PCAT,PARENT) ; Remove Parameter Category from parent
 | 
|---|
| 70 |  N XHDSDA,FDA,X S XHDSDA=0,X="ONERROR^XHDPCAT",@^%ZOSF("TRAP")
 | 
|---|
| 71 |  ; remove reference to parent
 | 
|---|
| 72 |  S FDA(8935.91,PCAT_",",.04)="@"
 | 
|---|
| 73 |  ; remove PCAT from parent's subCat multiple
 | 
|---|
| 74 |  S XHDSDA=$O(^XHD(8935.91,PARENT,3,"C",PCAT,0))
 | 
|---|
| 75 |  I +XHDSDA S FDA(8935.913,XHDSDA_","_PARENT_",",.01)="@"
 | 
|---|
| 76 |  I $D(FDA)'>9 S ERR="1^Sub-category not found in Parent Category." Q
 | 
|---|
| 77 |  D FILER(.ERR,.FDA,PARENT)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | DELETE(ERR,PCAT,DELKIDS) ; Delete Parameter Category and all descendents
 | 
|---|
| 80 |  N X,FDA,PARENT S X="ONERROR^XHDPCAT",@^%ZOSF("TRAP"),ERR=0
 | 
|---|
| 81 |  ; if DELKIDS, remove descendents first
 | 
|---|
| 82 |  I +$G(DELKIDS) D  Q:+ERR
 | 
|---|
| 83 |  . N XHDI S XHDI=0
 | 
|---|
| 84 |  . F  S XHDI=$O(^XHD(8935.91,PCAT,3,XHDI)) Q:+XHDI'>0!+ERR  D
 | 
|---|
| 85 |  . . N XHDSDA S XHDSDA=$P($G(^XHD(8935.91,PCAT,3,XHDI,0)),U,2)
 | 
|---|
| 86 |  . . I '+XHDSDA S ERR="1^Corrupt Sub-category at PCat #"_PCAT_", seq #"_XHDI Q
 | 
|---|
| 87 |  . . D DELETE(.ERR,XHDSDA,1)
 | 
|---|
| 88 |  ;Remove the sub-category from its parent prior to deletion
 | 
|---|
| 89 |  S PARENT=$P($G(^XHD(8935.91,PCAT,0)),U,4)
 | 
|---|
| 90 |  I +PARENT D REMOVE(.ERR,PCAT,PARENT)
 | 
|---|
| 91 |  ; delete record
 | 
|---|
| 92 |  S FDA(8935.91,PCAT_",",.01)="@"
 | 
|---|
| 93 |  I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
 | 
|---|
| 94 |  D FILER(.ERR,.FDA,PCAT)
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 | FILER(ERR,FDA,XHDDA)    ; Call FILE^DIE with FDA to post changes
 | 
|---|
| 97 |  I $D(FDA)'>9 S ERR="1^Request not well-formed." Q
 | 
|---|
| 98 |  L +^XHD(8935.91,XHDDA):1
 | 
|---|
| 99 |  E  D  Q
 | 
|---|
| 100 |  . S ERR="1^Another process is modifying Category #"_XHDDA
 | 
|---|
| 101 |  D FILE^DIE("E","FDA","MSG")
 | 
|---|
| 102 |  L -^XHD(8935.91,XHDDA)
 | 
|---|
| 103 |  I $D(MSG("DIERR")) S ERR="1^"_MSG("DIERR",1,"TEXT",1) Q
 | 
|---|
| 104 |  S ERR="0^"_XHDDA
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | ONERROR ; Trap errors
 | 
|---|
| 107 |  S ERR="1^"_$TR($$EC^%ZOSV,"^","~")
 | 
|---|
| 108 |  D ^%ZTER
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | GETUPIEN(PCDA,XHDI)      ; Get IENS for UPDATE call
 | 
|---|
| 111 |  Q $S($L(XHDI,U)=3:"?+"_$P(XHDI,U,2)_","_PCDA_",",1:PCDA_",")
 | 
|---|
| 112 | GETFILE(XHDI)    ; Get first subscript for FDA
 | 
|---|
| 113 |  Q $S($P(XHDI,U)=2:8935.912,$P(XHDI,U)=3:8935.913,1:8935.91)
 | 
|---|
| 114 | GETIENS(XHDI)    ; Get IENS for UPDATE^DIE call
 | 
|---|
| 115 |  I $L(XHDI,U)=3 D
 | 
|---|
| 116 |  . S LASTI=LASTI+$S($P(XHDI,U)'=LASTS:1,$P(XHDI,U,2)'=LASTN:1,1:0)
 | 
|---|
| 117 |  . S LASTS=$P(XHDI,U),LASTN=$P(XHDI,U,2)
 | 
|---|
| 118 |  Q $S($L(XHDI,U)=3:"?+"_LASTI_",?+1,",1:"?+1,")
 | 
|---|
| 119 | GETORI(XHDI)     ; Get field subscript for FDA
 | 
|---|
| 120 |  Q $S($L(XHDI,U)=3:$P(XHDI,U,3),1:XHDI)
 | 
|---|