Changeset 1571 for smart/trunk/p/C0SPROB2.m
- Timestamp:
- Oct 13, 2012, 2:49:26 PM (13 years ago)
- File:
-
- 1 edited
-
smart/trunk/p/C0SPROB2.m (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
smart/trunk/p/C0SPROB2.m
r1569 r1571 1 C0SPROB ; GPL - Smart Problem Processing ;5/01/12 17:052 ;;0.1;C0S;nopatch;noreleasedate;Build 2 3 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU4 ;General Public License See attached copy of the License.5 ;6 ;This program is free software; you can redistribute it and/or modify7 ;it under the terms of the GNU General Public License as published by8 ;the Free Software Foundation; either version 2 of the License, or9 ;(at your option) any later version.10 ;11 ;This program is distributed in the hope that it will be useful,12 ;but WITHOUT ANY WARRANTY; without even the implied warranty of13 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14 ;GNU General Public License for more details.15 ;16 ;You should have received a copy of the GNU General Public License along17 ;with this program; if not, write to the Free Software Foundation, Inc.,18 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.19 ;20 Q21 ;22 ; sample VistA NHIN problem list23 ;24 ;^TMP("C0STBL",91,"problem",1,"acuity@value")="C"25 ;^TMP("C0STBL",91,"problem",1,"entered@value")=311053126 ;^TMP("C0STBL",91,"problem",1,"facility@code")=10027 ;^TMP("C0STBL",91,"problem",1,"facility@name")="VOE OFFICE INSTITUTION"28 ;^TMP("C0STBL",91,"problem",1,"icd@value")=414.929 ;^TMP("C0STBL",91,"problem",1,"id@value")=10030 ;^TMP("C0STBL",91,"problem",1,"location@value")="DR OFFICE"31 ;^TMP("C0STBL",91,"problem",1,"name@value")="Coronary Artery Disease"32 ;^TMP("C0STBL",91,"problem",1,"onset@value")=310020133 ;^TMP("C0STBL",91,"problem",1,"provider@code")=6334 ;^TMP("C0STBL",91,"problem",1,"provider@name")="KING,MATTHEW MICHAEL"35 ;^TMP("C0STBL",91,"problem",1,"removed@value")=036 ;^TMP("C0STBL",91,"problem",1,"sc@value")=037 ;^TMP("C0STBL",91,"problem",1,"status@value")="A"38 ;^TMP("C0STBL",91,"problem",1,"unverified@value")=039 ;^TMP("C0STBL",91,"problem",1,"updated@value")=311053140 ;^TMP("C0STBL",91,"problem",2,"acuity@value")="C"41 ;^TMP("C0STBL",91,"problem",2,"entered@value")=311060242 ;^TMP("C0STBL",91,"problem",2,"facility@code")=10043 ;^TMP("C0STBL",91,"problem",2,"facility@name")="VOE OFFICE INSTITUTION"44 ;^TMP("C0STBL",91,"problem",2,"icd@value")=780.245 ;^TMP("C0STBL",91,"problem",2,"id@value")=10846 ;^TMP("C0STBL",91,"problem",2,"name@value")="Syncope and collapse"47 ;^TMP("C0STBL",91,"problem",2,"onset@value")=311010248 ;^TMP("C0STBL",91,"problem",2,"provider@code")=6349 ;^TMP("C0STBL",91,"problem",2,"provider@name")="KING,MATTHEW MICHAEL"50 ;^TMP("C0STBL",91,"problem",2,"removed@value")=051 ;^TMP("C0STBL",91,"problem",2,"sc@value")=052 ;^TMP("C0STBL",91,"problem",2,"status@value")="A"53 ;^TMP("C0STBL",91,"problem",2,"unverified@value")=054 ;^TMP("C0STBL",91,"problem",2,"updated@value")=311060255 ;^TMP("C0STBL",91,"problem",3,"acuity@value")="C"56 ;^TMP("C0STBL",91,"problem",3,"entered@value")=311060257 ;^TMP("C0STBL",91,"problem",3,"facility@code")=10058 ;^TMP("C0STBL",91,"problem",3,"facility@name")="VOE OFFICE INSTITUTION"59 ;^TMP("C0STBL",91,"problem",3,"icd@value")=433.9160 ;^TMP("C0STBL",91,"problem",3,"id@value")=10961 ;^TMP("C0STBL",91,"problem",3,"name@value")="Occlusion and Stenosis of Unspecifid Precerebral Artery with Cerebral Infarctio"62 ;^TMP("C0STBL",91,"problem",3,"onset@value")=310010163 ;^TMP("C0STBL",91,"problem",3,"provider@code")=6364 ;^TMP("C0STBL",91,"problem",3,"provider@name")="KING,MATTHEW MICHAEL"65 ;^TMP("C0STBL",91,"problem",3,"removed@value")=066 ;^TMP("C0STBL",91,"problem",3,"sc@value")=067 ;^TMP("C0STBL",91,"problem",3,"status@value")="A"68 ;^TMP("C0STBL",91,"problem",3,"unverified@value")=069 ;^TMP("C0STBL",91,"problem",3,"updated@value")=311060270 ;^TMP("C0STBL",91,"problem",4,"entered@value")=311060371 ;^TMP("C0STBL",91,"problem",4,"facility@code")=10072 ;^TMP("C0STBL",91,"problem",4,"facility@name")="VOE OFFICE INSTITUTION"73 ;^TMP("C0STBL",91,"problem",4,"icd@value")="00.66"74 ;^TMP("C0STBL",91,"problem",4,"id@value")=11575 ;^TMP("C0STBL",91,"problem",4,"location@value")="DR OFFICE"76 ;^TMP("C0STBL",91,"problem",4,"name@value")="00.66"77 ;^TMP("C0STBL",91,"problem",4,"provider@code")=6378 ;^TMP("C0STBL",91,"problem",4,"provider@name")="KING,MATTHEW MICHAEL"79 ;^TMP("C0STBL",91,"problem",4,"removed@value")=080 ;^TMP("C0STBL",91,"problem",4,"status@value")="A"81 ;^TMP("C0STBL",91,"problem",4,"unverified@value")=082 ;^TMP("C0STBL",91,"problem",4,"updated@value")=311060383 ;^TMP("C0STBL",91,"problem",5,"entered@value")=311060384 ;^TMP("C0STBL",91,"problem",5,"facility@code")=10085 ;^TMP("C0STBL",91,"problem",5,"facility@name")="VOE OFFICE INSTITUTION"86 ;^TMP("C0STBL",91,"problem",5,"icd@value")=37.2187 ;^TMP("C0STBL",91,"problem",5,"id@value")=11688 ;^TMP("C0STBL",91,"problem",5,"location@value")="DR OFFICE"89 ;^TMP("C0STBL",91,"problem",5,"name@value")=37.2190 ;^TMP("C0STBL",91,"problem",5,"provider@code")=6391 ;^TMP("C0STBL",91,"problem",5,"provider@name")="KING,MATTHEW MICHAEL"92 ;^TMP("C0STBL",91,"problem",5,"removed@value")=093 ;^TMP("C0STBL",91,"problem",5,"status@value")="A"94 ;^TMP("C0STBL",91,"problem",5,"unverified@value")=095 ;^TMP("C0STBL",91,"problem",5,"updated@value")=311060396 ;^TMP("C0STBL",91,"problem",6,"entered@value")=311060397 ;^TMP("C0STBL",91,"problem",6,"facility@code")=10098 ;^TMP("C0STBL",91,"problem",6,"facility@name")="VOE OFFICE INSTITUTION"99 ;^TMP("C0STBL",91,"problem",6,"icd@value")=81.51100 ;^TMP("C0STBL",91,"problem",6,"id@value")=117101 ;^TMP("C0STBL",91,"problem",6,"location@value")="DR OFFICE"102 ;^TMP("C0STBL",91,"problem",6,"name@value")=81.51103 ;^TMP("C0STBL",91,"problem",6,"provider@code")=63104 ;^TMP("C0STBL",91,"problem",6,"provider@name")="KING,MATTHEW MICHAEL"105 ;^TMP("C0STBL",91,"problem",6,"removed@value")=0106 ;^TMP("C0STBL",91,"problem",6,"status@value")="A"107 ;^TMP("C0STBL",91,"problem",6,"unverified@value")=0108 ;^TMP("C0STBL",91,"problem",6,"updated@value")=3110603109 ;^TMP("C0STBL",91,"problem",7,"entered@value")=3110603110 ;^TMP("C0STBL",91,"problem",7,"facility@code")=100111 ;^TMP("C0STBL",91,"problem",7,"facility@name")="VOE OFFICE INSTITUTION"112 ;^TMP("C0STBL",91,"problem",7,"icd@value")=47.09113 ;^TMP("C0STBL",91,"problem",7,"id@value")=118114 ;^TMP("C0STBL",91,"problem",7,"location@value")="DR OFFICE"115 ;^TMP("C0STBL",91,"problem",7,"name@value")=47.09116 ;^TMP("C0STBL",91,"problem",7,"provider@code")=63117 ;^TMP("C0STBL",91,"problem",7,"provider@name")="KING,MATTHEW MICHAEL"118 ;^TMP("C0STBL",91,"problem",7,"removed@value")=0119 ;^TMP("C0STBL",91,"problem",7,"status@value")="A"120 ;^TMP("C0STBL",91,"problem",7,"unverified@value")=0121 ;^TMP("C0STBL",91,"problem",7,"updated@value")=3110603122 ;^TMP("C0STBL",91,"problem",8,"entered@value")=3110603123 ;^TMP("C0STBL",91,"problem",8,"facility@code")=100124 ;^TMP("C0STBL",91,"problem",8,"facility@name")="VOE OFFICE INSTITUTION"125 ;^TMP("C0STBL",91,"problem",8,"icd@value")="250.00"126 ;^TMP("C0STBL",91,"problem",8,"id@value")=119127 ;^TMP("C0STBL",91,"problem",8,"location@value")="DR OFFICE"128 ;^TMP("C0STBL",91,"problem",8,"name@value")="Diabetes Mellitus without mentionof Complication, type II or unspecified type,"129 ;^TMP("C0STBL",91,"problem",8,"provider@code")=63130 ;^TMP("C0STBL",91,"problem",8,"provider@name")="KING,MATTHEW MICHAEL"131 ;^TMP("C0STBL",91,"problem",8,"removed@value")=0132 ;^TMP("C0STBL",91,"problem",8,"status@value")="A"133 ;^TMP("C0STBL",91,"problem",8,"unverified@value")=0134 ;^TMP("C0STBL",91,"problem",8,"updated@value")=3110603135 ;136 ; sample Smart lab result triples137 ;138 ;G("node16rk1fgdvx10882","code")="snomed:40930008"139 ;G("node16rk1fgdvx10882","dcterms:title")="Hypothyroidism"140 ;G("node16rk1fgdvx10882","rdf:type")="sp:CodedValue"141 ;G("node16rk1fgdvx11051","code")="snomed:188155002"142 ;G("node16rk1fgdvx11051","dcterms:title")="Primary malignant neoplasm of lower outer quadrant of female breast"143 ;G("node16rk1fgdvx11051","rdf:type")="sp:CodedValue"144 ;G("node16rk1fgdvx11073","code")="snomed:353295004"145 ;G("node16rk1fgdvx11073","dcterms:title")="Toxic diffuse goiter"146 ;G("node16rk1fgdvx11073","rdf:type")="sp:CodedValue"147 ;G("node16rk1fgdvx11089","code")="snomed:54302000"148 ;G("node16rk1fgdvx11089","dcterms:title")="Disorder of breast"149 ;G("node16rk1fgdvx11089","rdf:type")="sp:CodedValue"150 ;G("node16rk1fgdvx11351","code")="snomed:38341003"151 ;G("node16rk1fgdvx11351","dcterms:title")="Essential hypertension"152 ;G("node16rk1fgdvx11351","rdf:type")="sp:CodedValue"153 ;G("node16rk1fgdvx11390","code")="snomed:44054006"154 ;G("node16rk1fgdvx11390","dcterms:title")="Diabetes mellitus type 2"155 ;G("node16rk1fgdvx11390","rdf:type")="sp:CodedValue"156 ;G("node16rk1fgdvx11558","code")="snomed:195967001"157 ;G("node16rk1fgdvx11558","dcterms:title")="Asthma"158 ;G("node16rk1fgdvx11558","rdf:type")="sp:CodedValue"159 ;G("node16rk1fgdvx11578","code")="snomed:254837009"160 ;G("node16rk1fgdvx11578","dcterms:title")="Primary malignant neoplasm of female breast"161 ;G("node16rk1fgdvx11578","rdf:type")="sp:CodedValue"162 ;G("node16rk1fgdvx11687","code")="snomed:8517006"163 ;G("node16rk1fgdvx11687","dcterms:title")="History of tobacco use"164 ;G("node16rk1fgdvx11687","rdf:type")="sp:CodedValue"165 ;G("node16rk1fgdvx11716","code")="snomed:55822004"166 ;G("node16rk1fgdvx11716","dcterms:title")="Hyperlipidemia"167 ;G("node16rk1fgdvx11716","rdf:type")="sp:CodedValue"168 ;G("smart:1577780/problems/69560e4721e1","belongsTo")="smart:1577780"169 ;G("smart:1577780/problems/69560e4721e1","problemName")="node16rk1fgdvx11089"170 ;G("smart:1577780/problems/69560e4721e1","rdf:type")="sp:Problem"171 ;G("smart:1577780/problems/69560e4721e1","startDate")="2005-08-02"172 ;G("smart:1577780/problems/06ef10c4e92c","belongsTo")="smart:1577780"173 ;G("smart:1577780/problems/06ef10c4e92c","problemName")="node16rk1fgdvx11051"174 ;G("smart:1577780/problems/06ef10c4e92c","rdf:type")="sp:Problem"175 ;G("smart:1577780/problems/06ef10c4e92c","startDate")="2006-02-20"176 ;G("smart:1577780/problems/9894ba9dfe5a","belongsTo")="smart:1577780"177 ;G("smart:1577780/problems/9894ba9dfe5a","problemName")="node16rk1fgdvx11578"178 ;G("smart:1577780/problems/9894ba9dfe5a","rdf:type")="sp:Problem"179 ;G("smart:1577780/problems/9894ba9dfe5a","startDate")="2005-08-22"180 ;G("smart:1577780/problems/c109aa7a0675","belongsTo")="smart:1577780"181 ;G("smart:1577780/problems/c109aa7a0675","problemName")="node16rk1fgdvx11558"182 ;G("smart:1577780/problems/c109aa7a0675","rdf:type")="sp:Problem"183 ;G("smart:1577780/problems/c109aa7a0675","startDate")="2005-09-22"184 ;G("smart:1577780/problems/1c50100614a2","belongsTo")="smart:1577780"185 ;G("smart:1577780/problems/1c50100614a2","problemName")="node16rk1fgdvx11073"186 ;G("smart:1577780/problems/1c50100614a2","rdf:type")="sp:Problem"187 ;G("smart:1577780/problems/1c50100614a2","startDate")="2007-02-21"188 ;G("smart:1577780/problems/083dffb2c4a0","belongsTo")="smart:1577780"189 ;G("smart:1577780/problems/083dffb2c4a0","problemName")="node16rk1fgdvx11390"190 ;G("smart:1577780/problems/083dffb2c4a0","rdf:type")="sp:Problem"191 ;G("smart:1577780/problems/083dffb2c4a0","startDate")="2007-01-07"192 ;G("smart:1577780/problems/762b5639a2d1","belongsTo")="smart:1577780"193 ;G("smart:1577780/problems/762b5639a2d1","problemName")="node16rk1fgdvx11687"194 ;G("smart:1577780/problems/762b5639a2d1","rdf:type")="sp:Problem"195 ;G("smart:1577780/problems/762b5639a2d1","startDate")="2006-02-20"196 ;G("smart:1577780/problems/9dc9053dd6f4","belongsTo")="smart:1577780"197 ;G("smart:1577780/problems/9dc9053dd6f4","problemName")="node16rk1fgdvx11716"198 ;G("smart:1577780/problems/9dc9053dd6f4","rdf:type")="sp:Problem"199 ;G("smart:1577780/problems/9dc9053dd6f4","startDate")="2008-04-08"200 ;G("smart:1577780/problems/e3fe9b7ee552","belongsTo")="smart:1577780"201 ;G("smart:1577780/problems/e3fe9b7ee552","problemName")="node16rk1fgdvx10882"202 ;G("smart:1577780/problems/e3fe9b7ee552","rdf:type")="sp:Problem"203 ;G("smart:1577780/problems/e3fe9b7ee552","startDate")="2005-10-27"204 ;G("smart:1577780/problems/9933307e8f95","belongsTo")="smart:1577780"205 ;G("smart:1577780/problems/9933307e8f95","problemName")="node16rk1fgdvx11351"206 ;G("smart:1577780/problems/9933307e8f95","rdf:type")="sp:Problem"207 ;G("smart:1577780/problems/9933307e8f95","startDate")="2005-08-22"208 ;G("snomed:188155002","dcterms:identifier")=188155002209 ;G("snomed:188155002","dcterms:title")="Primary malignant neoplasm of lower outer quadrant of female breast"210 ;G("snomed:188155002","rdf:type")="sp:Code"211 ;G("snomed:188155002","system")="http://purl.bioontology.org/ontology/SNOMEDCT"212 ;G("snomed:195967001","dcterms:identifier")=195967001213 ;G("snomed:195967001","dcterms:title")="Asthma"214 ;G("snomed:195967001","rdf:type")="sp:Code"215 ;G("snomed:195967001","system")="http://purl.bioontology.org/ontology/SNOMEDCT"216 ;G("snomed:254837009","dcterms:identifier")=254837009217 ;G("snomed:254837009","dcterms:title")="Primary malignant neoplasm of female breast"218 ;G("snomed:254837009","rdf:type")="sp:Code"219 ;G("snomed:254837009","system")="http://purl.bioontology.org/ontology/SNOMEDCT"220 ;G("snomed:353295004","dcterms:identifier")=353295004221 ;G("snomed:353295004","dcterms:title")="Toxic diffuse goiter"222 ;G("snomed:353295004","rdf:type")="sp:Code"223 ;G("snomed:353295004","system")="http://purl.bioontology.org/ontology/SNOMEDCT"224 ;G("snomed:38341003","dcterms:identifier")=38341003225 ;G("snomed:38341003","dcterms:title")="Essential hypertension"226 ;G("snomed:38341003","rdf:type")="sp:Code"227 ;G("snomed:38341003","system")="http://purl.bioontology.org/ontology/SNOMEDCT"228 ;G("snomed:40930008","dcterms:identifier")=40930008229 ;G("snomed:40930008","dcterms:title")="Hypothyroidism"230 ;G("snomed:40930008","rdf:type")="sp:Code"231 ;G("snomed:40930008","system")="http://purl.bioontology.org/ontology/SNOMEDCT"232 ;G("snomed:44054006","dcterms:identifier")=44054006233 ;G("snomed:44054006","dcterms:title")="Diabetes mellitus type 2"234 ;G("snomed:44054006","rdf:type")="sp:Code"235 ;G("snomed:44054006","system")="http://purl.bioontology.org/ontology/SNOMEDCT"236 ;G("snomed:54302000","dcterms:identifier")=54302000237 ;G("snomed:54302000","dcterms:title")="Disorder of breast"238 ;G("snomed:54302000","rdf:type")="sp:Code"239 ;G("snomed:54302000","system")="http://purl.bioontology.org/ontology/SNOMEDCT"240 ;G("snomed:55822004","dcterms:identifier")=55822004241 ;G("snomed:55822004","dcterms:title")="Hyperlipidemia"242 ;G("snomed:55822004","rdf:type")="sp:Code"243 ;G("snomed:55822004","system")="http://purl.bioontology.org/ontology/SNOMEDCT"244 ;G("snomed:8517006","dcterms:identifier")=8517006245 ;G("snomed:8517006","dcterms:title")="History of tobacco use"246 ;G("snomed:8517006","rdf:type")="sp:Code"247 ;G("snomed:8517006","system")="http://purl.bioontology.org/ontology/SNOMEDCT/"248 249 ;250 PROB(GRTN,C0SARY) ; GRTN, passed by reference,251 ; is the return name of the graph created. "" if none252 ; C0SARY is passed in by reference and is the NHIN array of problems253 ;254 I $O(C0SARY("problem",""))="" D Q ;255 . I $D(DEBUG) W !,"No Problems"256 S GRTN="" ; default to no problems257 N C0SGRF258 S C0SGRF="vistaSmart:"_ZPATID_"/problems"259 I $D(DEBUG) W !,"Processing ",C0SGRF260 D DELGRAPH^C0XF2N(C0SGRF) ; delete the old graph261 D INITFARY^C0XF2N("C0XFARY") ; which triple store to use262 N FARY S FARY="C0XFARY"263 D USEFARY^C0XF2N(FARY)264 D VOCINIT^C0XUTIL265 ;266 D STARTADD^C0XF2N ; initialize to create triples267 ;268 N ZI S ZI=""269 F S ZI=$O(C0SARY("problem",ZI)) Q:ZI="" D ;270 . N LRN,ZR ; ZR is the local array for building the new triples271 . S LRN=$NA(C0SARY("problem",ZI)) ; base for values in this lab result272 . ;273 . N PROBID ; unique Id for this problem274 . S PROBID=C0SGRF_"/"_$$LKY17^C0XF2N ; use a random number275 . ;276 . ; i don't like this because the same problems gets a277 . ; different ID every time it's reported. Can't trace it back to VistA278 . ; I'd rather be using id@value ie "id@value")="118"279 . ;280 . N SNOMED,ICD S ICD=$G(@LRN@("icd@value"))281 . S SNOMED=$$SNOMED(ICD) ; look up the snomed code in the map282 . N SNOGRF ; graph for SNOMED code283 . I SNOMED="" D ;284 . . S SNOMED=ICD ; if not found, return the ICD code285 . . S SNOGRF="icd9:"_SNOMED286 . E S SNOGRF="snomed:"_SNOMED287 . N SNOTIT S SNOTIT=$G(@LRN@("name@value"))288 . I $D(DEBUG) D ;289 . . W !,"Processing Problem List ",PROBID290 . . W !,"problem: ",SNOTIT291 . . W !,"code: ",SNOMED292 . ;293 . ; first do the base result graph294 . ;295 . S ZR("rdf:type")="sp:Problem"296 . S ZR("sp:belongsTo")=C0SGRF ; the subject for this patient's problems297 . ; ie /vista/smart/99912345/problems298 . ;299 . N PROBNAME S PROBNAME=$$ANONS^C0XF2N ; new node for problem name300 . S ZR("sp:problemName")=PROBNAME301 . ;302 . N STARTDT S STARTDT=$$SPDATE^C0SUTIL($G(@LRN@("entered@value")))303 . S ZR("sp:startDate")=STARTDT304 . ;305 . D ADDINN^C0XF2N(C0SGRF,PROBID,.ZR) ; addIfNotNull the triples306 . K ZR ; clean up307 . ;308 . ; create the problemName graph309 . ;310 . S ZR("rdf:type")="sp:CodedValue"311 . ;S ZR("sp:code")="snomed:"_SNOMED312 . S ZR("sp:code")=SNOGRF313 . S ZR("dcterms:title")=$G(@LRN@("name@value"))314 . D ADDINN^C0XF2N(C0SGRF,PROBNAME,.ZR)315 . K ZR316 . ;317 . ; create snomed graph318 . ;319 . S ZR("rdf:type")="sp:Code"320 . S ZR("sp:system")="http://purl.bioontology.org/ontology/SNOMEDCT"321 . I SNOGRF["icd9" S ZR("sp:system")="http://purl.bioontology.org/ontology/ICD9"322 . S ZR("dcterms:identifier")=SNOMED323 . S ZR("dcterms:title")=SNOTIT324 . D ADDINN^C0XF2N(C0SGRF,SNOGRF,.ZR)325 . K ZR326 . ;327 D BULKLOAD^C0XF2N(.C0XFDA)328 S GRTN=C0SGRF329 Q330 ;331 SNOMED(ZICD) ; extrinsic which returns SNOMED code given an ICD9 code332 ; requires the mapping table installed in the triplestore333 ;334 N ZSN,ZARY,ZSUB,ZSUBS335 I $E(ZICD,$L(ZICD))="." S ZICD=$P(ZICD,".",1) ; handle trailing dots336 D subjects^C0XGET1(.ZSUBS,"cg:ontology#code",ZICD) ; subjects with the ICD9 code337 S ZSUB=$O(ZSUBS("")) ; pick the first one338 I ZSUB="" Q ""339 D objects^C0XGET1(.ZARY,ZSUB,"cg:ontology#toCode")340 S ZSN=$O(ZARY(""))341 I $D(DEBUG) W !,ZSN," ",$$object^C0XGET1(ZSUB,"rdfs:label")342 Q ZSN343 ;1 C0SPROB ; GPL - Smart Problem Processing ;5/01/12 17:05 2 ;;1.0;VISTA SMART CONTAINER;;Sep 26, 2012;Build 4 3 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU 4 ;General Public License See attached copy of the License. 5 ; 6 ;This program is free software; you can redistribute it and/or modify 7 ;it under the terms of the GNU General Public License as published by 8 ;the Free Software Foundation; either version 2 of the License, or 9 ;(at your option) any later version. 10 ; 11 ;This program is distributed in the hope that it will be useful, 12 ;but WITHOUT ANY WARRANTY; without even the implied warranty of 13 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 ;GNU General Public License for more details. 15 ; 16 ;You should have received a copy of the GNU General Public License along 17 ;with this program; if not, write to the Free Software Foundation, Inc., 18 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 ; 20 Q 21 ; 22 ; sample VistA NHIN problem list 23 ; 24 ;^TMP("C0STBL",91,"problem",1,"acuity@value")="C" 25 ;^TMP("C0STBL",91,"problem",1,"entered@value")=3110531 26 ;^TMP("C0STBL",91,"problem",1,"facility@code")=100 27 ;^TMP("C0STBL",91,"problem",1,"facility@name")="VOE OFFICE INSTITUTION" 28 ;^TMP("C0STBL",91,"problem",1,"icd@value")=414.9 29 ;^TMP("C0STBL",91,"problem",1,"id@value")=100 30 ;^TMP("C0STBL",91,"problem",1,"location@value")="DR OFFICE" 31 ;^TMP("C0STBL",91,"problem",1,"name@value")="Coronary Artery Disease" 32 ;^TMP("C0STBL",91,"problem",1,"onset@value")=3100201 33 ;^TMP("C0STBL",91,"problem",1,"provider@code")=63 34 ;^TMP("C0STBL",91,"problem",1,"provider@name")="KING,MATTHEW MICHAEL" 35 ;^TMP("C0STBL",91,"problem",1,"removed@value")=0 36 ;^TMP("C0STBL",91,"problem",1,"sc@value")=0 37 ;^TMP("C0STBL",91,"problem",1,"status@value")="A" 38 ;^TMP("C0STBL",91,"problem",1,"unverified@value")=0 39 ;^TMP("C0STBL",91,"problem",1,"updated@value")=3110531 40 ;^TMP("C0STBL",91,"problem",2,"acuity@value")="C" 41 ;^TMP("C0STBL",91,"problem",2,"entered@value")=3110602 42 ;^TMP("C0STBL",91,"problem",2,"facility@code")=100 43 ;^TMP("C0STBL",91,"problem",2,"facility@name")="VOE OFFICE INSTITUTION" 44 ;^TMP("C0STBL",91,"problem",2,"icd@value")=780.2 45 ;^TMP("C0STBL",91,"problem",2,"id@value")=108 46 ;^TMP("C0STBL",91,"problem",2,"name@value")="Syncope and collapse" 47 ;^TMP("C0STBL",91,"problem",2,"onset@value")=3110102 48 ;^TMP("C0STBL",91,"problem",2,"provider@code")=63 49 ;^TMP("C0STBL",91,"problem",2,"provider@name")="KING,MATTHEW MICHAEL" 50 ;^TMP("C0STBL",91,"problem",2,"removed@value")=0 51 ;^TMP("C0STBL",91,"problem",2,"sc@value")=0 52 ;^TMP("C0STBL",91,"problem",2,"status@value")="A" 53 ;^TMP("C0STBL",91,"problem",2,"unverified@value")=0 54 ;^TMP("C0STBL",91,"problem",2,"updated@value")=3110602 55 ;^TMP("C0STBL",91,"problem",3,"acuity@value")="C" 56 ;^TMP("C0STBL",91,"problem",3,"entered@value")=3110602 57 ;^TMP("C0STBL",91,"problem",3,"facility@code")=100 58 ;^TMP("C0STBL",91,"problem",3,"facility@name")="VOE OFFICE INSTITUTION" 59 ;^TMP("C0STBL",91,"problem",3,"icd@value")=433.91 60 ;^TMP("C0STBL",91,"problem",3,"id@value")=109 61 ;^TMP("C0STBL",91,"problem",3,"name@value")="Occlusion and Stenosis of Unspecifid Precerebral Artery with Cerebral Infarctio" 62 ;^TMP("C0STBL",91,"problem",3,"onset@value")=3100101 63 ;^TMP("C0STBL",91,"problem",3,"provider@code")=63 64 ;^TMP("C0STBL",91,"problem",3,"provider@name")="KING,MATTHEW MICHAEL" 65 ;^TMP("C0STBL",91,"problem",3,"removed@value")=0 66 ;^TMP("C0STBL",91,"problem",3,"sc@value")=0 67 ;^TMP("C0STBL",91,"problem",3,"status@value")="A" 68 ;^TMP("C0STBL",91,"problem",3,"unverified@value")=0 69 ;^TMP("C0STBL",91,"problem",3,"updated@value")=3110602 70 ;^TMP("C0STBL",91,"problem",4,"entered@value")=3110603 71 ;^TMP("C0STBL",91,"problem",4,"facility@code")=100 72 ;^TMP("C0STBL",91,"problem",4,"facility@name")="VOE OFFICE INSTITUTION" 73 ;^TMP("C0STBL",91,"problem",4,"icd@value")="00.66" 74 ;^TMP("C0STBL",91,"problem",4,"id@value")=115 75 ;^TMP("C0STBL",91,"problem",4,"location@value")="DR OFFICE" 76 ;^TMP("C0STBL",91,"problem",4,"name@value")="00.66" 77 ;^TMP("C0STBL",91,"problem",4,"provider@code")=63 78 ;^TMP("C0STBL",91,"problem",4,"provider@name")="KING,MATTHEW MICHAEL" 79 ;^TMP("C0STBL",91,"problem",4,"removed@value")=0 80 ;^TMP("C0STBL",91,"problem",4,"status@value")="A" 81 ;^TMP("C0STBL",91,"problem",4,"unverified@value")=0 82 ;^TMP("C0STBL",91,"problem",4,"updated@value")=3110603 83 ;^TMP("C0STBL",91,"problem",5,"entered@value")=3110603 84 ;^TMP("C0STBL",91,"problem",5,"facility@code")=100 85 ;^TMP("C0STBL",91,"problem",5,"facility@name")="VOE OFFICE INSTITUTION" 86 ;^TMP("C0STBL",91,"problem",5,"icd@value")=37.21 87 ;^TMP("C0STBL",91,"problem",5,"id@value")=116 88 ;^TMP("C0STBL",91,"problem",5,"location@value")="DR OFFICE" 89 ;^TMP("C0STBL",91,"problem",5,"name@value")=37.21 90 ;^TMP("C0STBL",91,"problem",5,"provider@code")=63 91 ;^TMP("C0STBL",91,"problem",5,"provider@name")="KING,MATTHEW MICHAEL" 92 ;^TMP("C0STBL",91,"problem",5,"removed@value")=0 93 ;^TMP("C0STBL",91,"problem",5,"status@value")="A" 94 ;^TMP("C0STBL",91,"problem",5,"unverified@value")=0 95 ;^TMP("C0STBL",91,"problem",5,"updated@value")=3110603 96 ;^TMP("C0STBL",91,"problem",6,"entered@value")=3110603 97 ;^TMP("C0STBL",91,"problem",6,"facility@code")=100 98 ;^TMP("C0STBL",91,"problem",6,"facility@name")="VOE OFFICE INSTITUTION" 99 ;^TMP("C0STBL",91,"problem",6,"icd@value")=81.51 100 ;^TMP("C0STBL",91,"problem",6,"id@value")=117 101 ;^TMP("C0STBL",91,"problem",6,"location@value")="DR OFFICE" 102 ;^TMP("C0STBL",91,"problem",6,"name@value")=81.51 103 ;^TMP("C0STBL",91,"problem",6,"provider@code")=63 104 ;^TMP("C0STBL",91,"problem",6,"provider@name")="KING,MATTHEW MICHAEL" 105 ;^TMP("C0STBL",91,"problem",6,"removed@value")=0 106 ;^TMP("C0STBL",91,"problem",6,"status@value")="A" 107 ;^TMP("C0STBL",91,"problem",6,"unverified@value")=0 108 ;^TMP("C0STBL",91,"problem",6,"updated@value")=3110603 109 ;^TMP("C0STBL",91,"problem",7,"entered@value")=3110603 110 ;^TMP("C0STBL",91,"problem",7,"facility@code")=100 111 ;^TMP("C0STBL",91,"problem",7,"facility@name")="VOE OFFICE INSTITUTION" 112 ;^TMP("C0STBL",91,"problem",7,"icd@value")=47.09 113 ;^TMP("C0STBL",91,"problem",7,"id@value")=118 114 ;^TMP("C0STBL",91,"problem",7,"location@value")="DR OFFICE" 115 ;^TMP("C0STBL",91,"problem",7,"name@value")=47.09 116 ;^TMP("C0STBL",91,"problem",7,"provider@code")=63 117 ;^TMP("C0STBL",91,"problem",7,"provider@name")="KING,MATTHEW MICHAEL" 118 ;^TMP("C0STBL",91,"problem",7,"removed@value")=0 119 ;^TMP("C0STBL",91,"problem",7,"status@value")="A" 120 ;^TMP("C0STBL",91,"problem",7,"unverified@value")=0 121 ;^TMP("C0STBL",91,"problem",7,"updated@value")=3110603 122 ;^TMP("C0STBL",91,"problem",8,"entered@value")=3110603 123 ;^TMP("C0STBL",91,"problem",8,"facility@code")=100 124 ;^TMP("C0STBL",91,"problem",8,"facility@name")="VOE OFFICE INSTITUTION" 125 ;^TMP("C0STBL",91,"problem",8,"icd@value")="250.00" 126 ;^TMP("C0STBL",91,"problem",8,"id@value")=119 127 ;^TMP("C0STBL",91,"problem",8,"location@value")="DR OFFICE" 128 ;^TMP("C0STBL",91,"problem",8,"name@value")="Diabetes Mellitus without mentionof Complication, type II or unspecified type," 129 ;^TMP("C0STBL",91,"problem",8,"provider@code")=63 130 ;^TMP("C0STBL",91,"problem",8,"provider@name")="KING,MATTHEW MICHAEL" 131 ;^TMP("C0STBL",91,"problem",8,"removed@value")=0 132 ;^TMP("C0STBL",91,"problem",8,"status@value")="A" 133 ;^TMP("C0STBL",91,"problem",8,"unverified@value")=0 134 ;^TMP("C0STBL",91,"problem",8,"updated@value")=3110603 135 ; 136 ; sample Smart lab result triples 137 ; 138 ;G("node16rk1fgdvx10882","code")="snomed:40930008" 139 ;G("node16rk1fgdvx10882","dcterms:title")="Hypothyroidism" 140 ;G("node16rk1fgdvx10882","rdf:type")="sp:CodedValue" 141 ;G("node16rk1fgdvx11051","code")="snomed:188155002" 142 ;G("node16rk1fgdvx11051","dcterms:title")="Primary malignant neoplasm of lower outer quadrant of female breast" 143 ;G("node16rk1fgdvx11051","rdf:type")="sp:CodedValue" 144 ;G("node16rk1fgdvx11073","code")="snomed:353295004" 145 ;G("node16rk1fgdvx11073","dcterms:title")="Toxic diffuse goiter" 146 ;G("node16rk1fgdvx11073","rdf:type")="sp:CodedValue" 147 ;G("node16rk1fgdvx11089","code")="snomed:54302000" 148 ;G("node16rk1fgdvx11089","dcterms:title")="Disorder of breast" 149 ;G("node16rk1fgdvx11089","rdf:type")="sp:CodedValue" 150 ;G("node16rk1fgdvx11351","code")="snomed:38341003" 151 ;G("node16rk1fgdvx11351","dcterms:title")="Essential hypertension" 152 ;G("node16rk1fgdvx11351","rdf:type")="sp:CodedValue" 153 ;G("node16rk1fgdvx11390","code")="snomed:44054006" 154 ;G("node16rk1fgdvx11390","dcterms:title")="Diabetes mellitus type 2" 155 ;G("node16rk1fgdvx11390","rdf:type")="sp:CodedValue" 156 ;G("node16rk1fgdvx11558","code")="snomed:195967001" 157 ;G("node16rk1fgdvx11558","dcterms:title")="Asthma" 158 ;G("node16rk1fgdvx11558","rdf:type")="sp:CodedValue" 159 ;G("node16rk1fgdvx11578","code")="snomed:254837009" 160 ;G("node16rk1fgdvx11578","dcterms:title")="Primary malignant neoplasm of female breast" 161 ;G("node16rk1fgdvx11578","rdf:type")="sp:CodedValue" 162 ;G("node16rk1fgdvx11687","code")="snomed:8517006" 163 ;G("node16rk1fgdvx11687","dcterms:title")="History of tobacco use" 164 ;G("node16rk1fgdvx11687","rdf:type")="sp:CodedValue" 165 ;G("node16rk1fgdvx11716","code")="snomed:55822004" 166 ;G("node16rk1fgdvx11716","dcterms:title")="Hyperlipidemia" 167 ;G("node16rk1fgdvx11716","rdf:type")="sp:CodedValue" 168 ;G("smart:1577780/problems/69560e4721e1","belongsTo")="smart:1577780" 169 ;G("smart:1577780/problems/69560e4721e1","problemName")="node16rk1fgdvx11089" 170 ;G("smart:1577780/problems/69560e4721e1","rdf:type")="sp:Problem" 171 ;G("smart:1577780/problems/69560e4721e1","startDate")="2005-08-02" 172 ;G("smart:1577780/problems/06ef10c4e92c","belongsTo")="smart:1577780" 173 ;G("smart:1577780/problems/06ef10c4e92c","problemName")="node16rk1fgdvx11051" 174 ;G("smart:1577780/problems/06ef10c4e92c","rdf:type")="sp:Problem" 175 ;G("smart:1577780/problems/06ef10c4e92c","startDate")="2006-02-20" 176 ;G("smart:1577780/problems/9894ba9dfe5a","belongsTo")="smart:1577780" 177 ;G("smart:1577780/problems/9894ba9dfe5a","problemName")="node16rk1fgdvx11578" 178 ;G("smart:1577780/problems/9894ba9dfe5a","rdf:type")="sp:Problem" 179 ;G("smart:1577780/problems/9894ba9dfe5a","startDate")="2005-08-22" 180 ;G("smart:1577780/problems/c109aa7a0675","belongsTo")="smart:1577780" 181 ;G("smart:1577780/problems/c109aa7a0675","problemName")="node16rk1fgdvx11558" 182 ;G("smart:1577780/problems/c109aa7a0675","rdf:type")="sp:Problem" 183 ;G("smart:1577780/problems/c109aa7a0675","startDate")="2005-09-22" 184 ;G("smart:1577780/problems/1c50100614a2","belongsTo")="smart:1577780" 185 ;G("smart:1577780/problems/1c50100614a2","problemName")="node16rk1fgdvx11073" 186 ;G("smart:1577780/problems/1c50100614a2","rdf:type")="sp:Problem" 187 ;G("smart:1577780/problems/1c50100614a2","startDate")="2007-02-21" 188 ;G("smart:1577780/problems/083dffb2c4a0","belongsTo")="smart:1577780" 189 ;G("smart:1577780/problems/083dffb2c4a0","problemName")="node16rk1fgdvx11390" 190 ;G("smart:1577780/problems/083dffb2c4a0","rdf:type")="sp:Problem" 191 ;G("smart:1577780/problems/083dffb2c4a0","startDate")="2007-01-07" 192 ;G("smart:1577780/problems/762b5639a2d1","belongsTo")="smart:1577780" 193 ;G("smart:1577780/problems/762b5639a2d1","problemName")="node16rk1fgdvx11687" 194 ;G("smart:1577780/problems/762b5639a2d1","rdf:type")="sp:Problem" 195 ;G("smart:1577780/problems/762b5639a2d1","startDate")="2006-02-20" 196 ;G("smart:1577780/problems/9dc9053dd6f4","belongsTo")="smart:1577780" 197 ;G("smart:1577780/problems/9dc9053dd6f4","problemName")="node16rk1fgdvx11716" 198 ;G("smart:1577780/problems/9dc9053dd6f4","rdf:type")="sp:Problem" 199 ;G("smart:1577780/problems/9dc9053dd6f4","startDate")="2008-04-08" 200 ;G("smart:1577780/problems/e3fe9b7ee552","belongsTo")="smart:1577780" 201 ;G("smart:1577780/problems/e3fe9b7ee552","problemName")="node16rk1fgdvx10882" 202 ;G("smart:1577780/problems/e3fe9b7ee552","rdf:type")="sp:Problem" 203 ;G("smart:1577780/problems/e3fe9b7ee552","startDate")="2005-10-27" 204 ;G("smart:1577780/problems/9933307e8f95","belongsTo")="smart:1577780" 205 ;G("smart:1577780/problems/9933307e8f95","problemName")="node16rk1fgdvx11351" 206 ;G("smart:1577780/problems/9933307e8f95","rdf:type")="sp:Problem" 207 ;G("smart:1577780/problems/9933307e8f95","startDate")="2005-08-22" 208 ;G("snomed:188155002","dcterms:identifier")=188155002 209 ;G("snomed:188155002","dcterms:title")="Primary malignant neoplasm of lower outer quadrant of female breast" 210 ;G("snomed:188155002","rdf:type")="sp:Code" 211 ;G("snomed:188155002","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 212 ;G("snomed:195967001","dcterms:identifier")=195967001 213 ;G("snomed:195967001","dcterms:title")="Asthma" 214 ;G("snomed:195967001","rdf:type")="sp:Code" 215 ;G("snomed:195967001","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 216 ;G("snomed:254837009","dcterms:identifier")=254837009 217 ;G("snomed:254837009","dcterms:title")="Primary malignant neoplasm of female breast" 218 ;G("snomed:254837009","rdf:type")="sp:Code" 219 ;G("snomed:254837009","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 220 ;G("snomed:353295004","dcterms:identifier")=353295004 221 ;G("snomed:353295004","dcterms:title")="Toxic diffuse goiter" 222 ;G("snomed:353295004","rdf:type")="sp:Code" 223 ;G("snomed:353295004","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 224 ;G("snomed:38341003","dcterms:identifier")=38341003 225 ;G("snomed:38341003","dcterms:title")="Essential hypertension" 226 ;G("snomed:38341003","rdf:type")="sp:Code" 227 ;G("snomed:38341003","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 228 ;G("snomed:40930008","dcterms:identifier")=40930008 229 ;G("snomed:40930008","dcterms:title")="Hypothyroidism" 230 ;G("snomed:40930008","rdf:type")="sp:Code" 231 ;G("snomed:40930008","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 232 ;G("snomed:44054006","dcterms:identifier")=44054006 233 ;G("snomed:44054006","dcterms:title")="Diabetes mellitus type 2" 234 ;G("snomed:44054006","rdf:type")="sp:Code" 235 ;G("snomed:44054006","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 236 ;G("snomed:54302000","dcterms:identifier")=54302000 237 ;G("snomed:54302000","dcterms:title")="Disorder of breast" 238 ;G("snomed:54302000","rdf:type")="sp:Code" 239 ;G("snomed:54302000","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 240 ;G("snomed:55822004","dcterms:identifier")=55822004 241 ;G("snomed:55822004","dcterms:title")="Hyperlipidemia" 242 ;G("snomed:55822004","rdf:type")="sp:Code" 243 ;G("snomed:55822004","system")="http://purl.bioontology.org/ontology/SNOMEDCT" 244 ;G("snomed:8517006","dcterms:identifier")=8517006 245 ;G("snomed:8517006","dcterms:title")="History of tobacco use" 246 ;G("snomed:8517006","rdf:type")="sp:Code" 247 ;G("snomed:8517006","system")="http://purl.bioontology.org/ontology/SNOMEDCT/" 248 249 ; 250 PROB(GRTN,C0SARY) ; GRTN, passed by reference, 251 ; is the return name of the graph created. "" if none 252 ; C0SARY is passed in by reference and is the NHIN array of problems 253 ; 254 I $O(C0SARY("problem",""))="" D Q ; 255 . I $D(DEBUG) W !,"No Problems" 256 S GRTN="" ; default to no problems 257 N C0SGRF 258 S C0SGRF="vistaSmart:"_ZPATID_"/problems" 259 I $D(DEBUG) W !,"Processing ",C0SGRF 260 D DELGRAPH^C0XF2N(C0SGRF) ; delete the old graph 261 D INITFARY^C0XF2N("C0XFARY") ; which triple store to use 262 N FARY S FARY="C0XFARY" 263 D USEFARY^C0XF2N(FARY) 264 D VOCINIT^C0XUTIL 265 ; 266 D STARTADD^C0XF2N ; initialize to create triples 267 ; 268 N ZI S ZI="" 269 F S ZI=$O(C0SARY("problem",ZI)) Q:ZI="" D ; 270 . N LRN,ZR ; ZR is the local array for building the new triples 271 . S LRN=$NA(C0SARY("problem",ZI)) ; base for values in this lab result 272 . ; 273 . N PROBID ; unique Id for this problem 274 . S PROBID=C0SGRF_"/"_$$LKY17^C0XF2N ; use a random number 275 . ; 276 . ; i don't like this because the same problems gets a 277 . ; different ID every time it's reported. Can't trace it back to VistA 278 . ; I'd rather be using id@value ie "id@value")="118" 279 . ; 280 . N SNOMED,ICD S ICD=$G(@LRN@("icd@value")) 281 . S SNOMED=$$SNOMED(ICD) ; look up the snomed code in the map 282 . N SNOGRF ; graph for SNOMED code 283 . I SNOMED="" D ; 284 . . S SNOMED=ICD ; if not found, return the ICD code 285 . . S SNOGRF="icd9:"_SNOMED 286 . E S SNOGRF="snomed:"_SNOMED 287 . N SNOTIT S SNOTIT=$G(@LRN@("name@value")) 288 . I $D(DEBUG) D ; 289 . . W !,"Processing Problem List ",PROBID 290 . . W !,"problem: ",SNOTIT 291 . . W !,"code: ",SNOMED 292 . ; 293 . ; first do the base result graph 294 . ; 295 . S ZR("rdf:type")="sp:Problem" 296 . S ZR("sp:belongsTo")=C0SGRF ; the subject for this patient's problems 297 . ; ie /vista/smart/99912345/problems 298 . ; 299 . N PROBNAME S PROBNAME=$$ANONS^C0XF2N ; new node for problem name 300 . S ZR("sp:problemName")=PROBNAME 301 . ; 302 . N STARTDT S STARTDT=$$SPDATE^C0SUTIL($G(@LRN@("entered@value"))) 303 . S ZR("sp:startDate")=STARTDT 304 . ; 305 . D ADDINN^C0XF2N(C0SGRF,PROBID,.ZR) ; addIfNotNull the triples 306 . K ZR ; clean up 307 . ; 308 . ; create the problemName graph 309 . ; 310 . S ZR("rdf:type")="sp:CodedValue" 311 . ;S ZR("sp:code")="snomed:"_SNOMED 312 . S ZR("sp:code")=SNOGRF 313 . S ZR("dcterms:title")=$G(@LRN@("name@value")) 314 . D ADDINN^C0XF2N(C0SGRF,PROBNAME,.ZR) 315 . K ZR 316 . ; 317 . ; create snomed graph 318 . ; 319 . S ZR("rdf:type")="sp:Code" 320 . S ZR("sp:system")="http://purl.bioontology.org/ontology/SNOMEDCT" 321 . I SNOGRF["icd9" S ZR("sp:system")="http://purl.bioontology.org/ontology/ICD9" 322 . S ZR("dcterms:identifier")=SNOMED 323 . S ZR("dcterms:title")=SNOTIT 324 . D ADDINN^C0XF2N(C0SGRF,SNOGRF,.ZR) 325 . K ZR 326 . ; 327 D BULKLOAD^C0XF2N(.C0XFDA) 328 S GRTN=C0SGRF 329 Q 330 ; 331 SNOMED(ZICD) ; extrinsic which returns SNOMED code given an ICD9 code 332 ; requires the mapping table installed in the triplestore 333 ; 334 N ZSN,ZARY,ZSUB,ZSUBS 335 I $E(ZICD,$L(ZICD))="." S ZICD=$P(ZICD,".",1) ; handle trailing dots 336 D subjects^C0XGET1(.ZSUBS,"cg:ontology#code",ZICD) ; subjects with the ICD9 code 337 S ZSUB=$O(ZSUBS("")) ; pick the first one 338 I ZSUB="" Q "" 339 D objects^C0XGET1(.ZARY,ZSUB,"cg:ontology#toCode") 340 S ZSN=$O(ZARY("")) 341 I $D(DEBUG) W !,ZSN," ",$$object^C0XGET1(ZSUB,"rdfs:label") 342 Q ZSN 343 ;
Note:
See TracChangeset
for help on using the changeset viewer.
