Fatti:
A. L'11 ottobre 2011 il Tribunale amministrativo del Cantone dei Grigioni ha dichiarato inammissibile il ricorso presentato il 15 agosto 2011 dalla A._SA contro la decisione con cui il 4 agosto 2011 la casa di cura B._, ha aggiudicato un appalto relativo a dei lavori di ristrutturazione a un altro concorrente, la C._SA. La Corte cantonale ha ritenuto che l'insorgente, classificatasi quarta miglior offerente non fruiva di alcuna possibilità di ottenere l'appalto e, di riflesso, non era legittimata a ricorrere. A titolo abbondanziale ha poi giudicato che il gravame risultava comunque infondato nel merito.
B. Il 30 novembre 2011 la A._SA ha esperito al Tribunale federale un ricorso sussidiario in materia costituzionale con cui chiede che la sentenza cantonale sia annullata e la causa rinviata all'istanza precedente per nuova decisione. Censura, in sintesi, la violazione degli art. 9 e 29 cpv. 1 e 2 Cost.
Il Tribunale federale non ha ordinato uno scambio di allegati scritti.

Diritto:
1. II Tribunale federale esamina d'ufficio e con piena cognizione la sua competenza (<ref-law>) e l'ammissibilità dei gravami che gli vengono sottoposti (<ref-ruling> consid. 1 pag. 43).
2. 2.1 Oggetto del contendere è una decisione in materia di commesse pubbliche. In concreto il quesito di sapere se erano adempiuti i requisiti cumulativi posti dall'art. 83 lett. f n. 1 e 2 LTF e, quindi, era aperta la via del ricorso (ordinario) in materia di diritto pubblico oppure se, come ritenuto dalla ricorrente, tale rimedio di diritto era precluso, motivo per cui poteva essere esperito solo il ricorso sussidiario in materia costituzionale (cfr. <ref-law>) può rimanere irrisolto dato che, comunque sia, per i motivi esposti di seguito (cfr. consid. 2.2), il ricorso si rivela inammissibile.
2.2 Come accennato nei fatti, la sentenza impugnata poggia su di una doppia motivazione. Per consolidata giurisprudenza quando la decisione querelata poggia su diverse motivazioni tra loro indipendenti e di per sé sufficienti per definire l'esito della causa, il ricorrente è tenuto, pena l'inammissibilità, a dimostrare che ognuna di esse viola il diritto (<ref-ruling> consid. 6. 3 pag. 120; <ref-ruling> consid. 3.2 pag. 560); se almeno una delle motivazioni poste a fondamento del giudizio impugnato resiste alla critica, esso non viene annullato (<ref-ruling> consid. 7 pag. 228; <ref-ruling> consid. 6 pag. 20). Nella presente fattispecie l'argomentazione della ricorrente è tutta tesa a dimostrare che arbitrariamente le è stata negata la legittimazione ricorsuale. Essa non spiega invece in che cosa la seconda motivazione - formulata a titolo abbondanziale dalla Corte cantonale - secondo cui il ricorso risultava comunque infondato nel merito, sarebbe inficiata d'arbitrio, apparirebbe cioè - e non solo nella motivazione bensì anche nell'esito - manifestamente insostenibile, in aperto contrasto con la situazione reale, gravemente lesiva di una norma o di un principio giuridico chiaro e indiscusso, oppure in contraddizione urtante con il sentimento della giustizia e dell'equità (cfr. sulla nozione di arbitrio, <ref-ruling> consid. 1.3 pag. 4; <ref-ruling> consid. 3.1 pag. 265 seg.). Non esprimendosi su una delle motivazioni poste a fondamento del giudizio impugnato il ricorso non rispetta le esigenze dell'<ref-law> e deve, pertanto, essere dichiarato inammissibile (<ref-ruling> consid. 6.3 pag. 120).
3. Per i motivi illustrati, il ricorso si avvera pertanto manifestamente inammissibile e va deciso secondo la procedura semplificata dell'<ref-law>. Le spese seguono la soccombenza (art. 65 e 66 cpv. 1 LTF). Non si assegnano ripetibili ad autorità vincenti (<ref-law>) né alle controparti che non sono state invitate a determinarsi (art. 68 cpv. 1 e 2 LTF).

Per questi motivi, il Tribunale federale pronuncia:
1. Il ricorso è inammissibile.
2. Le spese giudiziarie di fr. 800.-- sono poste a carico della ricorrente. Non si concedono ripetibili per la sede federale.
3. Comunicazione ai patrocinatori delle parti e al Tribunale amministrativo del Cantone dei Grigioni, 1a Camera.